// remap jQuery to $
(function($){})(window.jQuery);

var _loaderImage = '<img src="/img/ajax-loader-1.gif" alt="Loading..." />';

/* trigger when page is ready */
$(document).ready(function (){

	// your functions go here
	changeShippingFields();

	$(".fancygallery").fancybox({
		'transitionIn'	:	'elastic',
		'transitionOut'	:	'elastic',
		'speedIn'		:	600, 
		'speedOut'		:	200, 
		'overlayShow'	:	false
	});
	
		$("#photoupload").change(function(){
	 	//alert('test');
	 	$('#hiddenfile').val(this.value);
 	});
	


		
	$('.productcolorswatch').hover(function(){
			$(this).find('.bigswatch').animate({"marginTop": "-144px","height":"195px"}, {queue:false,duration:500,easing:"easeInCirc"}).fadeIn();
	}, function(){
			$(this).find('.bigswatch').fadeOut('fast', function() {$(this).css({"marginTop": "52px", "height":"0px"});});
	});
		
		
	$("#dropcart_show").toggle(function() { 
			$("#dropcart").slideDown("fast");
		},
		function() { 
			$("#dropcart").slideUp("fast"); 
			$('#dc_message_row').css('display','none');
		}
	);
		
	// function to show and hide team buy matrix :
	$(function() {
 		$("#teammatrix").click(function () { 
			$("#teambuycontainer").animate({"height":"toggle"}, {queue:false,duration:600}); 
			$('#item11').focus();				
		});
	});
	
	/*
	$('input[type="text"]').focus(function() {
	    if (this.value == this.defaultValue){ 
	    	this.value = '';
		}
		if(this.value != this.defaultValue){
			this.select();
		}
	});

	$('input[type="text"]').live('blur', function() {
	    if ($.trim(this.value) === ''){
	    	this.value = (this.defaultValue ? this.defaultValue : '');
		}
	});
	*/

   	// Add Single Item Ajax Form Submit ::
	var add_item_options = { 
        beforeSubmit:  showAddItemRequest, 
        success:       showAddItemResponse,
        error:		   showAddItemError,
        type: 		   'POST',
        timeout:   	   3000 
    }; 
	$('#add_to_cart').submit(function() { 
        $(this).ajaxSubmit(add_item_options); 
       	return false; 
    }); 

    
    // Add Team Buy Ajax Form Submit ::
	var add_team_buy_options = { 
        beforeSubmit:  showAddTeamBuyRequest, 
        success:       showAddTeamBuyResponse,
        error:		   showAddTeamBuyError,
        type: 		   'POST',
        timeout:   	   3000 
    }; 
	$('#add_to_cart_team').submit(function() { 
        $(this).ajaxSubmit(add_team_buy_options); 
       	return false; 
    }); 
    
    /* Bind the Checkout Button */
	$('#button_checkout').click(function() {
 		 document.location.href='/checkout/';

	});
	
	// Bind the Continue Shopping Button
	$('#button_shop').click(function() {
 		 document.location.href='/shop/';

	});
	
	// coupon code ajax form submit ::
	var coupon_options = { 
        beforeSubmit:  showCouponRequest,  // pre-submit callback 
        success:       showCouponResponse   // post-submit callback
       // dataType: 'json'
    }; 
	$('#apply_coupon_code').submit(function() { 
        $(this).ajaxSubmit(coupon_options); 
        return false; 
    }); 
    
    // shipping ajax form submit ::
	var shipping_options = { 
        beforeSubmit:  showShippingRequest,  // pre-submit callback 
        success:       showShippingResponse  // post-submit callback
    }; 
	$('#shipping_form').submit(function() { 
        $(this).ajaxSubmit(shipping_options); 
        return false; 
    }); 
    
    $("input[name='shiptosame']").bind('change', function() {
		changeShippingFields();
	});
	
	
	$('.ship_blur').bind('blur', function() {
		if ($("input[name='shiptosame']:checked").val() == 'yes') {
			eval("$('#shipping_"+$(this).attr("name")+"')").val($(this).val());
		}
	});
	
	rebind_remove_code();
		
});


$(window).load(function() {
	startProductRotation();
	
});

checksame = function() {
	
	var same = true;
	$.each( ['first_name','last_name', 'address', 'address2', 'city', 'state', 'zip'], function(i, field){
	   field1 = eval("$('#"+field+"')").val();
	   field2 = eval("$('#shipping_"+field+"')").val();
	   if (field1 != field2) {
			same = false;
			return false;
	   }
	   
	   
	 });
	 
	 if (same == true) {
	 	$("#shiptosameyes").attr('checked', 'checked');
	 } else {
	 	$("#shiptosameno").attr('checked', 'checked');
	 }

}

changeShippingFields = function() {
		if ($("input[name='shiptosame']:checked").val() == 'yes') {
	       $("#shipping_first_name").val($("#first_name").val());
	       $("#shipping_last_name").val($("#last_name").val());
	       $("#shipping_address").val($("#address").val());
	       $("#shipping_address2").val($("#address2").val());
	       $("#shipping_city").val($("#city").val());
	       $("#shipping_state").val($("#state").val());
	       //$.uniform.update("#shipping_state");
	       $("#shipping_zip").val($("#zip").val());
	       //$(".shipping_fields").css("display","none");
	    } else {
	       //$(".shipping_fields").css("display","block");
	       $("#shipping_first_name").val("");
	       $("#shipping_last_name").val("");
	       $("#shipping_address").val("");
	       $("#shipping_address2").val("");
	       $("#shipping_city").val("");
	       $("#shipping_state").val("");
	       $("#shipping_state").val("");
	       $("#shipping_zip").val("");
	    }

}

// SHIPPING SUBMIT FORM
showShippingRequest = function(formData, jqForm, options) { 
	$('#ship_submit').attr('disabled', 'disabled');	
	$('#ship_submit').attr('value', 'SETTING...');
    return true;
} 
showShippingResponse = function(responseText, statusText, xhr, $form)  { 
	//var getNewTotals = false;
	
	var _response = jQuery.parseJSON(responseText);
	var _success = _response.success;
	

	if (_success) {
		getNewTotals = true;
		
		$('#shipping_select').load('/checkout/get_shipping/', function() {
		
			$('#shipping_select li').each(function(index) {	
				$(this).bind('click', function() {
					$('#shipping_text').text($(this).attr('title'));
					$('#shipping_option').val($(this).attr('rel'));
				});
			});
		});
	
		
		$('#ship_submit').attr('disabled', '');
		$('#ship_submit').attr('value', 'APPLY SHIPPING');
		$('#go_continue').fadeIn('fast');	
		
	}
	
	if (!_success) {
    	$('#ship_error').text(_response.errors[0]);
    	$('#ship_submit').attr('disabled', '');
		$('#ship_submit').attr('value', 'SET SHIPPING');
	}
	
	if (getNewTotals) {
		$.get('/checkout/final_totals/', function(data) {
			$('#final_totals').html(data);
		});

	}

}



// pre-submit callback 
function showCouponRequest(formData, jqForm, options) { 
	$('#coupon_submit').attr('disabled', 'disabled');	
	$('#coupon_submit').attr('value', 'APPLYING...');
    return true;
} 

function showCouponResponse(responseText, statusText, xhr, $form)  { 
	var getNewTotals = false;
	_response = responseText;
	
	var obj = jQuery.parseJSON(_response);
	var _success = obj.success;
	var xCode = $('#coupon_code').val();

	if (_success) {
		getNewTotals = true;

		_cString = '<h3>Coupon Applied</h3>';		
		_cString += '<div class="ccApplied">'+xCode+'<a id="remove_ccode">REMOVE</a></div>';
				
		$('#coupon_container').html(_cString);
		rebind_remove_code();
	}
	
	if (!_success) {
    	$('#coupon_error').text(obj.errors[0]);
    	$('#coupon_submit').attr('disabled', '');
		$('#coupon_submit').attr('value', 'APPLY CODE');
	}
	
	if (getNewTotals) {
		$.get('/checkout/final_totals/', function(data) {
			$('#final_totals').html(data);
		});

	}

}

rebind_remove_code = function() {

	$('#remove_ccode').bind('click', function() {
	
		$.get('/checkout/remove_coupon/', function(data) {
			$('#coupon_container').html(data);
			$.get('/checkout/final_totals/', function(data) {
				$('#final_totals').html(data);
			});
		});
	});
}

// Add Item Request
showAddItemRequest = function(formData, jqForm, options) { 
	$('#size_label').css('color','#666666');
	$('#color_label').css('color','#666666');
	$('#detail_submit').attr('disabled', 'disabled');	
	$('#detail_submit').attr('value', 'ADDING...');
	
    var has_error = false;
    var is_size = false;
    var is_color = false;
    
    if ($('#size').val()=='') {
    	is_size = true;
    	has_error = true;
    }
    
    if ($('#color').val()=='') {
    	is_color = true;
    	has_error = true;
    }

    if (has_error) {
    	//alert('Errors');
    	if (is_size) {
    		$('#size_label').css('color','#ff0000');
    	}
    	if (is_color) {
    		$('#color_label').css('color','#ff0000');
    	}
    	$('#detail_submit').attr('disabled', '');
		$('#detail_submit').attr('value', 'ADD TO CART');
		
		$('#message').html('Please Make Your Selections Above');
		setTimeout('clearErrorMessage()', 3000);
		return false;
    } else {
    	return true;
  
    }
} 

// Add Item Response
showAddItemResponse = function(responseText, statusText, xhr, $form)  { 
	var _response = responseText;
	var _reponseObj = jQuery.parseJSON(_response);
	var _success = _reponseObj.success;
	
	// Success
	if (_success) {	
		$('#message').html('Your item was added successfully!');
		$.scrollTo(0,400);
		$.get('/cart/dropcart/', function(data) {
	  		$('#dropcart').html(data);
	  		reset_detail_form();
	  		reload_dropcart_summary();
	  		$('#dc_message_row').css('display','table-row');
	  		$('#dropcart').slideDown('fast', function() {
	        	setTimeout("auto_hide_drop_cart()", 3000);
	     	});
		});
		
	}
	// Fail
	if (!_success) {
    	$('#message').html('Oops, there was a problem. Please try again');

		var field_errors = _reponseObj.errors;
    	var fields = field_errors.split('|');
    	
    	for (var i = 0; i < fields.length-1; i++) {
    		var _field = fields[i].replace('*','');
    		$('label[for='+$.trim(_field)+']').css('color', '#ff0000');
		}
    	
    	reset_detail_form();
		
	}
	
}

// Add Item Error
showAddItemError = function(responseText, statusText, xhr, $form) {
	$('#detail_submit').attr('disabled', '');
	// error message from server: statusText
	$('#message').html('Oops, there was a problem. Please try again');
	
	reset_detail_form();
   
}

reset_detail_form = function() {
	$('#add_to_cart').resetForm();
	
	$('#detail_submit').attr('disabled', '');
	$('#detail_submit').attr('value', 'ADD TO CART');
	
	setTimeout('clearErrorMessage()', 3000);
	
}

auto_hide_drop_cart = function() {
	$("#dropcart").slideUp("fast");
	$('#dc_message_row').css('display','none');
}

reload_dropcart_summary = function()  { 
	$.get('/cart/dropcart_summary/', function(data) {
  		$('#dropcart_li').html(data);
	});
}

rebind_dropcart = function() {
	$("#dropcart_show").toggle(function() { 
		$("#dropcart").slideDown("fast");
	},
	function() { 
		$("#dropcart").slideUp("fast"); 
	});

}

clearErrorMessage = function() {
	$('#message').html('');
};

clearTeamErrorMessage = function() {
	$('#team_message').html('');
};


// Team Buy Ajax Funtions
showAddTeamBuyRequest = function(formData, jqForm, options) { 

	$('#team_submit').attr('disabled', 'disabled');	
	$('#team_submit').attr('value', 'ADDING...');
	
    var has_error = false;
    var _quantity = 0;
    
    $('#tbmatrix input[type="text"]').each(function(index) {
    	_quantity = _quantity + parseInt($(this).val());
	});

   	if (parseInt(_quantity)==0) {
		has_error = true;
    }

    if (has_error) {
    	$('#team_submit').attr('disabled', '');
		$('#team_submit').attr('value', 'ADD TO CART');
		
		$('#team_message').html('Please Enter Quantities Above');
		setTimeout('clearTeamErrorMessage()', 3000);
		return false;
    } else {
    	return true;
  
    }
};

showAddTeamBuyResponse = function(responseText, statusText, xhr, $form)  { 
	var _response = responseText;
	var _reponseObj = jQuery.parseJSON(_response);
	var _success = _reponseObj.success;
	
	// Success
	if (_success) {	
		$('#team_message').html('Your team buy was added successfully!');
		$.scrollTo(0,400);
		$("#teambuycontainer").animate({"height":"toggle"}, {queue:false,duration:600}); 
		$.get('/cart/dropcart/', function(data) {
	  		$('#dropcart').html(data);
	  		reset_team_form();
	  		reload_dropcart_summary();
	  		
	  		$('#dc_message_row').css('display','table-row');
	  		
	  		$('#dropcart').slideDown('fast', function() {
	        	setTimeout("auto_hide_drop_cart()", 3000);
	     	});
		});
		
	}
	// Fail
	if (!_success) {
		$('#team_submit').attr('disabled', '');
		$('#team_submit').attr('value', 'ADD TO CART');
    	$('#team_message').html('Oops, there was a problem. Please try again');

    	reset_team_form();	
	}

};

showAddTeamBuyError = function(responseText, statusText, xhr, $form) {
	$('#team_submit').attr('disabled', '');
	$('#team_submit').attr('value', 'ADD TO CART');
	$('#team_message').html('Oops, there was a problem. Please try again');
	
	reset_detail_form();
};

reset_team_form = function() {
	$('#add_to_cart_team').resetForm();
	
	$('#team_submit').attr('disabled', '');
	$('#team_submit').attr('value', 'ADD TO CART');
	
	setTimeout('clearTeamErrorMessage()', 3000);
	
}

// function to create cells for matrix
createTeamMatrix = function(xTotalRows) {
	var _matrixwidth = 738;
	var _numberofsizes = xTotalRows;
	_cellwidth = Math.floor(_matrixwidth/_numberofsizes)-1;
	_fullcell = _cellwidth + 1;
	_totalfullcells = parseInt(_fullcell*_numberofsizes);
	_remainder = parseInt(_matrixwidth - _totalfullcells);
	if (_remainder > 0) {
		_endcellwidth = (_cellwidth + _remainder + 1);
		
	} else {
		_endcellwidth = (_cellwidth + 1);
	}
	$(".tbm_size_title, .tbm_size").css({"width": _cellwidth+"px"});
	
	$(".tbm_size_title:last").css({"border-right":"0","width": _endcellwidth +"px"});
	
	$(".tbmcell"+_numberofsizes).css({"border-right":"0","width": _endcellwidth +"px"});
	
	$("#tbmatrix").find('input').each(function(i) {
		$(this).numeric();
	});	
}


var p_interval = 0;
startProductRotation = function() {
	var _totalSlides = $('#_total').text();
	var _sliderWidth = parseInt(_totalSlides)*450;
	$('#ppslider').css('width',_sliderWidth+'px');
	
	if (_totalSlides == 1) {
		$('#nextbutton').css('display','none');
		$('#previousbutton').css('display','none');
	} else {
		p_interval = setInterval('pautoRotate()',8000);
		enableProductSlideButtons();
	}
}



productClickForward = function() {
	if (!arguments[0]) {
		// Kill Auto ::
		clearInterval(p_interval);
	}	 
	
	disableProductSlideButtons();
	 
	$('.ppanel').first().stop().animate({'marginLeft':'-450px'}, 600, function() {	
		$(".ppanel:first").remove().insertAfter($(".ppanel:last"));
		$(".ppanel:last").css({'marginLeft':'0px'});
		enableProductSlideButtons();
	});

}

productClickBackward = function() {
	if (!arguments[0]) {
		// Kill Auto ::
		clearInterval(p_interval);
	}	
	
	disableProductSlideButtons();
	
	$(".ppanel:last").css({'marginLeft':'-450px'});
	$(".ppanel:last").remove().insertBefore($(".ppanel:first"));
	
	$('.ppanel').first().stop().animate({'marginLeft':'0px'}, 600, function() {	
		enableProductSlideButtons();
	});

}

pautoRotate = function() {
	//disableSlideButtons();
	
	productClickForward('auto');
}

enableProductSlideButtons = function() {
	$('#nextbutton').css({'display':'block'});
	$('#nextbutton').bind('click', function() {
		productClickForward();
	});
	$('#previousbutton').css({'display':'block'});
	$('#previousbutton').bind('click', function() {
		productClickBackward();
	});
	
}
disableProductSlideButtons = function() {
	$('#nextbutton').unbind('click');	
	$('#nextbutton').css({'display':'none'});
	$('#previousbutton').unbind('click');	
	$('#previousbutton').css({'display':'none'});
	
}

/*----------Product Filters------------*/
getLimitedSizes = function(xEntry_id) {

	_typeSize = 'size';
	_typeColor = 'color';

	xColor = $("#"+_typeColor+" option:selected").val();
		
	if (xColor) {

		xSizeSelected = $("#"+_typeSize+" option:selected").val();
		
		xColorClean = encode64(xColor);
		
		if (xSizeSelected) {
			_getUrl = '/embeds/get_limit_sizes/'+xEntry_id+'/'+xColorClean+'/'+xSizeSelected+'/';
		} else {
			_getUrl = '/embeds/get_limit_sizes/'+xEntry_id+'/'+xColorClean+'/';
		}
		
		clearSizes();
		
		
		$.get(_getUrl, function(data) {
			var _cleanData = $.trim(data);		
			$('#'+_typeSize+'_container').html(data);
		});
	
	} else {
		doSelectorReset(xEntry_id);
	}
	
}

getLimitedColors = function(xEntry_id) {

	_typeSize = 'size';
	_typeColor = 'color';
	
	xSize = $("#"+_typeSize+" option:selected").val();
	
	if (xSize) {
	
		xColorSelected = $("#"+_typeColor+" option:selected").val();
		
		//xColorSelectedClean = xColorSelected.replace('/', '_');
		
		
		// Use Base64 Encoding because EE will auto-convert URL encoded Slashes
		// when used via aJax (i.e - Navy/Black)
		
		xColorSelectedClean = encode64(xColorSelected);
		//xColorSelectedClean = encodeURIComponent(xColorSelected);
		
		if (xColorSelected != "") {
			_getUrl = '/embeds/get_limit_colors/'+xEntry_id+'/'+xSize+'/'+xColorSelectedClean+'/';
		} else {
			_getUrl = '/embeds/get_limit_colors/'+xEntry_id+'/'+xSize+'/';
		}
		
		clearColors();
		
		$.get(_getUrl, function(data) {
			var _cleanData = $.trim(data);		
	  		
			$('#color_container').html(data);
			
		});
	
	} else {
		doSelectorReset(xEntry_id);
	}
}

doSelectorReset = function(xEntry_id) {
	getAvailableColors(xEntry_id);
	getAvailableSizes(xEntry_id)
}

getAvailableColors = function(xEntry_id) {
	$.get('/embeds/get_all_available_colors_for_product/'+xEntry_id+'/', function(data) {
		var _cleanData = $.trim(data);		
  		$('#color_container').html(data);
	});
}

getAvailableSizes = function(xEntry_id) {
	$.get('/embeds/get_all_available_sizes_for_product/'+xEntry_id+'/', function(data) {
		var _cleanData = $.trim(data);				
  		$('#size_container').html(data);
	});
}

clearSizes = function() {
	$('#size_container').html(_loaderImage);
}

clearColors = function() {
	$('#color_container').html(_loaderImage);
}

/*----------Home Slides------------*/
var interval = 0;

startHeaderRotation = function() {
	getImages();
	var _totalSlides = $('#_total').text();
	
	var _sliderWidth = parseInt(_totalSlides)*960;
	$('.slides').css('width',_sliderWidth+'px');
	if (_totalSlides == 1) {
		$('#slider_arrow_next').css('display','none');
		$('#slider_arrow_previous').css('display','none');
	} else {
		interval = setInterval('autoRotate()',8000);
	}
		
	
}

getImages = function() {
	
	var _totalSlides = parseInt($('#_total').text())-1;
	var i=1;
	do
  	{
  		$.get('/embeds/ajax_slide/'+i+'/', function(data) {
			$('.slides').append(data);
		});
		i++;
  	}
	while (i<=_totalSlides);
	
	$('#slider_arrow_next').fadeIn("slow");
	$('#slider_arrow_previous').fadeIn("slow");
	
	enableSlideButtons();
}

imageClickForward = function() {

	if (!arguments[0]) {
		// Kill Auto ::
		clearInterval(interval);
	}	 
	
	disableSlideButtons();
	 
	$('.slide').first().stop().animate({'marginLeft':'-960px'}, 600, function() {	
		$(".slide:first").remove().insertAfter($(".slide:last"));
		$(".slide:last").css({'marginLeft':'0px'});
		enableSlideButtons();
	});

}

imageClickBackward = function() {

	if (!arguments[0]) {
		// Kill Auto ::
		clearInterval(interval);
	}	
	
	disableSlideButtons();
	
	$(".slide:last").css({'marginLeft':'-960px'});
	$(".slide:last").remove().insertBefore($(".slide:first"));
	
	$('.slide').first().stop().animate({'marginLeft':'0px'}, 600, function() {	
		enableSlideButtons();
	});

}

autoRotate = function() {
	//disableSlideButtons();
	imageClickForward('auto');
}

enableSlideButtons = function() {
	$('#slider_arrow_next').css({'opacity':'1.0'});
	$('#slider_arrow_next').bind('click', function() {
		imageClickForward();
	});
	$('#slider_arrow_previous').css({'opacity':'1.0'});
	$('#slider_arrow_previous').bind('click', function() {
		imageClickBackward();
	});
	
}
disableSlideButtons = function() {
	$('#slider_arrow_next').unbind('click');	
	$('#slider_arrow_next').css({'opacity':'0.5'});
	$('#slider_arrow_previous').unbind('click');	
	$('#slider_arrow_previous').css({'opacity':'0.5'});
	
}



  var keyStr = "ABCDEFGHIJKLMNOP" +
               "QRSTUVWXYZabcdef" +
               "ghijklmnopqrstuv" +
               "wxyz0123456789+/";

  function encode64(input) {
     input = escape(input);
     var output = "";
     var chr1, chr2, chr3 = "";
     var enc1, enc2, enc3, enc4 = "";
     var i = 0;

     do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
           enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
           enc4 = 64;
        }

        output = output +
           keyStr.charAt(enc1) +
           keyStr.charAt(enc2) +
           keyStr.charAt(enc3) +
           keyStr.charAt(enc4);
        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = "";
     } while (i < input.length);

     return output;
  }

/*
startHeaderRotation = function() {
	var _totalSlides = $('#_total').text();
	//var _sliderWidth = parseInt(_totalSlides)*310;
	//console.log(_sliderWidth);
	//$('.slideset').css('width',_sliderWidth+'px');

	interval = setInterval('autoRotate()',5000);
	
	$('#slider_arrow_next').fadeIn("fast");
	$('#slider_arrow_previous').fadeIn("fast");
	
}

$.get('/embeds/ajax_slide/'+parseInt(_nextImage)+'/', function(data) {
			$('#slider').append(data);
			imageFoward(_currentOffset,_nextImage,_scriptTotat);
		});
		
*/








