validateForm/* Copyright Commcam Limited 2008. All rights reserved. (See licence/licence.txt) */

var bGalleryScrolling = false;
var bScrolled = false;
var iMouseX = -1;
var iMovement = 0;
var bClicked = true;
var arrHistory = new Object();
var g_strTitle = "Great Choice, Great Value";

document.oncontextmenu = rightClickCapture;
document.oncontextmenu = rightClickCapture;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
if (document.layers) window.captureEvents(Event.MOUSEUP);
window.oncontextmenu = rightClickCapture;
window.oncontextmenu = rightClickCapture;

function rightClickCapture(e)
{
   
    
    return false;
}

function onFirstLoad()
{
	_displayQuickBasket();
	//saveHistory();
	resizeDefaultWindow();
	resizeWindow();
}

function innerContentUpdate(strPage)
{
	startLoading("_innerContentUpdate('" + strPage + "')");
}

function largePic(strImage)
{
	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");
	var objImage = document.getElementById("modalImage");
	var objModalCloseBar = document.getElementById("modalCloseBar");
	
	if (!objHolder)
	{		
		objLayer = document.createElement("div");
		objLayer.id = "modalLayer";
		
		objHolder = document.createElement("div");
		objHolder.id = "modalHolder";
		
		objLayer.appendChild(objHolder);


		objModalCloseBar = document.createElement("div");
		objModalCloseBar.id = "modalCloseBar";
		objModalCloseBar.className = "closeBar";
		
		objHolder.appendChild(objModalCloseBar);
		
		objA = document.createElement("a");
		objA.href = "javascript:void(0);";
		objA.innerHTML = "Close X";
		
		try
		{
			objA.attachEvent("onclick", closeModal);
		}
		catch (e)
		{
			objA.addEventListener("click", closeModal, false);
		}
		
		try
		{
			objLayer.attachEvent("onclick", closeModal);
		}
		catch (e)
		{
			objLayer.addEventListener("click", closeModal, false);
		}
		
		objModalCloseBar.appendChild(objA);
		
		document.body.appendChild(objLayer);
		document.body.appendChild(objHolder);
	}
	
	if (objImage)
	{
		objHolder.removeChild(objImage);
	}
	objImage = document.createElement("img");
	objImage.id = "modalImage";
	
	objHolder.appendChild(objImage);
	
	objLayer.style.display = "block";
	objHolder.style.display = "block";
	
	objImage.src = strImage;
	
	finishLargeImage();
}

function finishLargeImage()
{
	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");
	var objImage = document.getElementById("modalImage");
	
	var iWidth = getWidth();
	var iHeight = getHeight();
	
	var iImageWidth = findRight(objImage) - findLeft(objImage);
	var iImageHeight = findBottom(objImage) - findTop(objImage);

	if (iImageWidth > 28)
	{
		var iHeightFactor = (iHeight - iImageHeight) / 2;
		var iWidthFactor = (iWidth - iImageWidth) / 2;
		
		var iVariant = 16;
		
		if (navigator.appName == "Microsoft Internet Explorer")
		{
			iVariant = 8;
		}

		objHolder.style.left = iWidthFactor - iVariant + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		objHolder.style.top = iHeightFactor - 30 + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		
		//objHolder.style.width = iImageWidth + 18;
		//objHolder.style.height = iImageHeight + 30;
		
		
		objLayer.style.height = document.body.scrollHeight;
		objLayer.style.width = document.body.scrollWidth;
		
		fadeUp("modalLayer", 0, 70);
		fadeUp("modalHolder", 0, 100);
	}
	else
	{
		setTimeout("finishLargeImage()", 500);
	}
}

function closeModal()
{
	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");

	fadeFrom("modalLayer", 70);
	fadeFrom("modalHolder", 100);
	
	//objLayer.style.display = "none";
	//objHolder.style.display = "none";

}

function _innerContentUpdate(strPage)
{
	var objInnerContent = document.getElementById("innerContent");
	var objAjax = new CAjax();
	
	if (objInnerContent)
	{
		if (objAjax.open(strPage, true, true))
		{
			objInnerContent.innerHTML = objAjax.getResponse();
		}
	}
	
	endLoading();
}

function validateForm(objForm)
{
	var objElements, bComplete, bEmailOk;
	
	bComplete = true;
	
	if(document.layers)
	{  
		objElements = objForm.all;
	}
	else if(document.all)
	{
		objElements = objForm.all;
	}
	else
	{
		objElements = objForm.getElementsByTagName("*");
	}

	for (var i=0; i < objElements.length;i++)
	{
		var strType = objElements[i].getAttribute("type");
		
		bEmailOk = true;
		
		if (objElements[i].getAttribute("email") == "true")
		{
			bEmailOk = checkEmail(objElements[i].value);
		}
		
		if (objElements[i].getAttribute("required") == "true")
		{
			if (objElements[i].value.length <= 0 || !bEmailOk)
			{
				if (strType == "text" || strType == "password")
				{
					//objElements[i].className = "required";
				}
				else
				{
					objElements[i].style.backgroundColor = "#DDDDDD";
				}
				
				bComplete = false;
			}
			else
			{
				if (strType == "text" || strType == "password")
				{
					//objElements[i].className = "";
				}
				else
				{
					objElements[i].style.backgroundColor = "#FFFFFF";
				}
			}
		}
	}
	
	if (!bComplete)
	{
		alert("Please complete the required fields");
	}
	
	return bComplete;
}

function resizeGallery()
{
	var objDiv = document.getElementById("galleryContent");
	
	bResizeWindow = false;
	
	if (objDiv)
	{
		objDiv.style.width = (objDiv.getElementsByTagName("div").length / 2) * 90;
	}
}

function scrollGalleryStart()
{
	bGalleryScrolling = true;
	bScrolled = false;
	
	return true;
}

function scrollGalleryStop(strCategoryCode)
{
	
	if (bGalleryScrolling)
	{
		iMouseX = -1;
		
		if (iMovement < -60)
		{
			iMovement = -60;
		}

		if (iMovement > 60)
		{
			iMovement = 60;
		}

		iMovement *= 0.7;
		
		bGalleryScrolling = false;
		
		if (!bScrolled)
		{
			startLoading("_quickSearch('" + strCategoryCode + "', 'CATEGORY', 0)");
		}
		else
		{
			setTimeout("inertiaScroll()", 10);
		}
	}
	
	return true;
}

function showCategoryDefault(strCategoryCode)
{
	g_objTabs.changeTabContainer("rightContent");
	showCategory(strCategoryCode);
}

function showCategory(strCategoryCode)
{
	startLoading("_quickSearch('" + strCategoryCode + "', 'CATEGORY', 0)");
}

function inertiaScroll()
{
	var objDiv = document.getElementById("galleryContentContainer");
	
	if (!bGalleryScrolling)
	{
		iMovement = iMovement / 1.06;

		if (Math.abs(iMovement) > 1)
		{
			objDiv.scrollLeft -= iMovement;
			
			setTimeout("inertiaScroll()", 10);
		}
	}
}

function scrollGallery()
{
	var iCurrMouseX = window.event.clientX;
	var objDiv = document.getElementById("galleryContentContainer");
	var iTempMovement = iCurrMouseX - iMouseX;
	
	if (bGalleryScrolling)
	{
		if (iMouseX >= 0)
		{
			if (Math.abs(iTempMovement) > 0)
			{
				iMovement = iCurrMouseX - iMouseX;

				objDiv.scrollLeft -= iMovement;
			}
		}
		
		if (Math.abs(iMovement) > 1)
		{
			bScrolled = true;
		}
		iMouseX = window.event.clientX;
		
	}

	return false;
}

function scrollGalleryLeft()
{
	iMovement = 21;
	inertiaScroll();

}

function scrollGalleryRight()
{
	iMovement = -21;
	inertiaScroll();	
}

function startLoading(strCall)
{
	var objDiv = document.getElementById("loading");

	if (objDiv)
	{
		objDiv.style.display = "block";
		objDiv.style.visibility = "visible";
		document.body.style.cursor = "wait";
	}
	
	setTimeout(strCall, 10);
	
}

function endLoading()
{
	var objDiv = document.getElementById("loading");
	
	if (objDiv)
	{
		objDiv.style.display = "none";
		objDiv.style.visibility = "hidden";
		document.body.style.cursor = "auto";
	}
	
	//saveHistory();
	
	resizeDefaultWindow();
	resizeWindow();
}

function saveHistory()
{
	var objHistory = document.getElementById("historyLoc");
	var objContainer = document.getElementById("contentContainer");
	bClicked = true;
	var objDate = new Date();
	var strHash =  objDate.getMilliseconds() + "." + objDate.getDate() + "." + objDate.getMonth() + "." + objDate.getYear() + "." + objDate.getHours() + "." + objDate.getMinutes() + "." + objDate.getSeconds();//Base64.encode(
	
	strHash = Base64.encode(strHash);
	strHash = strHash.replace("?", "ZZ");
	
	arrHistory[strHash] = objContainer.innerHTML;
	
	objHistory.src = "history.php?" + strHash;
	document.title = g_strTitle;

}

function checkHistory(strCall)
{
	var objContainer = document.getElementById("contentContainer");
	strHash = strCall.split("?")[1];

	if (!bClicked)
	{
		objContainer.innerHTML = arrHistory[strHash];
		resizeDefaultWindow();
		resizeWindow();
		document.title = g_strTitle;
	}
	else
	{
		bClicked = false;
	}
}

function getFormValue(strId)
{
	var objInput = document.getElementById(strId);
	var strText = "";
	
	if (objInput)
	{
		strText = objInput.value;
	}
	
	return strText;
}

function checkDate(objInput)
{
	var strValidFormat = /^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
	var bOk = false;
	
	if (!strValidFormat.test(objInput.value))
	{
		alert("The date entered is invalid, please try again.");
	}
	else
	{ 
		//Detailed check for valid date ranges
		var iDay = objInput.value.split("/")[0];
		var iMonth = objInput.value.split("/")[1];
		var iYear=  objInput.value.split("/")[2];
		var objDate = new Date(iYear, iMonth-1, iDay);
		
		if ((objDate.getMonth() + 1 != iMonth)||(objDate.getDate() != iDay)||(objDate.getFullYear() != iYear))
		{
			alert("The date entered is invalid, please try again.");
		}
		else
		{
			bOk = true;
		}
	}
	if (!bOk) 
	{	
		objInput.value = "";
		objInput.select();
	}
	
	return bOk
}

function resizeDefaultWindow(){};
function resizeWindow(){};
function resizeScrollables(){};

function _resizeDefaultWindow()
{

	var objContainer = document.getElementById("contentContainer");
	var objHolder = document.getElementById("contentHolder");
	
	resizeScrollables();

	if (objContainer && objHolder)
	{
		objContainer.style.height = getHeight() - findTop(document.body) - 2;
	
		if (findBottom(objHolder) >= getHeight())
		{
			objContainer.style.height = findBottom(objHolder);
		}
	}
	
}

function _resizeWindow()
{
	var iBottom = getHeight();

	var objContent = document.getElementById("mainContent");
	var objFooter = document.getElementById("footer");
	resizeMenu();

	if (objContent)
	{
		if (findTop(objFooter) < findBottom(objContent))
		{
			objFooter.style.top = findBottom(objContent);
		}
		else if (findBottom(objFooter) < getHeight())
		{
			objFooter.style.top = null;
			objFooter.style.bottom = 0;
	}
	}
}

function _resizeScrollables()
{
	var objDivs = document.getElementsByTagName("div");
	var objDiv;
	var iBodyBottom;
	
	for (i = 0; i < objDivs.length; i++)
	{
		objDiv = objDivs[i];
		
		if (objDiv.className == "scrollable")
		{
			iBodyBottom = findBottom(document.body);
			
			var iNewSize = iBodyBottom - findTop(objDiv) - 50;
			
			if (iNewSize > 200)
			{
				objDiv.style.height = iNewSize;
			}
		
		}	
	}
}


function getHeight() 
{
	var inHeight = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) 
	{
			//Non-IE
			inHeight = window.innerHeight;
	} 
	else 
	{
		if( document.documentElement &&
			(document.documentElement.clientHeight ) ) 
		{
			//IE 6+ in 'standards compliant mode'
			inHeight = document.documentElement.clientHeight;
		} 
		else 
		{
			if( document.body && ( document.body.clientHeight ) ) 
			{
				//IE 4 compatible
				inHeight = document.body.clientHeight;
			}
		}
	}
	
	return inHeight;
}

function getWidth() 
{
	var inWidth = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) 
	{
			//Non-IE
			inWidth = window.innerWidth;
	} 
	else 
	{
		if( document.documentElement &&
			(document.documentElement.clientWidth ) ) 
		{
			//IE 6+ in 'standards compliant mode'
			inWidth = document.documentElement.clientWidth;
		} 
		else 
		{
			if( document.body && ( document.body.clientWidth ) ) 
			{
				//IE 4 compatible
				inWidth = document.body.clientWidth;
			}
		}
	}
	
	return inWidth;
}


function findLeft(obj)
{
	var iLeft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			iLeft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		iLeft += obj.x;
	}
	
	return iLeft;
}


function findTop(obj)
{
	var iTop = 0;
	
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			iTop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		iTop += obj.y;
	}
	
	return iTop;
}


function findBottom(obj)
{
	var iBottom = 0;

	if (obj.offsetHeight)
	{
		iBottom = obj.offsetHeight;
		
		while (obj.offsetParent)
		{
			iBottom += obj.offsetTop;
			obj = obj.offsetParent;
		}
		
		
	}
	else if (obj.y)
	{
		iBottom += obj.y;
	}
	
	return iBottom;
}

function findRight(obj)
{
	var iRight = 0;
	if (obj.offsetParent)
	{
		iRight = obj.offsetWidth;
		
		while (obj.offsetParent)
		{
			iRight += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		iRight += obj.x;
	}
	
	return iRight;
}

function findWidth(obj)
{
	var iLeft, iRight;
	
	iLeft = findLeft(obj);
	iRight = findRight(obj);
	
	return iRight - iLeft;
}

function toggleSideMenu(objMinimiser, bForceOpen)
{
	var objSideMenu = document.getElementById("SideMenu");
	var objInnerContent = document.getElementById("innercontent");
	
	if (objSideMenu.getAttribute("minimised") == "true" || bForceOpen)
	{
		objSideMenu.className = "SideMenu";
		objSideMenu.setAttribute("minimised", "false"); 
		objMinimiser.className = "Minimiser";
		objInnerContent.className = "innerContent";
	}
	else
	{
		objSideMenu.className = "SideMenuMinimised";
		objSideMenu.setAttribute("minimised", "true"); 
		objMinimiser.className = "MinimiserMinimised";
		objInnerContent.className = "innerContentMinimised";
	}
	
	resizeWindow();
}

function resizeMenu()
{
	var objMenu, nHeight, objMenuBar, objMenuMinimiser;
	
	objMenu = document.getElementById("sideMenu");
	
	if (objMenu)
	{
		objMenuMinimiser = document.getElementById("minimiser");
		
		nHeight =  getHeight() - findTop(objMenuMinimiser);
		
		if (nHeight > 0)
		{
			objMenuMinimiser.style.height = getHeight() - findTop(objMenuMinimiser);
			objMenu.style.height =  getHeight() - findTop(objMenu) - 8;
		}
	}
}

function home()
{
	startLoading("_home()");
}

function _home()
{
	var objAjax = new CAjax();

	if (objAjax.open("main.php?ajax=true", true))
	{
		objDiv = document.getElementById("innerContent");
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	endLoading();	
}


function contactUs()
{
	startLoading("_contactUs()");
}

function _contactUs()
{
	var objAjax = new CAjax();

	if (objAjax.open("dynamic/contact.php", true))
	{
		objDiv = g_objTabs.addTab("contact", "Contact Us", true, true);
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	endLoading();	
}

function sendMail()
{	
	var objForm = document.getElementById("emailForm");
	
	if (validateForm(objForm))
	{
		startLoading("_sendMail()");
	}
}

function _sendMail()
{
	var objForm = document.getElementById("emailForm");
	var objAjax = new CAjax();
	var strFirstName, strSurname, strPhone, strEmail, strCompany, strComments;
	
	strFirstName = getFormValue("firstname");
	strSurname = getFormValue("surname");
	strPhone = getFormValue("phone");
	strEmail = getFormValue("email");
	strCompany = getFormValue("company");
	strComments = getFormValue("comments");
	strEmailTo = getFormValue("emailto");
	
	strAddress1 = getFormValue("address1");
	strAddress2 = getFormValue("address2");
	strAddress3 = getFormValue("address3");
	strAddress4 = getFormValue("address4");
	strPostcode = getFormValue("postcode");
	
	if (objAjax.open("dynamic/contact.php?mode=SEND&address1=" + strAddress1 + "&address2=" + strAddress2 + "&address3=" + strAddress3 + "&address4=" + strAddress4 + "&postcode=" + strPostcode + "&emailto=" + strEmailTo + "&firstname=" + strFirstName + "&surname=" + strSurname + "&phone=" + strPhone + "&email=" + strEmail + "&company=" + strCompany + "&comments=" + strComments, true))
	{
		objDiv = g_objTabs.addTab("contact", "Contact Us", true, true);
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	endLoading();	
}

function showMenu(strMenu)
{
	var objSideMenu = document.getElementById("SideMenu");
	var objAjax = new CAjax();
	var objInnerContent = document.getElementById("innercontent");
	var objMinimiser = document.getElementById("minimiser");
	
	if (objSideMenu)
	{
		if (objAjax.open("dynamic/showMenu.php?mode=" + strMenu, true))
		{
			objSideMenu.innerHTML = objAjax.getResponse();
			objInnerContent.innerHTML = "";
		}
		
		toggleSideMenu(objMinimiser, true);
	}
}

function togglePrices()
{
	var objAjax = new CAjax();
	var objLink = document.getElementById("priceLink");
	
	if (objAjax.open("admin/togglePrices.php", true))
	{
		var strResponse = objAjax.getResponse();
		
		if (strResponse == "true")
		{
			objLink.innerHTML = "Show prices";
		}
		else
		{
			objLink.innerHTML = "Hide prices";
		}
	}
}

function checkEmail(strEmail) 
{
	var cAt = "@";
	var cDot = ".";
	var iLen = strEmail.length;
	var iPosAt = strEmail.indexOf(cAt);
	var iPosDot = strEmail.indexOf(cDot);
	
	if (iPosAt == -1)
	{
	   return false;
	}

	if (iPosAt == -1 || iPosAt == 0 || iPosAt == iLen)
	{
	   return false;
	}

	if (iPosDot == -1 || iPosDot == 0 || iPosDot == iLen)
	{
	    return false;
	}

	if (strEmail.indexOf(cAt, (iPosAt + 1)) != -1)
	{
		return false;
	}

	if (strEmail.substring(iPosAt - 1, iPosAt) == cDot || strEmail.substring(iPosAt + 1, iPosAt + 2) == cDot)
	{
		return false;
	}

	if (strEmail.indexOf(cDot, (iPosAt + 2)) == -1)
	{
		return false;
	}

	if (strEmail.indexOf(" ") != -1)
	{
		return false;
	}

 	return true;			
}

function currencyFormatted(dAmount)
{
	var dMoney = parseFloat(dAmount);
	var cMinus = '';
	
	if(isNaN(dMoney))
	{ 
		dMoney = 0.00; 
	}
	
	if(dMoney < 0) 
	{
		cMinus = '-'; 
	}
	
	dMoney = Math.abs(dMoney);
	dMoney = parseInt((dMoney + .005) * 100);
	dMoney = dMoney / 100;
	
	var sMoney = new String(dMoney);
	
	if(sMoney.indexOf('.') < 0)
	{ 
		sMoney += '.00'; 
	}
	
	if(sMoney.indexOf('.') == (sMoney.length - 2))
	{ 
		sMoney += '0'; 
	}
	
	sMoney = cMinus + sMoney;
	
	return sMoney;
}

function clearStartingText(objInput)
{
	if (!objInput.getAttribute("cleared"))
	{
		objInput.value = "";
		objInput.setAttribute("cleared", true);
	}
}

function setOpacity(strId, iOpacity)
{
	var objObject = document.getElementById(strId);
	
	objObject.style.opacity = (iOpacity / 100); 
    objObject.style.MozOpacity = (iOpacity / 100); 
    objObject.style.KhtmlOpacity = (iOpacity / 100); 
    objObject.style.filter = "alpha(opacity:" + iOpacity + ")"; 
}

function fadeFrom(strId, iOpacity)
{
	var objObject = document.getElementById(strId);
	
	objObject.style.opacity = (iOpacity / 100); 
  objObject.style.MozOpacity = (iOpacity / 100); 
  objObject.style.KhtmlOpacity = (iOpacity / 100); 
  objObject.style.filter = "alpha(opacity:" + iOpacity + ")"; 

	if (iOpacity > 0)
	{
		iOpacity = iOpacity - 6;
		setTimeout("fadeFrom('" + strId + "', " + iOpacity + ")", 6);
	}
	else
	{
		objObject.style.display = "none";
	}
}

function fadeUp(strId, iOpacity, iTo)
{
	var objObject = document.getElementById(strId);
	
	objObject.style.opacity = (iOpacity / 100); 
  objObject.style.MozOpacity = (iOpacity / 100); 
  objObject.style.KhtmlOpacity = (iOpacity / 100); 
  objObject.style.filter = "alpha(opacity:" + iOpacity + ")"; 

	if (iOpacity <= iTo)
	{
		iOpacity = iOpacity + 6;
		setTimeout("fadeUp('" + strId + "', " + iOpacity + ", " + iTo + ")", 6);
	}
}
