function strtrim() 
{
  return this.replace(/^\s+/,'').replace(/\s+$/,'');
}

String.prototype.trim=strtrim;

// function StripFormData(f)
// {
//   for (var i=0; i<f.elements.length; i++) {
//     /*Form types text, password, file and textarea.*/
//     if ((f.elements[i].type=="text") || (f.elements[i].type=="password") || (f.elements[i].type=="textarea")) {
//       var v=f.elements[i].value;
//       v=v.trim();
//       f.elements[i].value=v;
//     }
//   }
// }

function ClearStatus()
{
  var __statusObj__=GetObject("status");
  __statusObj__.innerHTML="";
  __statusObj__.style.color="#000000";
}

function DisplayWarning(message)
{
  var __statusObj__=GetObject("status");
  __statusObj__.innerHTML=message;
  __statusObj__.style.color="#ff0000";
  setTimeout("ClearStatus();",5000);
}

function DisplayStatus(message)
{
  var __statusObj__=GetObject("status");
  __statusObj__.innerHTML=message;
  __statusObj__.style.color="#0000ff";
  setTimeout("ClearStatus();",5000);
}

function DisplayTitle(currentTitle)
{
  var __statusObj__=GetObject("status");
  __statusObj__.innerHTML=currentTitle;
  __statusObj__.style.color="#000000";
}

function DisplayWarningNewsletter(message)
{
  var __statusObj__=GetObject("statusNewsletter");
  __statusObj__.innerHTML=message;
  __statusObj__.style.color="#ff0000";
  setTimeout("ClearStatus();",5000);
}

function DisplayStatusNewsletter(message)
{
  var __statusObj__=GetObject("statusNewsletter");
  __statusObj__.innerHTML=message;
  __statusObj__.style.color="#0000ff";
  setTimeout("ClearStatus();",5000);
}

/*
AJAX: Returns the XmlHttpObject
*/
function GetXmlHttpObject()
{
  var xmlHttp=null;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e) {
  // Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

function VerifyFeedback(regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var fnameObj=GetObject("feedbackName");
  var femailObj=GetObject("feedbackEmail");
  var fcqObj=GetObject("feedbackCQ");
  var fphoneObj=GetObject("feedbackPhone");
  var statusObj=GetObject("status");

  var fname=fnameObj.value.trim();
  var femail=femailObj.value.trim();
  var fcq=fcqObj.value.trim();
  var fphone=fphoneObj.value.trim();

  if (fname=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your name";
    return;
  }

  if ((femail=="") || (!femail.match(regex["__reEmailAddress__"]))) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email correctly";
    return;
  }

  if (fphone=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your phone number";
    return;
  }

  if (fcq=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your comment";
    return;
  }

  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Your enquiry is being processed....<br />";

  fname=encodeURI(fname);
  femail=encodeURI(femail);
  fcq=encodeURI(fcq);
  fphone=encodeURI(fphone);

  xmlHttp.open("POST","/php/contact_us_actions.php",true);
  xmlHttp.onreadystatechange=DisplayEnquiryResult;

  var params="feedback_name="+fname+"&feedback_email="+femail+"&feedback_comment="+fcq+"&feedback_phone="+fphone;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayEnquiryResult() {
  if (xmlHttp.readyState==4) {
    var enquiryMessage=xmlHttp.responseText;

    var statusObj=GetObject("status");
    var fnameObj=GetObject("feedbackName");
    var femailObj=GetObject("feedbackEmail");
    var fcqObj=GetObject("feedbackCQ");
    var fphoneObj=GetObject("feedbackPhone");

    if (enquiryMessage!="SENT") {
      statusObj.style.color="#ff0000";
      statusObj.innerHTML=enquiryMessage;
    } else {
      fnameObj.value="";
      femailObj.value="";
      fcqObj.value="";
      fphoneObj.value="";
      statusObj.style.color="#0000ff";
      statusObj.innerHTML="Your enquiry has been successfully sent to us, thank you.";
    }
  }
}

function ClearForm()
{
  var statusObj=GetObject("status");
  var fnameObj=GetObject("feedbackName");
  var femailObj=GetObject("feedbackEmail");
  var fcqObj=GetObject("feedbackCQ");
  var fphoneObj=GetObject("feedbackPhone");

  fnameObj.value="";
  femailObj.value="";
  fcqObj.value="";
  fphoneObj.value="";
}


function ClearTestimonialForm()
{
  var tnameObj=GetObject("testimonialName");
  var tObj=GetObject("testimonial");
  var statusObj=GetObject("statusTesti");
  tnameObj.value="";
  tObj.value="";
}


function VerifyTestimonial()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var tnameObj=GetObject("testimonialName");
  var tObj=GetObject("testimonial");
  var statusObj=GetObject("statusTesti");

  var tname=tnameObj.value.trim();
  var testi=tObj.value.trim();

  if (tname=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your name";
    return;
  }

  if (testi=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your testimonial";
    return;
  }

  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Your testimonial is being processed....<br />";

  tname=encodeURI(tname);
  testi=encodeURI(testi);

  xmlHttp.open("POST","/php/contact_us_actions.php",true);
  xmlHttp.onreadystatechange=DisplayTestimonialResult;

  var params="testimonial_name="+tname+"&testimonial="+testi;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayTestimonialResult() {
  if (xmlHttp.readyState==4) {
    var enquiryMessage=xmlHttp.responseText;

    var statusObj=GetObject("statusTesti");
    var tnameObj=GetObject("testimonialName");
    var tObj=GetObject("testimonial");

    if (enquiryMessage!="TESTI_SENT") {
      statusObj.style.color="#ff0000";
      statusObj.innerHTML=enquiryMessage;
    } else {
      tnameObj.value="";
      tObj.value="";
      statusObj.style.color="#0000ff";
      statusObj.innerHTML="Your testimonial has been successfully sent to us, thank you.";
    }
  }
}

function VerifyEmailNewsletter(inputObj,formObj,regex)
{
  //StripFormData(formObj);
  if (inputObj.value=="") {
    DisplayWarningNewsletter("Please enter your email address before submitting the form");
    return false;
  }
  if (!inputObj.value.match(regex["__reEmailAddress__"])) {
    DisplayWarningNewsletter("The format of the email address is invalid - It must include the @ symbol");
    return false;
  }
  DisplayStatusNewsletter("Your request is being processed. Please wait");
  formObj.submit();
}

function VerifyEmail(regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var loginEmailObj=GetObject("loginEmail");
  var statusObj=GetObject("status");

  var login_email=loginEmailObj.value.trim();

  if (login_email=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email";
    return;
  }

  if ((login_email=="") || (!login_email.match(regex["__reEmailAddress__"]))) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email correctly";
    return;
  }

  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Please wait for a moment...<br />";

  login_email=encodeURI(login_email);

  xmlHttp.open("POST","/php/forgot_password_actions.php",true);
  xmlHttp.onreadystatechange=DisplayForgotPasswordResult;

  var params="login_email="+login_email;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayForgotPasswordResult()
{
  if (xmlHttp.readyState==4) {
    var resultMessage=xmlHttp.responseText;

    var statusObj=GetObject("status");
    var loginEmailObj=GetObject("loginEmail");

    if (resultMessage!="FORGOT_PWD") {
      statusObj.style.color="#ff0000";
      statusObj.innerHTML=resultMessage;
    } else {
      loginEmailObj.value="";
      statusObj.style.color="#0000ff";
      statusObj.innerHTML="Your password has been successfully sent to your email.<br/>";
    }
  }
}

function VerifyTradeEmail(regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var loginEmailObj=GetObject("loginEmail");
  var statusObj=GetObject("status");

  var login_email=loginEmailObj.value.trim();

  if (login_email=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email";
    return;
  }

  if ((login_email=="") || (!login_email.match(regex["__reEmailAddress__"]))) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email correctly";
    return;
  }

  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Please wait for a moment...<br />";

  login_email=encodeURI(login_email);

  xmlHttp.open("POST","/php/forgot_trade_password_actions.php",true);
  xmlHttp.onreadystatechange=DisplayTradeForgotPasswordResult;

  var params="login_email="+login_email;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayTradeForgotPasswordResult()
{
  if (xmlHttp.readyState==4) {
    var resultMessage=xmlHttp.responseText;

    var statusObj=GetObject("status");
    var loginEmailObj=GetObject("loginEmail");

    if (resultMessage!="FORGOT_PWD") {
      statusObj.style.color="#ff0000";
      statusObj.innerHTML=resultMessage;
    } else {
      loginEmailObj.value="";
      statusObj.style.color="#0000ff";
      statusObj.innerHTML="Your password has been successfully sent to your email.<br/>";
    }
  }
}

function VerifyRegistration(regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var remailObj=GetObject("registerEmail");
  var rnameObj=GetObject("registerName");
  var rpwdObj=GetObject("registerPassword");
  var rvpwdObj=GetObject("registerVerifyPassword");
  var rphoneObj=GetObject("registerPhone");
  var statusObj=GetObject("statusRegister");

  var remail=remailObj.value.trim();
  var rname=rnameObj.value.trim();
  var rpasswd=rpwdObj.value.trim();
  var rverifypasswd=rvpwdObj.value.trim();
  var rphone=rphoneObj.value.trim();

  if (rname=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your name";
    return;
  }

  if ((remail=="") || (!remail.match(regex["__reEmailAddress__"]))) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email correctly";
    return;
  }

  if (rpasswd=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in a password";
    return;
  }

  if (rpasswd.length < 6) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Your password needs to be between 6-8 characters";
    return;
  }

  if (rverifypasswd=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please verify the password";
    return;
  }

  if (rpasswd!=rverifypasswd) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please verify the password correctly";
    return;
  }

  if (rphone=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your telephone number";
    return;
  }
 
  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Your registration is being processed....<br />";

  rname=encodeURI(rname);
  remail=encodeURI(remail);
  rpasswd=encodeURI(rpasswd);
  rphone=encodeURI(rphone);

  xmlHttp.open("POST","/php/client_register_actions.php",true);
  xmlHttp.onreadystatechange=DisplayRegistrationResult;

  var params="register_name="+rname+"&register_email="+remail+"&register_password="+rpasswd+"&register_vpassword="+rverifypasswd+"&register_telephone="+rphone;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayRegistrationResult()
{
  if (xmlHttp.readyState==4) {
    var submissionMessage=xmlHttp.responseText;

    var statusObj=GetObject("statusRegister");
    var remailObj=GetObject("registerEmail");
    var rnameObj=GetObject("registerName");
    var rpwdObj=GetObject("registerPassword");
    var rvpwdObj=GetObject("registerVerifyPassword");
    var rphoneObj=GetObject("registerPhone");

    if (submissionMessage!="SUCCESS") {
      statusObj.style.color="#ff0000";
      statusObj.innerHTML=submissionMessage;
    } else {
      rnameObj.value="";
      remailObj.value="";
      rpwdObj.value="";
      rvpwdObj.value="";
      rphoneObj.value="";
      statusObj.style.color="#0000ff";
//    statusObj.innerHTML="Your registration has been successful.<br/>Thank you.";
      window.location=__SECURE_URL__+"/checkout_secure.php";
    }
  }
}

function VerifyDetails(formObj,regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var rnameObj=GetObject("registerName");
  var remailObj=GetObject("registerEmail");
  var rphoneObj=GetObject("registerPhone");
  var statusObj=GetObject("statusRegister");

  var rname=rnameObj.value.trim();
  var rphone=rphoneObj.value.trim();
  var remail=remailObj.innerHTML.trim();

  if (rname=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your name";
    return;
  }

  if (rphone=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your telephone number";
    return;
  }
 
  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Your registration is being processed....<br />";

  rname=encodeURI(rname);
  rphone=encodeURI(rphone);

  xmlHttp.open("POST","/php/client_edit_actions.php",true);
  xmlHttp.onreadystatechange=DisplayProfileResult;

  var params="register_name="+rname+"&register_email="+remail+"&register_telephone="+rphone;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayProfileResult()
{
  if (xmlHttp.readyState==4) {
    var submissionMessage=xmlHttp.responseText;

    var statusObj=GetObject("statusRegister");
    var nameObj=GetObject("register_name");
    var telephoneObj=GetObject("register_telephone");

    if (submissionMessage!="") {
      statusObj.innerHTML=submissionMessage;
    } else {
      window.location=__BASE_URL__+"/register_succeed.php";
    }
  }
}

function VerifyPassword()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var remailObj=GetObject("registerEmail");
  var rpwdObj=GetObject("registerPassword");
  var rvpwdObj=GetObject("registerVerifyPassword");
  var statusObj=GetObject("statusPassword");

  var remail=remailObj.innerHTML.trim();
  var rpasswd=rpwdObj.value.trim();
  var rverifypasswd=rvpwdObj.value.trim();

  if (rpasswd=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in a password";
    return;
  }

  if (rpasswd.length < 3) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Your password needs to be between 1-3 characters";
    return;
  }

  if (rverifypasswd=="") {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please verify the password";
    return;
  }

  if (rpasswd!=rverifypasswd) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please verify the password correctly";
    return;
  }

  statusObj.style.color="#0000ff";
  statusObj.innerHTML="Please wait for a moment...<br />";

  rpasswd=encodeURI(rpasswd);

  xmlHttp.open("POST","/php/client_edit_actions.php",true);
  xmlHttp.onreadystatechange=DisplayPasswordResult;

  var params="register_email="+remail+"&register_password="+rpasswd+"&register_vpassword="+rverifypasswd;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function DisplayPasswordResult()
{
  if (xmlHttp.readyState==4) {
    var submissionMessage=xmlHttp.responseText;

    var statusObj=GetObject("statusPassword");

    if (submissionMessage!="PASSWORD_CHANGED") {
      statusObj.innerHTML=submissionMessage;
    } else {
      var rpwdObj=GetObject("registerPassword");
      var rvpwdObj=GetObject("registerVerifyPassword");

      rpwdObj.value="";
      rvpwdObj.value="";
      statusObj.innerHTML="Your password has been successfully changed."
    }
  }
}

function VerifyLogin(regex)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var unObj=GetObject("username");
  var pwObj=GetObject("password");
  var statusObj=GetObject("status");

  var username=unObj.value.trim();
  var password=pwObj.value.trim();

  if ((username=="") || (password=="")) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please make sure you fill in all the details required";
    return;
  }

  if (!username.match(regex["__reEmailAddress__"])) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please fill in your email correctly";
    return;
  }

  username=encodeURI(username);
  password=encodeURI(password);

  xmlHttp.open("POST","/php/client_login_actions.php",true);
  xmlHttp.onreadystatechange=LoginProgress;

  var params="login_username="+username+"&login_password="+password;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);

}

function LoginProgress()
{
  if (xmlHttp.readyState==4) {
    var loginResult=xmlHttp.responseText;

    if (loginResult!="") {
      var statusObj=GetObject("status");
      statusObj.innerHTML=loginResult;
    } else {
      window.location=__BASE_URL__+"/checkout.php";
    }
  }
}

function VerifyTradeLogin()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("You're browser does not support AJAX");
    return;
  }

  var unObj=GetObject("trade_username");
  var pwObj=GetObject("trade_password");
  var statusObj=GetObject("status");

  var username=unObj.value.trim();
  var password=pwObj.value.trim();

  if ((username=="") || (password=="")) {
    statusObj.style.color="#ff0000";
    statusObj.innerHTML="Please make sure you fill in all the details required";
    return;
  }

  username=encodeURI(username);
  password=encodeURI(password);

  xmlHttp.open("POST","/php/trade_login_actions.php",true);
  xmlHttp.onreadystatechange=TradeLoginProgress;

  var params="trade_username="+username+"&trade_password="+password;
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(params);
}

function TradeLoginProgress()
{
  if (xmlHttp.readyState==4) {
    var loginResult=xmlHttp.responseText;

    if (loginResult!="") {
      var statusObj=GetObject("status");
      statusObj.innerHTML=loginResult;
    } else {
      window.location=__BASE_URL__+"/trade_display.php";
    }
  }
}

function ShowShop(tkey,rotation)
{
  window.open("php/centers_info.php?tkey="+tkey+"&rotation="+rotation,"centre","dependent=yes,resizable=yes,directories=no,height=400,width=800,location=no,menubar=no");
}

function ShowBrand(formObj)
{
  if (formObj.showSupplier.selectedIndex=="") {
    return false;
  }
  var selectObj=formObj.showSupplier;
  var selectedSupplierTkey=selectObj.options[selectObj.selectedIndex].value;

  formObj.action="brands_display.php?tkey="+selectedSupplierTkey;
  return true;
}

function SpecialToCart(tkey,price,derivativeParent)
{
  if (__addedToCart__=="") {
    __addedToCart__=tkey+"~1~"+derivativeParent;
    CreateCookie(__PROGRAM_PREFIX__+"PurchaseCart",__addedToCart__,"");
  } else {
    var addedToCart=__addedToCart__.split(",");
    var found=false;
    for (var i=0; i<addedToCart.length; i++) {      
      addedToCartTmp=addedToCart[i].split("~");

      if ((addedToCartTmp[0]==tkey) && (addedToCartTmp[2]==derivativeParent)) {
        found=true;
        DisplayWarning("Special already in shopping cart");
        return;
      }
    }
    __addedToCart__+=","+tkey+"~1~"+derivativeParent;
    CreateCookie(__PROGRAM_PREFIX__+"PurchaseCart",__addedToCart__,"");
  }
  __totalPrice__=parseFloat(__totalPrice__)+parseFloat(price);
  __totalPrice__=__totalPrice__.toFixed(2);
  var totalPriceObj=GetObject(__PROGRAM_PREFIX__+"TotalPrice");
  totalPriceObj.innerHTML="Checkout (&#8364;"+__totalPrice__+"&nbsp;RRP incl. VAT)";
}


function AddToCart(indexKey,tkey,derivativeTkey)
{
  var itemAmount=0;

  if (derivativeTkey=="-1") {
    DisplayWarning("The current selections are not available with the selected product");
    return;
  }
  if (__addedToCart__=="") {
    if (itemAmount==0) {
      itemAmount=1;
    }

    if (derivativeTkey==0) {
      __addedToCart__=tkey+"~"+itemAmount+"~0";
    } else {
      __addedToCart__=derivativeTkey+"~"+itemAmount+"~"+tkey;
    }
  } else {
    var addedToCart=__addedToCart__.split(",");
    var newCartDetail="";
    var found=false;

    for (var i=0; i<addedToCart.length; i++) {
      if ((newCartDetail!="") && (newCartDetail.charAt(newCartDetail.length-1)!=",")) {
        newCartDetail+=",";
      }
      addedToCartTmp=addedToCart[i].split("~");
      if (derivativeTkey==0) {
        if (addedToCartTmp[0]==tkey) {
          found=true;
          if (addedToCartTmp[1]!=0) {
            itemAmount=addedToCartTmp[1];
            itemAmount++;
            newCartDetail+=tkey+"~"+itemAmount+"~"+addedToCartTmp[2];
          }
        } else {
          newCartDetail+=addedToCartTmp[0]+"~"+addedToCartTmp[1]+"~"+addedToCartTmp[2];
        }
      } else {
        if (addedToCartTmp[0]==derivativeTkey) {
          found=true;
          if (itemAmount!=0) {
            itemAmount=addedToCartTmp[1];
            itemAmount++;
            newCartDetail+=derivativeTkey+"~"+itemAmount+"~"+tkey;
          }
        } else {
          newCartDetail+=addedToCartTmp[0]+"~"+addedToCartTmp[1]+"~"+addedToCartTmp[2];
        }
      }
    }

    if (!found) {
      if (itemAmount==0) {
        itemAmount=1;
      }
      if (derivativeTkey==0) {
        newCartDetail+=","+tkey+"~"+itemAmount+"~"+derivativeTkey;
      } else {
        newCartDetail+=","+derivativeTkey+"~"+itemAmount+"~"+tkey;
      }
    }
    __addedToCart__=newCartDetail;
  }

  if (__addedToCart__.charAt(__addedToCart__.length-1)==",") {
    __addedToCart__=__addedToCart__.substring(0,__addedToCart__.length-1);
  }
  CreateCookie(__PROGRAM_PREFIX__+"PurchaseCart",__addedToCart__,"");
  window.location="shopping_cart.php";
}

function replaceAll(str,replacements) 
{
  for (var i=0;i<replacements.length;i++ ) {
    var idx=str.indexOf(replacements[i][0]);
    while(idx>-1) {
      str=str.replace(replacements[i][0],replacements[i][1]);
      idx=str.indexOf(replacements[i][0]);
    }
  }
  return str;
}

function SearchThisWeb(formObj)
{
  //StripFormData(formObj);  

  var inputObj=formObj.searchWebKeys;
  var searchWebKeysEntered=inputObj.value;

  if (searchWebKeysEntered=="") {
    return false;
  }
  CreateCookie(__PROGRAM_PREFIX__+"SearchKey",searchWebKeysEntered,"");
  formObj.action=__BASE_URL__+"/search_display.php";
  return true;
}

function Checkout()
{
  if (__addedToCart__.length=="") {
    DisplayWarning("There are no items in your shopping cart");
    return;
  }

  if ((!ReadCookie(__PROGRAM_PREFIX__+"UserTicketId")) ||
      (!ReadCookie(__PROGRAM_PREFIX__+"UserSessionId")) ||
      (!ReadCookie(__PROGRAM_PREFIX__+"Username")) ||
      (!ReadCookie(__PROGRAM_PREFIX__+"UserTable")))
  {
    DisplayWarning("Please log in first before checking out!");
    return;
  }
  
  window.location.href=__BASE_URL__+"/checkout.php";
}

function ProceedWithCheckout()
{
  window.location.href=__SECURE_URL__+"/checkout_secure.php";
}

function ShowDerivatives(tkey, from, parentTkey)
{
  CreateCookie(__PROGRAM_PREFIX__+"Derivatives"+tkey+"Caller",from+"~"+parentTkey,"");
  window.location.href=__BASE_URL__+"/derivatives_display.php?tkey="+tkey;
}

function ProceedWithTradeCheckout()
{
  window.location.href=__SECURE_URL__+"/checkout_trade_secure.php";
}

function OpenNew(url)
{
  window.open(url);
}


function FindPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curleft+=obj.offsetLeft
      obj=obj.offsetParent;
    }
  }	else if (obj.x) {
    curleft+=obj.x;
  }
  return curleft;
}

function FindPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curtop+=obj.offsetTop
      obj = obj.offsetParent;
    }
  } else if (obj.y) {
    curtop += obj.y;
  }
  return curtop;
}

var current_sub=0;
var current_subsub=0;
  
function ShowSubmenu(main_obj,submenu_id)
{
  if (current_sub != 0) {
    current_sub.style.visibility="hidden";
  }
  var submenu_obj=document.getElementById(submenu_id);  
  var main_obj=document.getElementById(main_obj);
  if (!submenu_obj) {
    current_sub = 0;
    return;
  }
  submenu_obj.style.left=(FindPosX(main_obj)+174)+'px'; 
  submenu_obj.style.top=(FindPosY(main_obj)+0)+'px'; 

  submenu_obj.style.visibility="visible";
  current_sub = submenu_obj;
}

function SetHeight()
{
  var myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myHeight = window.innerHeight;
  } else if( document.documentElement &&
      ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && (document.body.clientWidth ||document.body.clientHeight ) ) {
    //IE 4 compatible
    myHeight = document.body.clientHeight;
  }
  content_obj = document.getElementById('content');
  if (myHeight < 660) {
    content_obj.style.height = 380;
  } else {
    content_obj.style.height = myHeight-380;
  }
}


function startclock()
{
  var time=new Date();

  var hours=time.getHours();
  var mins=time.getMinutes();
  var sec=time.getSeconds();
  var day=time.getDay();
  var mday=time.getDate();
  var month=time.getMonth();
  var year=time.getYear();

  if (hours<10) {
    hours="0"+hours;
  }

  if (sec<10) {
    sec="0"+sec;
  }

  if (mins<10) {
   mins="0"+mins;
  }



  if (day==0) {
    nday="Sunday";
  }

  if (day==1) {
    nday="Monday";
  }

  if (day==2) {
    nday="Tuesday";
  }

  if (day==3) {
    nday="Wednesday";
  }

  if (day==4) {
    nday="Thursday";
  }

  if (day==5) {
    nday="Friday";
  }

  if (day==6) {
    nday="Saturday";
  }

  if (month==0) {
    month="January";
  }

  if (month==1) {
    month="February";
  }

  if (month==2) {
    month="March";
  }

  if (month==3) {
    month="April";
  }

  if (month==4) {
    month="May";
  }

  if (month==5) {
    month="June";
  }

  if (month==6) {
    month="July";
  }

  if (month==7) {
    month="August";
  }

  if (month==8) {
    month="September";
  }

  if (month==9) {
    month="October";
  }

  if (month==10) {
    month="November";
  }

  if (month==11) {
    month="December";
  }

  if (year<=99) {
    year= "19"+year;
  }

  if ((year>99) && (year<2000)) {
    year+=1900;
  }

  clock=nday+", "+mday+" "+month+" "+year+", "+hours+":"+mins+":"+sec+" "+"GMT";
  document.getElementById("clockId").innerHTML=clock;
  setTimeout('startclock()',1000);
}

function GetSortOrderPosition(column)
{
  i=0;
  while (i*2<__SO__.length) {
    if (__SO__.charAt(i*2)==column) {
      return i;
    }
    i++;
  }
  return column;
}

function CalculateSortOrder(column)
{
  /*Column goes to the front and its search direction changes*/
  var newSortOrder=column;
  var sortOrderPosition=GetSortOrderPosition(column);  
  if (__SO__.charAt(sortOrderPosition*2+1)=="0") {
    newSortOrder+="1";
  } else {
    newSortOrder+="0";
  }
  for (i=0; i<__LIST_COLUMNS__; i++) {
    sortColumn=__SO__.charAt(i*2);
    if (sortColumn==column) {
      continue;
    }
    sortDirection=__SO__.charAt(i*2+1);
    newSortOrder+=sortColumn+sortDirection;
  }
  return newSortOrder;
}

function ChangeSort(column)
{
  /*Update the active sort order cookie*/
  CreateCookie(__PROGRAM_PREFIX__+"Centers"+__CATEGORY_TKEY__+"SortOrder",CalculateSortOrder(column),"");
  window.location.reload();
}

function PaintSearchHit(searchHit) 
{
  paintedSearchHit=searchHit;
  for (k=0; k<__SEARCH_KEYS__.length;k++) {
    ready=false;
    part=searchHit;
    key=__SEARCH_KEYS__[k];
    pos=part.toUpperCase().indexOf(key.toUpperCase());
    if (pos!=-1) {
      part=part.substr(pos);
    }
    if (pos!=-1) {
      hit=part.substr(0,key.length);
      a=new Array;
      a=paintedSearchHit.split(hit);
      paintedSearchHit=a.join("<font color=\""+__SEARCH_HIT_COLOR__+"\"><b>"+hit+"</b></font>");
      part=part.substr(hit.length);
    } else {
      ready=true;
    }
  }
  return paintedSearchHit;
}

function ShowPage(page) 
{
  /*Adjust page to reflect internal numbering*/
  page--;
  /*If the requested page is the same as the current page, return.*/
  if (page==__CP__) {
    return;
  }
  /*Calculate the starting row, last row and end row numbers*/
  var startingRow=page*__ROWS_PER_PAGE__;
  var endRow=startingRow+__ROWS_PER_PAGE__-1;
  /*Calculate the array offset, as the array always starts with index 0.*/
  arrayOffset=startingRow-__FR__;
  if (arrayOffset<0) {
    arrayOffset=0;
  }
  /*At this point, the rows in memory are correct. Display the actual page*/
  for (i=0; i<__ROWS_PER_PAGE__; i++) {
    /*Display the list columns*/ 
    for (j=0; j<__LIST_COLUMNS__; j++) {
      colObj=GetObject("entry_"+i+"_"+j);
      iconObj=GetObject("icon_"+i);
      if (i%2==0) {
        bgClass="1";
      } else {
        bgClass="2";
      }
      if (__DB_ENTRIES__[arrayOffset+i]) {
        if (__SEARCH_VIEW__) {
          colObj.innerHTML=PaintSearchHit(__DB_ENTRIES__[arrayOffset+i][__LIST_DB_COLUMN__[j]]);
        } else {
          colObj.innerHTML=__DB_ENTRIES__[arrayOffset+i][__LIST_DB_COLUMN__[j]];
        }
        iconObj.innerHTML="<a href=\"javascript:ShowShop("+__DB_ENTRIES__[arrayOffset+i][__F_TKEY__]+","+bgClass+");\"><image src=\"images/info.gif\" border=\"0\"></a>";
      } else {
        colObj.innerHTML="&nbsp;";
        iconObj.innerHTML="<image class=\"list_info_empty\" src=\"images/info.gif\">";
      }
    }
  }
  
  /*Calculate the starting page number*/
  if ((page+(__PAGE_NUMBERS_IN_HEADER__>>1))>=__TOTAL_PAGES__) {
    startingPageNumber=__TOTAL_PAGES__-__PAGE_NUMBERS_IN_HEADER__;
  } else {
    startingPageNumber=page-(__PAGE_NUMBERS_IN_HEADER__>>1);
  }
   
  if (startingPageNumber<0) {
    startingPageNumber=0;
  }
    
  /*Display the actual page numbers*/
  for (i=0; i<__PAGE_NUMBERS_IN_HEADER__; i++) {
    pageObj=GetObject("page_"+i);
     
    /*If there are no more page numbers, print a blank*/
    if (((startingPageNumber+i)*__ROWS_PER_PAGE__)>=__TOTAL_DB_ENTRIES__) {
      pageObj.innerHTML="&nbsp;";
      continue;
    } 
      
    /*Print the page number. Distinguish between the active and non-active pages*/
    if (page==(startingPageNumber+i)) {
      pageObj.innerHTML="<a class=\"list_header_current_page_number\" href=\"javascript:ShowPage("+(startingPageNumber+i+1)+");\">"+(startingPageNumber+i+1)+"</a>";
    } else {
      pageObj.innerHTML="<a class=\"list_header_page_number\" href=\"javascript:ShowPage("+(startingPageNumber+i+1)+");\">"+(startingPageNumber+i+1)+"</a>";
    } 
  }
    
  /*Update the current page input box*/
  inputObj=GetObject("currentPage");
  inputObj.value=(page+1);

  /*Update the global current page variable, including the corresponding cookie*/
  CreateCookie(__PROGRAM_PREFIX__+"Centers"+__CATEGORY_TKEY__+"CurrentPage",page,"");
  __CP__=page;
  InitializeSlider();
}

function GotoPage(formObj,categoryName)
{
  page=formObj.currentPage.value;
  
  if (isNaN(page)) {
    DisplayWarning("Input is not a number");
    setTimeout("DisplayTitle(\""+categoryName+"\");",5001);
    return false;
  }
  
  if ((page<1) || (page>__TOTAL_PAGES__)) {
    DisplayWarning("Input is outside of borders");
    setTimeout("DisplayTitle(\""+categoryName+"\");",5001);
    return false;
  }
    
  DisplayTitle(categoryName);
  ShowPage(page);
  
  return false;
}

function ShiftPage(offset)
{
  page=__CP__+offset+1;
    
  if (page<1) {
    page=1;
  }
  
  if (page>__TOTAL_PAGES__) {
    page=__TOTAL_PAGES__;
  }

  ShowPage(page);
}

function EscapeString(s)
{
  s=escape(s);
  var a=new Array();
  a=s.split('+');
  if (a.length>1) {
    s=a.join("%2B");
  }
  
  return(s);
}

function SearchList(formObj,cookieName)
{
  searchKey=EscapeString(formObj.searchKey.value);
  if (searchKey=="") {
    return false;
  }
  CreateCookie(cookieName,searchKey,"");
  return true;
}

function ExecuteAction(tkey,action,section)
{
  /*Set the corresponding cookies*/
  SetCookie("nexgen_active_list_action",__RELATED_FUNCTIONS__[action],null,"/",null,null);
  SetCookie("nexgen_active_section",section,null,"/",null,null);
  SetCookie("nexgen_active_tkey",tkey,null,"/",null,null);
  document.location=__INDEX_FILE__;
  return;
}

/*Clear select box*/
function ClearSelectBox(selectObj) {
  while (selectObj.firstChild) {
    selectObj.removeChild(selectObj.firstChild);
  }
}

/*Returns the object with id objId*/
function GetObject(objId)
{
  if (document.getElementById) {
    return document.getElementById(objId);
  }
  alert("document.getElementById not supported");
  return 0;
}

/*Attempts to set a cookie according to the passed on parameters.*/
function CreateCookie(name,value,days)
{
 if (days) {
    var date=new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  } else {
    var expires = "";
  }
  document.cookie = name+"="+escape(value)+expires+"; path=/";
}

/*Returns the value of cookie "name" or "null" if the cookie does not exist or cannot be obtained*/
function ReadCookie(name)
{
  var nameEQ=name+"=";
  var ca=document.cookie.split(';');
  for (var i=0;i < ca.length;i++)
  {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
  }
  return null;
}

function EraseCookie(name)
{
  CreateCookie(name,"",-365);
}

/*Returns true if cookies are enabled*/
function CookiesEnabled()
{
  var randomSuffix=Math.floor(Math.random()*1000000);
  var randomValue=Math.floor(Math.random()*1000000);
  CreateCookie("test"+randomSuffix,randomValue,0);
  if (ReadCookie("test"+randomSuffix)!=randomValue) {
    return false;
  }
  EraseCookie("test"+randomSuffix);
  return true;
}
