/** 
* The following javascripts are copyrighted by ChemExper sprl (www.chemexper.com).
* You are not allowed to use them without written permission.
* Cookies are limited in number and size. Per server the limit in 20 and
* each cookie may have a length of 4k
*
*/


var domain=location.host.replace(/.*([.].+[.].+)/,"$1");

var NUMBER_DECIMALS=2;

function existsInCaddy(catalog) {
	return keyExistsInCookie("shopping", catalog, 7)
}

function addToCaddy(catalog, description, unit, price, quantity, company, brand) {
	newQuantity=quantity*1;
	if (existsInCaddy(catalog)) {
		newQuantity+=getFromCaddy(catalog)[4]*1;
	}
	values=[catalog, description, unit, price, newQuantity, company, brand];
	
	putValuesInCookie("shopping", values, new Date(new Date().getTime()+86400*1000*300), "/", domain);
}

function getFromCaddy(catalog) {
	return getValuesFromCookie("shopping", catalog, 7);
}

function getKeysFromCaddy() {
	return getKeysFromCookie("shopping",7);
}

function changeCaddyQuantity(catalog, quantity) {
	var values=getFromCaddy(catalog);
	values[4]=quantity;
	putValuesInCookie("shopping",values, new Date(new Date().getTime()+86400*1000*300), "/", domain);
}

function clearCaddy() {
	deleteCookie("shopping");
}

function deleteFromCaddy(catalog) {
	deleteValuesFromCookie("shopping",catalog,7);
}

function getFromCompanies(addressCode) {
	var values=getValuesFromCookie("companies", addressCode, 3);
	if ((! values) || (! values.length) || (values.length<2)) return ["","",""];
	return values;
}

function putToCompanies(addressCode, companyName, companyEmail) {
	putValuesInCookie("companies", [addressCode, companyName, companyEmail], new Date(new Date().getTime()+86400*1000*300), "/", domain);
}


function getFromAddress(addressField) {
	var values=getValuesFromCookie("address", addressField, 2);
	if ((! values) || (! values.length) || (values.length<2)) return "";
	return values[1];
}

function putToAddress(addressField, value) {
	putValuesInCookie("address", [addressField, value], new Date(new Date().getTime()+86400*1000*300), "/", domain);
}

function setRequest(catalog, description, unit, price, quantity, company, brand) {
	values=["id",catalog, description, unit, price, quantity, company, brand];
	setValuesInCookie("request",values, new Date(new Date().getTime()+86400*1000*300), "/", domain);
}

function updateRequestWithValues(theSpan, catalog, description, unit, price, company, brand, companyName, companyEmail, noBrand) {
		toReturn="";
		toReturn+="<table cellpadding='0' cellspacing='0'  border='0' width=500><tr>";
		toReturn+="<td  bgcolor='black'>";
		toReturn+="<table width='100%' cellspacing='1' cellpadding='0' border=0><tr><td bgcolor='white'>";
		toReturn+="<input type=hidden name='toemail' value='"+companyEmail+"'>";
		toReturn+="<input type=hidden name='supplier' value='"+companyName+"'>";
		toReturn+="<input type=hidden name='brand' value='"+brand+"'>";
		toReturn+="<input type=hidden name='noBrand' value='"+noBrand+"'>";
		toReturn+="<input type=hidden name='catalogID' value='"+catalog+"'>";
		toReturn+="<input type=hidden name='iupac' value='"+description+"'>";
		toReturn+="<input type=hidden name='quantity' value='"+unit+"'>";
		toReturn+="<input type=hidden name='price' value='"+price+"'>";
		toReturn+="<table width='100%' cellspacing='5' border=0><tbody>";
		toReturn+="<tr><td align='right'>Company:</td>";
		toReturn+="<td><input name='company' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("company")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Title:</td>";
		toReturn+="<td><input name='title' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("title")+"'></td></tr>";
		toReturn+="<tr><td align='right'>First Name:</td>";
		toReturn+="<td><input name='firstname' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("firstname")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Last Name:</td>";
		toReturn+="<td><input name='lastname' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("lastname")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Address:</td>";
		toReturn+="<td><textarea class='formfield' cols='40' rows='4' name='address' onchange=\"putToAddress(this.name, this.value);\">"+getFromAddress("address")+"</textarea></td></tr>";
		toReturn+="<tr><td align='right'>Country:</td>";
		toReturn+="<td><input name='country' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("country")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Phone:</td>";
		toReturn+="<td><input name='phone' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("phone")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Fax:</td>";
		toReturn+="<td><input name='fax' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("fax")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Email:</td>";
		toReturn+="<td><input name='email' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("email")+"'></td></tr>";


		if (noBrand!="true") {
	        toReturn+="<tr><td align='right'></td>";
	        toReturn+="<td><input name='copyToCustomer' type='checkbox' size='50' value='yes' class='formfield' onchange=\"putToAddress(this.name, this.checked);\"";
	        if (getFromAddress("copyToCustomer")=="true") {toReturn+=" checked"};
	        toReturn+=">Please send me a copy of my request by Email</td></tr>";
        }
        
		toReturn+="<tr><td colspan=2><br><b>Please send me an offer concerning the following product :</b></td></tr>";
		if (noBrand!="true") {
			toReturn+="<tr><td align='right'>Supplier:&nbsp;</td><td>"+companyName+"</td></tr>";
			toReturn+="<tr><td align='right'>Brand:&nbsp;</td><td>"+brand+"</td></tr>";
		}
		toReturn+="<tr><td align='right'>Catalog number:&nbsp;</td><td>"+catalog+"</td></tr>";
		toReturn+="<tr><td align='right'>Description:&nbsp;</td><td>"+description+"</td></tr>";
		toReturn+="<tr><td align='right'>Quantity:&nbsp;</td><td>"+unit+"</td></tr>";
		toReturn+="<tr><td align='right' nowrap>Requested quantity:&nbsp;</td><td><input class='formfield' name=newQuantity size='50' maxlength='50'></td></tr>";
		toReturn+="<tr><td align='right'>Remarks:&nbsp;</td><td><textarea onchange=\"putToAddress(this.name, this.value);\" class='formfield' cols='40' rows='4' name='text'>"+getFromAddress("text")+"</textarea></td></tr>";
		toReturn+="<tr><td colspan=2><center><input class='formfield' name='request' type='submit' value='Submit'></center></td>";
		toReturn+="</tr></tbody>";
		toReturn+="</table>";
		toReturn+="</td></tr></table>";
		toReturn+="</td></tr></table>";


		theSpan.innerHTML=toReturn;
}

function updateOrderWithValues(theSpan, catalog, description, unit, price, company, brand, companyName, companyEmail, noBrand) {
		toReturn="";
		toReturn+="<table cellpadding='0' cellspacing='0'  border='0' width=500><tr>";
		toReturn+="<td  bgcolor='black'>";
		toReturn+="<table width='100%' cellspacing='1' cellpadding='0' border=0><tr><td bgcolor='white'>";
		toReturn+="<input type=hidden name='toemail' value='"+companyEmail+"'>";
		toReturn+="<input type=hidden name='supplier' value='"+companyName+"'>";
		toReturn+="<input type=hidden name='brand' value='"+brand+"'>";
		toReturn+="<input type=hidden name='noBrand' value='"+noBrand+"'>";
		toReturn+="<input type=hidden name='catalogID' value='"+catalog+"'>";
		toReturn+="<input type=hidden name='iupac' value='"+description+"'>";
		toReturn+="<input type=hidden name='quantity' value='"+unit+"'>";
		toReturn+="<input type=hidden name='price' value='"+price+"'>";
		toReturn+="<table width='100%' cellspacing='5' border=0><tbody>";
		toReturn+="<tr><td align='right'>Company:</td>";
		toReturn+="<td><input name='company' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("company")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Title:</td>";
		toReturn+="<td><input name='title' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("title")+"'></td></tr>";
		toReturn+="<tr><td align='right'>First Name:</td>";
		toReturn+="<td><input name='firstname' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("firstname")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Last Name:</td>";
		toReturn+="<td><input name='lastname' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("lastname")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Address:</td>";
		toReturn+="<td><textarea class='formfield' cols='40' rows='4' name='address' onchange=\"putToAddress(this.name, this.value);\">"+getFromAddress("address")+"</textarea></td></tr>";
		toReturn+="<tr><td align='right'>Country:</td>";
		toReturn+="<td><input name='country' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("country")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Phone:</td>";
		toReturn+="<td><input name='phone' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("phone")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Fax:</td>";
		toReturn+="<td><input name='fax' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("fax")+"'></td></tr>";
		toReturn+="<tr><td align='right'>Email:</td>";
		toReturn+="<td><input name='email' type='text' size='50' class='formfield' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("email")+"'></td></tr>";
		toReturn+="<tr><td colspan=2><br><b>I would like to order the following product :</b></td></tr>";
		if (noBrand!="true") {
			toReturn+="<tr><td align='right'>Supplier:&nbsp;</td><td>"+companyName+"</td></tr>";
			toReturn+="<tr><td align='right'>Brand:&nbsp;</td><td>"+brand+"</td></tr>";
		}
		toReturn+="<tr><td align='right'>Catalog number:&nbsp;</td><td>"+catalog+"</td></tr>";
		toReturn+="<tr><td align='right'>Description:&nbsp;</td><td>"+description+"</td></tr>";
		toReturn+="<tr><td align='right' nowrap>Number of items:&nbsp;</td><td><input class='formfield' name=numberItems size='50' maxlength='50'></td></tr>";
		toReturn+="<tr><td align='right'>Quantity:&nbsp;</td><td>"+unit+"</td></tr>";
		toReturn+="<tr><td align='right'>Price:&nbsp;</td><td>"+price+"</td></tr>";
		toReturn+="<tr><td align='right'>Remarks:&nbsp;</td><td><textarea class='formfield' cols='40' rows='4' name='text'></textarea></td></tr>";
		toReturn+="<tr><td colspan=2><center><input class='formfield' name='request' type='submit' value='Submit'></center></td>";
		toReturn+="</tr></tbody>";
		toReturn+="</table>";
		toReturn+="</td></tr></table>";
		toReturn+="</td></tr></table>";


		theSpan.innerHTML=toReturn;
}



function updateRequest(theSpan) {
		var values=getValuesFromCookie("request", "id", 8);
		var catalog=values[1];
		var description=values[2];
		var unit=values[3];
		var price=values[4];
		var quantity=values[5];
		var company=values[6];
		var brand=values[7];
		var companyName=getFromCompanies(company)[1];
		var companyEmail=getFromCompanies(company)[2];
		var toReturn="";
		
		updateRequestWithValues(theSpan, catalog, description, unit, price, company, brand, companyName, companyEmail);
}

function updateCaddy(theSpan) {

	var catalogKeys=getKeysFromCaddy();
	
	if ((!catalogKeys) || (catalogKeys.length<1)) {return ; }
	
	
	var total=0;
	var toReturn="<table><tr>";
	toReturn+="<th>Brand</th>";
	toReturn+="<th>Reference</th>";
	toReturn+="<th>Description</th>";
	toReturn+="<th>Unit</th>";
	toReturn+="<th>Price</th>";
	toReturn+="<th>Quantity</th>";
	toReturn+="<th>Total</th>";
	
	// we will check if the company is the same everywhere ...Array
	var theCompany="";
	for (var i=0; i<catalogKeys.length; i++) {
		var company=getFromCaddy(catalogKeys[i])[5];
		if (theCompany=="") {
			theCompany=company;
		} else {
			if (theCompany!=company) {alert("Unimplemented case, many suppliers in one basket");}
		}
	}	
	
	for (var i=0; i<catalogKeys.length; i++) {
		toReturn+="<tr>";
		var values=getFromCaddy(catalogKeys[i]);
		var catalog=values[0];
		var description=values[1];
		var unit=values[2];
		var price=values[3];
		var quantity=values[4];
		var company=values[5];
		var brand=values[6];
		toReturn+="<td><input name=\"brand_"+i+"\" type=\"text\" value=\""+brand+"\" readonly size=10></td>";
		toReturn+="<td><input name=\"catalog_"+i+"\" type=\"text\" value=\""+catalog+"\" readonly size=10></td>";
		toReturn+="<td><input name=\"description_"+i+"\" type=\"text\" value=\""+description+"\" readonly size=30></td>";
		toReturn+="<td><input name=\"unit_"+i+"\" type=\"text\" value=\""+unit+"\" readonly size=8></td>";
		toReturn+="<td><input name=\"price_"+i+"\" type=\"text\" value=\""+price+"\" readonly size=10></td>";
		toReturn+="<td><input tabindex="+i+" name=\"quantity_"+i+"\" type=\"text\" value=\""+quantity+"\" size=10 onchange=\"changeCaddyQuantity('"+catalog+"', this.value); updateCaddy(document.getElementById('myCaddy'));\"></td>";
		toReturn+="<td><input type=\"text\" value=\""+Math.round(price*quantity*Math.pow(10,NUMBER_DECIMALS))/Math.pow(10,NUMBER_DECIMALS)+"\" readonly size=10></td>";
		// we will also allow to delete a line
		toReturn+="<td><button type=\"button\" onclick=\"deleteFromCaddy('"+catalog+"'); updateCaddy(document.getElementById('myCaddy'));\">Delete</button>";
		toReturn+="</tr>";
		total+=+Math.round(price*quantity*Math.pow(10,NUMBER_DECIMALS))/Math.pow(10,NUMBER_DECIMALS);
	}
	
	toReturn+="<tr><td colspan=5></td><th>Total</th><th>"+total+"</th></tr>";
	toReturn+="</table>";
	toReturn+="<table>";
	toReturn+="<tr><th></th><th valign='top'>Delivery address :</th>";
	toReturn+="<th valign='top'>Invoice address :</th></tr>";
	toReturn+="<tr><td valign='top'>Title :</td>";
	toReturn+="<td><input name='title' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("title")+"'></td>";
	toReturn+="<td><input name='invoice_title' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_title")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>First Name :</td>";
	toReturn+="<td><input name='firstname' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("firstname")+"'></td>";
	toReturn+="<td><input name='invoice_firstname' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_firstname")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Last Name :</td>";
	toReturn+="<td><input name='lastname' type='text' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("lastname")+"'></td>";
	toReturn+="<td><input name='invoice_lastname' type='text' onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_lastname")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Company/University :</td>";
	toReturn+="<td><input name='company' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("company")+"'></td>";
	toReturn+="<td><input name='invoice_company' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_company")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Address :</td>";
	toReturn+="<td><textarea name='address' onchange=\"putToAddress(this.name, this.value);\">"+getFromAddress("address")+"</textarea></td>";
	toReturn+="<td><textarea name='invoice_address' onchange=\"putToAddress(this.name, this.value);\">"+getFromAddress("invoice_address")+"</textarea></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Zip/Postal Code :</td>";
	toReturn+="<td><input name='zip' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("zip")+"'></td>";
	toReturn+="<td><input name='invoice_zip' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_zip")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>City :</td>";
	toReturn+="<td><input name='city' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("city")+"'></td>";
	toReturn+="<td><input name='invoice_city' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_city")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Country :</td>";
	toReturn+="<td><input name='country' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("country")+"'></td>";
	toReturn+="<td><input name='invoice_country' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_country")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Phone :</td>";
	toReturn+="<td><input name='phone' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("phone")+"'></td>";
	toReturn+="<td><input name='invoice_phone' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_phone")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Fax :</td>";
	toReturn+="<td><input name='fax' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("fax")+"'></td>";
	toReturn+="<td><input name='invoice_fax' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_fax")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Email :</td>";
	toReturn+="<td><input name='email' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("email")+"'></td>";
	toReturn+="<td><input name='invoice_email' type='text'  onchange=\"putToAddress(this.name, this.value);\" value='"+getFromAddress("invoice_email")+"'></td>";
	toReturn+="</tr>";
	toReturn+="<tr><td valign='top'>Remarks :</td>";
	toReturn+="<td colspan=2><textarea name='remarks' onchange=\"putToAddress(this.name, this.value);\">"+getFromAddress("remarks")+"</textarea></td>";
	toReturn+="</tr>";
	toReturn+="</table>";
	
	toReturn+="<p>Order for "+getFromCompanies(theCompany)[0]+", "+getFromCompanies(theCompany)[1]+" ("+getFromCompanies(theCompany)[2]+")</p>";
	
	toReturn+="<center><button onclick='javascript:history.go(-1)' type='button'>Continue shopping</button>";
	toReturn+="<button onclick='clearCaddy(); location.reload();' type='button'>Clear shopping basked</button>";
	toReturn+="<input type='submit' name='order' value='Send order'></center>";


	
	theSpan.innerHTML=toReturn;
}


