﻿function getAbsoluteTop(objectId) {
    o = document.getElementById(objectId)
    if (o == null) return;
    oTop = o.offsetTop
    while(o.offsetParent!=null) {
        oParent = o.offsetParent
        oTop += oParent.offsetTop
        o = oParent
    }
    return oTop
}

function setFooterPosition() {
    if (!document.getElementById("maincont")) return;
    var leftcolheight = document.getElementById("maincont").offsetHeight + getAbsoluteTop("maincont");
    var menuheight = document.getElementById("leftcol").offsetHeight + getAbsoluteTop("leftcol");
    if (leftcolheight > menuheight) {
        if (!document.getElementById("leftnav")) return;
        var menubottom = getAbsoluteTop("leftnav") + document.getElementById("leftnav").offsetHeight;
        var footerheight = document.getElementById("footercontainer").offsetHeight;
        document.getElementById("leftnav").style.marginBottom = ((leftcolheight - menubottom) - footerheight) + "px";
    }
}

function setProductListImageHeight() {
    //Get largest image height
    var largestImgHeight = 0;
    var allImgTags = document.getElementsByTagName("img");
    for (var i=0; i<allImgTags.length; i++) {
        if (allImgTags[i].className == "productListImage") {
            var newImg = new Image();
            newImg.src = allImgTags[i].src;
            var height = newImg.height;
            if (height > largestImgHeight) {
                largestImgHeight = height;
            }
        }
    }
    
    var allPageTags = document.getElementsByTagName("div");
    for (var j=0; j<allPageTags.length; j++) {
        if (allPageTags[j].className == "productListImage") {
            allPageTags[j].style.height = largestImgHeight + "px";
        }
    }
}

function onLoadEvents() {
    externalLinks();
    setFooterPosition();
    setProductListImageHeight();
}

window.onload = onLoadEvents;

//Menu
function showLeftSubNav(id) {
    document.getElementById(id).style.display = "block";
}

//contactform validation
function validate_contactform() {
    var bValidate=false;
	var oForm = document.getElementById("contactform");
	var sMsg="You must enter ";
	
	while(true){
        oControl=oForm.TbName
		if(isWhiteSpace(oControl.value)){sMsg+="your name.";break}
		
		oControl=oForm.TbAddress
		if(isWhiteSpace(oControl.value)){sMsg+="your address.";break}
		
		oControl=oForm.TbTown
		if(isWhiteSpace(oControl.value)){sMsg+="your town.";break}
		
		oControl=oForm.TbPostcode
		if(isWhiteSpace(oControl.value)){sMsg+="your postcode.";break}
		
		oControl=oForm.TbCounty
		if(isWhiteSpace(oControl.value)){sMsg+="your county.";break}
		
	    oControl=oForm.TbEmail
		if(isWhiteSpace(oControl.value)){sMsg+="your email address.";break}
		if(!emailCheck(oControl.value)){sMsg='';break}

		oControl=oForm.TbTelephone
		if(isWhiteSpace(oControl.value)){sMsg+="your telephone number.";break}
		
		oControl=oForm.TbEnquiry
		if(isWhiteSpace(oControl.value)){sMsg+="your enquiry.";break}
		
		bValidate=true
		break
	}
	
	if (bValidate){
        oForm.submit();
	}
	else {
		if(sMsg!='') {
		    alert(sMsg)
		    oControl.select()
		    oControl.focus()
		}
	}
}

function isWhiteSpace(s) {   
	var whitespace = " \t\n\r";
	var i;
	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++) {   
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	}
	return true;
}

function emailCheck (emailStr) {
	var sMsg = "The email address is not valid."
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
	    alert(sMsg)
	    return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
	    if (user.charCodeAt(i)>127) {
	        alert(sMsg)
	        return false;
	    }
	}
	for (i=0; i<domain.length; i++) {
	    if (domain.charCodeAt(i)>127) {
	        alert(sMsg)
	        return false;
	    }
	}
	if (user.match(userPat)==null) {
	    alert(sMsg)
	    return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	    for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	            alert(sMsg)
	            return false;
	        }
	    }
	    return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
	if (domArr[i].search(atomPat)==-1) {
	    alert(sMsg)
	    return false;
	   }
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	    domArr[domArr.length-1].search(knownDomsPat)==-1) {
	    alert(sMsg)
	    return false;
	}
	if (len<2) {
	    alert(sMsg)
	    return false;
	}
	return true;
}

var stockError = "";

function checkStockLevel() {
    if (inventory.length == 0) {
        stockError = "Out of Stock";
	    document.getElementById("addToBasketButton").style.display = "none";
	    document.getElementById("inventoryLevel").innerHTML = stockError;
	    return;
    }
    var colorDropDown = document.getElementById("Color");
    var sizeDropDown = document.getElementById("Size");
    var variationInventory = inventory.split(","); 
    for(i = 0; i < variationInventory.length; i++){
	    if (variationInventory[i].indexOf(colorDropDown.options[colorDropDown.selectedIndex].value.replace(",", "")) > -1 && variationInventory[i].indexOf(sizeDropDown.options[sizeDropDown.selectedIndex].value.replace(",", "")) > -1) {
	        var stockLevel = variationInventory[i].split("_");
	        if (stockLevel[2] + 0 <= 0) 
	        {
	            stockError = "Out of Stock";
	            document.getElementById("addToBasketButton").style.display = "none";
	            
	            document.getElementById("Quantity").disabled = true;
	        }
	        else 
	        {
	            stockError = "";
	            document.getElementById("addToBasketButton").style.display = "block";
	            
	            document.getElementById("Quantity").disabled = false;
	        }
	    }
    }
    document.getElementById("inventoryLevel").innerHTML = stockError;
}

function SizingGuide()
{
    window.open('sizingchart.aspx', 'sizingguide', 'status=no,toolbar=no,location=no,menubar=no,directories=no,resizable=no,scrollbars=no,height=640,width=540');
    return false;
}