function $(x) { if (document.getElementById) { return document.getElementById(x); } if (document.all) { return document.all[x]; } return false; }

function addEventSimple(obj,evt,fn)
    {
    if(obj.addEventListener)obj.addEventListener(evt,fn,false);
    else if(obj.attachEvent)obj.attachEvent('on'+evt,fn);
    }

function setVis(ele,vis) { $(ele).style.display = vis ? '' : 'none'; }

// Checkout

var lookupSkip = false;
var checkoutValidateOK = true;
function checkoutValidate(fld,req,cmp,err)
    {
    var rv = false; var errfld = 'err'+fld;
    if (typeof cmp != 'string')
        {
        if ($(errfld)) { $(errfld).className = (req==''?'':'err'); $(errfld).innerHTML = req; }
        $(fld).className = (req==''?'':'err');
        if (req!='') { $(fld).focus(); checkoutValidateOK = false; }
        return false;
        }
    var val = (typeof $(fld).options != 'undefined') ? $(fld).options[$(fld).selectedIndex].value : $(fld).value;
    if (cmp.charAt(0) == '=')
        { rv = (val != '') && (val == $(cmp.substring(1)).value) ? true : false; }
    else
        {
        if (cmp.charAt(0) == '@') { cmp = '^([A-Za-z0-9_%=\+\.\-])+\@(([A-Za-z0-9\-])+\.)+([A-Za-z0-9]{2,6})+$'; }
        var r = new RegExp(cmp); rv = (!req && (val=='')) ? true : (r.test(val) ? true : false );
        }
    if (rv)
        {
        if ($(errfld)) { $(errfld).className = $(errfld).innerHTML = ''; }
        $(fld).className = ''; return true;
        }
    if ((typeof err == 'string') && $(errfld)) { $(errfld).className = 'err'; $(errfld).innerHTML = err; }
    $(fld).className = 'err'; $(fld).focus(); checkoutValidateOK = false; return false;
    }

function getCardType(cardNumber)
    {
    var cardType = 0;
    var cardNo = cardNumber.replace(/[^0-9]/g,''); // regexps from card bins valid at October 2009
    var cardTypes = {5:/^6767\d{12}(\d{2,3})?$/,3:/^(5[06-9]|6[0-9])\d{10,17}$/,2:/^5[1-5]\d{14}$/,1:/^4\d{15,18}$/};
    for(var i in cardTypes) { var re = new RegExp(cardTypes[i]); if (re.test(cardNo)) { cardType = i; break; } }
    return cardType;
    }

function checkCardNumber(cardNumber)
    {
    var cardNo = cardNumber.replace(/[^0-9]/g,'');
    if (!checkLuhn10(cardNo) || cardNo=='') { checkoutValidate('CardNumber','Invalid card number'); return false; }
    var cardType = getCardType(cardNo);
    if (cardType == 0) { checkoutValidate('CardNumber','Invalid card number'); return false; }
    $('CardTypeID').value = cardType; $('SwitchIssue_').style.display = (cardType==3 || cardType==5) ? '' : 'none';
    checkoutValidate('CardNumber','');
    }

function checkLuhn10(cardNumber)
    {
    var cardNo = cardNumber.replace(/[^0-9]/g,'');
    var numberProduct, checkSumTotal = 0;
    for (digitCounter = (cardNo.length - 1); digitCounter >= 0; digitCounter--)
        {
        checkSumTotal += parseInt (cardNo.charAt(digitCounter));
        digitCounter--;
        numberProduct = String((cardNo.charAt(digitCounter) * 2));
        for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++)
            checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
        }
    return (checkSumTotal % 10 == 0);
    }

function checkPostcode(pc,err)
    {
    if (pc=='') return true;
    if (pc.match(/^[A-Z]{1,2}[0-9]{1,2}[A-Z]? ?[0-9][A-Z]{2}$/i)) return true;
    if (err!='') { alert(err); }
    return false;
    }

//  Allows multiple functions to load

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() { oldonload(); func(); }
  }
}

var orderSubmitted = 0;

function openInNewWindow() { 
	var newWindow = window.open(this.getAttribute('href'), '_blank'); 
	newWindow.focus(); 
	return false; 
} 

function openInNewSmallWindow() { 
	var newWindow = window.open(this.getAttribute('href'), '_blank', "height=350,width=510,scrollbars=1"); 
	newWindow.focus(); 
	return false; 
} 

function openProductInNewWindow() 
{ 
	var newWindow = window.open(this.getAttribute('href'), '_blank' , 'width=280 , height=154'); 
	newWindow.focus(); 
	return false; 
} 

function getDisabledControls() 
{ 
		// Do not call this function directly use DOMcompliancyTest to call it.
		
		var link; 
		var links = document.getElementsByTagName('input'); 
		
		for (var i = 0; i < links.length; i++) 
		{ 
			link = links[i]; 			
			if (/disabledcontrol/.exec(link.className)) { 
				link.disabled = true;
                link.readOnly = true;
                link.style.backgroundColor = "lightgrey";
			} 
		} 
}

function getNewWindowLinks() 
{ 
		 
		// Do not call this function directly use DOMcompliancyTest to call it.
		
		var strNewWindowAlert = " (opens in a new window)"; 
		var objWarningText; 
		var strWarningText; 
		var link; 
		var links = document.getElementsByTagName('a'); 
		
		for (var i = 0; i < links.length; i++) 
		{ 
			link = links[i]; 			
			if (/newwinsmalltxt/.exec(link.className)) { 
				objWarningText = document.createElement("em"); 
				strWarningText = document.createTextNode(strNewWindowAlert); 
				objWarningText.appendChild(strWarningText); 
				link.appendChild(objWarningText); 
				link.onclick = openInNewSmallWindow; 
			} else if (/newwinsmall/.exec(link.className)) { 
				link.onclick = openInNewSmallWindow; 
			} else if (/newwinnotxt/.exec(link.className)) { 
				link.onclick = openInNewWindow; 
			} else if (/newwin/.exec(link.className)) { 
				objWarningText = document.createElement("em"); 
				strWarningText = document.createTextNode(strNewWindowAlert); 
				objWarningText.appendChild(strWarningText); 
				link.appendChild(objWarningText); 
				link.onclick = openInNewWindow; 
			} 
		} 
		
		objWarningText = null; 
}

function buttonLinks()
{
    var buttonItems = document.querySelectorAll(".button");
    for (var i = 0; i < buttonItems.length; i++) {
        var element = buttonItems.item(i);
        element.addEventListener("mousedown", pushButton, false);
        element.addEventListener("mouseup", liftButton, false);
    }
}

function pushButton(event) {
    this.style.borderColor = "#aeaeae #f8fafe #f8fafe #aeaeae";
}

function liftButton(event) {
    this.style.borderColor = "#f8fafe #aeaeae #aeaeae #f8fafe";
}

function compareLinks()
{
    var compareItems = document.querySelectorAll("a.compareadd");
    for (var i = 0; i < compareItems.length; i++) {
        var element = compareItems.item(i);
        element.addEventListener("click", setCompareQuantity, false);
    }
}

function cvvHover()
    {
    var cvv = $('SecurityNumber');
    if (cvv)
        {
        addEventSimple(cvv,'mouseover',function(event) { $('cvvhoverdiv').style.visibility='visible'; });
        addEventSimple(cvv,'mouseout' ,function(event) { $('cvvhoverdiv').style.visibility='hidden';  });
        }
    }

function setCompareQuantity(event) {
    qty = base2.DOM.Element.querySelector(this.parentNode, "input.quantity");
    //alert(qty);
    this.href = this.href.replace(/PQ=[0-9]+/g, "PQ="+qty.value);
}

function DOMcompliancyTest()
{
    // set up base2 libs (TODO: convert this file to using it) 
    base2.DOM.bind(document);

	// Check that the browser is DOM compliant 
	if (document.getElementById && document.getElementsByTagName) 
	{ 
		// getNewWindowLinks();
        getDisabledControls();
		bannerAdverts();
        // compareLinks();
        cvvHover();
        buttonLinks();
		// renderTables();
	}
	
}

function mailPage()
{
    mail_str = "mailto:?subject=" + document.title;
    mail_str += "&body=" + location.href; 
    location.href = mail_str;
}

function createBookmarkLink() {

    title = document.title;
    url = location.href;

    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url,"");
    } else if( window.external ) { // IE Favorite
        window.external.AddFavorite( url, title);
    } else if(window.opera && window.print) { // Opera Hotlist
        return true;
    }
}

function bannerAdverts()
{
	var banner;
	var links;
	var link;
	var newlink;

	if (document.getElementById('posterimageh'))
		{
			banner = document.getElementById('posterimageh');
			links = banner.getElementsByTagName('a');
			
			for (var i = 0; i < links.length; i++) 
				{ 
					link = links[i];
				}

            if (link!=null) {

    			banner.onmouseover = function () 
    			{
				this.className = "posterimageover";
				link.style.textDecoration = "none";
     				link.style.color = "#2173bd";
    			}
    			banner.onmouseout = function () 
    			{
    				link.style.textDecoration = "underline";
    				link.style.color = "#4f8774";
    			}
    			banner.onclick = function () 
    			{
     				window.location = link;
  			    }
            }
		}
}

addLoadEvent(DOMcompliancyTest);
