		function MM_swapImgRestore() { //v3.0
		  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
		}
		
		function MM_preloadImages() { //v3.0
		  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
		}
		
		function MM_findObj(n, d) { //v4.01
		  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
		  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
		  if(!x && d.getElementById) x=d.getElementById(n); return x;
		}
		
		function MM_swapImage() { //v3.0
		  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
		   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
		}
		
		function ValidateAddReviewForm(){
			if (!document.getElementById('rating').value) {
				texterror = "Please select your rating (1 to 5)";
				alert(texterror);
				return false;
			}
			if (!document.getElementById('summary').value) {
				texterror = "Please enter a title for your review";
				alert(texterror);
				return false;
			}
			if (!document.getElementById('review').value) {
				texterror = "Please type your review";
				alert(texterror);
				return false;
			}
			
			return true;
		
		}
		
		
			
		function ValidatePaymentForm(){
			if (!document.getElementById('fullname').value) {
				texterror = "Please type your full name";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('address').value) {
				texterror = "Please type your address";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('zipcode').value) {
				texterror = "Please type your postal/zip code";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('province').value) {
				texterror = "Please type your state/province";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('expy').value) {
				texterror = "Please select credit card expiry year";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('expm').value) {
				texterror = "Please select credit card expiry month";
				alert(texterror);
				return false;
			}	
			if (!document.getElementById('cvv2').value 
				|| !isNumeric(document.getElementById('cvv2').value) || 
				document.getElementById('cvv2').value.length<3) {
				texterror = "Please type your cvv2 code and make sure it has the last 3 digits.";
				alert(texterror);
				return false;
			}	
			
			
			if (!document.getElementById('ccno').value 
				|| !isNumeric(document.getElementById('ccno').value) 
				|| document.getElementById('ccno').value.length<14
				|| !mod10(document.getElementById('ccno').value.length)) {
				texterror = "Please provide a valid credit card number.";
				alert(texterror);
				return true;
				return false;
			}	

			
			return true;
		}
		
		function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
				var ar = new Array( cardNumber.length );
				var i = 0,sum = 0;
			
			
			    	for( i = 0; i < cardNumber.length; ++i ) {
			    		ar[i] = parseInt(cardNumber.charAt(i));
			    	}
			    	for( i = ar.length -2; i >= 0; i-=2 ) { // you have to start from the right, and work back.
			    		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
			    		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
			    	}										 // if the double digit is > 9, ADD those individual digits together 
			
			
			        	for( i = 0; i < ar.length; ++i ) {
			        		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
			        	}
			        	return (((sum%10)==0)?true:false);	 	
			    }


        function expired( month, year ) {
        	var now = new Date();							// this function is designed to be Y2K compliant.
        	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
        	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute & second of expired month
        	if( now.getTime() < expiresIn.getTime() ) return false;
        	return true;									// then we get the miliseconds, and do a long integer comparison
	    }


    
                                            
		
		function isNumeric(sText){
			   var ValidChars = "0123456789.";
			   var Char;
			   for (i = 0; i < sText.length; i++){ 
			      Char = sText.charAt(i); 
			      if (ValidChars.indexOf(Char) == -1){
			         return false
			      }
			   }
			   return true;
			   
		}
			
   
		function ValidateUpdateDetailsForm(){
						
			if (!document.getElementById('email1').value || !checkEmail(document.getElementById('email1').value)) {
				texterror = "Invalid e-mail address.";
				alert(texterror);
				return false;
			}
				
			if (document.getElementById('email1').value!=document.getElementById('email2').value) {
				texterror = "Please check email addresses!";
				alert(texterror);
				return false;
			}
		
			if (!document.getElementById('firstname').value) {
				texterror = "Please type your first name";
				alert(texterror);
				return false;
			}	
			
			if (!document.getElementById('lastname').value) {
				texterror = "Please type your last name";
				alert(texterror);
				return false;
			}	
				
			if (!document.getElementById('address1').value) {
				texterror = "Please type your address";
				alert(texterror);
				return false;
			}	
			
			if (!document.getElementById('city').value) {
				texterror = "Please type your city";
				alert(texterror);
				return false;
			}	
			
			if (document.getElementById('country').value==''){
				texterror = "Please choose your country";
				alert(texterror);
				return false;
			} else {
				if (document.getElementById('country').value=='United States' && !document.getElementById('state').value) {
					texterror = "Please choose your state if you're in USA";
					alert(texterror);
					return false;
				}	
			
				if (document.getElementById('country').value!='United States' && !document.getElementById('province').value) {				texterror = "Please type your province if you're not in USA";
					alert(texterror);
					return false;
				}
				
				
			}
		
			if (!document.getElementById('zipcode').value) {
				texterror = "Please type your postal/zip code";
				alert(texterror);
				return false;
			}	
						
	//		if (!document.getElementById('dayphone').value) {
	//			texterror = "Please type your daytime phone";
	//			alert(texterror);
	//			return false;
	//		}
			
			if (!document.getElementById('eveningphone').value) {
				texterror = "Please type your evening phone";
				alert(texterror);
				return false;
			}
			return true;
		}
		
		function ValidateRecoverPasswordForm(){
			if (!document.getElementById('recoverpassword').value) {
				texterror = "Please type your e-mail address to recover your password.";
				alert(texterror);
				return false;
			}
			return true;
		}
		
		function ValidateUpdatePasswordForm(){
		
			if (!document.getElementById('password1').value || !document.getElementById('password2').value) {
				texterror = "Please type twice your password";
				alert(texterror);
				return false;
			}
				
			if (document.getElementById('password1').value!=document.getElementById('password2').value) {
				texterror = "The verification password you typed doesn't match.";
				alert(texterror);
				return false;
			}
						
			if (!document.getElementById('password1').value || !document.getElementById('password2').value) {
				texterror = "Please type twice your password";
				alert(texterror);
				return false;
			}
			return true;
			
		}
		
		function ValidateSearchForm(){
			var texterror = "";
			return true;
			
			/*
			if (document.getElementById('calling_from').value!='' && document.getElementById('calling_from_number').value==''){
			    texterror = "Please choose country or input phone number from where you'll call";
			    alert(texterror);
			    return false;
			}*/
		
		}
		


		function ValidateContactForm(){
			var texterror = "";
			
			if (!document.getElementById('email1').value || !checkEmail(document.getElementById('email1').value)) {
				texterror = "Invalid e-mail address.";
				alert(texterror);
				return false;
			}
			if (!document.getElementById('firstname').value) {
				texterror = "Please type your first name";
				alert(texterror);
				return false;
			}	
			
			if (!document.getElementById('lastname').value) {
				texterror = "Please type your last name";
				alert(texterror);
				return false;
			}	
				
		return true;
		}

		function ValidateRegistrationForm(){
			var texterror = "";
			
			if (!document.getElementById('email1').value || !checkEmail(document.getElementById('email1').value)) {
				texterror = "Invalid e-mail address.";
				alert(texterror);
				return false;
			}
				
			if (document.getElementById('email1').value!=document.getElementById('email2').value) {
				texterror = "The verification email you typed doesn't match.";
				alert(texterror);
				return false;
			}
		
			if (!document.getElementById('password1').value || !document.getElementById('password2').value) {
				texterror = "Please type twice your password";
				alert(texterror);
				return false;
			}
				
			if (document.getElementById('password1').value!=document.getElementById('password2').value) {
				texterror = "The verification password you typed doesn't match.";
				alert(texterror);
				return false;
			}
						
			if (!document.getElementById('password1').value || !document.getElementById('password2').value) {
				texterror = "Please type twice your password";
				alert(texterror);
				return false;
			}
					
			if (!document.getElementById('firstname').value) {
				texterror = "Please type your first name";
				alert(texterror);
				return false;
			}	
			
			if (!document.getElementById('lastname').value) {
				texterror = "Please type your last name";
				alert(texterror);
				return false;
			}	
				
			if (!document.getElementById('address1').value) {
				texterror = "Please type your address";
				alert(texterror);
				return false;
			}	
			
			if (!document.getElementById('city').value) {
				texterror = "Please type your city";
				alert(texterror);
				return false;
			}	
			
			if (document.getElementById('country').value==''){
				texterror = "Please choose your country";
				alert(texterror);
				return false;
			} else {
				if (document.getElementById('country').value=='United States' && !document.getElementById('state').value) {
					texterror = "Please choose your state if you're in USA";
					alert(texterror);
					return false;
				}	
			
				if (document.getElementById('country').value!='United States' && !document.getElementById('province').value) {				texterror = "Please type your province if you're not in USA";
					alert(texterror);
					return false;
				}
			}
		
			if (!document.getElementById('zipcode').value) {
				texterror = "Please type your postal/zip code";
				alert(texterror);
				return false;
			}	
						
//			if (!document.getElementById('dayphone').value) {
//				texterror = "Please type your daytime phone";
//				alert(texterror);
//				return false;
//			}
			
			if (!document.getElementById('eveningphone').value) {
				texterror = "Please type your evening phone";
				alert(texterror);
				return false;
			}
			
			if (!document.getElementById('terms').checked) {
				texterror = "Please make sure you've read our terms and conditions and please thick the checkbox to agree";
				alert(texterror);
				return false;
			}
			
			return true;
		}
		
		
		function checkEmail(str) {
		
				var at="@"
				var dot="."
				var lat=str.indexOf(at)
				var lstr=str.length
				var ldot=str.indexOf(dot)
				if (str.indexOf(at)==-1){
				   return false
				}
		
				if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
				   return false
				}
		
				if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
				    return false
				}
		
				 if (str.indexOf(at,(lat+1))!=-1){
				    return false
				 }
		
				 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
				    return false
				 }
		
				 if (str.indexOf(dot,(lat+2))==-1){
				    return false
				 }
				
				 if (str.indexOf(" ")!=-1){
				    return false
				 }
		
		 		 return true					
		}
		

		
		//Ajax functions
		
		function createRequestObject() {
		    var ro;
		    var browser = navigator.appName;
		    if(browser == "Microsoft Internet Explorer"){
		        ro = new ActiveXObject("Microsoft.XMLHTTP");
		    }else{
		        ro = new XMLHttpRequest();
		    }
		    return ro;
		}
		
		var http = createRequestObject();
		
		function voteReq(id, action,rating) {
		    http.open('get', 'rpc.php?action='+action+'&id='+id+'&rating='+rating);
		    http.onreadystatechange = handleResponse;
		    http.send(null);
		}
		
		function handleResponse() {
		    if(http.readyState == 4){
		        var response = http.responseText;
		        var update = new Array();

		
		        if(response.indexOf('|' != -1)) {
		            update = response.split('|');
		            alert("Your vote has been recorded\r\nThank you!");
		            displayRating(update[0],update[1]);
		        }
		    }
		}
		
		function displayRating(rating,id){
			divContent = "";
			for (i=0;i<5;i++){
				if (i+1<=rating)
					divContent += "<a href=\"javascript:voteReq('"+id+"','ratecard',"+(i+1)+")\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('ImageStar"+i+"','','images/star_vote.jpg',1)\"><img src=\"images/star_full.jpg\" name=ImageStar"+i+"  border=0></a>";
				else			
					divContent += "<a href=\"javascript:voteReq('"+id+"','ratecard',"+(i+1)+")\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('ImageStar"+i+"','','images/star_vote.jpg',1)\"><img src=\"images/star_empty.jpg\" name=ImageStar"+i+"  border=0></a>";
			}
			document.getElementById('ratingContent').innerHTML = divContent;
		
		}