	function trim(str, chars) {
		return ltrim(rtrim(str, chars), chars);
	}
	
	function ltrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	}
	
	function rtrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	}
	
	function strpos (haystack, needle, offset){
	    // http://kevin.vanzonneveld.net
	    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +   improved by: Onno Marsman    
	    // +   bugfixed by: Daniel Esteban
	    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);
	    // *     returns 1: 14
	 
	    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
	    return i === -1 ? false : i;
	}
	
	function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		
		if(strpos(str,'+'+'')){
		   alert("Email cannot contain the (+) sign.")
		   return false
		}
		
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

 		 return true					
	}
	function ajaxFunction(update_div,form_number)
	{
		
		var xmlhttp;
		if (window.XMLHttpRequest)
		  {
		  // code for IE7+, Firefox, Chrome, Opera, Safari
		  xmlhttp=new XMLHttpRequest();
		  }
		else if (window.ActiveXObject)
		  {
		  // code for IE6, IE5
		  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		  }
		else
		  {
		  alert("Your browser does not support XMLHTTP!");
		  }
		xmlhttp.onreadystatechange=function()
		{
			if(xmlhttp.readyState==4 ){
					document.getElementById("loading"+form_number).innerHTML = "";
					document.getElementById(update_div).innerHTML = xmlhttp.responseText;	
			}else{
				document.getElementById("loading"+form_number).innerHTML = "Processing...";
			}
		}
		var email = document.getElementById("email"+form_number).value;
		var first_name = document.getElementById("first_name"+form_number).value;
		var last_name = document.getElementById("last_name"+form_number).value;
		var news  = "no";
		if( document.getElementById("news"+form_number).checked == true) news = "yes";
		xmlhttp.open("GET","signup.php?email="+email+"&first_name="+first_name+"&last_name="+last_name+"&news="+news,true);
		xmlhttp.send(null);
	}
	function validate_form(update_div,form_number){
		
		document.getElementById("loading"+form_number).innerHTML = "Processing...";
		if(trim(document.getElementById("email"+form_number).value) == ""){
			alert("Please enter your email!");
			document.getElementById("loading"+form_number).innerHTML = "";
			document.getElementById("email"+form_number).focus();
			return false;
		}
		if(echeck(document.getElementById("email"+form_number).value) == false){
			alert("Please enter a valid email!");
			document.getElementById("loading"+form_number).innerHTML = "";
			document.getElementById("email"+form_number).focus();
			return false;
		}
		if(trim(document.getElementById("first_name"+form_number).value) == ""){
			alert("Please enter your first name!");
			document.getElementById("loading"+form_number).innerHTML = "";
			document.getElementById("first_name"+form_number).focus();
			return false;
		}
		if(trim(document.getElementById("last_name"+form_number).value) == ""){
			alert("Please enter your last name!");
			document.getElementById("loading"+form_number).innerHTML = "";
			document.getElementById("last_name"+form_number).focus();
			return false;
		}
		return true;
		
	}