/* FOR ERROR HANDLING, REMOVE ON FINAL VERSION */
var ok=true;
var ed; var edid;
onerror=handleErr;
var txt="";

function handleErr(msg,url,l)
{
txt="There was an error on this page.\n\n";
txt+="Error: " + msg + "\n";
txt+="URL: " + url + "\n";
txt+="Line: " + l + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
return true;
}
var num=0;
var types=new Array();
var typenames=new Array();
var weights= new Array();
var quants=new Array();
var beans=new Array();
var price=new Array();
var subtotal=0;
var totweight=0;
var discount=0;
var post=new Array();
post[0]=Array(5.5,6.7,7.65,8.6);
post[1]=Array(7.50,10,12.40);
post[2]=Array(7.8,12,16);
var postage=0;
var total=0;
function add_to_order(form){
	var cctype=form.ctype.options[form.ctype.selectedIndex];
	var ccweight=form.cweight.options[form.cweight.selectedIndex];
	var ccquantity=form.cquantity.options[form.cquantity.selectedIndex];
	var ccbeans=form.cbeans.options[form.cbeans.selectedIndex];

	types[num]=cctype.value;
	typenames[num]=cctype.text;
	weights[num]=ccweight.value;
	quants[num]=ccquantity.value;
	beans[num]=ccbeans.value;
	price[num]=ccquantity.value*prices[cctype.value][ccweight.value];

	var pprice=append_zeroes(price[num]);
	

	var str="";
	str+="<div class=\"orderwrp\" id=\"order"+num+"\">\n";
	str+="<div class=\"name\">"+cctype.text+"</div>\n";
	str+="<div class=\"bag\">"+ccweight.text+"</div>\n";
	str+="<div class=\"qty\">"+ccquantity.value+"</div>\n";
	str+="<div class=\"grind\">"+ccbeans.text+"</div>\n";
	str+="<div class=\"price\">&euro;"+pprice+"</div>\n";
	str+="<div class=\"remove\"><a href=\"#\" onclick=\"return remove_order("+num+");\" title=\"Enlevez cet article\">&eacute;ffacer</a></div>\n";
	str+="</div>\n\n";

	var rstr= document.getElementById('orderouterwrap').innerHTML;
	rstr+=str;
	document.getElementById('orderouterwrap').innerHTML=rstr;
	num++;
	calculate_totals();
	return false;
}

function getElementsByClassName(oElm, strTagName, strClassName){
var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	    var arrReturnElements = new Array();
	    strClassName = strClassName.replace(/\-/g, "\\-");
	    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	    var oElement;
	    for(var i=0; i<arrElements.length; i++){
	        oElement = arrElements[i];
	        if(oRegExp.test(oElement.className)){
	            arrReturnElements.push(oElement);
	        }
	    }
	    return (arrReturnElements)
	}

function remove_order(numm){
	price[numm]=0;
	quants[numm]=0;
	weights[numm]=0;
	document.getElementById('order'+numm).innerHTML='';
	document.getElementById('order'+numm).style.display='none';
	calculate_totals();
	return false;
}

function calculate_totals(){
	subtotal=0;
	totweight=0;
	for(var i=0;i<num;i++){
		subtotal+=price[i];
		totweight+=quants[i]*weights[i]*225;
	}
	discount=subtotal*0.1;
	discount=Math.round(discount*100)/100;
	document.getElementById('subtotalfigure').innerHTML='&euro;'+append_zeroes(subtotal);
	if(totweight<1000){discount=0}
	document.getElementById('discountfigure').innerHTML='&euro;'+append_zeroes(discount);

	calc_postage();

	total=subtotal-discount+postage;
	total=Math.round(total*100)/100;
	document.getElementById('totalfigure').innerHTML='&euro;'+append_zeroes(total);
}

function calc_postage(inp){
	var maxweight=3000;
	var region = document.getElementById('postregion').selectedIndex;
	if(!(region==0)) maxweight=2000;
	if(totweight>maxweight){
		alert("Warning: vous avez exc\351d\351 le poids applicable \340 votre r\351gion postale ("+maxweight/1000+"kg).");
	}
	var mark;
	if(totweight<=500)mark=0;
	else if(totweight<=1000)mark=1;
	else if(totweight<=2000)mark=2;
	else mark=3;

	postage=post[region][mark];
	document.getElementById('postagefigure').innerHTML='&euro;'+append_zeroes(postage);

}

function append_zeroes(cost){
	var rcost="";
	if(cost%1==0)rcost+=cost+'.00';
	else if((cost*10)%1==0)rcost+=cost+'0';
	else rcost+=cost;

	return rcost.replace('.',',');
}

function val_required(field){
	if(field.value==null||field.value==""){
		document.getElementById("e"+field.name).innerHTML="<br />Champ obligatoire.";
		document.getElementById("l"+field.name).style.color="red";
		ok=false;
	}
	else{
		document.getElementById("e"+field.name).innerHTML="";
		document.getElementById("l"+field.name).style.color="black";
	}
}

function val_both(field,length){
	if(field.value==null||field.value==""){
		document.getElementById("e"+field.name).innerHTML="<br />Champ obligatoire.";
		document.getElementById("l"+field.name).style.color="red";
		ok=false;
	}
	else{
		if(field.value.length > length){
			document.getElementById("e"+field.name).innerHTML="<br />This field must be less than "+length+" characters.";
			document.getElementById("l"+field.name).style.color="red";
			ok=false;
		}
		else{
			document.getElementById("e"+field.name).innerHTML="";
			document.getElementById("l"+field.name).style.color="black";
		}
	}
}

function val_reg(field,length,pattern,mess_name){

	if(field.value==null||field.value==""){
		document.getElementById("e"+field.name).innerHTML="<br />Champ obligatoire.";
		document.getElementById("l"+field.name).style.color="red";
		ok=false;
	}
	else{
		if(field.value.length > length){
			document.getElementById("e"+field.name).innerHTML="<br />Ce champ doit contenir moins de "+length+" caract&egrave;res.";
			document.getElementById("l"+field.name).style.color="red";
			ok=false;
		}
		else{
			var patt=new RegExp(pattern);
			if(!(patt.test(field.value))) {
				document.getElementById("e"+field.name).innerHTML="<br />Ceci n&#39;est pas valide "+mess_name+".";
				document.getElementById("l"+field.name).style.color="red";
				ok=false;
			}
			else{	
				document.getElementById("e"+field.name).innerHTML="";
				document.getElementById("l"+field.name).style.color="black";
			}
		}
	}
}
function val_regtel(field,length,pattern,mess_name){

	if(field.value.length > length){
		document.getElementById("e"+field.name).innerHTML="<br />Ce champ doit contenir moins de "+length+" caract&egrave;res.";
		document.getElementById("l"+field.name).style.color="red";
		ok=false;
	}
	else{
		var patt=new RegExp(pattern);
		if(!(patt.test(field.value))) {
			document.getElementById("e"+field.name).innerHTML="<br />Ceci n&#39;est pas valide "+mess_name+".";
			document.getElementById("l"+field.name).style.color="red";
			ok=false;
		}
		else{	
			document.getElementById("e"+field.name).innerHTML="";
			document.getElementById("l"+field.name).style.color="black";
		}
	}
}

function val_match(fld1,fld2){

	if(!(fld1.value==fld2.value)){
		document.getElementById("e"+fld2.name).innerHTML="Vos adresses mail ne correspondent pas.";
		document.getElementById("l"+fld2.name).style.color="red";
		ok=false;
	}
	else{
		document.getElementById("e"+fld2.name).innerHTML="";
		document.getElementById("l"+fld2.name).style.color="black";
	}
}

function val_order() {
	ok=true;
	with(document.getElementById('payform')){
		if(num==0){
			document.getElementById('etop').innerHTML="Votre panier est vide, v&eacute;rifiez le.";
			window.location='#topform';
			return false;
		}

		val_both(fullname,255);
		val_reg(email,255,'^[a-zA-Z0-9\-_.]+@[a-zA-Z0-9\-_.]+$','email address');
		val_match(email,semail);
		val_regtel(telephone,32,'^$||^[0-9\- ]+$','telephone number');
		val_required(address);
		val_both(postcode,32);
		val_both(cardname,255);
		val_reg(cardnumber,20,'^[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4}$|[0-9]{16}$','card number');
		val_reg(expiry,5,".*",'expiry date');
		val_reg(digits,3,'^[0-9]{3}$','security code');

		if(!ok){
			document.getElementById("etop").innerHTML="Il y a un probl&egrave;me avec quelques-unes des donn&eacute;es, verifiez les S.V.P.";
			window.location="#topform";
		}
		else{
			var poststr="go=2";
			poststr+="&postal_region="+encodeURI(document.getElementById('postregion').selectedIndex);
			poststr+="&full_name="+encodeURI(fullname.value);
			poststr+="&email="+encodeURI(email.value);
			poststr+="&telephone="+encodeURI(telephone.value);
			poststr+="&address="+encodeURI(address.value);
			poststr+="&postcode="+encodeURI(postcode.value);
			poststr+="&name="+encodeURI(cardname.value);
			poststr+="&type="+encodeURI(cardtype.value);
			poststr+="&number="+encodeURI(cardnumber.value);
			poststr+="&expiry="+encodeURI(expiry.value);
			poststr+="&cvv="+encodeURI(digits.value);
			poststr+="&comments="+encodeURI(comments.value);
			poststr+="&subtotal="+encodeURI(append_zeroes(subtotal));
			poststr+="&discount="+encodeURI(append_zeroes(discount));
			poststr+="&postage="+encodeURI(append_zeroes(postage));
			poststr+="&total="+encodeURI(append_zeroes(total));
			var nummm=0;
			for(i=0;i<num;i++){
				if(quants[i]>0){
					poststr+="&coffee_number"+nummm+"="+encodeURI(types[i]);
					poststr+="&coffee_name"+nummm+"="+encodeURI(typenames[i]);
					poststr+="&size"+nummm+"="+encodeURI(weights[i]);
					poststr+="&quantity"+nummm+"="+encodeURI(quants[i]);
					poststr+="&beans"+nummm+"="+encodeURI(beans[i]);
					poststr+="&price"+nummm+"="+encodeURI(append_zeroes(price[i]));
					nummm++;
				}
			}

			poststr+="&num="+encodeURI(nummm);
			makePOSTRequest("ajax/make_order_fra.php",poststr);
		}
	}
	return false;
}

