this.pageName='default.asp';
var start=0;
var limit=100;
var accountid;
var firstname;
var lastname;
var token;
var cartcount=0;
var carttotal=0;
var lastmsg = '';
var iBusy=0;
var Session;

window.onload=initPage;

function initPage() {
	
	loadPageDefaults(this.pageName);
	showLogin('divLogin');

	initObject('wo_xmldom');
	initObject('wo_item');
	initObject('wo_cart');
	initObject('wo_user');
	initObject('wo_account');
	initObject('wo_base');
	initObject('wo_session');
	Session = new wo_session;

	if (poSess!='')
	{
		doActivate();
	}

}

function doActivate() {

	var oXml = zXmlDom.createDocument();
	bRet=Session.activate(poSess);
	hideLogin();
	emptyCart();
	document.getElementById('searchwords').value='';
}

function doLogin() {

	var oXml = zXmlDom.createDocument();
	var acct = document.getElementById('acct').value;
	var uid = document.getElementById('uid').value;
	var pwd = document.getElementById('pwd').value;
	bRet=Session.login(acct,uid,pwd);
	if (bRet)
	{
		if (Session.account.activeUser.isAdmin)
		{
			//accountid=acct;
			hideElement('divSearch');
			showElement('divMenu');
			//document.getElementById('divLogin').style.display='none';
			hideLogin();
			xml='<rq><rqname>getscript</rqname><token>' + Session.sessionId + '</token><name>account</name></rq>';
			sRet = sendTran(xml);
			oXml.loadXML(sRet);
			loadCode(sRet);
		}
		else
		{
			//accountid=acct;
			hideLogin();
			document.getElementById('searchwords').value='';
			doSearch(0,25);
			document.getElementById('divCartSummary').style.display='block';
			getCartSummary();
			document.getElementById('searchwords').focus();

		}
	}
}

function doLogout(){
	//iAccountId=0;
	//iUserId=0;
	loadPageDefaults(this.pageName);
	document.getElementById('divMenu').style.display='none';
	document.getElementById('divSearch').style.display='block';
	setWork('','','');
	showLogin('divLogin');
}

function hideLogin() {
	e = document.getElementById('divLogin');
	shtml = '<center>'+ Session.account.activeUser.firstname + ' ' + Session.account.activeUser.lastname + '<br>logged in.<br><br><img class="clickable" src="' + sStyle + 'images/logout.gif" alt="[Log Out]" onclick="doLogout();"></center>';
	e.innerHTML = shtml;

}

function showLogin(el) {
/*
	var ii='';
	setWork('','','');
	if (el=='divAdminLogin')
	{
		ii='1';
	}
*/
	e = document.getElementById('divLogin');
	shtml = '<form id=frmLogin method=get onsubmit="return doLogin();">';
	shtml += '	<table>';
	shtml += '		<tr><td>Account ID:</td><td><input type=text id=acct size=15></td></tr>';
	shtml += '		<tr><td>User ID:</td><td><input type=text id=uid size=15></td></tr>';
	shtml += '		<tr><td>Password:</td><td><input type=password id=pwd size=15></td></tr>';
	shtml += '	</table>';
	shtml += '	<img class="clickable" src="' + sStyle + 'images/login.gif" alt="[Login]" onclick="doLogin();">';
	shtml += '	<input type=submit style="display:none">';
	shtml += '</form>';

	e.innerHTML = shtml;
	document.getElementById('acct').focus();

}

function doSearch(inStart,inLimit) {

	iOffset=parseFloat(inStart);
	iLimit=parseFloat(inLimit);

	showMessage('<center>Searching<br><img src="' + sStyle + 'images/loading.gif"></center>');

	var oXml = zXmlDom.createDocument();
	var terms = document.getElementById('searchwords').value;
	xml='<rq><rqname>search</rqname><token>' + Session.sessionId + '</token><results><start>' + iOffset + '</start><limit>' + iLimit + '</limit></results><qtext>' + terms + '</qtext></rq>';
	sRet = sendTran(xml);
	oXml.loadXML(sRet);
	
	if (iOffset<0){iOffset=0}
	sDivPaging='<div><a href="#" onClick="doSearch(' + (iOffset-iLimit) + ',' + iLimit + ');">[Prev]</a> <a href="#" onClick="doSearch(' + (iOffset+iLimit) + ',' + iLimit + ');">[Next]</a></div>';
	if (!isError(oXml))
	{

//		chatid=zXPath.selectSingleNode(oXml,"/rs/chatid",null).text;
//		iStart = zXPath.selectNodes(oXml,"/rs/start",null);
//		iLimit = zXPath.selectNodes(oXml,"/rs/limit",null);
		oItems=zXPath.selectNodes(oXml,"/rs/results/item",null);

		shtml='';
		shtml += '<div class="divSearchResults">';
		shtml += '<table width=100% border=1>';
		for (i=0;i<oItems.length ;i++ )
		{
			itemid=zXPath.selectSingleNode(oItems[i],"itemid",null).text;
			itemno=zXPath.selectSingleNode(oItems[i],"itemno",null).text;
			itemname=zXPath.selectSingleNode(oItems[i],"itemname",null).text;
			itemdesc=zXPath.selectSingleNode(oItems[i],"itemdesc",null).text;
			mfgid=zXPath.selectSingleNode(oItems[i],"mfgid",null).text;
			mfg=zXPath.selectSingleNode(oItems[i],"mfgname",null).text;
			mfgitemno=zXPath.selectSingleNode(oItems[i],"mfgitemno",null).text;
			imageid=zXPath.selectSingleNode(oItems[i],"imageid",null).text;
			imageurl=zXPath.selectSingleNode(oItems[i],"imageurl",null).text;
			shtml += '<tr><td class=srPic rowspan=3><img src="' + (imageurl==''?'itemimages/'+ mfgid +'_'+mfgitemno+'.jpg':imageurl) + '" alt=""></td><td class=srItemNo>'+ itemno + '</td><td class=srItemName colspan=3>' + unescape(itemname) + '&nbsp;</td></tr>';
			oAttribs=zXPath.selectNodes(oItems[i],"attribs/attrib",null);
			attr = '';
			for (j=0;j<oAttribs.length ;j++ )
			{
				attrname=zXPath.selectSingleNode(oAttribs[j],"@name",null).text;
				//get choices here
				opt = '';
				oOpts=zXPath.selectNodes(oAttribs[j],"choice",null);
				for (k=0;k<oOpts.length ;k++ )
				{
					opt+='<option value="' + zXPath.selectSingleNode(oOpts[k],".",null).text + '" >'+zXPath.selectSingleNode(oOpts[k],"@name",null).text+'</option>';
				}
				attr += attrname +' <select name="'+ attrname + '"><option value=""></option>'+opt+'</select><br>';
			}
			shtml += '<tr><td class=srItemDesc colspan=2>'+ unescape(itemdesc) + '<br/><br/><b>'+mfg+'</b> '+mfgitemno+'</td><td class=srPricing rowspan=2>'+attr+'<table class=tblPrice><tr><th>Qty</th><th colspan=3>UOM</th><th>Cost</th><th>List</th></tr>';
			oPrices=zXPath.selectNodes(oItems[i],"prices/price",null);
			for (j=0;j<oPrices.length ;j++ )
			{
				qtyper=zXPath.selectSingleNode(oPrices[j],"qtyper",null).text;
				uom=zXPath.selectSingleNode(oPrices[j],"uom",null).text;
				price=zXPath.selectSingleNode(oPrices[j],"price",null).text;
				list=zXPath.selectSingleNode(oPrices[j],"list",null).text;
				shtml += '<tr><td><input uom='+uom+' itemid='+itemid+' size=3></td><td align=right>' + qtyper + '</td><td>/</td><td>' + uom + '</td><td align=right>'+ price + '</td><td align=right>'+ list + '</td>';
			}
			shtml += '</table>';
			if(j>0){
				shtml += '<img src="' + sStyle + 'images/cartadd.gif" alt="[Add to Cart]" onclick="addItem('+itemid+',this.parentNode);">';
			}else{
				shtml += 'Please call for Pricing';
			}
			shtml += '</td></tr>';
//			shtml += '<tr><td class=srItemDesc colspan=2><i>Specification Sheet - coming soon</i></td></tr>';
			shtml += '<tr><td class=srItemDesc colspan=2><i></i></td></tr>';
			shtml += '<tr><td class="srSpacer" colspan=4></td></tr>';
		}
		shtml += '</table>';
		shtml += '</div>\n';
		setWork('<div>Search Results for <b><i>'+terms+'</i></b>\n'+sDivPaging+'</div>',shtml,sDivPaging);
	}
	else
	{
		code=zXPath.selectSingleNode(oXml,"/rs/code",null).text;
		if (code=='99')
		{
			showLogin();
		}
		alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
	}
	hideMessage();
	return false;
}

function showMessage(msg) {
	var e = document.getElementById('divMessage');
	e.innerHTML=msg;
	e.display='block';
	lastmsg=msg;
}

function hideMessage() {
	var e = document.getElementById('divMessage');
	e.innerHTML='';
	e.display='none';


}

function addItem(id,e) {
	ee=e.getElementsByTagName('INPUT');
	for (i=0;i<ee.length ;i++ )
	{
		itemid=ee[i].getAttribute('itemid');
		uom=ee[i].getAttribute('uom');
		//check for attribs
		ea=e.parentNode.getElementsByTagName('SELECT');
		attr='';
		attrcnt=0;
		for (j=0;j<ea.length ;j++ )
		{
			attr+='<attribute name="'+ea[j].name+'">'+ea[j].value +'</attribute>';
			if (ea[j].value=='')
			{
				attrcnt++;
			}
//alert(attr);
//alert(attrcnt);
//alert(ea.length);
		}
		qty=ee[i].value;
		if (qty!='' && qty>0 && attrcnt==0)
		{
			var oXml = zXmlDom.createDocument();
			var terms = document.getElementById('searchwords').value;
			xml='<rq><rqname>additem</rqname><token>' + Session.sessionId + '</token><itemid>' + itemid + '</itemid><uom>' + uom + '</uom><qty>' + qty + '</qty><attributes>'+attr+'</attributes></rq>';
			sRet = sendTran(xml);
			oXml.loadXML(sRet);
			if (!isError(oXml))
			{
				getNodeText(oXml,"//cnt");
				cartcount=nodeText;
				getNodeText(oXml,"//total");
				carttotal=nodeText;
				updateCart();				
			}
			else
			{
				alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
			}

			ee[i].value='';
		}
		if (attrcnt>0&&ea.length>0)
		{
			alert('Please make a selection above before adding this item to the cart.');
		}
	}
}

function viewCart() {
	var oXml = zXmlDom.createDocument();
	var sAttrs='';
	xml='<rq><rqname>viewcart</rqname><token>' + Session.sessionId + '</token></rq>';
	sRet = sendTran(xml);
	oXml.loadXML(sRet);
	if (!isError(oXml))
	{
		oItems=zXPath.selectNodes(oXml,"/rs/items/item",null);
		grandtotal=0;
		shtml='';
		shtml += '<div class="divCartDetail">';
		shtml += '<table width=100%>';
		shtml += '<tr><th>Qty</th><th>UOM</th><th>Item No</th><th>Name</th><th>Unit Price</th><th>Ext Price</th></tr>';
		for (i=0;i<oItems.length ;i++ )
		{
			sAttrs='';
			qty=zXPath.selectSingleNode(oItems[i],"qty",null).text;
			uom=zXPath.selectSingleNode(oItems[i],"uom",null).text;
			itemid=zXPath.selectSingleNode(oItems[i],"itemid",null).text;
			itemno=zXPath.selectSingleNode(oItems[i],"itemno",null).text;
			itemname=zXPath.selectSingleNode(oItems[i],"itemname",null).text;
			itemdesc=zXPath.selectSingleNode(oItems[i],"itemdesc",null).text;
			unit=zXPath.selectSingleNode(oItems[i],"unit",null).text;
			oAttrs=zXPath.selectNodes(oItems[i],"attribute",null);
			for (j=0;j<oAttrs.length ;j++ )
			{
				sAttrs+='<br>'+zXPath.selectSingleNode(oAttrs[j],"@name",null).text+':'+zXPath.selectSingleNode(oAttrs[j],".",null).text;
			}
			total=zXPath.selectSingleNode(oItems[i],"total",null).text;
			grandtotal+=parseFloat(total);
			shtml += '<tr><td><input name="qty" itemid="'+ itemid +'" uom="'+ uom +'" type=text size=3 maxlength=5 value="'+ qty +'"></td><td>'+uom+'</td><td><a href="" onClick="document.getElementById(\'searchwords\').value=\''+itemno+'\'; doSearch(0,25); return false;">'+itemno +'<a></td><td>'+itemname +sAttrs+'</td><td align=right>'+parseFloat(unit).toFixed(2) +'</td><td align=right>'+parseFloat(total).toFixed(2) +'</td></tr>';
		}
		shtml += '<tr><td colspan=4></td><td><b>Total:</b></td><td align=right><b>'+ grandtotal.toFixed(2) + '</b></td></tr>';
		oCustom=zXPath.selectNodes(oXml,"/rs/custom/field",null);
		if (oCustom)
		{
			shtml+='<tr><td colspan=6><table id=tblCustomFields border=0 cellspacing=0 celpadding=0>';
			for (i=0;i<oCustom.length ;i++ )
			{
				fieldname=zXPath.selectSingleNode(oCustom[i],"name",null).text;
				label=zXPath.selectSingleNode(oCustom[i],"label",null).text;
				reqd=zXPath.selectSingleNode(oCustom[i],"reqd",null).text;
				datatype=zXPath.selectSingleNode(oCustom[i],"datatype",null).text;
				if (reqd==1)
				{
					imgreqd='<img src="images/reqd.gif">';
				}
				else
				{
					imgreqd='';
				}
				shtml += '<tr><td>'+imgreqd+'</td><td>'+label+'</td><td colspan=5>';
				switch (datatype)
				{
				case 'LIST':
					shtml += '<select name="'+fieldname+'" reqd='+reqd+'><option value="" />';
					oListItems=zXPath.selectNodes(oCustom[i],"list/item",null);
					for (li=0;li<oListItems.length ;li++)
					{
						shtml += '<option value="'+zXPath.selectSingleNode(oListItems[li],"@value",null).text+'">'+zXPath.selectSingleNode(oListItems[li],".",null).text+'</option>';
					}
					shtml += '</select>';
					break;
				default:
					shtml += '<input type=text name="'+fieldname+'" reqd='+reqd+'>';
				}
				shtml += '</td></tr>';
			}
			shtml+='</table></td></tr>';
		}
		shtml += '<tr><td colspan=6>Order Notes:<br><textarea id=ordernotes name=ordernotes></textarea></td></tr>';
		shtml += '</table>';
		shtml += '</div>';
		//setWork('<div>Cart Contents:</div>',shtml,'<div><img class=clickable src="' + sStyle + 'images/updateqty.gif" alt="[Update Qty]" onclick="updateQty();">' + (poSess==''?'<img class=clickable src="' + sStyle + 'images/submitorder.gif" alt="[Submit Order]" onclick="if(validateOrder()){submitOrder();}">':'<img class=clickable src="' + sStyle + 'images/sendcart.gif" alt="[Send Cart]" onclick="if(validateOrder()){submitOrder();}">') + '<img class=clickable src="' + sStyle + 'images/emptycart.gif" alt="[Empty Cart]" onclick="emptyCart();"></div>');
		setWork('<div>Cart Contents:</div>',shtml,'<div><img class=clickable src="' + sStyle + 'images/updateqty.gif" alt="[Update Qty]" onclick="updateQty();">' + (poSess==''?'<img class=clickable src="' + sStyle + 'images/submitorder.gif" alt="[Submit Order]" onclick="if(validateOrder()){submitOrder();}">':'<img class=clickable src="' + sStyle + 'images/submitorder.gif" alt="[Send Cart]" onclick="if(validateOrder()){submitOrder();}">') + '<img class=clickable src="' + sStyle + 'images/emptycart.gif" alt="[Empty Cart]" onclick="if (confirm(\'Are you sure you want to empty the contents of your cart?\')){emptyCart()};"></div>');
	}
	else
	{
		alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
	}

}

function validateOrder(){
	custom=document.getElementById('tblCustomFields');
	fields=custom.getElementsByTagName('INPUT');
	if (fields)
	{
		var msg='';
		for (i=0;i<fields.length ; i++)
		{
			val=fields[i].value;
			reqd=fields[i].getAttribute("reqd");
			if (reqd=='1' && val=='')
			{
				msg='Please fill out all required fields.';
			}
		}
		if (msg!='')
		{
			alert(msg);
			return false;
		}
		else
			return true;
	}
}

function submitOrder() {
	var oXml = zXmlDom.createDocument();
	var terms = document.getElementById('searchwords').value;
	var notes = document.getElementById('ordernotes').value;
	//check for limit
	if (parseFloat(carttotal)>parseFloat(Session.account.activeUser.ordertotalmax))
	{
		alert('You have exceeded your allowed order total of ' + Session.account.activeUser.ordertotalmax);
		return false;
	}
	if (parseFloat(cartcount)==0)
	{
		alert("There are no items in your cart.  Please add an item.");
		return false;
	}
	//TODO: check for reqd fields
	xml='<rq><rqname>submitcart</rqname><token>' + Session.sessionId + '</token>';
	custom=document.getElementById('tblCustomFields');
	fields=custom.getElementsByTagName('INPUT');
	xml+='<custom>';
	if (fields)
	{
		for (i=0;i<fields.length ; i++)
		{
			xml+='<field>';
			xml+='<name>'+fields[i].name+'</name>';
			xml+='<value>'+fields[i].value+'</value>';
			xml+='</field>';
			if (fields[i].attributes["reqd"].value=='1'&&fields[i].value=='')
			{
				alert('Please fill in all required fields.');
				return false;
			}
		}
	}
	fields=custom.getElementsByTagName('SELECT');
	if (fields)
	{
		for (i=0;i<fields.length ; i++)
		{
			xml+='<field>';
			xml+='<name>'+fields[i].name+'</name>';
			xml+='<value>'+fields[i].value+'</value>';
			xml+='</field>';
			if (fields[i].attributes["reqd"].value=='1'&&fields[i].value=='')
			{
				alert('Please fill in all required fields.');
				return false;
			}
		}
	}
	xml+='</custom>';
	xml+='<notes>' + notes + '</notes></rq>';
	sRet = sendTran(xml);
	oXml.loadXML(sRet);
	if (!isError(oXml))
	{
		document.getElementById('searchwords').value='';
		getCartSummary();
		updateCart();				
		if (poSess!='')
		{
			doLogout();
			alert('Your PunchOut session is complete.\n\nPlease close your browser and return to your Procurement Application.');
		}
		else 
		{
			alert('Your order has been received.');
			doSearch(0,25);
			document.getElementById('searchwords').focus();
		}
	}
	else
	{
		alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
		getNodeText(oXml,"/rs/detail");
		document.getElementById('divMessage').innerHTML=unescape(nodeText);
	}
}

function getCartSummary(){
	var oXml = zXmlDom.createDocument();
	var terms = document.getElementById('searchwords').value;
	xml='<rq><rqname>getcartsummary</rqname><token>' + Session.sessionId + '</token></rq>';
	sRet = sendTran(xml);
	oXml.loadXML(sRet);
	if (!isError(oXml))
	{
		cartcount=zXPath.selectSingleNode(oXml,"//cnt",null).text;
		carttotal=zXPath.selectSingleNode(oXml,"//total",null).text;
		updateCart();				
	}
	else
	{
		alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
	}
}

function updateCart(){
	document.getElementById('cartcount').innerHTML=cartcount;
	document.getElementById('carttotal').innerHTML='$'+carttotal;
}

function emptyCart(){
	
		var oXml = zXmlDom.createDocument();
		xml='<rq><rqname>emptycart</rqname><token>' + Session.sessionId + '</token></rq>';
		sRet = sendTran(xml);
		oXml.loadXML(sRet);
		if (!isError(oXml))
		{
			cartcount=0;
			carttotal=0;
			updateCart();
			viewCart();
		}
		else
		{
			alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
		}
}

function updateQty(){
	qtys=document.getElementsByName("qty");
	if (qtys.length>0)
	{
		xml='<rq><rqname>updatecart</rqname><token>' + Session.sessionId + '</token>';
		xml+='<items>\n';
		for (i=0;i<qtys.length ;i++ )
		{
			xml+='<item><itemid>'+qtys[i].getAttribute('itemid')+'</itemid><uom>'+qtys[i].getAttribute('uom')+'</uom><qty>'+qtys[i].value+'</qty></item>\n';
		}
		xml+='</items>\n';
		xml+='</rq>';
		sRet = sendTran(xml);
		var oXml = zXmlDom.createDocument();
		oXml.loadXML(sRet);
		if (!isError(oXml))
		{
			cartcount=zXPath.selectSingleNode(oXml,"//cnt",null).text;
			carttotal=zXPath.selectSingleNode(oXml,"//total",null).text;
			getCartSummary();				
			viewCart();
		}
		else
		{
			alert(zXPath.selectSingleNode(oXml,"/rs/error",null).text);
		}
	}
}

function setWork(header,results,footer) {
	
	if (header!=null)
	{
		document.getElementById('divWorkHeader').innerHTML = header;
	}
	if (results!=null)
	{
		document.getElementById('divWorkResults').innerHTML = results;
	}
	if (footer!=null)
	{
		document.getElementById('divWorkFooter').innerHTML = footer;
	}

}
