function makeRequest(url,level,itemno) {

  var http_request = false;
  var agent;
    
  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera 8.0+, IE7 
    http_request = new XMLHttpRequest();     
    if (http_request.overrideMimeType) { 
      http_request.overrideMimeType('text/xml');
      //We override the Mime Type because Mozilla might get crabby if you don't
    }
  } else if (window.ActiveXObject) { // IE 5.0+                  
      try {
         http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
         http_request.overrideMimeType('text/xml'); }          
      catch (e) {
        try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
          http_request.overrideMimeType('text/xml'); } 
        catch (e) {}
      }
    }

    if (!http_request) {             
      window.location.href="/itemddetail.asp?T1="+itemno+"&ND=1";
    } else {
      http_request.onreadystatechange = function() { processResponse(http_request,level) };
      http_request.open('GET', url, true);
      http_request.send(null);
      return true;
    }   
}

function processResponse(http_request,level) { if (http_request.readyState == 4) { if (http_request.status == 200) { return dataReader(http_request,level); } else { return false; } }}

function getNodeValue(xml,node) { var value; value = xml.getElementsByTagName(node)[0].firstChild.nodeValue; return value; }

function ieCaller()
{
  var L1,L2;
  
  if (document.getElementById("L1")) { L1 = document.getElementById("L1").value; }
  if (document.getElementById("L2")) { L2 = document.getElementById("L2").value; }
  getLevel(glevel+1,L1,L2);  
}

function showAdd() { document.getElementById("addbtn").style.display = "inline"; }
function hideAdd() { document.getElementById("addbtn").style.display = "none"; } 

function showThrobber()
{
  var boxes,thr;
  boxes = document.getElementById("boxes");
  thr = document.createElement("img");
  thr.setAttribute("src","/images/snake_transparent.gif");
  thr.setAttribute("id","throbber");
  boxes.appendChild(thr);
}

function remThrobber()
{
  var boxes,img;
  
  boxes = document.getElementById("boxes");
  if (document.getElementById("throbber")) {
    thr = document.getElementById("throbber");
    boxes.removeChild(thr);
  }
}

function addOption(selbox,value,opttxt)
{
  var mysel, opt, temp;
  mysel = document.getElementById(selbox);
  opt = document.createElement("option");
  opt.setAttribute("value",value);
  temp = document.createTextNode(opttxt);        
  opt.appendChild(temp);
  mysel.appendChild(opt);      
}

function selMaint(level)
{
  var i,mynode,sel,boxes,ds,ld,tn,dd;
  
  //clearPrice();
  boxes = document.getElementById("boxes");  
  for (i=level;level<levels+1;i++)
  {
    if (document.getElementById("L"+i)) {
      mynode = document.getElementById("L"+i);
      boxes.removeChild(mynode);
      mynode = document.getElementById("L"+i+"d");
      boxes.removeChild(mynode);      
    } else {
      break;
    }    
  }
  sel = document.createElement("select");
  sel.setAttribute("id","L"+level);    
  //if (IE) { sel.className = "styledrop"; } else { sel.setAttribute("class","styledrop"); }
  if (level<levels) { 
    if (sel.attachEvent) { 
      	glevel = level; 
      	sel.attachEvent("onchange",ieCaller);       
    } else { 
    	sel.setAttribute("onchange","getLevel("+(level+1)+",document.getElementById('L1').value,this.value);");     
    } 
  }   
  if (level==levels) { 
    if (sel.attachEvent) { 
		sel.attachEvent("onchange",updatePrice);    
    } else { 
    	sel.setAttribute("onchange","updatePrice();"); 
    } 
  } 
  if (level==2) { ld = "Please select " + l2name.toLowerCase() + ":"; }
  if (level==3) { ld = "Please select " + l3name.toLowerCase() + ":"; }
  ds = document.createElement("div");
  ds.setAttribute("id","L"+level+"d");
  if (IE) { ds.className = "regprice"; } else { ds.setAttribute("class","regprice"); }
  tn = document.createTextNode(ld);
  //ds.appendChild(tn);
  boxes.appendChild(ds);
  boxes.appendChild(sel);
}

function clearPrice()
{
  var md, ms;
  md = document.getElementById("mypricing");
  if (document.getElementById("myprice")) { ms = document.getElementById("myprice"); md.removeChild(ms); }
}

function updatePrice()
{
  var ms,md,temp,pe,price;
  var parray;    
  /*
  Commented out - no pricing display on KS - price is displayed in dropdown.
  
  md = document.getElementById("mypricing");
  pe = document.getElementById("L"+levels).value;
  parray = pe.split("|");
  price = parray[1];
  clearPrice();
  ms = document.createElement("span");
  ms.setAttribute("id","myprice");
  if (IE) { ms.className = "itemPrice"; } else { ms.setAttribute("class","itemPrice"); }
  temp = document.createTextNode(price);
  ms.appendChild(temp);
  md.appendChild(ms); 
  */
  showAdd();
  updateForm();
}

function updateForm()
{
  var ms,myarray; 
  if (document.getElementById("ItemNo")) { 
  	
    if (document.getElementById("L"+levels)) { 
    	ms = document.getElementById("L"+levels).value; 
    	myarray = ms.split("|"); 
    	document.getElementById("ItemNo").value = myarray[0]; 
    }
  }
}


function dataReader(http_request,level)
{
  var txtcount,count,style,shown;
  var opt,opttxt,value,myid,sel,itemno,price,stock;
  
  var xml = null;
   
  myid = "L" + level;
  xml = http_request.responseXML; 
  txtcount = getNodeValue(xml,"count");
  count = parseInt(txtcount,10); 
  if (level>1&&level<=levels) { selMaint(level); }
  if (document.getElementById(myid)) {        
    if (level<levels) {
      addOption(myid,"","Please Select");                 
      for (i=1;i<count;i++) { 
        value = getNodeValue(xml,"item"+i);
        if (value!="") { 
            addOption(myid,value,value); 
        } else { 
            addOption(myid,"","Sorry no selections available."); 
            break; 
        }
      }             
      remThrobber();
    }
    else 
    {            
      if (level==levels) {
        addOption(myid,"","Please Select");
        for (i=1;i<count;i++) { 
            shown = true;
            itemno = getNodeValue(xml,"itemno"+i); 
            price = getNodeValue(xml,"price"+i); 
            stock = getNodeValue(xml,"stock"+i); 
            style = getNodeValue(xml,"sty"+i); 
            addOption(myid,itemno+"|"+price,style + " -- " + stock + " -- $" + price); 
        }
        if (!shown) { addOption(myid,"","Sorry no selections available."); }                               
      }      
      remThrobber();
    }       
  }
}

function getLevel(level,lvl1,lvl2)
{    
  hideAdd();  
  if (level>0) { showThrobber(); }    
  makeRequest("/includes/x_getlevel.asp?totlevels="+levels+"&level="+level+"&itemno="+itemno+"&srccode="+srccode+"&L1="+lvl1+"&L2="+lvl2,level,itemno);  
}


function validateForm()
{

	
	var i, error;

	error = 0;

	for(i=0;i<document.getElementsByTagName("select").length;i++)
	{
		if (document.getElementsByTagName("select")[i].value=="")
		{
			switch (Right(document.getElementsByTagName("select")[i].id,1))			
			{
				case "1":
					alert("Please select " + l1name.toLowerCase() + " before continuing.");
					error = 1;
					break;
				case "2":
					alert("Please select " + l2name.toLowerCase() + " before continuing.");								
					error = 1;
					break;
				case "3":
					alert("Please select " + l3name.toLowerCase() + " before continuing.");								
					error = 1;					
					break;					
			}
		}
	}
	
	if (document.getElementById("qty").value=="")
	{
		alert("Please enter a quantity.");
		error = 1;
	}
	else
	{	
		if (!isNumeric(document.getElementById("qty").value))
		{
			alert("Please enter a numeric quantity.");
			error = 1;
		}
	}
	
	if (error) { return false; } else { return true; }	
}

function isNumeric(val)
{
	if (val.match(/^[s0-9]+$/)) { return true; } else { return false; }	
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

