var xmlhttp

//########################################################

function weightspinecalc(bd)
{
	var h = document.form.height
	var w = document.form.width
	var tp = document.form.tpages
	var tg = document.form.tgsm
	var cp = document.form.cpages
	var cg = document.form.cgsm
	var q = document.form.pqty
	
	if 		( !isNumeric(h.value) ) 	{ clearresults(); h.value = ''; return; }
	else if ( !isNumeric(w.value) ) 	{ clearresults(); w.value = ''; return; }
	else if ( !isNumeric(tp.value) ) 	{ clearresults(); tp.value = ''; return; }
	else if ( !isNumeric(tg.value) ) 	{ clearresults(); tg.value = ''; return; }
	else if ( !isNumeric(cp.value) ) 	{ clearresults(); cp.value = ''; return; }
	else if ( !isNumeric(cg.value) ) 	{ clearresults(); cg.value = ''; return; }
	else if ( !isNumeric(q.value) ) 	{ clearresults(); q.value = ''; return; }
    else {	loadXMLDoc('http://www.symbianprint.co.uk/weightspinecalculator.php?h='+h.value+'&w='+w.value+'&tp='+tp.value+'&tg='+tg.value+'&cp='+cp.value+'&cg='+cg.value+'&bd='+bd+'&q='+q.value); }
	
}

//########################################################

function showspine()
{
	document.getElementById("spintitle").style.visibility = "visible";
	document.getElementById("spindata").style.visibility = "visible";
}

//########################################################

function hidespine()
{
	document.getElementById("spintitle").style.visibility = "hidden";
	document.getElementById("spindata").style.visibility = "hidden";
}

//########################################################

function clearresults()
{
	document.form.magw.value = '';
	document.form.wght.value = '';
	document.form.spin.value = '';
	document.form.crtn.value = '';
	document.form.boxs.value = '';
	document.form.spwt.value = '';
}

//########################################################

function publishresults(txt)
{
	var results = txt.split("!");
	
	for( aresult in results )
		{
			var partsofaresult = results[aresult].split("*");
			
			switch(partsofaresult[0])
				{
					case 'tt':	document.form.ttotal.value = partsofaresult[1];
								break;
					case 'ct':	document.form.ctotal.value = partsofaresult[1];
								break;
					case 'mw':	document.form.magw.value = partsofaresult[1];
								break;
					case 'tw':	document.form.wght.value = partsofaresult[1];
								break;
					case 'sw':	document.form.spin.value = partsofaresult[1];
								break;
					case 'pc':	document.form.crtn.value = partsofaresult[1];
								break;
					case 'bx':	document.form.boxs.value = partsofaresult[1];
								break;
					case 'ws':	document.form.spwt.value = partsofaresult[1];
								break;
				}
		}			
}

//########################################################

function isNumeric(val)
{
	validChar = '0123456789'; // characters allowed in hex
	strlen = val.length;    // how long is test string

	if( strlen < 1 )
	 { return false; }

		for ( i=0 ; i<strlen ; i++ )
		{
		    if( validChar.indexOf( val.charAt(i) ) < 0 )
			{
		       window.status = "Entry must be in numeric format!";
			   return false;
			}
		} // end scanning loop
		
	return true;
}

//########################################################

function text()
{
	return paperweight(document.form.height.value,document.form.width.value,document.form.tpages.value,document.form.tgsm.value);
}

//########################################################

function cover()
{
	return paperweight(document.form.height.value,document.form.width.value,document.form.cpages.value,document.form.cgsm.value);
}

//########################################################

function paperweight(h,w,p,g)
{
	if ( isNumeric(h) && isNumeric(w) && isNumeric(p) && isNumeric(g) )
    {
		var result = (h/1000)*(w/1000)*(p/2)*g;
		var tmp = (result * 10);
		result = tmp / 10;
		
		return roundit(result, 1);
	}
	else { return '';}
}

//########################################################

function roundit(Num, Places) {
   if (Places > 0) {
      if ((Num.toString().length - Num.toString().lastIndexOf('.')) > (Places + 1)) {
         var Rounder = Math.pow(10, Places);
         return Math.round(Num * Rounder) / Rounder;
      }
      else return Num;
   }
   else return Math.round(Num);
}

