var largerText = "";
var smallerText = "";
//	Safe Firebug debug call
function debug(obj) {
	try {
		console.log(obj);
	} catch (e) {
		// ignore
	}
}

// Simple JS access to cookies
function createCookie(name, value, days) {
	var expires = "";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		expires = "; expires=" + date.toGMTString();
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}

// Read a cookie
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;
}
// Delete a cookie
function eraseCookie(name) {
	createCookie(name, "", -1);
}

jQuery.fn.equalizeCols = function() {
	var el, height = 0, h;
	this.each( function() {
		el = jQuery(this).css("height", "auto");
		h = el.outerHeight();
		height = (h > height) ? h : height;
		height = (height < 481) ? 481 : height;

	});
	return this.each( function() {
		jQuery(this).css("height", height);
	});
};

// Setup Mechanism
// Initialises all javascript

function setup() {
	//Change bind text resize functionality
	var styleSize = $("#styleSize");
	if ("undefined" != typeof(styleSize.attr("name"))) {
		var names = styleSize.attr("name").split("-");
		largerText = names[0];
		smallerText = names[1];
		// Size switcher
		styleSize.click( function() {
			switchSize($(this).html());
			return false;
		});
	}

	//Change style size if cookie exists
	var c = readCookie("style");
	if (c) {
		switchSize(c);
	}

	// Top level othersites drop down
	$('#otherSites').unbind().hoverIntent( {
		sensitivity :1,
		interval :150,
		over : function() {
			var changeLanguage = $('#siteWideNavigation').find('.change');
			if (changeLanguage.attr('isOpen') != 'true') {
				// change language menu is not visible
				$(this).children('ul').slideDown( {
					duration :300,
					easing :'easeOutCirc'
				});
			}
		},
		timeout :150,
		out : function() {
			$(this).children('ul').slideUp( {
				duration :300,
				easing :'easeInCirc'
			});
		}
	})

	// Disable other sites click
	$('#otherSites .hasMenu').click( function() {
		return false
	})

	// Countries drop downs (overrides css)
	$('#popup div.body').hoverIntent( {
		sensitivity :1,
		interval :100,
		over : function() {
		},
		timeout :100,
		out : function() {
			toggleSites()
			$('#popup div.body').slideUp( {
				duration :300,
				easing :'easeInOutCirc'
			});

		}
	})

	// Country clicker
	$('#siteWideNavigation').find('.change').click(toggleSites)

	equalizeColumns();

	// clearing form inputs
	$('input#clear').click( function() {
		$('div.contact form input[type="text"], div.contact form textarea').each( function(i) {
			this.value = "";
		});
		return false;
	});

	// clearing pin value
	$('a.pin_clear').click( function() {
		$('input#pin').each( function(i) {
			this.value = "";
		});
		return false;
	});

	// mouse over effects for intro non flash flag changes
	$('.countries a').bind("mouseenter", function() {
		var img = $(this).children('img');
		$(img[0]).css("display", "none");
		$(img[1]).css("display", "inline");

	});

	$('.countries a').bind("mouseleave", function() {
		var img = $(this).children('img');
		$(img[1]).css("display", "none");
		$(img[0]).css("display", "inline");
	});
	setupForms();
}

function setupForms() {
	jQuery.validator.addMethod("requiredNoMessage", validateRequiredField, "");
	jQuery.validator.addMethod("requiredTelephoneOrEmail", validateTelephoneOrEmail, "");
	$("#contactUsForm").bind("invalid-form.validate", invalidFormValidate);
	$("#contactUsForm").validate({
		onkeyup: false,
		rules: {
			customer_name: "requiredNoMessage",
			tel: "requiredTelephoneOrEmail",
			myemail: "requiredTelephoneOrEmail"
		}
	});
	$("#customerServiceInquiryForm").bind("invalid-form.validate", invalidFormValidate);
	$("#customerServiceInquiryForm").validate({
		onkeyup: false,
		rules: {
		consignment: "requiredNoMessage",
		sender_name: "requiredNoMessage",
		delivery_name: "requiredNoMessage",
		delivery_town: "requiredNoMessage",
		contact_name: "requiredNoMessage",
		telephone: "requiredNoMessage",
		enquiry: "requiredNoMessage"
	}
	});
	$("#collectionBookingForm").bind("invalid-form.validate", invalidFormValidate);
	$("#collectionBookingForm").validate({
		onkeyup: false,
		rules: {
			account_number: "requiredNoMessage",
			collection_name: "requiredNoMessage",
			collection_address1: "requiredNoMessage",
			collection_town: "requiredNoMessage",
			collection_postcode: "requiredNoMessage",
			collection_country: "requiredNoMessage",
			contact_name: "requiredNoMessage",
			telephone: "requiredNoMessage",
			email_address: "requiredNoMessage",
			delivery_name: "requiredNoMessage",
			delivery_address1: "requiredNoMessage",
			delivery_town: "requiredNoMessage",
			delivery_postcode: "requiredNoMessage",
			delivery_country: "requiredNoMessage",
			Order_Number_Details: "requiredNoMessage",
			Special_Request_Info: "requiredNoMessage"
		}
	});

	// read cookies into track and trace form
	var query = readCookie("trackQuery");
	$("#QUERY").val(query);
	var consignment = readCookie("trackConsignment");
	if (consignment == "false") {
		$("#customer_number").attr("checked", "checked");
	} else {
		$("#consignment_number").attr("checked", "checked");
	}
	var pin = readCookie("trackPin");
	$("#PIN").val(pin);
	if ((query != null) && (pin != null)) {
		$("#Remember").attr("checked", "checked");
	}

	// setup reset button
	$("input[type=reset]").click(function(){
		$(".errorLabel").removeClass("errorLabel");
		$("div.error").hide();

		return true;
	});
}

function validateRequiredField(value, element) {
	var valid = ("" != value);
	var name = element.name;
	var label = $("label[for=" + name + "]");
	if (valid) {
		label.removeClass("errorLabel");
	} else {
		label.addClass("errorLabel");
	}
	return valid;
}

function validateTelephoneOrEmail(value, element) {
	var telephone = $("#tel");
	var telephoneValue = telephone.val();
	var telephoneName = telephone.attr("name");
	var telephoneLabel = $("label[for=" + telephoneName + "]");

	var email = $("#myemail");
	var emailValue = email.val();
	var emailName = email.attr("name");
	var emailLabel = $("label[for=" + emailName + "]");

	var valid = (("" != telephoneValue) || ("" != emailValue));
	if (valid) {
		telephoneLabel.removeClass("errorLabel");
		emailLabel.removeClass("errorLabel");
	} else {
		telephoneLabel.addClass("errorLabel");
		emailLabel.addClass("errorLabel");
	}
	return valid;
}

function invalidFormValidate(e, validator) {
	var errors = validator.numberOfInvalids();
	if (errors) {
		$("div.error p").html(formErrorMessage);
		$("div.error").show();
	} else {
		$("div.error").hide();
	}
	equalizeColumns();
}

function submitTrackAndTraceForm() {
	if ($("#Remember").attr("checked")) {
		var query = $("#QUERY").val();
		createCookie("trackQuery", query, 31);
		var consignment = $("#consignment_number").attr("checked");
		createCookie("trackConsignment", consignment, 31);
		var pin = $("#PIN").val();
		createCookie("trackPin", pin, 31);
	} else {
		eraseCookie("trackQuery");
		eraseCookie("trackConsignment");
		eraseCookie("trackPin");
	}

	document.getElementById("trackForm").submit();
}

function equalizeColumns() {
	if ($(".sitemap").length != 0) {
		return;
	}

	$(".main, .column").equalizeCols();

	var bottom = parseInt($(".main").css("padding-bottom"))
	var new_height = parseInt($(".main").css("height")) - bottom + 1;
	$(".main").css("height", new_height);
}

function toggleSites() {
	// Shows and loads site list in the popup box

	var link = $('#siteWideNavigation').find('.change');
	var open = link.attr('name').split('-')[0];
	var close = link.attr('name').split('-')[1];

	if (link.attr('isOpen') != 'true') {
		link.attr('isOpen', 'true');
		link.html(close)

		if ($('#popup').find('div.countries').size() > 0) {
			$('#popup div.body').slideDown( {
				duration :400,
				easing :'easeInOutCirc'
			})

		} else {
			// Load the countries.shtml using ajax.
			$('#popup div.body').load('_includes/menus/countries.shtml', function() {
				$(this).slideDown( {
					duration :400,
					easing :'easeInOutCirc'
				})
			});
		}
		toggleIFrame();
	} else {
		$('#popup div.body').slideUp( {
			duration :400,
			easing :'easeInOutCirc'
		});
		link.attr('isOpen', 'false');
		link.html(open)
		toggleIFrame();
	}

	return false;
}

// Simple function to change font size
function switchSize(styleSize) {
	if (styleSize == largerText)
		$('body').css('font-size', '12pt').find('#styleSize').html(smallerText)
	else if ((styleSize == smallerText))
		$('body').css('font-size', '10pt').find('#styleSize').html(largerText)

	createCookie('style', styleSize, 365);
	equalizeColumns();
}

// Show an iFrame uner our country dropdown list.
function toggleIFrame() {
	// If the user has IE 6 then we need to make sure that selects don't show
	// through.
	if (jQuery.browser.msie == true && jQuery.browser.version < 7) {
		// If the iFrame exists...
		if ($('#iFrameHolder').length > 0) {
			// remove it.
			$('#iFrameHolder').remove();
		} else {
			// create a new iframe.
			var popup = $('#popup');
			var popupOffset = popup.offset( {
				border: true,
				padding: true
			});

			// Create an iframe and place it in the siteWideNavigation div.
			var iframeSrc = '<iframe id="iFrameHolder" src="#" tabindex="-1" ' + 'style="display:block; position:absolute;' + 'z-index:98;filter:Alpha(Opacity=\'0\');"></iframe>';
			$('#siteWideNavigation').append(iframeSrc);

			// Set the location and width of the item.
			$('#iFrameHolder').width(popup.width()).height(
					$(document).height() - $('#siteWideNavigation').height() - 20);
			$('#iFrameHolder').css('left', popupOffset.left).css('top', $('#siteWideNavigation').height());
		}
	}
}

// Prep the setup routine
$(document).ready(setup);