/* 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();

function onFirstLoad()
{
	_displayQuickBasket();
	saveHistory();
	resizeDefaultWindow();
	resizeWindow();
}

function innerContentUpdate(strPage)
{
	startLoading("_innerContentUpdate('" + strPage + "')");
}

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");
	
	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;
	
	bClicked = true;
}

function checkHistory(strCall)
{
	var objContainer = document.getElementById("contentContainer");
	strHash = strCall.split("?")[1];

	if (!bClicked)
	{
	
		objContainer.innerHTML = arrHistory[strHash];
		
		resizeDefaultWindow();
		resizeWindow();
	}
	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 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");
	
	if (objAjax.open("dynamic/contact.php?mode=SEND&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;
}
