﻿// INSERT OVERLAY DIV ELEMENT
// --------------------------
function showGiftMessage(strInnerHtml) {
    if (document.getElementById){
        if (document.getElementById('overlay')){
            document.getElementById('overlay').style.display = 'block';
            document.getElementById('overlayContentPara').innerHTML = strInnerHtml;
        }
        else {
			var nuDivPos = document.createElement("div");
			document.getElementsByTagName('body')[0].insertBefore(nuDivPos, document.getElementsByTagName('body')[0].childNodes[0]);
			nuDivPos.setAttribute("id", 'overlayPos');
            var nuDiv = document.createElement("div");
            try { nuDivPos.insertBefore(nuDiv, nuDivPos.childNodes[0]); } // FireFox
            catch (e) { nuDivPos.insertBefore(nuDiv); } // IE
            nuDiv.setAttribute("id", 'overlay');

            var nuInnerDiv = document.createElement("div");
            try { nuDiv.insertBefore(nuInnerDiv, nuDiv.childNodes[0]); } // FireFox
            catch (e) { nuDiv.insertBefore(nuInnerDiv); } // IE
            nuInnerDiv.setAttribute('id', 'overlayInner');
            nuInnerDiv.setAttribute("class","inner");
            var pContent = document.createElement("p");
            try { nuInnerDiv.insertBefore(pContent, nuInnerDiv.childNodes[0]); } // FireFox
            catch (e) { nuInnerDiv.insertBefore(pContent); } // IE
            pContent.setAttribute('id', 'overlayContentPara');
            pContent.innerHTML = strInnerHtml;            
            
            var closeButton = document.createElement('div');
            closeButton.setAttribute('id', 'closeButtonContainer');
            nuDiv.insertBefore(closeButton, nuInnerDiv);   
            
            var closeButtonBg = document.createElement('div');
            closeButtonBg.setAttribute('id', 'closeButtonBg');
            try { closeButton.insertBefore(closeButtonBg, closeButton.childNodes[0]); } // FireFox
            catch (e) { closeButton.insertBefore(closeButtonBg); } // IE
                     
            var closeButtonLink = document.createElement('a');
            closeButtonLink.setAttribute('href','javascript:toggleLayerVisibility(\'overlay\');');
            closeButtonLink.setAttribute('title','Close');
            
            try { closeButtonBg.insertBefore(closeButtonLink, closeButtonBg.childNodes[0]); } // FireFox
            catch (e) { closeButtonBg.insertBefore(closeButtonLink); } // IE
            var closeButtonImage = document.createElement('img');
            try { closeButtonLink.insertBefore(closeButtonImage, closeButtonLink.childNodes[0]); } // FireFox
            catch (e) { closeButtonLink.insertBefore(closeButtonImage); } // IE
            
			closeButtonImage.setAttribute('id', 'closeButton');
            closeButtonImage.setAttribute('src', 'media/images/but-remove.png');
            closeButtonImage.setAttribute('width','52');
            closeButtonImage.setAttribute('height','41');
            closeButtonImage.setAttribute('alt','Close');

}
    }
}


// Toggle Layer Visibility
function toggleLayerVisibility(layerId) {
    if (document.getElementById){
        var target = document.getElementById(layerId);
        if (target){
            if (target.style.display == 'none') target.style.display = 'block';
            else target.style.display = 'none';
        }
    }
}


/// OPEN NEW WINDOW
/// ---------------
function openNewWindow(destUrl)
{
    window.open(destUrl,'Carbonica', 'location=0, status=0, scrollbars=1,width=400,height=500,left=20,top=40'); 
}

// Click appropriate button for in-focus text input on Enter keypress
//      onkeypress="return submitOnEnter(event,'ButtonIdHere');"
// ------------------------------------------------------------------
function submitOnEnter(e,c)
{
    var keynum;
    var keychar;
    var numcheck;

    if(window.event) // IE
    {
        keynum = e.keyCode;
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which;
    }


    if (keynum==13)
    {
        if (document.getElementById(c))
        {
            document.getElementById(c).click();
        }
        return false;
    }
}


/* Cookie Check */
function cookieCheck() {
    var errorbg = document.getElementById("cookie-error-bg");
    var errormsg = document.getElementById("cookie-error-msg");
    if (navigator.cookieEnabled == 0) {
        errorbg.style.display = "block";
        errormsg.style.display= "block";   
    }
}
/* Hiding DIVs */
function close(elementNames) {
    var elementsArray = elementNames.split("|");
    for(var i = 0; i < elementsArray.length; i++)
    {
        document.getElementById(trim(elementsArray[i])).style.display = "none";
    }
}

/* Trimming a string */
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

/* Validate Forms */
function validate(formElements) {
	var valid = new Array();
	var completed = true;
	var formFields = formElements.split(",");
	var strAlertMessage = '';
	for(i = 0; i < formFields.length; i++) {

		var validatedInput = document.getElementById(formFields[i]);
		var validatedInputParameters = validatedInput.alt.split(":");
		var inputType = trim(validatedInputParameters[0]);
		var inputDefaultValue = trim(validatedInputParameters[1]);
		var inputDefaultMessage = trim(validatedInputParameters[2]);
		
		if (validatedInput.type == 'text' || validatedInput.type == 'password') {
			switch (inputType) {
			
				case 'Text':
					if (trim(validatedInput.value) == "" || trim(validatedInput.value).toLowerCase() == inputDefaultValue.toLowerCase()) {
					    if (inputDefaultMessage == "" ) {
						    strAlertMessage += 'Please fill your ' + inputDefaultValue + '\n';
						} else {
						    strAlertMessage += inputDefaultMessage + '\n';
						}
						validatedInput.style.borderColor = '#cd1414';
						validatedInput.focus();
						valid[i] = false;
					}
					else {
						valid[i] = true;
					}
					break;
					
				case 'Password':
					if (trim(validatedInput.value) == "" || validatedInput.value.toLowerCase() == inputDefaultValue.toLowerCase()) {
					    if (inputDefaultMessage == "" ) {
						    strAlertMessage += 'Please fill your ' + inputDefaultValue + '\n';
						} else {
						    strAlertMessage += inputDefaultMessage + '\n';
						}
						validatedInput.style.borderColor = '#cd1414';
						validatedInput.focus();
						valid[i] = false;
					}
					else {
						valid[i]= true;
					}
					break;
					
				case 'Email':
					if (trim(validatedInput.value) == "" || validatedInput.value.toLowerCase() == inputDefaultValue.toLowerCase()) {
					    if (inputDefaultMessage == "" ) {
						    strAlertMessage += 'Please fill your ' + inputDefaultValue + '\n';
						} else {
						    strAlertMessage += inputDefaultMessage + '\n';
						}
						validatedInput.style.borderColor = '#cd1414';
						validatedInput.focus();
						valid[i] = false;
					}
					else {
						var reTestString = /[-,a-z,A-Z,0-9,.,_]+@[-,a-z,A-Z,0-9,.,_]+\.[a-z,A-Z]+/i;
						if (reTestString.test(validatedInput.value)) {
							valid[i] = true;
						}
						else {
							strAlertMessage += 'Please enter correct email address \n';
							validatedInput.style.borderColor = '#cd1414';
							validatedInput.focus();
							valid[i] = false;
						}
					}
					break;
					
				case 'UKPostcode':
					if (trim(validatedInput.value) == "" || validatedInput.value.toLowerCase() == inputDefaultValue.toLowerCase()) {
				        if (inputDefaultMessage == "" ) {
    						strAlertMessage += 'Please fill your ' + inputDefaultValue + '\n';
					    } else {
					        strAlertMessage += inputDefaultMessage + '\n';
					    }
						validatedInput.style.borderColor = '#cd1414';
						validatedInput.focus();
						valid[i] = false;
					}
					else {
						var reTestString = /^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$/i;
						if (reTestString.test(validatedInput.value)) {
							valid[i] = true;
						}
						else {
							strAlertMessage += 'Please enter correct UK Postcode, like SW1A 1AA as they have in Buckingham Palace \n';
							validatedInput.style.borderColor = '#cd1414';
							validatedInput.focus();
							valid[i] = false;
						}
					}
					break;
				
				default:
					alert("Unknown Field type!");
					valid[i] = false;
					break;
					
			}
		} else if (validatedInput.type == 'checkbox') {
			if (validatedInput.checked == false) {
		        if (inputDefaultMessage == "" ) {
				    strAlertMessage += 'Please ' + inputDefaultValue + '\n';
			    } else {
			        strAlertMessage += inputDefaultMessage + '\n';
			    }
				validatedInput.focus();
				valid[i] = false;
			} else {
				valid[i] = true;
			}
		}	
	}
	
	for (i = 0; i < valid.length; i++) {
		if (valid[i]==false) {
			completed = false;
			alert(strAlertMessage);
			break;
		}
	}
	if(completed) {
		return true;
	} else {
		return false;
	}
}



function hideInputLabel(inputID) {
	var input = document.getElementById(inputID);			
	var inputParameters = input.alt.split(":");
	var inputFictionalType = trim(inputParameters[0]);
	var inputDefaultValue = trim(inputParameters[1]);

    if(inputFictionalType=="Password") {
		return changeInputType(input, 'password', 'Password', false, false);
    } else {
        if(trim(input.value).toLowerCase() == inputDefaultValue.toLowerCase()) {
		    input.value = '';
		}
    }

}

function showInputLabel(inputID) {
	var input = document.getElementById(inputID);			
	var inputParameters = input.alt.split(":");
	var inputFictionalType = trim(inputParameters[0]);
	var inputDefaultValue = trim(inputParameters[1]);
    if(inputFictionalType=="Password") {
		return changeInputType(input, 'password', inputDefaultValue, false, false);
	    
	} else {
        if(trim(input.value)=="") {
		    input.value = inputDefaultValue;
	    }
    }
}

// Set's the specified input to password onfocus, and return's its initial value and type onblur
//  see function members for info on usage
// ---------------------------------------------------------------------------------------------
// oldElement - reference to input element
// inputType - value of the type property: 'text' or 'password'
// inputValue - the default value, set to 'password' in the demo
// blankValue - true if the value should be empty, false otherwise
// nofocus - set to true if the element should not be given focus

function changeInputType(oldElement, inputType, inputValue, blankValue, noFocus) {
    
    if (!oldElement || !oldElement.parentNode || (inputType.length<4) || !document.getElementById || !document.createElement) return;
    
    var isMSIE = /*@cc_on!@*/false; //http://dean.edwards.name/weblog/2007/03/sniff/

    if(!isMSIE){
        var newElement = document.createElement('input');
        newElement.type = inputType;
    } else {
        var newElement = document.createElement('span');
        newElement.innerHTML = '<input type="' + inputType + '" name="' + oldElement.name + '">';
        newElement = newElement.firstChild;
    }
    var inputProperties = ['name','id','className','size','alt','tabIndex','accessKey'];
    
    /* Assigning properties to new Element */
    for(var i = 0; i < inputProperties.length; i++) {
        if(oldElement[inputProperties[i]]) newElement[inputProperties[i]] = oldElement[inputProperties[i]];
    }
    
    newElement.onfocus = function(){
        return function(){
            if(this.hasFocus) return;
            var newElement = changeInputType(this, 'password', inputValue, (this.value == inputValue)?true:false);
            if(newElement) newElement.hasFocus = true;
        }
    }();
    newElement.onblur = function(){
        return function(){
            if(this.hasFocus)
            if(trim(this.value)=='') {
                changeInputType(this, 'text', inputValue, false, true);
            }
        }
    }();
    
    // hasFocus is to prevent a loop where onfocus is triggered over and over again
    newElement.hasFocus = false;
    
    // some browsers need the value set before the element is added to the page
    // while others need it set after
    if(!blankValue) newElement.value=inputValue;
    oldElement.parentNode.replaceChild(newElement, oldElement);
    if(!isMSIE && !blankValue) newElement.value = inputValue;
    if(!noFocus || typeof(noFocus)=='undefined') {
        window.tempElement = newElement;
        window.tempElement.value = "";
        setTimeout("tempElement.hasFocus = true; tempElement.focus();", 1);
    }
    return newElement;
}


/* Navigation Hover Effect */
function ReCircle(id) {
    var navigation = document.getElementById("navigation");
    if  (id == "default") {
        id = navigation.className;
        navigation.style.backgroundImage = "url(media/images/navigation/nav-" + id + ".png)";
    } else {
        navigation.style.backgroundImage = "url(media/images/navigation/nav-" + id + ".png)";
    }
}

//we can spit this array out anywhere in the form and easy to mange from the server
var allTheDivs = new Array('category1','category2','category3','category4','category5');

function toggleMe(elementName)
{
	//currently, what is the state of the UL in Question?
	var theCurrentElement = document.getElementById(elementName);

	var theCurrentUL = theCurrentElement.getElementsByTagName("ul");
	var theCurrentState = theCurrentUL[0].style.display;

	//ok, now close all the ULs
	for(var i = 0 ;i < allTheDivs.length; i++)
	{
		//grab the element
		var tmpElement = document.getElementById(allTheDivs[i]);
		//and it's UL
		document.cookie = allTheDivs[i]+"=none";
		var tmpUL = tmpElement.getElementsByTagName("ul");
		tmpUL[0].style.display = "none";
		
		 
	}

	//and toggle the sender
	if((theCurrentState == "") || (theCurrentState == "none"))
	{
	    document.cookie = elementName+"=block";
		theCurrentUL[0].style.display = "block";
		
	}
	else
	{document.cookie = elementName+"none";
		theCurrentUL[0].style.display = "none";
		
	}

}
function javaOnTest ()
{
    if (!navigator.javaEnabled())
    {
      document.write("Java Script is not Enabled")
    }
}




function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}


function getCookie()
{
    if (navigator.cookieEnabled == 0)
            {
                alert("You must enable cookies ");
            }
    else {
    var a_all_cookies = document.cookie.split( ';' );
    var a_temp_cookie = '';

    for ( i = 0; i < a_all_cookies.length; i++ )
    {
        a_temp_cookie = a_all_cookies[i].split( '=' );
        try
            {
                var tmp = document.getElementById(trim(a_temp_cookie[0]));
                if(tmp != null)
                {
                    var MyUL = tmp.getElementsByTagName("ul")[0];
                    MyUL.style.display = a_temp_cookie[1];
                 }
                
            }
      catch (err)
      {
      }
      }
}
}

window.onload=function(){getCookie();matchHeights2 ()};




function matchHeights2 ()    {

if (document.getElementById("PanelLeft")) var PanelLeft = document.getElementById("PanelLeft");

if (document.getElementById("MiddleContent"))
{
    var MiddleContent = document.getElementById("MiddleContent");
   
}
if (document.getElementById("RightPanel"))
{
    var RightPanel = document.getElementById("RightPanel");
   
}
else {return false;}

if (document.getElementById("contentall")) var contentall = document.getElementById("contentall");


if (PanelLeft.clientHeight > MiddleContent.clientHeight)
   
    {MiddleContent.style.height=PanelLeft.clientHeight + "px";}
    
if (PanelLeft.clientHeight > RightPanel.clientHeight)
 
    {RightPanel.style.height=PanelLeft.clientHeight + "px";}
if (MiddleContent.clientHeight > RightPanel.clientHeight)
    
    {RightPanel.style.height=MiddleContent.clientHeight + "px";}
if (MiddleContent.clientHeight > PanelLeft.clientHeight)
    
    {PanelLeft.style.height=MiddleContent.clientHeight + "px";}
if (RightPanel.clientHeight > PanelLeft.clientHeight)
   
    {PanelLeft.style.height=RightPanel.clientHeight + "px";}
if
    (RightPanel.clientHeight > MiddleContent.clientHeight)
    
    {MiddleContent.style.height=RightPanel.clientHeight + "px";}
 
    
//document.getElementById("foot-fence-img").style.position = "absolute";
//alert("content:" + content.clientHeight);

}

function ShowPopupCalendar(calPopupTarget)
{     
    $find('zoomspacePopUpCalendarBehaviour').hide();  // hide the calendar if it already showing
    
    // set the parentElement of the CalendarPopup behavior...this is what the calendar will popup under.        
    $find('zoomspacePopUpCalendarBehaviour')._popupBehavior.set_parentElement(calPopupTarget);       
   
    var hiddenTxtBox = $get('ctl00_txtHidden'); // the ID could be ctl00_txtHidden if you're using master pages
    hiddenTxtBox.style.left = getPos(calPopupTarget)[0];
    hiddenTxtBox.style.top = getPos(calPopupTarget)[1];
    
    var theDate = GetFormattedDate(calPopupTarget.value,$find('zoomspacePopUpCalendarBehaviour')._format);
    if(isNaN(theDate))
    {
        // Set the currently selected date to today's date b/c no date exists
        // in the parentElement right now.
        $find('zoomspacePopUpCalendarBehaviour').set_selectedDate(new Date());
        hiddenTxtBox.value = '';           
    }
    else
    {
        // Set the currently selected date to that date that already exists in the
        // parentElement.
        $find('zoomspacePopUpCalendarBehaviour').set_selectedDate(theDate);
        hiddenTxtBox.value = calPopupTarget.value;            
    }
    
    // fire the onfocus event of the hiddentTextBox to make the Calendar popup.                
    FireEvent(hiddenTxtBox, 'onfocus');
    
     $get(calPopupTarget.id).onblur = function (e) {FireEvent(hiddenTxtBox, 'onblur');}; 
}
function GetFormattedDate(dateString,dateFormat)
{
    //need to split the years, months and days according to the specified string
    var theSecond = "";
    var theMinute = "";
    var theHour = "";
    var theDay = "";
    var theMonth = "";
    var theYear = "";
        
    for(var i = 0; i < dateFormat.length ; i++)
    {
       switch(dateFormat.charAt(i))
       {
            case "M":
                theMonth += dateString.charAt(i);
                break;
            case "y":
                theYear += dateString.charAt(i);
                break;
            case "d":
                theDay += dateString.charAt(i);
                break;
       }  
    }
    
    var theReturnedDate = new Date();
    theReturnedDate.setFullYear(parseInt(theYear), parseInt(theMonth) - 1, parseInt(theDay));
    return theReturnedDate;    
}
function FireEvent(el, ev)
{
    if (document.createEventObject) 
    {
        el.fireEvent(ev);
    } 
    else if (document.createEvent) 
    {
        var localE = document.createEvent("HTMLEvents");
        localE.initEvent(ev.substring(2, ev.length), true, true);
        el.dispatchEvent(localE);        
    }    
}
function UpdateClientDate(cal)
{
    var parentDateElement = $find('zoomspacePopUpCalendarBehaviour')._popupBehavior.get_parentElement();
    var hiddenTxtBox = $get('ctl00_txtHidden'); // the ID could be ctl00_txtHidden if you're using master pages
     
    if(parentDateElement.value != hiddenTxtBox.value)
    {
        parentDateElement.value = hiddenTxtBox.value;        
        FireEvent(parentDateElement, 'onchange');
    }
} 
function getPos(obj) 
{
    var curLeft = 0;
    var curTop = 0;
    if (obj.offsetParent) 
    {
        do 
        {
            curLeft += obj.offsetLeft;
            curTop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curLeft,curTop];
}
function RequiredFields(arCheckTheseFields)
{
    var allGood = true;
    //cycle through the array and see if the fields are filled
    for(var  i = 0; i < arCheckTheseFields.length; i++)
    {
         //grab the element
        var element = document.getElementById(arCheckTheseFields[i]);
        
        //and a placeholder for it value, however we collect that
        var elementValue = ""
        
        //could be using tinyMCE on TEXTAREA
        if(element.tagName.toUpperCase() == "TEXTAREA")
        {
            //try the tinymce thing first
            try
            {
                elementValue = tinyMCE.get(arCheckTheseFields[i]).getContent();
            }
            catch(Error)
            {
                //probably just not enabled, check it normally
                elementValue = element.value;       
            }
        }
        else 
        {
            //just grab it normally
            elementValue = element.value;
        }    
        
        if(elementValue== "")
        {
            //show the validator
            document.getElementById("val" + arCheckTheseFields[i]).style.visibility = "visible";
            
            //and mark it as not good
            allGood = false;
        }
        else
        {
            //hide the validator
            document.getElementById("val" + arCheckTheseFields[i]).style.visibility = "hidden";
        }          
    }
    
    return allGood;
}



function matchHeights() {
    if (document.getElementById("primary")){
        var primary = document.getElementById("primary");
    }
    if (document.getElementById("secondary")){
        var secondary = document.getElementById("secondary");
    }
    if(secondary&&primary){
        if (secondary.clientHeight > primary.clientHeight){
            primary.style.height = secondary.clientHeight + "px";
            var content = document.getElementById("content");
            var outercontent = document.getElementById("outer-content");
            var header = document.getElementById("header");
            var footer = document.getElementById("footer");
            content.style.height = secondary.clientHeight - header.clientHeight - footer.clientHeight + "px";
            outercontent.style.height = secondary.clientHeight - header.clientHeight - footer.clientHeight + "px";
        }    
        if (primary.clientHeight > secondary.clientHeight){
            secondary.style.height = primary.clientHeight + "px";
        }
    }
}

function DoSearch()
{                           
    if ((document.getElementById('frmSearch').value != '') && (document.getElementById('frmSearch').value.toLowerCase() != 'search'))
    {
        window.location.href = "/Search.aspx?searchfor=" + document.getElementById('frmSearch').value;
    }
    return false;
}

function DoMasterSearch()
{                           
    if ((document.getElementById('ctl00_cphPrimary_frmSearch').value != '') && (document.getElementById('ctl00_cphPrimary_frmSearch').value.toLowerCase() != 'search'))
    {
        window.location.href = "/Search.aspx?searchfor=" + document.getElementById('ctl00_cphPrimary_frmSearch').value;
    }
    return false;
}

