function checkrequired(idx) 
{
	var pass=true; var email=true;
	if (document.images) 
	{
		for (i=0;i<document.forms[idx].length;i++) 
		{
			var tempobj=document.forms[idx].elements[i];
			if (tempobj.name.indexOf("billing_")==0 || tempobj.name.indexOf("requird_")==0) 
			{
				if (tempobj.value == "") { pass=false; break; }
				else if (tempobj.name == "billing_Email"|| tempobj.name == "requird_Email")
				{
					email = emailCheck(tempobj.value);
					if (!email) 
					{
						pass=false; 
						alert("Your email address appears to be invalid. Please check it and enter your correct address.");
						tempobj.focus();
						break; 
					}
				}
				else if ( tempobj.name == "billing_Postal_Zip_Code" && tempobj.value=="" 
				&& document.forms[idx].elements[i+1].checked == false) 
        		{   pass=false; break; }        
        		else if  ( (tempobj.name != "billing_Postal_Zip_Code" && tempobj.value=="")
				|| (tempobj.type.indexOf("s")>-1 && tempobj.selectedIndex==0) )
				{ 	pass=false; break;	}
			}
	    }
	}
	if (email && !pass) 
	{
		shortFieldName=tempobj.name.substring(8,30).toUpperCase();
		alert("Please make sure the "+shortFieldName+" field was properly completed.");
		tempobj.focus();
	}
	else if (pass && email && document.forms[idx].send)
	{	
		saveContactCookie('contact'); document.forms[idx].submit();  
	}
	else if (pass && email && !document.forms[idx].send)
	{	
		document.forms[idx].submit();  
	}
}

function validateCC(idx)
{
	var temp = document.forms[idx];
	var pass = true; var card = false; var card_date = false;
	var paymethod =	temp.payment_type.value;
	if (!paymethod)
	{
	 	pass=false;
		alert("Please check a method of payment.");
	}
	if (pass && paymethod!="CHEQUE")
	{
		if (temp.card_number.value == "")
		{
			pass=false;
			alert("Please enter a credit card number.");
			temp.card_number.focus();
		}
		else var card = cardCheck(temp.card_number.value);
		if (pass && !card) 
		{
			pass=false;
			alert("You have entered an invalid credit card number. Please check the number and enter it again.");
			temp.card_number.focus();
		}
		if (pass && temp.security_code.value =="")
		{
			pass=false;
			alert("Please enter your security code.");
			temp.security_code.focus();
		}		
		// check the card expiry date
		var yeer = temp.exp_year.value;
		var month = temp.exp_month.value;
		card_date=dateCheck(yeer,month);
		if (pass && !card_date)
		{
			pass=false;
			alert("Your credit card appears to have expired. Please check your card and set the correct expiry date.");
		}
	}
	else if (paymethod =="CHEQUE")
	{
		pass=true; card=true; card_date=true;
	}
	if (pass && card && card_date)
	{	
		wopener('','receipt','600','600');
		document.forms[idx].submit(); 
		document.location="http://www.eduardklassen.com/order_done.html"; 
	}
}


function cardCheck(CardNumber)
{
	var no_digit = CardNumber.length;
	var oddoeven = no_digit & 1;
	var sum = 0;
	for (var count = 0; count < no_digit; count++) 
	{
		var digit = parseInt(CardNumber.charAt(count));
		if (!((count & 1) ^ oddoeven)) 
		{
			digit *= 2;  
			if (digit > 9) digit -= 9;
		}
		sum += digit;
	}
	if (sum % 10 == 0) return true;
	else
	// You can make this test live by removing the // on the next line and putting // on the one after.
	return false;
	//return true;
}	

function dateCheck(yeer,month)
{
	var today = new Date();
	var m = today.getMonth()+1;
	var yr = today.getFullYear();
	var year = "20" + yeer;
	if ((year == yr && month >= m) || year > yr ) 
		return true;
	else return false;	
}

function clearShipping()
{
	if (document.forms[0].ship_address.checked)
	{
		var startfield = "shipping_Contact_Name";
		var endfield = "send";
		var flen = document.forms[0].length;
		for (var x = 0 ; x <= flen ; x ++) 
		{
			if (document.forms[0].elements[x].name == startfield) 
			{ 	var start = x; 	}
			if (document.forms[0].elements[x].name == endfield) 
			{ 	var endit = x; break;	}
		}
		for (var i = start; i < endit; i ++)  
		{ document.forms[0].elements[i].value=""; }
	}
}

function wopener(wurl,wname,wwidth,wheight)
{
newwindow = window.open(wurl,wname,"toolbar=yes,status=no,menubar=yes,scrollbars=yes,resizable=yes,width="+wwidth+",height="+wheight+"")
}

// subroutine to check for valid email address
// This script and many more are available free online at 
// The JavaScript Source!! http://javascript.internet.com 

function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
			return false
		    }
	    }
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	    return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) {
	   return false
	}
	if (len<2) {
	   return false
	}
	return true;
}