window.FCUK = window.FCUK || {};

FCUK.Global = function(){
	
	var currentGender = "";
	var defaultEmail = "";
	var mailForm, emailField, signup, mailError;
	
	/** signed up success
	*/
	var signedUp = function(){
		mailError.hide();
		emailField.hide();
		signup.hide();
		mailForm.find("label").show();
	};
	
	/** email signup form submit
	*/
	var mailSignup = function(){
		mailForm = $("footer form");
		emailField = mailForm.find(".textField");
		signup = mailForm.find(".submit");
		mailError = mailForm.find(".error");
		
		// set up clear field
		defaultEmail = emailField.val(); // fetch default
	
		emailField.focus(function(){
			if ($(this).val() == defaultEmail) {
				$(this).val('');
			}
		});
		
		emailField.blur(function()	{
			if ($(this).val() == '') { $(this).val(defaultEmail); }
		});
		
		// set up sign up
		signup.bind("click", function(e){
			e.preventDefault();
			if (emailField.val() == defaultEmail) {
				return false;
			}
			var newEmail = emailField.val();
			
			$.ajax({
			   type: "POST",
			   url: "/subscribe/",
				 dataType: "json",
				 contentType: "application/json; charset=utf-8", 
			   data: "{ 'email_address': '" + newEmail + "' }",
			   success: function(message){
					if (message.success) {
						mailForm.find("label").html(message.success).show();
						signedUp(message.success);
					} else {
						mailForm.find("label").html(message.error).show();
					}
			   }
			 });
			
		});
	};
	
	/** treat external links
	*/
	var setupLinks = function(){
		$(".external").bind("click", function(e){
			e.preventDefault();
			var url = $(this).attr("href");
			var newwindow = window.open(url, 'fcukfragrance');
		});
	};
	
	/** 
	*/
	var renderGrid = function(thisGridData, gender){
		var list = $(".grid ul");
		var myString = "";
		for (var k in thisGridData) {
			var kData = thisGridData[k];
			if (!gender || (gender == kData.gender.toLowerCase())) {
				myString+='<li title="'+kData.order+'"><a href="'+kData.link+'" title="'+kData.name+'" >';
				myString+='<img src="'+kData.image+'" alt="'+kData.name+'" />';
				myString+='<h3>'+kData.name+'</h3>';
				myString+='<em>'+kData.gender+'</em>';
				myString+='<p>'+kData.desc+'</p></a><p>';
				myString+='	<span>'+kData.price+'</span>';
				myString+='	<a href="'+kData.link+'" title="'+kData.name+'">Buy</a>';
				myString+='	</p></li>';
			}
		}
		list.empty().hide().append(myString).fadeIn("slow");
	}
	
	/** set up the search filter
	*/
	var setupFilters = function(){
		if (FCUK.gridData) { renderGrid(FCUK.gridData); }
		
		var filters = $(".sortFilter");
		var orderBy = filters.find(".selectBox select");
		var genderFilter = filters.find(".filter");
		var genderAll = genderFilter.find("li");
		var her = genderFilter.find(".her");
		var him = genderFilter.find(".him");
		var all = genderFilter.find(".all");
		
		orderBy.change(function(){
			$(".grid ul").hide().fadeIn("slow");
			changeSortOrder();
		});
		
		var changeSortOrder = function() { 
			var myOrder = $(orderBy).val();
			if (myOrder == 'price') {
				$('.grid ul li').sortElements(function(a, b){
						return $(a).find('p span').text() > $(b).find('p span').text() ? -1 : 1;
				});
			} else {
				$('.grid ul li').sortElements(function(a, b){
						return parseFloat($(a).attr('title')) > parseFloat($(b).attr('title')) ? 1 : -1;
				});
			}	
		}
		
		var toggleFilter = function(scope, gender){
			$(genderAll).removeClass("on");
			$(scope).addClass("on");
			currentGender = gender;
			renderGrid(FCUK.gridData, gender);
			changeSortOrder();
		}
		
		her.click(function(){ toggleFilter(this, "her"); });
		him.click(function(){ toggleFilter(this, "him"); });
		all.click(function(){ toggleFilter(this); });
	};
	
	/** set up the photo gallery on product page
	*/
	var setupPhotos = function(){
		var scope = $("#product .productImages");
		var mainImage = scope.find(".productImage");
		$("ul li a", scope).each(function(){
			$(this).bind("click", function(e) {
				e.preventDefault();
				var url = $(this).attr("href");
				url.replace("_sm.", "_lg.");
				mainImage.attr("src", url);
			});
		});
	};
	
	return {
		init : function(){
			mailSignup();
			setupLinks();
			setupFilters();
			setupPhotos();
		}
	}
}();

/**
	Fire up the global initialization.
*/
$(document).ready(function(){
	FCUK.Global.init();
});
