// general functions 
function addLoadEvent(func) {	
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

/* Use this function to popup a larger image of a thumbnail*/
/*Make sure that BigImagePopUp.aspx is in the same directory*/
function popupBigImage(imagesource)
{
var querystring = "BigImagePopUp.aspx?largeImageSrc=" + imagesource;
var popwindow= window.open (querystring, "mywindow",
    "location=0,status=0,scrollbars=0,width=350,height=400");
}

function popupBigImage2(imagesource)
{
var querystring = "BigImagePopUp.aspx?largeImageSrc=" + imagesource.src.replace("_m_", "_l_").replace("_M_", "_L_");
var popwindow= window.open (querystring, "mywindow",
    "location=0,status=0,scrollbars=0,width=350,height=400,resizable,scrollbars");
}

/*Show or un-show big image in same window*/
function showBigImage(text,image) {
    image.className = "product-resize-image";
    text.className = "product-details product-resize-text";
}

function revertBigImage(text,image) {
    image.className = "product-image-standard";
    text.className = "product-details product-details-size";
}

function clickButton(e, buttonid){ 
          var evt = e ? e : window.event;
          var bt = document.getElementById(buttonid);

          if (bt){ 
              if (evt.keyCode == 13){ 
                    bt.click(); 
                    return false;
              } 
          } 
        }

function getElementByClass(classname){ 
     var messages=new Array();
     var inc=0; 
     var alltags=document.all? document.all : document.getElementsByTagName("*"); 

     for (i=0; i<alltags.length; i++){
        if (alltags[i].className.match(classname)){ 
         messages[inc++]=alltags[i]; 
         }
     }
     if(messages != null){return messages;}
     else {return null;}
} 

function applyHideToBasket() {
    // apply onclick to continue shopping
    var elementBtnClose = document.getElementById('closecart');
    var elementAddToBasket = document.getElementById('add-to-basket');
    
    if (elementBtnClose!=null){
       elementBtnClose.onclick = function ()
        {
        elementAddToBasket.className = "add-basket-hide";
        } 
    }  
}

function setFocusOnEditAddress()
{
    getPoss(null);
    var elementAddToBasket = document.getElementById('Edit-My-AddressPopup');
    elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
    setOverLayHeight();
    elementAddToBasket.focus();
    //Call the background disable method    
}

function applyOnClickToForms() {
    var elementBtnAdd = getElementByClass('addtocart');  
    var elementBtnClose = document.getElementById('closecart');  
    var elementAddToBasket = document.getElementById('add-to-basket');
    var elementBtnIncrease = document.getElementById('increase-font'); 
    var elementBtnDecrease = document.getElementById('decrease-font'); 
    var elementBtnReset = document.getElementById('reset-font'); 
    
    if (elementBtnAdd!=null){
        for (var intCounter = 0; intCounter < elementBtnAdd.length; intCounter++) {
        elementBtnAdd[intCounter].onclick = function ()
	        {	
	            // temporary just to show/hide add to basket div.
	            // this should overide the URL link and call the URL through AJAX.
	            // e.g. /product?id=12345&cat=books
	            // Avanade to implement.
	            if (elementAddToBasket!=null){
	                if (elementAddToBasket.className == "add-basket-hide png")
                    {
                    elementAddToBasket.className = "add-basket-show png";
                    if (elementBtnClose!=null){
                        elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
                        }  
                    } //else {elementAddToBasket.className = "add-basket-hide png";}
	            }           			
            }
        }
    }
    
    // accesibility font btns
    if (elementBtnIncrease!=null){
        elementBtnIncrease.onclick = function () {increaseFontSize();}
    }
    
    if (elementBtnDecrease!=null){
        elementBtnDecrease.onclick = function () {decreaseFontSize();}
    }
    
    if (elementBtnReset!=null){
        elementBtnReset.onclick = function () {resetFontSize();}
    }
    
}

// font re-size functions
var fontsize = 100;
var size = getCookie("font-size");
var factor = 20;

function checkZoom(){   
   var d = document.getElementsByTagName('body');
   
   if (d[0] && size!=null){
     var v = parseInt(size);
     d[0].style.fontSize = v + "%";
     }
}

function setFontSize()
{
    if(size!=null)
    {
        var d = document.getElementsByTagName('body');
        if(d!=null)
        {
            var sizeSupposedToBe = size + "%";
            if(d[0].style.fontSize != sizeSupposedToBe)
            {
                d[0].style.fontSize = sizeSupposedToBe;
            }
        }
    }
}

function resetFontSize() {
   var d = document.getElementsByTagName('body');
   if (d!=null){ d[0].style.fontSize = fontsize + "%";}
   size = fontsize;
   deleteCookie("font-size","/");   
}

function increaseFontSize() {
   var d = document.getElementsByTagName('body');
   
   if (size!=null){ var v = parseInt(size) + factor;}
   else { var v = fontsize + factor;}
   
   if (d!=null){
        d[0].style.fontSize = v + '%';
        size = v;
        setCookie("font-size",size,365,"/",null,false);
   }
}

function decreaseFontSize() {
   var d = document.getElementsByTagName('body');
   
   if (size!=null){ var v = parseInt(size) - factor;}
   else { var v = fontsize - factor;}
   
   if (d!=null){
        d[0].style.fontSize = v + '%';
        size = v;
        setCookie("font-size",size,365,"/",null,false);
   }  
}

// cookie functions
function setCookie(name,value,days,path,domain,secure) {
  var expires, date;
  if (typeof days == "number") {
    date = new Date();
    date.setTime( date.getTime() + (days*24*60*60*1000) );
		expires = date.toGMTString();
  }
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(name) {
  var nameq = name + "=";
  var c_ar = document.cookie.split(';');
  for (var i=0; i<c_ar.length; i++) {
    var c = c_ar[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameq) == 0) return unescape( c.substring(nameq.length, c.length) );
  }
  return null;
}

function deleteCookie(name,path,domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function ShowHidePopUpCheckOutSignIn()
{
    //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('add-to-basket');
    var elementBtnClose = document.getElementById('closecart');  

    if (elementAddToBasket!=null)
    {
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function ShowHidePopUpEmailValidation()
{
    //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('Email-validation');
    var elementBtnClose = document.getElementById('CloseEmailValidation');  

    if (elementAddToBasket!=null)
    {
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function ShowHidePopUpAddressCountMessage()
{
    //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('address-count-message');
    var elementBtnClose = document.getElementById('closePopUp1');  

    if (elementAddToBasket!=null)
    {
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function ShowHidePopUpDuplicateAddressMessage()
{
    //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('address-duplicate-message');
    var elementBtnClose = document.getElementById('closePopUp2');  
    if (elementAddToBasket!=null)
    {
        alert(elementAddToBasket.className);
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

//Script to handle MyAddress pop up
function ShowDeleteAddressPopUp(message)
{
    getPoss(null);
    var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('remove-card-popup');
    var elementDelAddressMSG = document.getElementById('DelAddressMSG');
    var elementBtnClose = document.getElementById('closecart');  
    
    	            if (elementAddToBasket!=null)
    	            {
    	                
	                    if (elementAddToBasket.className == "remove-basket-hide")
                        {
                            elementAddToBasket.className = "remove-basket-show";
                            if (elementBtnClose!=null)
                            {
                                elementAddToBasket.style.top = (popuotop - elementAddToBasket.offsetHeight/2) + "px";
                                setOverLayHeight();
                                elementAddToBasket.focus();
                                elementBtnClose.onclick = function () {elementAddToBasket.className = "remove-basket-hide"; hideOverlay();} 
                                
                            }  
                        } //else {elementAddToBasket.className = "add-basket-hide png";}
	                } 
	                //Code to change the error mesage
	                if (elementDelAddressMSG!=null)
	                { 
	                    
	                    elementDelAddressMSG.innerHTML = message;
	                }
}

function ShowSplitShipmentPopUp(deliveryOption)
{
    getPoss(null);
    
    var elementAddToBasket = document.getElementById('Edit-My-AddressPopup');
   //var elementDelAddressMSG = document.getElementById('DelAddressMSG');
    var elementBtnClose = document.getElementById('btnCancelSpliting');  
    
    	            if (elementAddToBasket!=null)
    	            {
    	              
	                    if (elementAddToBasket.className == "remove-basket-hide")
                        {
                            elementAddToBasket.className = "remove-basket-show";
                            
                            if (elementBtnClose != null)
                            {
                                  
                                elementAddToBasket.style.top = (popuotop - elementAddToBasket.offsetHeight/2) + "px";
                               
                                setOverLayHeight();
                          
                                elementAddToBasket.focus();
                                elementBtnClose.onclick = function () {elementAddToBasket.className = "remove-basket-hide"; hideOverlay();} 
                                
                            }  
                             
                        } //else {elementAddToBasket.className = "add-basket-hide png";}
	                } 
	                //Code to change the error mesage
	              //  if (elementDelAddressMSG!=null)
	              //  { 
	              //      
	                 //   elementDelAddressMSG.innerHTML = message;
	              //  }
}



//Script to handle MyPayment popup
function ShowDeletePaymentPopUp(message)
{   
    getPoss(null); 
    var elementBtnAdd = getElementByClass('addtocart');  
    var elementRemoveFromBasket = document.getElementById('remove-card-popup');
    var elementDelAddressMSG = document.getElementById('message');
    var elementBtnClose = document.getElementById('closecart');  

    if (elementRemoveFromBasket!=null)
    {
        if (elementRemoveFromBasket.className == "remove-basket-hide")
        {
            elementRemoveFromBasket.className = "remove-basket-show";
            if (elementBtnClose!=null)
            {
                elementRemoveFromBasket.style.top = (popuotop - elementRemoveFromBasket.offsetHeight/2) + "px";
                setOverLayHeight();
                elementRemoveFromBasket.focus();
                elementBtnClose.onclick = function () {elementRemoveFromBasket.className = "remove-basket-hide";hideOverlay();} 
            }  
        }
    } 
    //Code to change the error mesage
    if (elementDelAddressMSG!=null)
    {
        elementDelAddressMSG.innerHTML = '<strong>' + producttitle + '</strong> ' + author;
    }
}

//Script to handle Cancel Order popup
function ShowCancelOrderPopUp(ordernumber, ordername)
{  
    getPoss(null);
    var elementCancelOrderBasket = document.getElementById('cancel-order');
    var elementDelAddressMSG = document.getElementById('message');
    var elementBtnClose = document.getElementById('closecart');  

    if (elementCancelOrderBasket!=null)
    {
        if (elementCancelOrderBasket.className == "remove-basket-hide")
        {
            elementCancelOrderBasket.className = "remove-basket-show";
            if (elementBtnClose!=null)
            {
                elementCancelOrderBasket.style.top = (popuotop - elementCancelOrderBasket.offsetHeight/2) + "px";
                setOverLayHeight();
                elementCancelOrderBasket.focus();
                elementBtnClose.onclick = function () {elementCancelOrderBasket.className = "remove-basket-hide"; hideOverlay();} 
            }  
        }
    } 
    //Code to change the error mesage
    if (elementDelAddressMSG!=null)
    {
        if (ordernumber == "")
        {
            elementDelAddressMSG.innerHTML = ordername;
        }
        else if(ordername == "")
        {
            elementDelAddressMSG.innerHTML = '<strong>' + ordernumber + '</strong> ';
        }
        else
        {
            elementDelAddressMSG.innerHTML = '<strong>' + ordernumber + '</strong> ' + ' - ' + ordername;
        }
    }
}


//Script to handle Reduce Quantity popup
function ShowReduceQuantityPopUp(reduceLineQtyCtrlId, productName, outstandingLineItems, reducedQuantiyClientId)
{  
    getPoss(null);
    var elementCancelOrderBasket = document.getElementById('reduce-quantity');
    var elementDelAddressMSG = document.getElementById('Mymessage');
    var elementBtnClose = document.getElementById('no-reduce-quantity');  
    document.getElementById('HiddenF1').value = reduceLineQtyCtrlId;

    if (elementCancelOrderBasket!=null)
    {
        if (elementCancelOrderBasket.className == "reduce-quantity-popup-hide")
        {
            elementCancelOrderBasket.className = "reduce-quantity-popup-show ";
            if (elementBtnClose!=null)
            {
                elementCancelOrderBasket.style.top = (popuotop - elementCancelOrderBasket.offsetHeight/2) + "px";
                setOverLayHeight();
                elementCancelOrderBasket.focus();
                elementBtnClose.onclick = function () {elementCancelOrderBasket.className = "reduce-quantity-popup-hide"; hideOverlay();} 
            }  
        }
    } 
    //Code to change the error mesage
    if (elementDelAddressMSG!=null)
    {
        // build the ordername
        var elementReducedQuantity  = document.getElementById(reducedQuantiyClientId);
        if(elementReducedQuantity != null && elementReducedQuantity.value != '')
        {
        var ordername = '<span>Change the quantity of: <b>' + productName + '</b> from <b>' + outstandingLineItems + '</b> to <b>' + elementReducedQuantity.value + '<b/>?</span>';
        elementDelAddressMSG.innerHTML = ordername;
        }
    }
}

//Script to handle Delete Item popup
function ShowRemoveItemPopUp(producttitle, author)
{
    getPoss(null);
    var elementBtnAdd = getElementByClass('addtocart');  
    var elementRemoveFromBasket = document.getElementById('remove-from-basket');
    var elementDelAddressMSG = document.getElementById('message');
    var elementBtnClose = document.getElementById('closecart');  

    if (elementRemoveFromBasket!=null)
    {
        if (elementRemoveFromBasket.className == "remove-basket-hide")
        {
        
            elementRemoveFromBasket.className = "remove-basket-show";            
            if (elementBtnClose!=null)
            {
               
            
                elementRemoveFromBasket.style.top = (popuotop - elementRemoveFromBasket.offsetHeight/2) + "px";
                setOverLayHeight();
                elementRemoveFromBasket.focus();
                elementBtnClose.onclick = function () {elementRemoveFromBasket.className = "remove-basket-hide"; hideOverlay();} 
            }  
        }
    }     
    //Code to change the error mesage
    if (elementDelAddressMSG!=null)
    {        
        elementDelAddressMSG.style.top = (popuotop - elementDelAddressMSG.offsetHeight/2) + "px";
        elementDelAddressMSG.innerHTML = '<strong>' + producttitle + '</strong> ' + author;
    }
}


//Script to handle Cancel Item popup
function ShowCancelItemPopUp(orderID, lineItemID, controlID, quantity, title, author)
{
    getPoss(null);
    
    var elementCancelItem = document.getElementById('cancel-item-popup');
    var elementBtnNoCancel = document.getElementById('no-cancel');  
    document.getElementById('HiddenF1').value = orderID;
    document.getElementById('HiddenF2').value = lineItemID;
    document.getElementById('HiddenF3').value = controlID;
    document.getElementById('HiddenF4').value = quantity;

    var elementDelAddressMSG = document.getElementById('cancelItemMessage');
    if(elementDelAddressMSG != null && title != null && title != '')
    {
        var authorToDisplay = author;
        if(author == null) 
        {
          authorToDisplay = ' ';
        }
        elementDelAddressMSG.style.top = (popuotop - elementDelAddressMSG.offsetHeight/2) + "px";
        elementDelAddressMSG.innerHTML = '<strong>' + unescape(title) + '</strong> ' + unescape(authorToDisplay);
    }

    if (elementCancelItem!=null)
    {
        if (elementCancelItem.className == "cancel-item-popup-hide")
        {
            elementCancelItem.className = "cancel-item-popup-show";
            if (elementBtnNoCancel!=null)
            {
                elementCancelItem.style.top = (popuotop - elementCancelItem.offsetHeight/2) + "px";
                setOverLayHeight();
                elementCancelItem.focus();
                elementBtnNoCancel.onclick = function () {elementCancelItem.className = "cancel-item-popup-hide"; hideOverlay();} 
            }  
        }
    } 
}


//Script to handle AddToBasket popup
function ShowAddToBasket(btnContinueShopping)
{
    
    var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('add-to-basket');
    var elementBtnClose = document.getElementById(btnContinueShopping);  
    
    if (elementAddToBasket!=null)
    {
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
                
            }  
        } //else {elementAddToBasket.className = "add-basket-hide png";}
    } 
}

function ShowHidePopUpAddressCheckMessage()
{
    //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('address-check-message');
    var elementBtnClose = document.getElementById('closePopUp3');  
    if (elementAddToBasket!=null)
    {
        alert(elementAddToBasket.className);
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function ShowHidePopUpCreditCardSelectMessage()
{
  //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('creditcard-select-message');
    var elementBtnClose = document.getElementById('closePopUp1');  
    if (elementAddToBasket!=null)
    {
        alert(elementAddToBasket.className);
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function ShowHidePopUpCannotDeliveryToStoreMessage()
{
  //var elementBtnAdd = getElementByClass('addtocart');  
    var elementAddToBasket = document.getElementById('cannotdeliver-to-store-message');
    var elementBtnClose = document.getElementById('closePopUp1');  
    if (elementAddToBasket!=null)
    {
        alert(elementAddToBasket.className);
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}

function CancelOrderConfirmationMessage()
{
    //alert("test1");
  //var elementBtnAdd = getElementByClass('addtocart');  
    
    var elementAddToBasket = document.getElementById('confirmation-message');
    var elementBtnClose = document.getElementById('closePopUp');
    document.getElementById('hdnConfirmation').Value = "1";  
    alert(document.getElementById('hdnConfirmation').Value);
    if (elementAddToBasket!=null)
    {
        alert(elementAddToBasket.className);
        if (elementAddToBasket.className == "add-basket-hide png")
        {
            elementAddToBasket.className = "add-basket-show png";
            if (elementBtnClose!=null)
            {
                elementBtnClose.onclick = function () {elementAddToBasket.className = "add-basket-hide png";} 
            }  
        } 
    } 
}



// function that checks that at least one search criteria is specified in advance search books
function ValidateAdvancedSearchBooks(message, title, author, isbn, publisher, series)
{ 
     var elementTitle = document.getElementById(title);
     var elementAuthor = document.getElementById(author);
     var elementISBN = document.getElementById(isbn);
     var elementPublisher = document.getElementById(publisher);
     var elementSeries = document.getElementById(series);

 if(elementTitle.value == '' &&
    elementAuthor.value == '' &&
    elementISBN.value == '' &&
    elementPublisher.value == '' &&
    elementSeries.value == '')
    {
    alert(message);
    return false;
    }
else
    {
    return true;
    }
}

// function that checks that at least one search criteria is specified in advance search dvd
function ValidateAdvancedSearchDVD(message, title, actor, director, studio, series, catalogNumber)
{
    var elementTitle = document.getElementById(title);
    var elementActor = document.getElementById(actor);
    var elementDirector = document.getElementById(director);
    var elementStudio = document.getElementById(studio);
    var elementSeries = document.getElementById(series);
    var elementCatalogNumber = document.getElementById(catalogNumber);
    
    if(elementTitle.value == '' &&
       elementActor.value == '' &&
       elementDirector.value == '' &&
       elementStudio.value == '' &&
       elementSeries.value == '' &&
       elementCatalogNumber.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}

// function that checks that at least one search criteria is specified in advance search Gaming
function ValidateAdvancedSearchGaming(message, title, format, publisher, series, catalogNumber)
{
    var elementTitle = document.getElementById(title);
    var elementFormat = document.getElementById(format);
    var elementPublisher = document.getElementById(publisher);
    var elementSeries = document.getElementById(series);
    var elementCatalogNumber = document.getElementById(catalogNumber);
    
    if(elementTitle.value == '' &&
       elementFormat.value == '0' &&
       elementPublisher.value == '' &&
       elementSeries.value == '' &&
       elementCatalogNumber.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}

// function that checks that at least one search criteria is specified in advance search Music
function ValidateAdvancedSearchMusic(message, title, artist, labelName, track, catalogNumber)
{
    var elementTitle = document.getElementById(title);
    var elementArtist = document.getElementById(artist);
    var elementLabelName = document.getElementById(labelName);
    var elementTrack = document.getElementById(track);
    var elementCatalogNumber = document.getElementById(catalogNumber);
    
    if(elementTitle.value == '' &&
       elementArtist.value == '' &&
       elementLabelName.value == '' &&
       elementTrack.value == '' &&
       elementCatalogNumber.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}

// function that checks that at least one search criteria is specified in advance search Music Classical
function ValidateAdvancedSearchMusicClassical(message, title, composer, performer, conductor, orchestra, labelName, catalogNumber)
{
    var elementTitle = document.getElementById(title);
    var elementComposer = document.getElementById(composer);
    var elementPerformer = document.getElementById(performer);
    var elementConductor = document.getElementById(conductor);
    var elementOrchestra = document.getElementById(orchestra);
    var elementLabelName = document.getElementById(labelName);
    var elementCatalogNumber = document.getElementById(catalogNumber);
    
    if(elementTitle.value == '' &&
       elementComposer.value == '' &&
       elementPerformer.value == '' &&
       elementConductor.value == '' &&
       elementOrchestra.value == '' &&
       elementLabelName.value == '' &&
       elementCatalogNumber.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}

// function that checks that at least one search criteria is specified in advance search Stationery
function ValidateAdvancedSearchStationery(message, product, brand, collection, colour, paperSize, catalogNumber)
{
    var elementProduct = document.getElementById(product);
    var elementBrand = document.getElementById(brand);
    var elementCollection = document.getElementById(collection);
    var elementColour = document.getElementById(colour);
    var elementPaperSize = document.getElementById(paperSize);   
    var elementCatalogNumber = document.getElementById(catalogNumber);
    
    if(elementProduct.value == '' &&
       elementBrand.value == '' &&
       elementCollection.value == '0' &&
       elementColour.value == '' &&
       elementPaperSize.value == '0' &&
       elementCatalogNumber.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}

// function that checks that at least one search criteria is specified in advance search Magazines
function ValidateAdvancedSearchMagazines(message, title, productCode, publisher)
{
    var elementTitle = document.getElementById(title);
    var elementProductCode = document.getElementById(productCode);
    var elementPublisher = document.getElementById(publisher);
    
    if(elementTitle.value == '' &&
       elementProductCode.value == '' &&
       elementPublisher.value == '' )
       {
         alert(message);
         return false;
       }
    else
       {
         return true;
       }
}


// function that checks that at least one rating is checked for a product
function CheckRating(message, message1, message2, message3, message4, rating1, rating2, rating3, rating4, rating5, custname, custemail, reviewmessage)
{    var elementTitle = document.getElementById(rating1);
     var elementAuthor = document.getElementById(rating2);
     var elementISBN = document.getElementById(rating3);
     var elementPublisher = document.getElementById(rating4);
     var elementSeries = document.getElementById(rating5);
     var elementCustName = document.getElementById(custname);
     var elementCustEmail = document.getElementById(custemail);
     var elementReviewMessage = document.getElementById(reviewmessage);

if(elementCustName.value == '')
{
    alert(message1);
    return false;
}
if(elementCustEmail.value == '')
{
    alert(message2);
    return false;
}
else if(elementCustEmail.value != '')
{
    var match = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(elementCustEmail.value);
    if(match == false)
    {
    alert(message3);
    return false;
    }
}
if(elementReviewMessage.value == '')
{
    alert(message4);
    return false;
}
 if(elementTitle.checked ||
    elementAuthor.checked ||
    elementISBN.checked ||
    elementPublisher.checked ||
    elementSeries.checked)
    {        
    return true;
    }
else
    {
     alert(message);
    return false;
    }
}

// load and attach events
/*
switchStyleSheet();
window.onresize = switchStyleSheet;
addLoadEvent(applyOnClickToForms);
*/

function LookupHelp(val)
{
    MyExample=window.open("../support/help-tips.htm#" + val, "", 'location=no,menubar=no,resizable=yes,status=yes,toolbar=no,scrollbars=yes,width=1050,height=250');
}

function PrintOrderReceipt(val,payment)
{
    var MyExample=window.open("PrintableOrderReceipt.aspx?purchaseOrderID=" + val+"&PaymentType="+payment, "PrintReceipt", 'location=no,menubar=no,resizable=yes,status=yes,toolbar=no,scrollbars=yes');
    MyExample.print();    
}

function ModifyTitleCtrls(titleCtrl, lblOtherId, txtOtherId, rfvalOtherId, optGenderMaleId, optGenderFemaleId)
{
    var showOtherControls = (titleCtrl.value == "4");
    var dis = showOtherControls ? "block" : "none";
    var vis = showOtherControls ? "visible" : "hidden";
    var pos = showOtherControls ? "relative" : "absolute";

    // Show/hide "Other" controls
    document.getElementById(lblOtherId).style.visibility = vis;
    document.getElementById(txtOtherId).style.visibility = vis;
    
    if(document.getElementById('genderLayer'))
    {
        document.getElementById('genderLayer').style.display = dis;
        document.getElementById('genderLayer').style.position = pos;
    }
}

function ModifyGiftPackTitleCtrls(titleCtrl, liGenderLayer, lblOtherId, txtOtherId, rfvalOtherId, optGenderMaleId, optGenderFemaleId)
{
    var showOtherControls = (titleCtrl.value == "4");
    var dis = showOtherControls ? "block" : "none";
    var vis = showOtherControls ? "visible" : "hidden";
    var pos = showOtherControls ? "relative" : "absolute";

    // Show/hide "Other" controls
    document.getElementById(lblOtherId).style.visibility = vis;
    document.getElementById(txtOtherId).style.visibility = vis;
    
    if(document.getElementById(liGenderLayer))
    {
        document.getElementById(liGenderLayer).style.display = dis;
        document.getElementById(liGenderLayer).style.position = pos;
    }
}

function SetValidationforActivationCode(txtActivationCode, regexActivationCode)
{
    var activationCode = document.getElementById(txtActivationCode)
    if(activationCode.value.length == 11)
    {
     var textActivationCode = activationCode.value;
     var regexCode = document.getElementById(regexActivationCode);
     if (!textActivationCode.match(/^[a-zA-Z0-9][&amp;\w\.-]*[\w]-[a-zA-Z0-9][&amp;\w\.-]*[\w]-[a-zA-Z0-9][&amp;\w\.-]*[\w]$/))
        {            
            regexCode.style.display = "block";
        }
        else
        {
              regexCode.style.display = "none";
        }
    }
}

function OptGenderOnClick(optGender, hdfldGenderId, genderValue)
{
    if (optGender.checked)
        document.getElementById(hdfldGenderId).value = genderValue;
}

var popuotop;
function getPoss(obj)
{   
  if(typeof document.documentElement.scrollTop != 'undefined'
        && document.documentElement.scrollTop > 0)
  {   
   popuotop = (window.screen.height)/2 + document.documentElement.scrollTop ;
  }
  else
  {    
   popuotop = (window.screen.height)/2;   
  }  
 }

function getPosition()
{
    getPoss(null);
}

function AddToBasket(obj)
{
    getPoss(obj);
}

function setFocusOnAddToBasket()
{
    getPoss(null);
    var elementAddToBasket = document.getElementById('add-to-basket');
    elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
    setOverLayHeight();
    elementAddToBasket.focus();
    //Call the background disable method   
}


// for line level item removal from wish list
function setFocusOnRemoveFromWishList()
{
    getPoss(null);
    var elementAddToBasket = document.getElementById('RemoveFromWishlist-popup');
    elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
    setOverLayHeight();
    elementAddToBasket.focus();
    //Call the background disable method    
}

function setFocusOnSplitShipment()
{
    getPoss(null);
    var elementAddToBasket = document.getElementById('Split-My-ShipmentPopup');
    elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
    setOverLayHeight();
    elementAddToBasket.focus();
    //Call the background disable method    
}

function setFocusOnAddToWishList()
{
    getPoss(null);
    var elementAddToBasket = document.getElementById('AddWishlist-popup');
    elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
    setOverLayHeight();
    elementAddToBasket.focus();
    //Call the background disable method    
}

function OpenExternalLink()
{
    var txtUrl = document.getElementById("extUrl");
    window.open(txtUrl.value);
    ShowExternalLinkPopup();
    hideOverlay();
}

function setFocusOnExternalLink()
{
    var elementAddToBasket = document.getElementById('external-link-popup');
        if (elementAddToBasket!=null)
    {
        if (elementAddToBasket.className == "external-link-popup-hide")
        {
            elementAddToBasket.className = "external-link-popup-show";
            getPosition();
            elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";    
            setOverLayHeight();
            elementAddToBasket.focus();    
        }
        else
        {
            elementAddToBasket.className = "external-link-popup-hide"
        }
    }     
}




function setOverLayHeight()
{
    var layer = document.getElementById('overlayer');
    var _docHeight = (document.height !== undefined) ? document.height : document.body.offsetHeight;
    _docHeight = _docHeight + "px";
    layer.style.height  = _docHeight;
    layer.style.visibility = "visible";    
    iezindexPatch();
}

//handle all JS when clicked on continue shopping
function ContinueShopping()
{
    //iezindexPatch();
}

//patch to hide all the dropdowns
//patch for ie z-index kown bug for dropdownlist
function iezindexPatch(hide)
{    
    
    var layer = document.getElementById('overlayer');
    var vis = (layer.style.visibility != "visible") ? "visible" : "hidden";
            
    var arSelect = document.getElementsByTagName("select");
    var len=arSelect.length;    
    if(navigator.appName == "Microsoft Internet Explorer")
    {            
        for(var i=0;i<len;i++)
        {
            objSel=arSelect[i];
            objSel.style.visibility = vis;
        }  
    }    
}

//make controls on whsaddress enable 
function clearAddressControls(address1, address2, address3, town, region, postcode, country, addref)
{
        clearTextandReadOnly(document.getElementById(address1));
        clearTextandReadOnly(document.getElementById(address2));
        clearTextandReadOnly(document.getElementById(address3));
        clearTextandReadOnly(document.getElementById(town));
        clearTextandReadOnly(document.getElementById(region));
        clearTextandReadOnly(document.getElementById(postcode));
        clearTextandReadOnly(document.getElementById(country));
        if (document.getElementById(addref) != null)        
            clearTextandReadOnly(document.getElementById(addref));
}

//makes the object readonly
function blurObject(obj)
{
    if(obj != null)
    {    
        obj.readOnly = 1;
        alert(obj.readOnly);
    }
}

//clears text for textbox
function clearText(obj)
{
    if(obj != null)
    {
        obj.value = "";
        blurObject(obj);
    }  
}

//clears text for text box and make sthe object readonly
function clearTextandReadOnly(obj)
{
    if(obj != null)
    {
        obj.value = "";
        obj.readOnly = 1;
    }  
}

function NotUpdatedQuantityClientValFun()
{
    var result = true;
    //find all input fields
    var x = document.getElementsByTagName('input');
    for (var i=0;i<x.length;i++)
    {
        //look for Quantity textbox only
        var originalQuantity = x[i].getAttribute('OriginalQuantity');
        if(originalQuantity && !isNaN(x[i].value))
        {
            originalQuantity = parseInt(x[i].getAttribute('OriginalQuantity'));
            quantity = parseInt(x[i].value);
            //find associated Validator (Span)
            var NotUpdatedSpanClientID = x[i].getAttribute('NotUpdatedSpanClientID');
            var NotUpdatedSpan = document.getElementById(NotUpdatedSpanClientID);
            //does field has been changed
            if(originalQuantity != quantity)
            {       
                //display error message
                NotUpdatedSpan.style.display="";
                //stop postback
                result = false;
                break;
            }
            else
            {       
                //hide error message
                NotUpdatedSpan.style.display="none";
            }
            
        }
    }
    return result;
 
}
                
function setFocusOnRemoveItem()
{
    var layer = document.getElementById('overlayer');
    var _docHeight = (document.height !== undefined) ? document.height : document.body.offsetHeight;
    _docHeight = _docHeight + "px";
    layer.style.height  = _docHeight;
    layer.style.visibility = "visible";
    iezindexPatch();
}

function hideOverlay()
{
    var layer = document.getElementById('overlayer');
    layer.style.visibility = "hidden";
    iezindexPatch();
}

var submitForm = true;
function CheckIfCanSubmit()
{
    if(submitForm)
    {
        submitForm = false;
        return true;
    }
    else
    {
        return false;
    }
}

function ShowExternalLinkPopup(url)
{
    var txtUrl = document.getElementById("extUrl");
    txtUrl.value = url;
    setFocusOnExternalLink();
    //alert('This is an external link');
}

function OnGoClick(dropdownID, txtSearchID)
{
    var category = document.getElementById(dropdownID).value.toUpperCase();
    var searchKeyword = document.getElementById(txtSearchID).value;
    if (category == "DVDMUSICANDGAMES")
    {
        if (searchKeyword.length!="")
            GoPartner('http://www.whsmithentertainment.co.uk/whsmith/elysium.search?search=' + searchKeyword);       
        return false;   
    }
    else
    {
        return true;   
    }    
}

function GoPartner(link)
{
    ShowExternalLinkPopup(link);
}

/* Code to clear inkjet printer model list on client begins here */
function ClearPrinterModel(ctrl, currentobj)
{    
    var endSelect = document.getElementById(ctrl);    
    endSelect.disabled = 'true';    
    /* Clear out the current options */            
    endSelect.options.length=1;
    endSelect.selectedIndex = -1;    
    endSelect.options[0].text = "Loading printer models for " + currentobj.options[currentobj.selectedIndex].text + ".....";        
}

function DisableMake(ctrl)
{
    var endSelect = document.getElementById(ctrl);    
    endSelect.disabled = 'true';
}

/* Code to clear inkjet printer list on client begins here */

/* Function to magae wishlist clicked* beginds here */
    function WishList_ManageCount(ctrl)
    {
        var countbox = document.getElementById("wishlistcount");        
        var additemcountbox =document.getElementById("ctl00_ctl00_body_body_itemcountlist");
        
        var messagelayer = document.getElementById("wishlistcountdisp");        
        //countbox.value = (ctrl.checked == true)?(parseInt(countbox.value))+1:(parseInt(countbox.value))-1;
        var productlistbox = document.getElementById("ctl00_ctl00_WHSRemoveItemPopUp2_productiflist");
        var addproductlistbox = document.getElementById("ctl00_ctl00_body_body_additemlist");
        
        if(ctrl.checked == true)
        {
            countbox.value=(parseInt(countbox.value))+1;
            productlistbox.value += ctrl.parentNode.getAttribute('ProductID') + "|";
        }
        else
        {
            countbox.value=(parseInt(countbox.value))-1;
            var strprodlist = productlistbox.value;
            productlistbox.value = strprodlist.replace(ctrl.parentNode.getAttribute('ProductID') + "|", "");
        }
        additemcountbox.value = countbox.value;
        addproductlistbox.value = productlistbox.value;
    }
     function WishList_AddMultiItemCount(ctrl)
    {
        var countbox = document.getElementById("wishlistcount");        
        //countbox.value = (ctrl.checked == true)?(parseInt(countbox.value))+1:(parseInt(countbox.value))-1;
        var productlistbox = document.getElementById("ctl00_ctl00_WHSRemoveItemPopUp2_productiflist");        
        if(ctrl.checked == true)
        {
            countbox.value=(parseInt(countbox.value))+1;
            productlistbox.value += ctrl.parentElement.ProductID + "|";
        }
        else
        {
            countbox.value=(parseInt(countbox.value))-1;
            var strprodlist = productlistbox.value;
            productlistbox.value = strprodlist.replace(ctrl.parentElement.ProductID + "|", "");
        }        
    }
    
    function ShowRemoveWishListItem()
    {             
            var elementAddToBasket = document.getElementById('RemoveWishlist-popup');            
            if (elementAddToBasket!=null)
            {
                if (elementAddToBasket.className == "RemoveWishlist-popup-hide")
                {      
                    var countbox = document.getElementById("wishlistcount");        
                    var messagelayer = document.getElementById("wishlistcountdisp");
                    messagelayer.innerHTML = "Are you sure you want to remove these " + countbox.value + " items from your Wish List?";
                    elementAddToBasket.className = "RemoveWishlist-popup-show";
                }
                else
                {
                    elementAddToBasket.className == "RemoveWishlist-popup-hide";
                }
            }
            getPosition();
            elementAddToBasket.style.top = (popuotop -  elementAddToBasket.offsetHeight ) + "px";
            setOverLayHeight();
            
    }
/*wishlist code end here */

/*wishlist Email Validation function start */
function MultipleFieldsValidatorEvaluateIsValid(val) {
 
    controltovalidateIDs = val.controlstovalidate.split(',');
    switch (val.condition) {
        case 'OR':           
            for(var controltovalidateIDIndex in controltovalidateIDs) {
                var controlID = controltovalidateIDs[controltovalidateIDIndex];
                if (ValidatorTrim(ValidatorGetValue(controlID)) != '') {
                    
                    return true;
                } 
            }
            return false;
        break;
        
        case 'XOR':                                   
            for(var controltovalidateIDIndex=0;controltovalidateIDIndex<controltovalidateIDs.length;controltovalidateIDIndex++) 
            {      
                var controlID = controltovalidateIDs[controltovalidateIDIndex];                                
                if (ValidatorTrim(ValidatorGetValue(controlID)) != '')
                {                    
                    for (var j=controltovalidateIDIndex+1; j<controltovalidateIDs.length; j++)
                    {                                                                                                                                                          
                        if (ValidatorGetValue(controlID) == ValidatorGetValue(controltovalidateIDs[j]))                            
                            return false;                                                    
                    }
                }
            }
            return true;                                                                                        
        break;
        
        case 'AND':
            for(var controltovalidateIDIndex in controltovalidateIDs) {
                var controlID = controltovalidateIDs[controltovalidateIDIndex];
                if (ValidatorTrim(ValidatorGetValue(controlID)) == '') {
                    return false;
                } 
            }
            return true;
        break;
    }
    //var testJ = document.getElementsByName('joe')[0];
    //alert(testJ.id);
    //alert('jump');
    return false;
}

function cancelitempatch(ctrl)
{
    if(navigator.appName == "Microsoft Internet Explorer")
    {
        ctrl.style.display = "inline";       
    }
}


function disableElements(){
    if (arguments.length < 1) return;
    for (i=0;i<arguments.length;i++){
        var ctrlId = arguments[i];
        var ctrl = document.getElementById(ctrlId);
        if (ctrl != null) ctrl.disabled = true;
    }
}

function enableElements(){
    if (arguments.length < 1) return;
    for (i=0;i<arguments.length;i++){
        var ctrlId = arguments[i];
        var ctrl = document.getElementById(ctrlId);
        if (ctrl != null) ctrl.disabled = false;
    }
}






// Simple helper to return the "exMaxLen" attribute for
// the specified field.  Using "getAttribute" won't work
// with Firefox.
function GetMaxLength(targetField)
{
    return targetField.exMaxLen;
}

//
// Limit the text input in the specified field.
//
function LimitInput(targetField, sourceEvent)
{
	var isPermittedKeystroke;
	var enteredKeystroke;
	var maximumFieldLength;
	var currentFieldLength;
	var inputAllowed = true;
	var selectionLength = parseInt(GetSelectionLength(targetField));
	
	if ( GetMaxLength(targetField) != null )
	{
	    // Get the current and maximum field length
	    currentFieldLength = parseInt(targetField.value.length);
		maximumFieldLength = parseInt(GetMaxLength(targetField));

		// Allow non-printing, arrow and delete keys
        enteredKeystroke = window.event ? sourceEvent.keyCode : sourceEvent.which;
		isPermittedKeystroke = ((enteredKeystroke < 32)								
					          ||(enteredKeystroke >= 33 && enteredKeystroke <= 40)	
					          ||(enteredKeystroke == 46))							

		// Decide whether the keystroke is allowed to proceed
		if ( !isPermittedKeystroke )
		{
			if ( ( currentFieldLength - selectionLength ) >= maximumFieldLength ) 
			{
				inputAllowed = false;
			}
		}
		
		// Force a trim of the textarea contents if necessary
		if ( currentFieldLength > maximumFieldLength )
		{
			targetField.value = targetField.value.substring(0, maximumFieldLength)
		}
	}   
	
	sourceEvent.returnValue = inputAllowed;
	return (inputAllowed);
}

//
// Limit the text input in the specified field.
//
function LimitPaste(targetField, sourceEvent)
{
	var clipboardText;
	var resultantLength;
	var maximumFieldLength;
	var currentFieldLength;
	var pasteAllowed = true;
	var selectionLength = GetSelectionLength(targetField);

	if ( GetMaxLength(targetField) != null )
	{
	    // Get the current and maximum field length
	    currentFieldLength = parseInt(targetField.value.length);
		maximumFieldLength = parseInt(GetMaxLength(targetField));

		clipboardText = window.clipboardData.getData("Text");
		resultantLength = currentFieldLength + clipboardText.length - selectionLength;
		if ( resultantLength > maximumFieldLength)
		{
			pasteAllowed = false;
		}	
	}	
	
	sourceEvent.returnValue = pasteAllowed;
	return (pasteAllowed);
}

//
// Returns the number of selected characters in 
// the specified element
//
function GetSelectionLength(targetField)
{
	if ( targetField.selectionStart == undefined )
	{
		return document.selection.createRange().text.length;
	}
	else
	{
		return (targetField.selectionEnd - targetField.selectionStart);
	}
}
