
// Search
new Ajax.Autocompleter("search", "search_choices", "/search_inline.php", {
  paramName: "value", 
  minChars: 3
});






function addToCartKeyup(event, id){

	//var e = Event.findElement(event, 'input');
	//console.log(event);
	if(event.keyCode == 13){
		
		Event.stop(event);
		addToCart(id);
	}
		
		
		
}



function addToCart(id){

	
	var qty = $('item_'+ id).value;
	var label = $('label_'+ id).value;
	
	$('item_'+ id).disabled = true;
	
	new Ajax.Request("/_store/controller.php", {
		method: 'get',
		parameters: {xaction: 'updateCartItem', products_id: id, qty: qty},
		evalJSON: true,
		onSuccess: function(transport) {
			
			$('item_'+ id).disabled = false;
			
			var results = eval(transport.responseJSON);
			//console.log(results);
			if( results.status == 'success' ){
			
					$('msg_'+ id).innerHTML = "<b>"+ results.qty  + "</b> "+ label +
											  " in <a href='cart.php' style='color: maroon'><u>Cart</u></a> &nbsp; &nbsp; ";

					$('button_'+ id).value = "Update Cart";
			}
			
			if( results.status == 'warning' ){
			
					$('msg_'+ id).innerHTML = "<b>"+ results.qty + "</b> "+ label +
											  " in <a href='cart.php' style='color: maroon'><u>Cart</u></a> &nbsp; &nbsp; <br />" +
											  " <span style='color: maroon; font-size: 12px;'>Earliest ship date " + results.onwater_date +"</span> &nbsp; &nbsp; ";

					$('button_'+ id).value = "Update Cart";
			}
			
			
			if( results.status == 'fail' ){
			
					// 9-22-11
					/*
					$('msg_'+ id).innerHTML = "<b>"+ results.qty + "</b> "+ label +
											  " in <a href='cart.php' style='color: maroon'><u>Cart</u></a> &nbsp; &nbsp; <br />" +
											  " <span style='color: maroon'>Only " + (parseInt(results.qty ) + parseInt(results.onwater) ) +" are available</span> &nbsp; &nbsp; ";

					*/
					
					if(parseInt(results.qty ) == 0){
						$('msg_'+ id).innerHTML = " <span style='color: maroon'>Item is not in stock.</span> &nbsp; &nbsp; ";
					}
					else {
					$('msg_'+ id).innerHTML = " <span style='color: maroon'>Only " + (parseInt(results.qty ) + parseInt(results.onwater) ) +" are available</span> &nbsp; &nbsp; ";
					}
					
					$('button_'+ id).value = "Update Cart";
			}
			
			
			
		}
	});

}

function updateInCart(id){

	Effect.Fade('shipping_rates_fq', { duration: 1.0, to: 0.3});
	Effect.Fade('totals', { duration: 1.0, to: 0.3});
	
	var qty = $('item_'+ id).value;
	
	new Ajax.Request("/_store/controller.php", {
		method: 'get',
		parameters: {xaction: 'updateCartItem', products_id: id, qty: qty},
		evalJSON: true,
		onSuccess: function(transport) {
			
			var results = eval(transport.responseJSON);
			//console.log(results);
			if( results.status == 'success' ){
				$('linetotal_'+ id).innerHTML = "$"+ results.linetotal;
					

			}
			
			if( results.status == 'warning' ){
				$('linetotal_'+ id).innerHTML = "$"+ results.linetotal;
				$('item_'+ id).value = results.qty;
				$('msg_'+ id).innerHTML = " <span style='color: maroon'>Only " + (parseInt(results.qty ) + parseInt(results.onwater) ) +" are available</span> &nbsp; &nbsp; ";
			}
			
			if( results.status == 'remove' ){
				$('row_'+ id).remove();
			}
			
			
			$('totals').innerHTML = results.totals;
			Effect.Appear('totals');
						
			
			updateCartShipping();
			// total_weight total_items
			$('total_items').update(results.totalitems);
			$('total_weight').update(results.totalweight)
			
		}
	});

}



function removeFromCart(id){

	Effect.Fade('shipping_rates_fq', { duration: 1.0, to: 0.3});
	Effect.Fade('totals', { duration: 1.0, to: 0.3});
		
	new Ajax.Request("/_store/controller.php", {
		method: 'get',
		parameters: {xaction: 'removeFromCart', products_id: id},
		evalJSON: true,
		onSuccess: function(transport) {
			
			var results = eval(transport.responseJSON);
			//console.log(results);
			if( results.status == 'success' ){
				$('linetotal_'+ id).innerHTML = "$"+ results.linetotal;
					

			}
			
			if( results.status == 'warning' ){
				$('linetotal_'+ id).innerHTML = "$"+ results.linetotal;
			}
			
			if( results.status == 'remove' ){
				
				Effect.Fade('row_'+ id, {
								duration: 1.0,
								afterFinish: function(){
									$('row_'+ id).remove();
								}});
				
				
				//$('row_'+ id).remove();
			}
			
			
			$('totals').innerHTML = results.totals;
			Effect.Appear('totals');
			
			/*
			Effect.Fade('subtotal', {
						duration: 1.0,
						afterFinish: function(){
							$('subtotal').innerHTML = "$"+ results.subtotal;
							Effect.Appear('subtotal');
							$('subtotal').morph('color: #9F3932;', {duration: 0.7});
							$('subtotal').morph('color: #222222;', {duration: 0.7, delay: 0.8});
						}});
						*/
			
			updateCartShipping();
			
			// total_weight total_items
			$('total_items').update(results.totalitems);
			$('total_weight').update(results.totalweight);
			
			
			
			
		}
	});

}


function setShippingOptionInCart(shipping_quotes_id, optionId){

	new Ajax.Request("/_store/controller.php", {
		method: 'get',
		parameters: {xaction: 'setShippingOption', shipping_quotes_id: shipping_quotes_id, optionId: optionId},
		evalJSON: true,
		onSuccess: function(transport) {
			
			var results = eval(transport.responseJSON);
			
			
			$('totals').innerHTML = results.totals;
			Effect.Appear('totals');
	
			
		}
	});
	


}


function updateCartShipping(){


	
	
	var options = {};
	
	
	options.pickup_zip = "65202";
	options.delivery_zip = $('ship_zip').value;
	
	options.ship_date = "11/20/11";
	options.ship_class = "85";
	options.weight = parseInt($('total_weight').innerHTML);
	options.hazmat = true;
	
	
	options.requires_liftgate = $('ship_liftgate').checked;
	options.arrival_notification = $('ship_notification').checked;
	options.residential_delivery = $('ship_residential').checked;
	options.inside_delivery = false;
	
	
	
	
	
	
	
	


	// Test Shipping All
	
	options.xaction = 'getShippingRates';

	new Ajax.Request("/_store/controller.php", {
		method: 'get',
		parameters: options,
		evalJSON: true,
		onSuccess: function(transport) {
			
			var results = eval(transport.responseJSON);
			//console.log(results);
			
			
			if( results.status == 'update' ){
			
		
				$(results.elmid).update(results.html);
				$('shipping_debug').update(results.debug);
				Effect.Appear('shipping_rates_fq', { duration: 0.5});
					
			}
			
			if( results.status == 'warning' ){
			
			}
			
	
		}
	});



}















var xForm = Class.create({

	

    initialize: function() {



            
    },
    
    
    create: function(elm) {


		    
		    
				    
		var options = {};
		
		options.id =  null;
		options.url = elm.action;
		options.method = elm.method;
		options.dom = elm;
		
		//$(elm).onSubmit = function() { return false; };
		
		
		if(options.id == null){
			var newDate = new Date;
			options.id = "auto_" + newDate.getTime() + Math.floor(Math.random()*11);
			$(elm).id = options.id;
		}
		
		if(options.url == ""){
			//options.url = window.location.href;
			options.url = "/_store/controller.php";
		}
		
		if(options.method == ""){
			options.method = "get";
		}
		
		
		var inputs = $(options.id).getInputs();		
		inputs.each( function(elm) {
			if(elm.id == "")
				elm.id = elm.name;
				
			if(elm.value == elm.alt)
				$(elm).addClassName('blank');
				
				
			if(elm.hasClassName('format')){
				xform.autoformat(elm);
			}
		});
		
		//this.forms[options.id] = options;
		
		//$(elm).observe('keydown', this.submitOnEnter.bind(options));

		
		$(elm).observe('submit', this.submitForm.bind(options));
		
		if( $(options.id).hasClassName('labels-none') )
			this.inlineLabels(options.id);

            
    },

    
    submitOnEnter: function(event, obj) {
		
		if(event.keyCode == 13){
		
			Event.stop(event);
			this.submitForm(event, obj);
		}	
	},
    
    
    submitForm: function(event, obj) {
		
		
		//var that = Event.element(event);
		
		
		//var form = this;
		var etemp = Event.findElement(event, 'form');
		var formid = $(etemp).id;
		
		
		Event.stop(event);
		
		// Check for errors
		var errors = xform.checkErrors(formid);
		
		
		// Remove Inline Labels
		 xform.removeInlineLabels(formid);


		if(errors.length == 0 ){
			var data = $(this.id).serialize(true);
		
			
			new Ajax.Request(this.url, {
				method: this.method,
				parameters: data,
				evalJSON: true,
				onSuccess: function(transport) {
					
					
					var results = eval(transport.responseJSON);
					//console.log(results);
					if( results.status == 'error' )
						xform.showError(formid, results.errormsg);
						
					if( results.status == 'redirect' )
						xform.redirect(results.redirecturl);
						
					if( results.status == 'reload' )
						xform.reload();
					
					if( results.status == 'update' )
						xform.update(results.elmid, results.html);
					
					
				}
			});
		}
				
		
		
		Event.stop(event);
		return false;
    },
    
    showError: function(formid, msg) {
		
		$$('p.error').each(function(e) {
        	e.remove();
		});
		

		$(formid).insert({top: "<p class='error'>"+ msg + "</p>"});
		
		
    },
    
    redirect: function(url) {
		
		window.location.href =  url;
		
		
    },
    reload: function() {
		
		window.location.reload();
		
		
    },
    
    update: function(elmid, html) {
		
		$(elmid).update(html);
		
		
    },
    
    
    
    autoformat: function(elm) {
		
		if(elm.hasClassName('f-mmddyy')){
			$(elm).observe('keyup', function(event){
				
				
				if(event.keyCode == 8)
					return;
					
				var e = Event.element(event);
				var v = e.value;
				
				
				v = v.replace("-", "/");
				v = v.replace("//", "/");
				
				var d = v.split("/");
				
				var formatted = v;
				
				if(d.length >= 1 && v.length > 1 && d[0].length == 1)
					d[0] = "0" + d[0];
					
				if(d.length >= 2 && v.length > 4 && d[1].length == 1)
					d[1] = "0" + d[1];
					
				if(d.length >= 3 && v.length > 7 && d[2].length > 3)
					d[2] = d[2].replace("20", "");
				
				
				//v = v.replace(/[^a-zA-Z 0-9]+/g,'');

				
				if(d.length == 1 )
					e.value = d[0] +"/";
					
				else if(d.length == 2 )
					e.value = d[0] +"/"+ d[1] +"/";
					
				else if(d.length == 3 )
					e.value = d[0] +"/"+ d[1] +"/" + d[2];
	
			});
		}
		
		if(elm.hasClassName('f-mmyy')){
			$(elm).observe('keyup', function(event){
				
				
				
				if(event.keyCode == 8)
					return;
					
				var e = Event.element(event);
				var v = e.value;
				
				
				v = v.replace("-", "/");
				v = v.replace("//", "/");
				
				var d = v.split("/");
				
				var formatted = v;
				
				if(d.length >= 1 && v.length > 1 && d[0].length == 1)
					d[0] = "0" + d[0];
					

				if(d.length >= 2 && v.length > 6 && d[1].length > 3)
					d[1] = d[1].replace("20", "");
				
				
				//v = v.replace(/[^a-zA-Z 0-9]+/g,'');

				
				if(d.length == 1 && d[0].length > 1)
					e.value = d[0] +"/";
					
				else if(d.length == 2 )
					e.value = d[0] +"/"+ d[1] ;
					
			
	
			});
		}
		
		
		if(elm.hasClassName('f-zip5')){
			$(elm).observe('keyup', function(event){
				
				if(event.keyCode == 8)
					return;
				
				var e = Event.element(event);
				var v = e.value;
				
				var prelen = v.length;
				
				v = v.replace(/[^0-9]+/g,'');
				
				if(v.length >= 5 && prelen > 5)
					e.value = v.substr(0,5);
					
			
	
			});
		}
		
		
		if(elm.hasClassName('f-state2')){
			$(elm).observe('keyup', function(event){
				
				
				if(event.keyCode == 8)
					return;
				
				var e = Event.element(event);
				var v = e.value;
								
				v = v.replace(/[^a-zA-Z]+/g,'');
				
				v = v.toUpperCase();
				
				if(v.length >= 2 )
					e.value = v.substr(0,2);
					
			
	
			});
		}
		
		
		if(elm.hasClassName('f-creditcard')){
			$(elm).observe('keyup', function(event){
				
				
				if(event.keyCode == 8)
					return;
				
				var e = Event.element(event);
				var v = e.value;
				
				
				v = v.replace(/[^0-9]+/g,'');
				
				var vtemp = "";
				
				for(var i = 0; i <= v.length; i++ ){
				 	
				 	if( i == 4  ||  i == 8 ||  i == 12)
				 		vtemp = vtemp + "-" + v.substr(i, 1);
				 	else
				 		vtemp = vtemp + "" + v.substr(i, 1);

				 	
				
				}
			
				e.value = vtemp;
				
	
			});
		}
		
		
    },
    
    
    inlineLabels: function(formid){
    
    	$$('#'+ formid +' input').each(function(e) {
        	if(e.value == "" && e.alt != ""){
        		$(e).value = $(e).alt;
        		$(e).addClassName('blank');
        	}
        	
        	$(e).observe('click', function(event){
        			if($(e).hasClassName('blank')){
        				$(e).removeClassName('blank');
        				$(e).removeClassName('error');
        				$(e).value = "";
        			}
        	});
        	
        	$(e).observe('keydown', function(event){
        			if($(e).hasClassName('blank')){
        				$(e).removeClassName('blank');
        				$(e).removeClassName('error');
        				$(e).value = "";
        			}
        	});
    		$(e).observe('blur', function(event){
    			if($(e).value == ""){
    				$(e).value = $(e).alt;
    				$(e).addClassName('blank');
    			}
    		});

		});
		
		
    
    
    },
    
    
        
    removeInlineLabels: function(formid){
    
    	$$('#'+ formid +' input').each(function(e) {
        	if(e.value == e.alt ){
        		$(e).value = "";
        	}

		});

    },
    
    
    checkErrors: function(formid) {
    
    	var errors = [];	
		var inputs = $(formid).getInputs();
		
		//console.log(inputs);
		
		inputs.each( function(elm) {
		
		
			if( $(elm).hasClassName('required') ){
			
				
				// vpassword
				if( $(elm).hasClassName('vpassword') ){
					
					if( $('password1').value == "" || $('password1').value != $('password2').value ){
						$('password1').addClassName('error');
						$('password2').addClassName('error');
						errors.push($(elm).readAttribute('alt'));
					}
					else{
						$('password1').removeClassName('error');
						$('password2').removeClassName('error');
					}
				}
				
				// vemail
				else if( $(elm).hasClassName('vemail') ){
					
					var email = $(elm).value;
					var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 

					
					
					if( email.match(re) == null ){
						
						//console.log("fail");
						$(elm).addClassName('error');
						errors.push($(elm).readAttribute('alt'));
					}
					else{
						$(elm).removeClassName('error');
					}
				}
			
			
				else if( elm.getValue() == "" ){
					$(elm).addClassName('error');
				
					errors.push($(elm).readAttribute('alt'));
				}	
			}
			//console.log(elm);
			//$(elm).addClassName('error');
		
		});
		
		return errors;
    
    }
    
    
   
});


var xform = new xForm();

$$('form.form_std.xform').each(function(elm) {
    
    
    xform.create(elm);		    
  
    
    
});









/* Gallery Slideshow 2.0 */
// Updated Oct 2011 (stable, but needs to be converted to class)

if($('cpGallery')){
	
	// Options
	// delay is in ms, 1000ms = 1sec
	var delay = 8000;
	var effectDur = 1.5;
	
	
	
	// Globals
	var c=1000;
	var i=0;
	var showStart = false;
	var l=0;
	var firstImg ='';
	
	var slideWidth = 0;
	var slideHeight = 0;
	

	
	var dimensions = $('cpGallery').getDimensions();
	slideWidth = dimensions.width;
	slideHeight = dimensions.height;
	
		
	var first = 0;
	$$('.slide img').each(function(e) {
	
		if( first++ == 0)	
			firstImg = $(e).src;
			
		$(e).setOpacity(0.0);
	});
	$$('.slide').each(function(e) {
	
		e.id = "cpGallery_" + i;
		e.setStyle({ zIndex: 0, position: 'absolute', top: '0px', left: '0px', display: 'none', overflow: 'hidden'});
					
		i++;
				
	});
	

	loadCheck = new Image();
	loadCheck.src = firstImg;

	window.onload= cpSlideShowFailSafe;

}	

	function cpSlideShowFailSafe(){
	
		if(showStart == false){
			showStart = true;
			
			$$('.slide img').each(function(e) {
					$(e).setOpacity(1.0);
			});

			cpSlideShow();
		}
	}

	function cpSlideShow(){
		if(l >= (i)) l=0;
		$("cpGallery_" + l).setStyle({ position: 'absolute', top: '0px', zIndex: c++, display: 'none', overflow: 'hidden', height: slideHeight + 'px', width: slideWidth + 'px'});
		
		new Effect.Appear("cpGallery_" + l, { duration: 1.0 });
		
		
		
		var z = 1;
		$("cpGallery_" + l + "").childElements().each(function(e) {
			
			
			var h = parseInt($(e).style.height);
			var w = parseInt($(e).style.width);
			
			if(e.hasClassName('slide-in-bottom')){
			
				e.setStyle({ top: '', bottom:  ( 0- h ) +'px', left: '0px', zIndex: z, position: 'absolute', display: 'block', overflow: 'hidden'});
				new Effect.Move(e, { x: 0, y: (slideHeight - h), mode: 'absolute', duration: effectDur, delay: 0.2});
			}
			if(e.hasClassName('slide-out-bottom')){

				var d = (delay/1000) - effectDur - 0.2;
				new Effect.Move(e, { x: 0, y: ( h ), mode: 'relative', duration: effectDur, delay: d});
			}
			
			
			if(e.hasClassName('slide-in-top')){
			
				e.setStyle({ top: (0 - h) +'px', left: '0px', zIndex: z, position: 'absolute', display: 'block', overflow: 'hidden'});

				new Effect.Move(e, { x: 0, y: h , mode: 'relative', duration: effectDur, delay: 0.2});
			}
			if(e.hasClassName('slide-out-top')){

				var d = (delay/1000) - effectDur;
				new Effect.Move(e, { x: 0, y: (0 - h ), mode: 'relative', duration: effectDur, delay: d});
			}
			
						
			if(e.hasClassName('slide-in-left')){
				
				e.setStyle({ top: '0px', left: ( 0 - w) + 'px', zIndex: z, position: 'absolute', display: 'block', overflow: 'hidden'});

				new Effect.Move(e, { x: 0, y: 0 , mode: 'absolute', duration: effectDur, delay: 0.2});
				
			}
			if(e.hasClassName('slide-out-left')){
				
				var d = (delay/1000) - effectDur - 0.2;

				new Effect.Move(e, { x: ( 0 - w) , y: 0, mode: 'absolute', duration: effectDur, delay: d});
	

			}
			
			
			if(e.hasClassName('slide-in-right')){
				
				e.setStyle({ top: '0px', left: slideWidth  + 'px', zIndex: z, position: 'absolute', display: 'block', overflow: 'hidden'});

				new Effect.Move(e, { x: 0, y: 0 , mode: 'absolute', duration: effectDur, delay: 0.2});

			}
			if(e.hasClassName('slide-out-right')){
				
				var d = (delay/1000) - effectDur - 0.2;

				new Effect.Move(e, { x: slideWidth , y: 0, mode: 'absolute', duration: effectDur, delay: d});

			}
			
			
			if(e.hasClassName('slide-overlay')){
				
				e.setStyle({ zIndex: z, position: 'absolute', top: '0px', left: '0px', display: 'block'});

			}
			
			z++;
		});
		l++;
		
		setTimeout("cpSlideShow()", delay);	
	}



