/* jQuery Stuff */
$(document).ready(function() {
	PageInit();
	// Highlight products on browse page on mouseover
	$(".browse_display_each_item").hover(function() {
		$(this).addClass("browse_display_each_item_over");
	}, function() {
		$(this).removeClass("browse_display_each_item_over");
	});
	// Search Field
	$("#search_field").attr("default", $("#search_field").val());
	$("#search_field").focus(function() {
		if ($(this).val() == $(this).attr("default")) {
			$(this).val("");
		}
	});
	$("#search_field").blur(function() {
		if ($(this).val() == "") {
			$(this).val($(this).attr("default"));
		}
	});
	// Newsletter Signup
	$('#mailing-list-email').focus(function() {
		$(this).val("");
	});
	// Current User
	if (userLoggedIn()) {
		user_info = '<strong>' + getUserEmail() + '</strong>: <a href="/dynamic/account.php">My Account</a> | <a href="/dynamic/account.php?cmd=logout">Logout</a>';
	}
	else {
		user_info = '<a href="/dynamic/setup_account.php">Register</a> | <a href="/dynamic/login.php">Login</a>';
	}
	$("#user-info").html(user_info);
});

/* Save Basket */
var ajaxActive = false;
var usernameOk = false;

function BasketSave(mode)
{
	var checkImage = document.getElementById("basket_save_check");
	var inputElement = document.getElementById("basket_save_username");
	var checkName = inputElement.value;
	var ok2Check = BasketSaveValidate(checkName);
	if(ok2Check.length > 0)
	{
		alert(ok2Check.replace(/XXX/,"Username"));
		inputElement.focus();
		return true;
	}
	var inputElement = document.getElementById("basket_save_password");
	var checkName = inputElement.value;
	var ok2Check = BasketSaveValidate(checkName);
	if(ok2Check.length > 0)
	{
		alert(ok2Check.replace(/XXX/,"Password"));
		inputElement.focus();
		return true;
	}
	if(mode == "save")
	{
		BasketSaveCheckName(checkImage);
		while(ajaxActive)
		{
			var waiting = ajaxActive;
		}
		if(!usernameOk){return true;}
		var inputElement = document.getElementById("basket_save_password_confirm");
		var confirmName = inputElement.value;
		if(checkName != confirmName)
		{
			inputElement.value = "";
			alert("Sorry, the Passwords do not Match");
			inputElement.focus();
			return true;
		}
	}
	BasketSaveCheckLogon(mode);
	return true;
}
function BasketSaveCheckName(imageObject)
{
	if(imageObject.src.match(/sm_ok/)){return true;}
	var checkName = document.getElementById("basket_save_username").value;
	var checkPassword = document.getElementById("basket_save_password").value;
	var ok2Check = BasketSaveValidate(checkName);
	if(ok2Check.length > 0)
	{
		alert(ok2Check.replace(/XXX/,"Username"));
		return true;
	}
	AjaxBasketSaveCheckName("checkusername",checkName,checkPassword);
	return true;
}
function BasketSaveCheckLogon(mode)
{
	var inputName = document.getElementById("basket_save_username").value;
	var inputPassword = document.getElementById("basket_save_password").value;
	AjaxBasketSaveCheckName(mode,inputName,inputPassword);
	return true;
}
function BasketSaveValidate(checkName)
{
	var retryMessage = "";
	var stringPattern = /\s|\W/;
	if((checkName.length < 8)||(checkName.length > 20))
	{
		retryMessage = "Your XXX should be between 8 and 20 characters long";
	}
	if(checkName == ""){retryMessage = "No XXX Entered";}
	if(checkName.match(stringPattern)){retryMessage = "Your XXX can only contain the characters \"a to z\", \"A to Z\", and \"0 to 9\"";}
	return retryMessage;
}
function BasketSaveUpdateCheck(response)
{
	var iconImage = document.getElementById("basket_save_check");
	var username = document.getElementById("basket_save_username");
	var password = document.getElementById("basket_save_password");
	var confirmPassword = document.getElementById("basket_save_password_confirm");
	switch(response)
	{
		case "usernameok":
			iconImage.title = "This Username is OK";
			iconImage.alt = "This Username is OK";
			iconImage.src = "/default_images/sm_ok.gif";
			usernameOk = true;
			break;
		case "usernameinuse":
			iconImage.title = "Sorry, but this Username in use";
			iconImage.alt = "Sorry, but this Username in use";
			iconImage.src = "/default_images/sm_not_ok.gif";
			alert("Sorry, but that Username is in use.\nPlease try again. Thank you");
			iconImage.src = "/default_images/sm_query.gif";
			username.value = "";
			password.value = "";
			confirmPassword.value = "";
			usernameOk = false;
			username.focus();
			break;
		case "changed":
			iconImage.title = "Click to Check this Username";
			iconImage.alt = "Click to Check this Username";
			iconImage.src = "/default_images/sm_query.gif";
			usernameOk = false;
			break;
		case "invalid":
		case "deleted":
		case "saved":
			username.value = "";
			password.value = "";
			confirmPassword.value = "";
			var message = "Sorry, but a Saved Basket cannot be found with the Username and Password supplied.\nPlease try again. Thank you";
			if(response == "deleted"){message = "Your Saved Basket has been successfully Deleted";}
			if(response == "saved"){message = "Your Basket has been successfully Saved";}
			alert(message);
			iconImage.title = "Click to Check this Username";
			iconImage.alt = "Click to Check this Username";
			iconImage.src = "/default_images/sm_query.gif";
			usernameOk = false;
			username.focus();
			break;
		case "validlogon":
			AjaxBasketSaveCheckName("save",username,password);
			break;
		case "deletefailed":
			alert("Sorry, but your Saved Basket could not be Deleted.\nPlease try again. Thank you");
			break;
		case "savefailed":
			alert("Sorry, but your Basket could not be Saved.\nPlease try again. Thank you");
			break;
		case "restorefailed":
			alert("Sorry, but your Basket could not be Restored.\nPlease try again. Thank you");
			break;
		default:
			document.location.href = "/dynamic/basket.php";
			break;
	}
	return true;
}
function AjaxBasketSaveCheckName(checkMode,checkUsername,checkPassword)
{
	ajaxActive = true;
	var waitImage = document.getElementById("basket_save_processing");
	waitImage.style.display = "block";
	waitImage.style.zIndex = 1;
	var thisFunction = "Check if a Username Exists";
	var thisFile = "basket_save.php";
	var thisParam = "mode="+checkMode+"&name="+checkUsername+"&pass="+checkPassword;
	var thisAjax = new Object();
	thisAjax = eval(ajaxMethod);
	if(canDoAjax)
	{
		thisAjax.open("POST",thisFile,true);
		thisAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		thisAjax.setRequestHeader("Content-Length",thisParam.length);
		thisAjax.setRequestHeader("Connection","close");
		thisAjax.onreadystatechange = function ()
		{
			if(thisAjax.readyState == 4)
			{
				waitImage.style.display = "none";
				waitImage.style.zIndex = -1;
				BasketSaveUpdateCheck(thisAjax.responseText);
			}
		}
		thisAjax.send(thisParam);
	}
	ajaxActive = false;
	return true;
}

/* From: browse_featured_item.js */
function BrowseFeatureView(what)
{
	window.location.href = "/dynamic/viewitem.php?item=" + what;
	return true;
}

function BrowseFeatureHighLight(obj,what,mode)
{
	switch(what)
	{
		case "box":
			switch(mode)
			{
				case 0:
					obj.className = "browse_each_featured_item_over";
					break;
				case 1:
					obj.className = "browse_each_featured_item";
					break;
			}
			break;
	}
	return true;
}

/* From: display_context_help.js */
var eventStore = new Array();

function GetInfoWindow(event,infoRef)
{
	eventStore[0] = CursorPageX(event);
	eventStore[1] = CursorPageY(event);
	eventStore[2] = event.clientX;
	eventStore[3] = event.clientY;
	CloseInfoWindow();
	AjaxDisplayInfo(infoRef,"display_context_content");
}
function OpenInfoWindow()
{
	document.getElementById("display_context_help").className = "display_context_help_visible";
	document.getElementById("display_context_header").className = "display_context_header_visible";
	document.getElementById("display_context_content").className = "display_context_content_visible";
	document.getElementById("display_context_footer").className = "display_context_footer_visible";
	document.getElementById("display_context_close").className = "display_context_close_visible";
	var cursorXdocument = eventStore[0];
	var cursorYdocument = eventStore[1];
	var cursorXposition = eventStore[2];
	var cursorYposition = eventStore[3];
	var infoWindow = document.getElementById("display_context_help");
	var windowHeader = document.getElementById("display_context_header");
	var infoContent = document.getElementById("display_context_content");
	var windowFooter = document.getElementById("display_context_footer");
	var closeButton = document.getElementById("display_context_close");
	var buttonHeight = closeButton.offsetHeight;
	var buttonWidth = closeButton.offsetWidth;
	var buttonOffsetX = buttonWidth / 2;
	var buttonOffsetY = buttonHeight / 2;
	var buttonLeft = cursorXdocument - buttonOffsetX;
	var buttonTop = cursorYdocument - buttonOffsetY;
	var contentHeight = infoContent.offsetHeight;
	var windowWidth = infoWindow.offsetWidth;
	var windowHeight = contentHeight + (2 * buttonHeight);
	var footerBottom = windowHeight;
	var paddingOffset = 5;
	var paddingSide = buttonHeight + paddingOffset;
	var contentWindowWidth = windowWidth - (2 * paddingSide);
	var placeToRight = "0";
	if(cursorXposition <= windowWidth){placeToRight = "1";}
	var placeAbove = "0";
	if(cursorYposition <= windowHeight){placeAbove = "1";}
	var vector = placeToRight + placeAbove;
	switch(vector)
	{
		case "11":
			var windowLeft = cursorXdocument - paddingSide;
			var windowTop = cursorYdocument - buttonOffsetY;
			break;
		case "10":
			var windowLeft = cursorXdocument - paddingSide;
			var windowTop = cursorYdocument - windowHeight + buttonOffsetY;
			break;
		case "01":
			var windowLeft = cursorXdocument - windowWidth + paddingSide;
			var windowTop = cursorYdocument - buttonOffsetY;
			break;
		case "00":
			var windowLeft = cursorXdocument - windowWidth + paddingSide;
			var windowTop = cursorYdocument - windowHeight + buttonOffsetY;
			break;
	}
	infoWindow.style.height = windowHeight + "px";
	infoWindow.style.top = windowTop + "px";
	infoWindow.style.left = windowLeft + "px";
	windowHeader.style.width = windowWidth + "px";
	windowHeader.style.height = buttonHeight + "px";
	infoContent.style.top = buttonHeight +"px";
	infoContent.style.width = contentWindowWidth + "px";
	infoContent.style.paddingLeft = paddingSide +"px";
	infoContent.style.paddingRight = paddingSide +"px";
	windowFooter.style.width = windowWidth + "px";
	windowFooter.style.height = buttonHeight + "px";
	closeButton.style.top = buttonTop+"px";
	closeButton.style.left = buttonLeft+"px";
	return true;
}
function CloseInfoWindow()
{
	document.getElementById("display_context_header").className = "display_context_header_hidden";
	document.getElementById("display_context_content").innerHTML = "";
	document.getElementById("display_context_content").className = "display_context_content_hidden";
	document.getElementById("display_context_close").className = "display_context_close_hidden";
	document.getElementById("display_context_footer").className = "display_context_footer_hidden";
	document.getElementById("display_context_help").className = "display_context_help_hidden";
	return true;
}
function CursorPageX(mouseEvent)
{
	if(mouseEvent.pageX){return mouseEvent.pageX;}
	if(mouseEvent.clientX)
	{
		var xPos = mouseEvent.clientX;
		if(document.documentElement.scrollLeft)
		{
			xPos = xPos + document.documentElement.scrollLeft;
		}
		else
		{
			xPos = xPos + document.body.scrollLeft;
		}
		return xPos;
	}
	else
	{
		return null;
	}
}
function CursorPageY(mouseEvent)
{
	if(mouseEvent.pageY){return mouseEvent.pageY;}
	if(mouseEvent.clientY)
	{
		var yPos = mouseEvent.clientY;
		if(document.documentElement.scrollTop)
		{
			yPos = yPos + document.documentElement.scrollTop;
		}
		else
		{
			yPos = yPos + document.body.scrollTop;
		}
		return yPos;
	}
	else
	{
		return null;
	}
}
function GetStyle(styleObject,styleProperty)
{
	if(styleObject.currentStyle)
	{
		var styleValue = styleObject.currentStyle[styleProperty];
	}
	if(window.getComputedStyle)
	{
		var styleValue = window.getComputedStyle(styleObject,null).getPropertyValue(styleProperty);
	}
	return styleValue;
}

function PageInit()
{
	CollapseEmpty();
	
	// Mini Basket
	if (displayMiniBasket) {
		FillMiniBasket("miniBasket");
	}
	
	// Catalogue Tree
	if (displayLeftCatalog) {
		//FillLeftCatalog("category_nav");
		//showDiv("category_nav");
	}
	
	// Currenct Selector
	//if (displayCurrency) FillCurrencySelector("currency_select");

	// Search Form
	//if (displaySearch) showDiv("search_form");
	
	// Fill search field with previous search term
	//FillSearchBox("searchField");
	
	// Login Form
	if (displayLogin) {
		showDiv("mainsite_login");
	}
	
	if(isSCSProduct){InitSCS();}
	return true;
}

function userLoggedIn() {
	return userLoggedOn;
}
function getUserEmail() {
	return userEmail;
}
function cvv2PopUp()
{
	day = new Date();
	URL = "/images/cvv2_diagram.png";
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=550,height=200,left = 373.5,top = 422.5');");
}
function showDiv(divId)
{
	var thisDiv = document.getElementById(divId);
	if (thisDiv) // Make sure the div exists to suppress any errors
	{
		thisDiv.style.display = "block";
	}
	
}

/* From: search.js */
function ShowSearchText(obj)
{
	var occlude = document.getElementById("search_site_summary_full_text");
	var x = obj.value;
	if(x == "Show Full Search Text")
	{
		obj.value = "Hide Full Search Text";
		occlude.style.display = "inline";
	}
	else
	{
		obj.value = "Show Full Search Text";
		occlude.style.display = "none";
	}
	return true;
}
function RefineSearch(obj)
{
	var occlude = document.getElementById("search_site_refine_container");
	var x = obj.value;
	if(x == "Refine Your Search")
	{
		obj.value = "Close";
		occlude.style.display = "inline";
	}
	else
	{
		obj.value = "Refine Your Search";
		occlude.style.display = "none";
	}
	return true;
}

/* From: search_results_each_items.js */
function SearchResultsView(what)
{
	window.location.href = "/dynamic/viewitem.php?item=" + what;
	return true;
}

function SearchResultsHighLight(obj,what,mode)
{
	switch(what)
	{
		case "box":
			switch(mode)
			{
				case 0:
					obj.className = "search_results_each_item_over";
					break;
				case 1:
					obj.className = "search_results_each_item";
					break;
			}
			break;
		case "link":
			switch(mode)
			{
				case 0:
					obj.className = "search_results_each_item_price_link_active";
					break;
				case 1:
					obj.className = "search_results_each_item_price_link";
					break;
			}
			break;
	}
	return true;
}

/* From: viewitem.js */
var viewitemCurrentSelectedInfo = "description";

function ViewitemInfoSelect(which)
{
	var thisFrameID = "iframe_product_info_"+which;
	var thatFrameID = "iframe_product_info_"+viewitemCurrentSelectedInfo;
	var thisBoxID = "product_info_navigation_"+which;
	var thatBoxID = "product_info_navigation_"+viewitemCurrentSelectedInfo;
	viewitemCurrentSelectedInfo = which;
	document.getElementById(thatFrameID).style.display="none";
	document.getElementById(thisFrameID).style.display="block";
	document.getElementById(thatBoxID).className="iframe_deselected";
	document.getElementById(thisBoxID).className="iframe_selected";
	return true;
}
