// JavaScript Document
aJax = false;
iCurrentRow = 0;
iLastAmount = 20;
iBulkRows=20;

function updateBasket(iQty) {
		var bskt = document.getElementById("basketatag");
		basketitems = iQty;
		bskt.innerHTML = "(" + basketitems + ")";
}

function popup(img) {
	result = window.open("/viewimage.asp?img=" + img, "prodimg", "height=350,width=350,scrollbars,resizable");
	var cr = String.fromCharCode(13);
	if (result == null) alert("You browser is currently blocking Popups." + cr + cr + "Please change your settings to allow popups on this site." + cr + "Alternatively just click on 'more details' to view the images.");
}

function sImgR() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function loadImg() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=loadImg.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function swapImg() { //v3.0
  var i,j=0,x,a=swapImg.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function writeIn(pre, dom1, ext) {
	var lt = String.fromCharCode(60);
	var gt = String.fromCharCode(62);
	var at = String.fromCharCode(64);
	var qt = String.fromCharCode(34);
	var eq = String.fromCharCode(61);
	
	var act1 = String.fromCharCode(109) + "a";
	var act2 = "i" + String.fromCharCode(108);
	var act3 = "to";
	var act4 = String.fromCharCode(58);
	
	var lnk1 = lt + String.fromCharCode(97) + " " + String.fromCharCode(104) + String.fromCharCode(114) + String.fromCharCode(101) + String.fromCharCode(102) + eq + qt + act1 + act2 + act3 + act4;
	var lnk2 = lt + String.fromCharCode(47) + String.fromCharCode(97) + gt;
	
	var ad = lnk1 + pre + at + dom1 + ext + qt + gt + pre + at + dom1 + ext + lnk2;
	var ol = document.getElementById("kont");
	ol.innerHTML = ad;
}

/*==============================================================================

    Routines written by John Gardner - 2003 - 2005

    See www.braemoor.co.uk/software for information about more freeware
    available.

/*==============================================================================

Routine to write a session cookie

    Parameters:
        cookieName        Cookie name
        cookieValue       Cookie Value
    
    Return value:
        true              Session cookie written successfullly
        false             Failed - persistent cookies are not enabled

   e.g. if (writeSessionCookie("pans","drizzle") then
           alert ("Session cookie written");
        else
           alert ("Sorry - Session cookies not enabled");
*/

function writeSessionCookie (cookieName, cookieValue) {
  if (testSessionCookie()) {
    document.cookie = escape(cookieName) + "=" + escape(cookieValue) + "; path=/";
    return true;
  }
  else return false;
}

/*==============================================================================

Routine to get the current value of a cookie

    Parameters:
        cookieName        Cookie name
    
    Return value:
        false             Failed - no such cookie
        value             Value of the retrieved cookie

   e.g. if (!getCookieValue("pans") then  {
           cookieValue = getCoookieValue ("pans2);
        }
*/

function getCookieValue (cookieName) {
  var exp = new RegExp (escape(cookieName) + "=([^;]+)");
  if (exp.test (document.cookie + ";")) {
    exp.exec (document.cookie + ";");
    return unescape(RegExp.$1);
  }
  else return false;
}

/*==============================================================================

Routine to see if session cookies are enabled

    Parameters:
        None
    
    Return value:
        true              Session cookies are enabled
        false             Session cookies are not enabled

   e.g. if (testSessionCookie())
           alert ("Session coookies are enabled");
        else
           alert ("Session coookies are not enabled");
*/

function testSessionCookie () {
  document.cookie ="testSessionCookie=Enabled";
  if (getCookieValue ("testSessionCookie")=="Enabled")
    return true 
  else
    return false;
}

/*==============================================================================

Routine to see of persistent cookies are allowed:

    Parameters:
        None
    
    Return value:
        true              Session cookies are enabled
        false             Session cookies are not enabled

   e.g. if (testPersistentCookie()) then
           alert ("Persistent coookies are enabled");
        else
           alert ("Persistent coookies are not enabled");
*/

function testPersistentCookie () {
  writePersistentCookie ("testPersistentCookie", "Enabled", "minutes", 1);
  if (getCookieValue ("testPersistentCookie")=="Enabled")
    return true  
  else 
    return false;
}

/*==============================================================================

Routine to write a persistent cookie

    Parameters:
        CookieName        Cookie name
        CookieValue       Cookie Value
        periodType        "years","months","days","hours", "minutes"
        offset            Number of units specified in periodType
    
    Return value:
        true              Persistent cookie written successfullly
        false             Failed - persistent cookies are not enabled
    
    e.g. writePersistentCookie ("Session", id, "years", 1);
*/       

function writePersistentCookie (CookieName, CookieValue, periodType, offset) {

  var expireDate = new Date ();
  offset = offset / 1;
  
  var myPeriodType = periodType;
  switch (myPeriodType.toLowerCase()) {
    case "years":
      expireDate.setYear(expireDate.getFullYear()+offset);
      break;
    case "months":
      expireDate.setMonth(expireDate.getMonth()+offset);
      break;
    case "days":
      expireDate.setDate(expireDate.getDate()+offset);
      break;
    case "hours":
      expireDate.setHours(expireDate.getHours()+offset);
      break;
    case "minutes":
      expireDate.setMinutes(expireDate.getMinutes()+offset);
      break;
    default:
      alert ("Invalid periodType parameter for writePersistentCookie()");
      break;
  } 
  
  document.cookie = escape(CookieName ) + "=" + escape(CookieValue) + "; expires=" + expireDate.toGMTString() + "; path=/";
}  

/*==============================================================================

Routine to delete a persistent cookie

    Parameters:
        CookieName        Cookie name
    
    Return value:
        true              Persistent cookie marked for deletion
    
    e.g. deleteCookie ("Session");
*/    

function deleteCookie (cookieName) {

  if (getCookieValue (cookieName)) writePersistentCookie (cookieName,"Pending delete","years", -1);  
  return true;     
}

function IsNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function showAdsense() {
	var cl = document.getElementById("adsensediv").className;
	if (cl=="adsense") cl="showadsense"; else cl="adsense";
	document.getElementById("adsensediv").className=cl;
}

function checkCaps(oObj) {
	var val = new String(oObj.value), char, iasc;
	var sentence = new String(""), upperNext = true;
	var i, count=0, len=val.length, perc=0.5;
	
	for (i=0;i<len;i++) {
		char = val.charAt(i);
		iasc = val.charCodeAt(i);
		if (char==char.toUpperCase()) count++;
		if (char=="!" || char=="?" || char=="." || iasc==10 || iasc==13) upperNext=true;
		if ((iasc >= 65 && iasc <= 90) || (iasc >= 97 && iasc <= 122) || (iasc >= 48 && iasc <= 57)) {
			if (upperNext) {
				char= char.toUpperCase();
				upperNext = false;
			}
			else {
				char = char.toLowerCase();
			}
		}
		sentence = sentence + char;
	}
	
	if ((count/len) > perc) {
		// number of caps exceeds limit
		oObj.value = sentence;
		alert("Unfortunately you can't use excessive CAPITAL LETTERS in your advert" + String.fromCharCode(10) + "We have converted this for you so please check this before proceeding.");
		oObj.focus();
		return false;
	}
	else {
		return true;
	}
}
function getAjaxConnection() {
	try {
		aJax = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			aJax = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				aJax = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				aJax = false;
			}  
		}
	}
	if (!aJax) alert("Error initializing AJAX");
}
function findProductCode(iRowNumber,partcode){
	getAjaxConnection();
	var productcode = partcode.value
	if (productcode.length <= 1 || !aJax){
		if(productcode.length==0) {
			document.getElementById("desc-"+iRowNumber).value="";
			document.getElementById("qty-"+iRowNumber).value="";
		}
	}else{
		iCurrentRow = iRowNumber;
		aJax.open("GET","/Trade/getProductCodes.asp?row="+iRowNumber+"&code="+productcode+"&checkstock=false",true);
		aJax.onreadystatechange=function(){
			if (aJax.readyState==4 && aJax.status==200){
				document.getElementById("code-hint-"+iRowNumber).style.display="block";
				document.getElementById("scroll-list-"+iRowNumber).innerHTML=aJax.responseText;
			}
		}
		aJax.send();
	}
} 

function listProducts(iRowNumber){
	getAjaxConnection();
	if (!aJax){
		if(productcode.length==0) {
			document.getElementById("desc-"+iRowNumber).value="";
			document.getElementById("qty-"+iRowNumber).value="";
		}
		return false;
	}else{
		iCurrentRow = iRowNumber;
		aJax.open("GET","/Trade/getProductCodes.asp?row="+iRowNumber+"&code=&checkstock=false",true);
		aJax.onreadystatechange=function(){
			if (aJax.readyState==4 && aJax.status==200){
				document.getElementById("code-hint-"+iRowNumber).style.display="block";
				document.getElementById("scroll-list-"+iRowNumber).innerHTML=aJax.responseText;
			}
		}
		aJax.send();
	}
} 

function checkStock(iRow,QtyBox){
	getAjaxConnection();
	var iQty = QtyBox.value
	var productcode = document.getElementById("pc-"+iRow);
	var alertBox = document.getElementById("alert-box-"+iRow)
	
	if (!aJax || iQty < 0 || productcode.value == ""){
		if (productcode.value ==""){
			productcode.focus();
		} else if(productcode.value != "" && iQty < 0) {
			QtyBox.focus();
		}
		return false;
	}else{
		aJax.open("GET","/Trade/getProductCodes.asp?qty="+iQty+"&code="+productcode.value+"&checkstock=true&row=-1",true);
		aJax.onreadystatechange=function(){
			if (aJax.readyState==4 && aJax.status==200){
				if (Number(aJax.responseText) > Number(iQty) || Number(aJax.responseText) == -1){
					alertBox.innerHTML="";
					alertBox.style.display ="none";
					QtyBox.style.border = "1px solid #CCC";
				} else if(aJax.responseText=="0") {
					alertBox.innerHTML="<span style='color:red;font-weight:700'>This product is out of stock!</span>";
					QtyBox.value = 0;
					alertBox.style.display ="block";
					QtyBox.style.border = "1px solid red";
					QtyBox.style.background = "#F08080";
					QtyBox.style.color = "#fff";
//					productcode.focus();
				} else if(iQty > Number(aJax.responseText) ) {
					alertBox.innerHTML="<span style='color:orange;font-weight:700'>This product is low on stock! ("+aJax.responseText+" Remaining)</span>";
					alertBox.style.display ="block";
					QtyBox.value = Number(aJax.responseText);
					QtyBox.style.border = "1px solid #FFA500";
					QtyBox.style.background = "#FAFAD2";
				}
			}
		}
		aJax.send();
	}
}
function hideCodeHints(iRowNumber,lIngoreCurrent){
	if(lIngoreCurrent==undefined) lIngoreCurrent=true
	if (iRowNumber != iCurrentRow || lIngoreCurrent) {
		document.getElementById("code-hint-"+iRowNumber).style.display="none";
		document.getElementById("alert-box-"+iRowNumber).style.display="none";
	}
}

function selectOption(soCode, iRow){
	if (soCode.length>0) {
		document.getElementById("pc-"+iRow).value=soCode;
		if (!aJax){
			alert("AJAX not supported, Upgrade your browser!");
		} else {
			aJax.open("GET","/Trade/getProductCodes.asp?code="+soCode+"&row=-1&checkstock=false",true);
			aJax.onreadystatechange=function(){
				if (aJax.readyState==4 && aJax.status==200){
					document.getElementById("desc-"+iRow).value=aJax.responseText;
					document.getElementById("code-hint-"+iRow).style.display="none";
					var QtyBox = document.getElementById("qty-"+iRow)
					QtyBox.style.background = "#FFFFFF";
				//	QtyBox.focus();
				}
			}
			aJax.send();
		}
	}
}

function getMoreRows(iLastAmount){
	var currentList = document.getElementById("scrollable-rows")
	for(i=0;i<=4;i++){
		iLastAmount++
		rows = "<div class='row' style='" + 10000-iBulkRows++ + "'>" +
					"<input class='product-code' type='text' name='productcode' id='pc-"+iLastAmount+"' onkeyup='findProductCode("+iLastAmount+",this)' onclick='findProductCode("+iLastAmount+",this)' onfocus='hideCodeHints(iCurrentRow)' autocomplete='off'>"+
					"<input class='product-desc' type='text' name='description' id='desc-"+iLastAmount+"' readonly>" +
					"<input class='product-qty' type='text' name='quantity' id='qty-"+iLastAmount+"'>" +
					"<div class='hints' id='code-hint-"+iLastAmount+"'><a href='javascript:hideCodeHints(iCurrentRow,true)' class='close'>&nbsp;</a><div id='scroll-list-"+iLastAmount+"'></div></div>" +
				"</div>"
		var divTag = document.createElement("div");
		divTag.setAttribute("class","row");
		divTag.innerHTML = rows;
		document.getElementById("scrollable-rows").appendChild(divTag);
	}
	var iNextRow = iLastAmount-4;
	document.getElementById("pc-"+iNextRow).focus();
}
