/* General functions used by multiple parts of the system */
function validateForm(strForm, strValidateErrorId)
{
	var objElements, bComplete, bEmailOk;
	var objForm = document.getElementById(strForm);
	var objDiv;
	
	if (strValidateErrorId != "" && strValidateErrorId != undefined )
	{
		objDiv = document.getElementById(strValidateErrorId);
	}
	else
	{
		objDiv = document.getElementById("validateFormError");
	}
	
	
	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;
		bValid = true;
		
		if (objElements[i].getAttribute("email") == "true")
		{
		    // LOKI - 14/07/09
		    // checks to see if the passed value is empty, or made
		    // up entirely of spaces
		    if(!isEmpty(objElements[i].value))		    {
			    bEmailOk = checkEmail(objElements[i].value);
			}
			else
			{
			    bEmailOk = false;
			}
		}
		
		if (objElements[i].getAttribute("valid") == "false")
		{
			bValid = false;
		}
		
		
		if (objElements[i].getAttribute("required") == "true")
		{
		    // LOKI - 14/07/09
		    // checks to see if the passed value is empty, or 
		    // made up entirely of spaces
		    if(!isEmpty(objElements[i].value))
		    {
			    if (objElements[i].value.length <= 0 || !bEmailOk || !bValid)
			    {
				    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";
				    }
			    }
			}
			else
			{
			    // LOKI - 14/07/09
			    // Otherwise follow suit and inform of the error
			    if(strType == "text" || strType == "password")
			    {
			        objElements[i].className = "required";
			    }
			    else
			    {
			        objElements[i].style.backgroundColor = "#DDDDDD";
			    }
			    
			    bComplete = false;
			}
		}
	}
	
	if (!bComplete)
	{
		
		
		if (objDiv)
		{
			objDiv.innerHTML = "Please complete the required fields";
		}
		else
		{
			alert("Please complete the required fields");
		}
	}
	else
	{
		if (objDiv)
		{
			objDiv.innerHTML = "";
		}
	}
	
	return bComplete;
}

function setInputText(strId, strText)
{
	var objInput = document.getElementById(strId);
	
	if (!objInput)
	{
		objInput = eval("document.all." + strId);
	}

	if (objInput)
	{
		objInput.value = strText;
	}
}

function numericOnly(objEvent)
{    
	var objReg = new RegExp("^\d*\.?\d*$");   
	var objEvent = objEvent || window.event;  
	var strKey = objEvent.keyCode || objEvent.which;
	
	strKey = String.fromCharCode( strKey );
	var strRegEx = /[0-9]|\./;
	
	if (!strRegEx.test(strKey)) 
	{     
		objEvent.returnValue = false;
	}
}

function getFormValue(strId)
{
	var objInput = document.getElementById(strId);
	var strText = "";
	
	if (objInput)
	{
		strText = objInput.value;
	}
	
	return strText;
}

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 showPrompt(strPromptLocator, strDivId)
{
	if(strPromptLocator!='' && strDivId!='')
	{
	var objPromptLocator = document.getElementById(strPromptLocator);
	var objDiv = document.getElementById(strDivId);

	if (!objDiv)
	{
		objDiv = document.createElement("div");
		objDiv.id = strDivId;
		document.body.appendChild(objDiv);
	}
	
	setOpacity(strDivId, 100);
	objDiv.style.display = "block";
	
	iDivWidth = findRight(objDiv) - findLeft(objDiv);
	iDivHeight = findBottom(objDiv) - findTop(objDiv);
	
	objDiv.style.top = findTop(objPromptLocator) - iDivHeight;
	objDiv.style.left = (findRight(objPromptLocator) - findLeft(objPromptLocator) - iDivWidth) / 2 + findLeft(objPromptLocator);
	
	objDiv.setAttribute("opacity", 300);
	setTimeout("fadeFrom('" + strDivId + "')", 4000);
	}
}

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";
	}
}


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, strNextId)
{
	var objObject = document.getElementById(strId);
	
	iOpacity = objObject.getAttribute("opacity");
	
	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 - 25;
		
	 objObject.setAttribute("opacity", iOpacity);
		 
		setTimeout("fadeFrom('" + strId + "', '" + strNextId + "')", 6);
	}
	else
	{
	    objObject.style.display = "none";

	    if (strNextId != "undefined" && strNextId) {
	        fadeUp(strNextId, 0, 100);
	    }
	}
	
}

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 + ")";
  objObject.style.display = "block";
	if (iOpacity <= iTo)
	{
		iOpacity = iOpacity + 25;
		setTimeout("fadeUp('" + strId + "', " + iOpacity + ", " + iTo + ")", 6);
	}
}

function popupDialog(strLink, bDiv)
{

	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");
	var objContent = document.getElementById("modalContent");
	
	var objIFrameModal = document.getElementById("modelIFrame");
	
	var objModalCloseBar = document.getElementById("modalCloseBar");
	var objA;
	var objAjax = new CAjax();
	
	if (!objHolder)
	{
	
		objIFrameModal = document.createElement("iframe");
		objIFrameModal.id = "modelIFrame";
		
		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 = "&nbsp;";
		
		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(objIFrameModal);
		document.body.appendChild(objLayer);
		document.body.appendChild(objHolder);
	}
 
	if (objContent)
	{
		objHolder.removeChild(objContent);
	}
	
	objContent = document.createElement("div");
	objContent.id = "modalContent";
	
	objHolder.appendChild(objContent);
	
	objLayer.style.display = "block";
	objHolder.style.display = "block";

	if (bDiv) 
	{
    var objDiv = document.getElementById(strLink);
    objDiv.style.display = "block";
    objContent.appendChild(objDiv);
	}
	else if (objAjax.open(strLink, true))
	{
		objContent.innerHTML = objAjax.getResponse();
	}

	completePopup();
	
}

function completePopup()
{
	var objContent = document.getElementById("modalContent");
	var iWidth = getWidth();
	var iHeight = getHeight();
	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");
	var objIFrameModal = document.getElementById("modelIFrame");
	
	var iContentWidth = findRight(objContent) - findLeft(objContent);
	var iContentHeight = findBottom(objContent) - findTop(objContent);

	var iHeightFactor = (iHeight - iContentHeight) / 2;
	var iWidthFactor = (iWidth - iContentWidth) / 2;
	
	var iVariant = 16;
	
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		iVariant = 8;
	}
	
	var iTop, iLeft;
	
	iLeft = iWidthFactor - iVariant + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	iTop = iHeightFactor - 30 + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	
	objHolder.style.left = iLeft;
	objHolder.style.top = iTop;
	
	objIFrameModal.style.left = iLeft;
	objIFrameModal.style.top = iTop;
	
	objIFrameModal.style.width = findRight(objHolder) - findLeft(objHolder);
	objIFrameModal.style.height = findBottom(objHolder) - findTop(objHolder);
	
	objLayer.style.height = document.body.scrollHeight;
	objLayer.style.width = document.body.scrollWidth;
	
	fadeUp("modalLayer", 0, 70);
	fadeUp("modalHolder", 0, 100);
}


function closeModal()
{
	var objLayer = document.getElementById("modalLayer");
	var objHolder = document.getElementById("modalHolder");
	var objIFrameModal = document.getElementById("modelIFrame");
	
	objIFrameModal.setAttribute("opacity", 70);
	objLayer.setAttribute("opacity", 70);
	objHolder.setAttribute("opacity", 100);
	
	fadeFrom("modelIFrame");
	fadeFrom("modalLayer");
	fadeFrom("modalHolder");
}

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);
		
		var objToday = new Date();
		
		if ((objDate.getMonth() + 1 != iMonth)||(objDate.getDate() != iDay)||(objDate.getFullYear() != iYear))
		{
			alert("The date entered is invalid, please try again.");
		}
		else if (objToday > objDate)
		{
			alert("Date is in the past");
		}
		else
		{
			bOk = true;
		}
	}
	if (!bOk) 
	{	
		//objInput.value = "";
		objInput.select();
	}
	
	return bOk
}

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 checkEmailAddress(strId)
{
	var objEmail = document.getElementById(strId);
	var bOk = false;
	var objAjax = new CAjax();
	
	if (objEmail.value != "" && checkEmail(objEmail.value))
	{
		if (objAjax.open("/pages/php/system/ajax.checkEmailAddress.php?email=" + objEmail.value, true))
		{
			if (objAjax.getResponse() == "")
			{
				bOk = true;
			}
		}
	}

	objEmail.setAttribute("validAddress", bOk);
}

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 numericOnly(objEvent)
{
	var objReg = new RegExp("^\d*\.?\d*$");   
	var objEvent = objEvent || window.event;  
	var strKeyCode = objEvent.keyCode || objEvent.which;

	var strKey = String.fromCharCode( strKeyCode );
	var strRegEx = /[0-9]|\./;
	
	if (!strRegEx.test(strKey) && strKeyCode != "9" && strKeyCode != "8" && strKeyCode != "37" && strKeyCode != "39") 
	{ 
		objEvent.returnValue = false;
		
		// Not valid for IE
		try
		{
			objEvent.preventDefault();
		}
		catch (e){}
	}
}

function removeDefaultText(objInput)
{
	if (objInput.getAttribute("defaultRemoved") != "true")
	{
		objInput.value = "";
		objInput.setAttribute("defaultRemoved", "true");
	}
}

function toggle(strId)
{
    var objDiv = document.getElementById(strId);
    if(objDiv.style.display == "none")
        objDiv.style.display = "block";
    else
        objDiv.style.display = "none";
}

function isEmpty(val)
{
    //alert(val);
    if(val.match("/^s+$/") || val == "")
    {
        return true;
    }
    else
        return false;
}

function checkInMenu(e, strId)
{	
	var	objElement = (e.target) ? e.target : e.srcElement;

	var objItem = document.getElementById(strId);
	var bInMenu = false;
	
	while (objElement != null && !bInMenu)
	{
		if (objElement == objItem)
		{
			bInMenu = true;
		}
		
		objElement = objElement.parentNode;
		
	}
	
	return bInMenu;
}

function productExists()
{
	var objPrdCode = document.getElementById("basketProduct").value;
	var objAjax = new CAjax();
        var strResponse = '';

		if (objAjax.open("/pages/php/dynamic/ajax.productExists.php?prdCode="+objPrdCode, true))
		{

                    strResponse = objAjax.getResponse();
			if(strResponse != "")
			{
				addToBasketAjax(strResponse, 'quantity', 'addButton_'+strResponse);
				refreshQuickBasket();
			} else {
				alert("Sorry product not found");	
			}
		}
	return false;
}

function refreshQuickBasket()
{
	var objAjax = new CAjax();
		if (objAjax.open("/pages/php/dynamic/ajax.productExists.php", true))
		{
			document.getElementById("quickPickBasketContent").innerHTML = objAjax.getResponse();
		}
}


var objMenu = null;
function checkHover() {
	if (objMenu) {
		objMenu.find('[rel^=innerMenu]').slideUp();}
}

function runMenu()
{

	$('[rel^=hoverMenu] > [rel^=innerHover]').hover(function() {
		if (objMenu) {

			objMenu.find('[rel^=innerMenu]').slideUp('slow');

			objMenu = null;
		}
          
                        if($(this).find('[rel^=innerMenu]').css('display') != 'block')
                        {
                            $(this).find('[rel^=innerMenu]').slideDown('fast');
                        }


	}, function() {
		objMenu = $(this);
		setTimeout(
			"checkHover()",
			400);
	});
}


/*------------------------------*/
//Debug Console
//evt = event;
//evt.keyCode==115
//if (evt.ctrlKey)
//{
// CTRL+ALT+F4
//alert("CTRL+ALT+F4");
//} 
/*------------------------------*/

function currencyChange(strCurrency)
{
	document.location.href = "/dcp/currencyChange/"+strCurrency;
}