$(document).ready(function()
{    
	myAccountUpdate();
	postReferAfriendForm();
	clearReferAfriendBoxes();
	postEditLoginForm();

	$('select[name=sort]').change(function()
	{
	    $(this).closest('form').submit();
	});
	
	$('#searchForm').submit(function()
	{
	    if ($(this).find('input[name=search]').val() == '')
	    {
	        alert('Please enter words to search for');
	        return false;
	    }
	    else
	    {
	        return true;
	    }
	});
	
	/**
	 * check if the k_emailpopupshown cookie exists
	 * if not, show the first time visitor popup
	 *
	 * first, get site name, we only want to do this for koodos
	 */
	/**
	 * RY - Temporarily disabling popup as per request in Bug 3081
	 * 
	var newVisitorCookie = readCookie('k_emailpopupshown');
	if (!newVisitorCookie)
	{
    	$.ajax(
        {
            type       : 'GET',
            url        : '/content/getSiteName', 
            async      : false,
            dataType   : 'text',
            success    : function (response)
            {
                if (response == 'koodos')
                {
            	    var newHTML = '<a href="/content/newVisitorSignup" id="newVisitorLink" style="display: none;"><!-- empty --></a>';
            	    $('body').append(newHTML);
            	    $('#newVisitorLink').fancybox({
                        'zoomSpeedIn':	0, 
                        'zoomSpeedOut':	0, 
                        'overlayShow':	true,
                        'overlayOpacity': 0.7,
                        'frameWidth': 550,
                        'frameHeight': 350
                    });
                    $('#newVisitorLink').click();
                    
                    createCookie('k_emailpopupshown', 'fired', 3600);
                }
            }            	 
        });
	}
	*
	*/
	
	var windowLocation = window.location.toString();
	var cleanWindowLocation = windowLocation.replace(window.location.hostname.toString(), '');
	cleanWindowLocation = cleanWindowLocation.substring(7, cleanWindowLocation.length);
	if (cleanWindowLocation.substring(0, 1) == '/')
	{
	    cleanWindowLocation = cleanWindowLocation.substring(1, cleanWindowLocation.length);
	}
	
	var openCategoryMenu = false;
	var categoryToOpen = cleanWindowLocation.substring(0, 1).toUpperCase()+cleanWindowLocation.substring(1, cleanWindowLocation.length).toLowerCase();
	switch (cleanWindowLocation)
	{
	    case 'womens':
	        openCategoryMenu = true;
	        break;
	    case 'bags':
	        openCategoryMenu = true;
	        break;
	    case 'jewellery':
	        openCategoryMenu = true;
	        break;
	    case 'shoes':
	        openCategoryMenu = true;
	        break;
	    case 'kids':
	        openCategoryMenu = true;
	        break;
	    case 'mens':
	        openCategoryMenu = true;
	        break;
	}
	
	if (openCategoryMenu)
	{
	    $('#leftMenuAccordion').find('h3').each(function()
	    {
	        $(this).parent().find('#leftMenu'+$(this).html()).removeClass('selected');
	        $(this).parent().find('#leftMenu'+$(this).html()).parent().find('h3').removeClass('selected');
	        $(this).parent().find('#leftMenu'+$(this).html()).hide();
	    });
	    
	    $('#leftMenuAccordion').find('#leftMenu'+categoryToOpen).addClass('selected');
	    $('#leftMenuAccordion').find('#leftMenu'+categoryToOpen).parent().find('h3').addClass('selected');
	    $('#leftMenuAccordion').find('#leftMenu'+categoryToOpen).show();
	}
	
	$('h3[id=tab7]').click(function()
	{
	    if ($(this).attr('title') != undefined && $(this).attr('title') != '')
	    {
	        window.location = $(this).attr('title');
	        return false;
	    }
	});
	
	$("#swsignup-male-button").click(function() {
	    $("#newsletter_gender").val("M");
	});
	
	$("#swsignup-female-button").click(function() {
	    $("#newsletter_gender").val("F");
	});
	
	$("#newsletterLeftnavForm").submit(function() {
        var email = $("#newsletterSignupLeftnav").val();
        return newsletterSubmit(email);
	});
	
	$("#newsletterHomeForm").submit(function(e) {
        var email = $("#newsletterSignupHome").val();
        return newsletterSubmit(email);
	});
	
    if (window.location.href.indexOf("sale-preview") > -1)
    {
        salePreview();
    }
    
    $("#trackLink").fancybox({
        'zoomSpeedIn':  0, 
        'zoomSpeedOut': 0, 
        'overlayShow':  true,
        'overlayOpacity': 0.7,
        'frameWidth': 400,
        'frameHeight': 190, 
        'showContentCallback': function()
        {
            $('#fancy_div').find('#trackForm').submit(function()
            {
                return trackOrderForm($(this));
            });
        }
    });
	
	//duplicate link - located inside Order Tracking page
	$("#trackNewOrder").fancybox({
        'zoomSpeedIn':  0, 
        'zoomSpeedOut': 0, 
        'overlayShow':  true,
        'overlayOpacity': 0.7,
        'frameWidth': 400,
        'frameHeight': 190, 
        'showContentCallback': function()
        {
            $('#fancy_div').find('#trackForm').submit(function()
            {
                return trackOrderForm($(this));
            });
        }
    });
});

function trackOrderForm(formObj)
{
    formObj.find('p:first').hide();
    formObj.find('p').removeClass('notValid');
    
    var errorsFound = false;
    if (!formObj.find('input[name=email_address]').val().match(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/))
    {
        errorsFound = true;
        formObj.find('input[name=email_address]').closest('p').addClass('notValid');
    }
    if (formObj.find('input[name=order_number]').val() == '' || formObj.find('input[name=order_number]').val() == undefined)
    {
        errorsFound = true;
        formObj.find('input[name=order_number]').closest('p').addClass('notValid');
    }
    
    if (!errorsFound)
    {
        var data = 
        {
            email_address : formObj.find('input[name=email_address]').val(), 
            order_number: formObj.find('input[name=order_number]').val()
        }
        
        $.ajax(
        {
            type     : 'GET',
            url      : formObj.attr('action'),
            async    : false,
            data     : data,
            dataType : 'text',
            success  : function(response)
            {
                if (response != 'found')
                {
                    formObj.find('p:first').addClass('errorMessage').show();
                    errorsFound = true;
                }
            }
        });
    }
    
    return !errorsFound;
}

function postEditLoginForm()
{
    $("#editLoginForm").submit(function() {
        $("#editLoginForm").find("p").removeClass('notValid');
        var emailValidator = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i;
        var email = $("#editLoginForm").find("#dc_user_email_address").val();
        if ( !emailValidator.test(email) )
        {
            $("#editLoginForm").find("#dc_user_email_address").closest("p").addClass('notValid');
            return false;
        }
        else if ($("#editLoginForm").find("#dc_user_password").val() != "")
        {
            if ($("#editLoginForm").find("#dc_user_current_password").val() == "" || $("#editLoginForm").find("#dc_user_current_password").val().length < 6)
            {
                $("#editLoginForm").find("#dc_user_current_password").closest("p").addClass('notValid');
                return false;
            }
            else if ($("#editLoginForm").find("#dc_user_password").val().length < 6)
            {
                $("#editLoginForm").find("#dc_user_password").closest("p").addClass('notValid');
                return false;
            }
            else if ($("#editLoginForm").find("#dc_user_password").val() != $("#editLoginForm").find("#dc_user_password_confirm").val())
            {
                $("#editLoginForm").find("#dc_user_password_confirm").closest("p").addClass('notValid');
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            return true;
        }
    });
}

function salePreview()
{
    if (window.location.href.indexOf("#") > -1)
    {
        var preview_code = window.location.href.substr(window.location.href.indexOf("#")+1);
        if ($("span:contains('"+preview_code+"')").length)
        {
            if ($("span:contains('"+preview_code+"')").closest("a").hasClass("saleSignupLink"))
            {
                $("span:contains('"+preview_code+"')").closest("a").trigger("click");
            }
            else
            {
                window.location.href = $("span:contains('"+preview_code+"')").closest("a").attr("href");
            }
        }
    }
}

function newsletterSubmit(email)
{
    var emailValidator = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i;
    if ( !emailValidator.test(email) )
    {
        $("#errorMessage").html("This email address is invalid.");
		$("#errorMessage").show();
        return false;
    }
    else
    {
        return true;
    }
}

function clearReferAfriendBoxes()
{
    $("#friendsName").focus(function() {
        if ($("#friendsName").val() == "friend's name...")
        {
            $("#friendsName").val("");
        }
        if ($("#friendsEmail").val() == "")
        {
            $("#friendsEmail").val("friend's email address...");
        }
    });
    $(document).not("#friendsName").focus(function() {
        if ($("#friendsName").val() == "")
        {
            $("#friendsName").val("friend's name...");
        }
    });
    
    $("#friendsEmail").focus(function() {
        if ($("#friendsEmail").val() == "friend's email address...")
        {
            $("#friendsEmail").val("");
        }
        if ($("#friendsName").val() == "")
        {
            $("#friendsName").val("friend's name...");
        }
    });
    $(document).not("#friendsEmail").focus(function() {
        if ($("#friendsEmail").val() == "")
        {
            $("#friendsEmail").val("friend's email address...");
        }
    });
}

function postReferAfriendForm()
{
	$('#refer_a_friend').click(function()
	{
	     var emailValidator = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i;
	     var email = $('#friendsEmail').val();
	     if ( !emailValidator.test(email) )
         {
             $("#errorMessage").html("This email address is invalid.");
         }
         else
         {
    		 $.ajax(
             {
    			type       : 'POST',
    			url        : '/dcFormBuilder/submit', 
    			async      : false,
    			dataType   : 'text',
    			data       : "friends_name="+$('#friendsName').val()+"&friends_email="+email+"&form_name=refer_a_friend_leftnav",
            	success    : function (data)
            	{
    	           $('#formSuccess').html('Thanks for refering a friend...');
    	           $("#friendsName").val("friend's name...");
    	           $("#friendsEmail").val("friend's email address...");
            	}            	 
             });
         }         
         return false;
	});
}

function listerCloseQuickView(basketContents)
{
    $("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
	$("#fancy_nav").empty();
	$("#fancy_outer").hide();
	$("#fancy_content").hide().empty();
	$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();

	/**
     * update summary and animate
     */
    $('#basketSummary').find('#basketItems').html(basketContents);
    initBasketSummary();
    $('#basketItemsPreview').slideDown(600);
    setTimeout(function()
    {
        $('#basketItemsPreview').slideUp(600);
    }, 5000);
    
    window.scroll(0,0);
}

function listerAddToBasket(skuCode)
{
    /**
     * make ajaxy
     */
    var basketError = false;
    
    $.ajax(
    {
		type     : 'GET',
		url      : '/dcBasket/add/sku/'+skuCode+'/quantity/1',
		async    : false,
		dataType : 'text',
		success  : function(response)
		{
		    if (response == 'You have the maximum quantity of this item in your basket.')
		    {
		        alert('Sorry that item is no longer available');
		        $("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
            	$("#fancy_nav").empty();
            	$("#fancy_outer").hide();
            	$("#fancy_content").hide().empty();
            	$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
		        basketError = true;
		    }
		}
    });
    
    if (!basketError)
    {
        $("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
    	$("#fancy_nav").empty();
    	$("#fancy_outer").hide();
    	$("#fancy_content").hide().empty();
    	$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
        
        /**
         * get new basket contents and
         * update summary
         */
        $.ajax(
        {
        	type     : 'GET',
        	url      : '/dcBasket/getCurrentContents',
        	async    : false,
        	dataType : 'html',
        	success  : function(response)
        	{
        	    /**
        	     * update summary and animate
        	     */
        	    $('#basketSummary').find('#basketItems').html(response);
        	    initBasketSummary();
        	    $('#basketItemsPreview').slideDown(600);
        	    setTimeout(function()
        	    {
        	        $('#basketItemsPreview').slideUp(600);
        	    }, 5000);
        	    
        	    /**
        	     * scroll to top 
        	     * of window
        	     */
        	    window.scroll(0,0);
        	}
        });
    }
}

function initBasketSummary()
{
    $('a#basketLink').click(function()
    {
        $('#basketItemsPreview').slideToggle(600);
        return false;
    });
    
    $('a#basketSummaryClose').click(function()
    {
        $('#basketItemsPreview').slideUp(600);
        return false;
    });
    
    $(".basketPreviewProduct").each(function()
    {
        $(this).simpletip($(this).find(".additionalInfo").html(),
        {
    		hook: { target: 'topLeft', tooltip: 'bottomRight' },
    		stem: { corner: 'bottomRight', color: '#7F7F7F' },
    		offset: [10, 15],
    		width: 150,
    		delay: 300,
    		showEffect: 'fade',
    		hideEffect: 'fade',
    		border: { size: 2, color: '#7F7F7F' },
    		contentClass: 'tooltipContentPreview'
		});
    });
}

function myAccountUpdate()
{
	/*
	 my account updates
	*/
	$("#editBilling").click(function()
	{
		$(this).fancybox({ 
		'zoomSpeedIn':	0, 
		'zoomSpeedOut':	0, 
		'overlayShow':	true,
		'overlayOpacity': 0.7,
	    'itemCloseCallback' : refreshBillingAddress,
	    'frameWidth': 430,
		'frameHeight': 320
	   
	   });	
	});
	
	
	$("#editDelivery").click(function()
	{
		$(this).fancybox({ 
		'zoomSpeedIn':	0, 
		'zoomSpeedOut':	0, 
		'overlayShow':	true,
		'overlayOpacity': 0.7,
	    'itemCloseCallback' : refreshDeliveryAddress,
	    'frameWidth': 430,
		'frameHeight': 450
	   
	    });
	   
		
	});
	
	$("#editLogin").click(function()
	{
		$(this).fancybox({ 
		'zoomSpeedIn':	0, 
		'zoomSpeedOut':	0, 
		'overlayShow':	true,
		'overlayOpacity': 0.7,
	    'itemCloseCallback' : refreshLoginDetails,
	    'frameWidth': 430,
		'frameHeight': 280
	   
	    });
	   
		
	});
	
	
	$("#editContact").click(function()
	{
		$(this).fancybox({ 
		'zoomSpeedIn':	0, 
		'zoomSpeedOut':	0, 
		'overlayShow':	true,
		'overlayOpacity': 0.7,
	    'itemCloseCallback' : refreshContactDetails,
	    'frameWidth': 430,
		'frameHeight': 340
	   
	    });
	    	
	});
	
	$("#editContactPreferences").click(function()
	{
		$(this).fancybox({ 
		'zoomSpeedIn':	0, 
		'zoomSpeedOut':	0, 
		'overlayShow':	true,
		'overlayOpacity': 0.7,
	    'itemCloseCallback' : refreshMyContactPreferences,
	    'frameWidth': 430,
		'frameHeight': 180	   
	    });	
		
		
	});
	
}

function displayPromotionalText(ownPartyOptIn)
{
	/**
	* Contact Preferences messages
	**/
	var noPromotionalEmailText = 'You are currently NOT subscribed to receive communications';
	var yesPromotionalEmailText = 'You are currently subscribed to receive communications';
	
	if (ownPartyOptIn == '' || ownPartyOptIn == 0 || ownPartyOptIn == 'No')
		document.getElementById('own_party_opt_in').innerHTML = noPromotionalEmailText;
	else
		document.getElementById('own_party_opt_in').innerHTML = yesPromotionalEmailText;
}

function refreshMyContactPreferences()
{
       $.ajax(
        {
			type       : 'GET',
			url        : '/dcMyAccountModule/getUpdatedDetails?updated=contactPreferences', 
			async      : false,
			dataType   : 'json',
        	success    : function (data)
        	{
				displayPromotionalText(data.own_party_opt_in);
        	} 
       });
       
       myAccountUpdate();
}


function refreshBillingAddress()
{
       $.ajax(
        {
			type       : 'GET',
			url        : '/dcMyAccountModule/getUpdatedDetails?updated=billingAddress', 
			async      : false,
			dataType   : 'json',
			cache      : false,
        	success    : function (data)
        	{
        		var billingAddress = data;
          		$('#address1').html(billingAddress.address_line_1);
          		$('#address2').html(billingAddress.address_line_2);
          		$('#address3').html(billingAddress.address_line_3);
          		$('#town').html(billingAddress.town);
          		$('#county').html(billingAddress.county);
          		$('#country').html(billingAddress.country);
          		$('#postcode').html(billingAddress.postcode);
        	} 
       });
       
       myAccountUpdate();
}


function refreshDeliveryAddress()
{
       $.ajax(
        {
			type       : 'GET',
			url        : '/dcMyAccountModule/getUpdatedDetails?updated=deliveryAddress', 
			async      : false,
			dataType   : 'json',
			cache      : false,
        	success    : function (data)
        	{
        		var deliveryAddress = data;
        		$("h3:contains('Delivery address')").closest("div").find('#name').html(deliveryAddress.title+' '+deliveryAddress.first_name+' '+deliveryAddress.last_name);
          		$("h3:contains('Delivery address')").closest("div").find('#delivery1').html(deliveryAddress.address_line_1);
          		$("h3:contains('Delivery address')").closest("div").find('#delivery2').html(deliveryAddress.address_line_2);
          		$("h3:contains('Delivery address')").closest("div").find('#delivery3').html(deliveryAddress.address_line_3);
          		$("h3:contains('Delivery address')").closest("div").find('#town').html(deliveryAddress.town);
          		$("h3:contains('Delivery address')").closest("div").find('#county').html(deliveryAddress.county);
          		$("h3:contains('Delivery address')").closest("div").find('#country').html(deliveryAddress.country);
          		$("h3:contains('Delivery address')").closest("div").find('#deliveryPostcode').html(deliveryAddress.postcode);
          		$("h3:contains('Delivery address')").closest("div").find('#deliveryPhone').html(deliveryAddress.day_phone);
        	} 
       });
       
       myAccountUpdate();
       
}


function refreshLoginDetails()
{
       $.ajax(
        {
			type       : 'GET',
			url        : '/dcMyAccountModule/getUpdatedDetails?updated=userLogin', 
			async      : false,
			dataType   : 'json',
        	success    : function (data)
        	{
        		var user = data;
          		$('#userEmail').html(user.email);
        	} 
       });
       
       myAccountUpdate();
}


function refreshContactDetails()
{
       $.ajax(
        {
			type       : 'GET',
			url        : '/dcMyAccountModule/getUpdatedDetails?updated=contactDetails', 
			async      : false,
			dataType   : 'json',
        	success    : function (data)
        	{
        		var user = data;
          		$('#title').html(user.name);
          		$('#contactPhone').html(user.phone);
          		$('#eveningPhone').html(user.eveningPhone);
          		$('#eveningPhone').show();
        	} 
       });
       
       myAccountUpdate();     
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}