req = "first_name last_name email addr1 city state zip company phone"
req1 = "first_name last_name email "
phonereq = "Administrator Instructor Professor Researcher Teacher";

var emailFilter=/^.+@.+\..{2,3}$/;
var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/

function handlesXmlHttp()
{
  var ua = navigator.userAgent.toLowerCase();

  if (ua.indexOf("safari") > -1 )
  {
//return false;
    var vindex = ua.indexOf("applewebkit/");
    var vindex2 = ua.indexOf(".",vindex);
    var vindex3 = ua.indexOf(" ",vindex);
    if (vindex2==-1 || vindex3<vindex2)
    {
      vindex2 = vindex3;
    }
    var v = ua.substring(vindex+12,vindex2);
//alert(v);
    return (v>=124);
  }
  return true;
}


function sendemail(submitpage,email,title,country)
{
  if ( !handlesXmlHttp())
  {
    //window.open("ping.php","pingwin","resizble=no, scrollbars=no,width=300,height=400")
    //document.problemset_worksheet.submit();
    return -1;
  }
  if (submitpage!='cdtrialemails.php' && submitpage!='algebratrialemails.php' && submitpage!='algebratrialonlineemails.php' && submitpage!='physicsdlemails.php' && submitpage!='fundamentalgebratrialemails.php') { return -2; }
  var xmlhttp=false;
  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.
   try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
    try {
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
     xmlhttp = false;
    }
   }
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  xmlhttp.open("POST", submitpage,false);
  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlhttp.send('email=' + email + '&title=' + title + '&country=' + country);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4)
    {   
    }   
  }
  //xmlhttp.send(null);
}

function validate(frm){
	fl = false;
	flnotice = document.getElementById("fail");
	lmns = document.forms[frm].elements.length - 1;
	var error = "";
	var titleObj = document.forms[frm].elements["00N70000001uR3E"];
	var ttl = titleObj[titleObj.selectedIndex].text;
	var countryObj = document.forms[frm].elements['country'];
        var country = countryObj[countryObj.selectedIndex].value;
	var fname = "";
	var lname = "";
	var street1 = "";
	var street2 = "";
	var street = "";

	titleval = titleObj.options[titleObj.selectedIndex].value;
	if (titleval == "none" || titleval=='') {
		error += "<li>Please select a title.</li>";
		titleObj.style.background = "yellow";
		fl = true;
	}
	else {titleObj.style.background = "white";}

	for(j=0;j<lmns;j++){
		elm = document.forms[frm].elements[j];
		if(elm.type == "text" && elm.value.length > 70){
			fl = true;
			error += "<li>You have entered too many characters.</li>";
			elm.style.background = "yellow";
		}
		if(elm.name == 'email' && elm.value!=''){
		var emailval = elm.value;
			if (!(emailFilter.test(elm.value))) {
				elm.style.background = "yellow";
				error += "<li>Please enter a valid email address.</li>";
				fl = true;
				var etest = true;
			}
			if (elm.value.match(illegalChars)) {
				elm.style.background = "yellow";
				error += "<li>The email address contains illegal characters.</li>";
				fl = true;
				}
			if (!(!(emailFilter.test(elm.value)) || elm.value.match(illegalChars) )) {
				elm.style.background = "white";
			}
		}
/*		else if(elm.name=="phone" && elm.value == "" && phonereq.indexOf(ttl)!=-1){
			fl = true;
			error += "<li>We require phone numbers of "+ttl+"s to validate them.</li>";
			elm.style.background = "yellow";
		}*/
		else if((elm.name!='phone') && elm.value == "" && req.indexOf(elm.name)!=-1){
			fl = true;
			if(error.indexOf("You have not filled in all the required fields")==-1) error += "<li>You have not filled in all the required fields.  We require this information in order to send you a CD by mail.</li>";
			elm.style.background = "yellow";
			}
		else if (elm.type == 'text' || elm.type=='textarea'){
			elm.style.background = "white";
			}

		// Check field lengths
                if (elm.name == 'email' && elm.value.length>80) {
			fl = true;
			error += "<li>Please enter an email address with fewer than 80 characters.</li>";
		} else if (elm.name == 'company' && elm.value.length>30) {
			fl = true;
			error += "<li>Company names on shipping labels are limited to 30 characters.  Your entry has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'addr1' && elm.value.length>30) {
			fl = true;
			error += "<li>Address lines on shipping labels are limited to 30 characters.  Your address line 1 has " + elm.value.length + " characters.</li>";
			street1 = elm.value;
		} else if (elm.name == 'addr2' && elm.value.length>30) {
			fl = true;
			error += "<li>Address lines on shipping labels are limited to 30 charactesr.  Your address line 2 has " + elm.value.length + " characters.</li>";
			street2 = elm.value;
		} else if (elm.name == 'first_name') {
			fname = elm.value;
		} else if (elm.name == 'first_name') {
			lname = elm.value;
		} else if (elm.name == 'city' && elm.value.length>26) {
			fl = true;
			error += "<li>Cities on shipping labels are limited to 26 characters.  Your city has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'state' && elm.value.length>20) {
			fl = true;
			error += "<li>States on shipping labels are limited to 20 characters.  Your state has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'phone' && elm.value.length>20) {
			fl = true;
			error += "<li>Phone numbers on shipping labels are limited to 20 characters.</li>  Your phone number has " + elm.value.length + " characters.";
		}

		if (elm.name == 'addr1') { street1 = elm.value; }
		if (elm.name == 'addr2') { street2 = elm.value; }

		} // for

		if (fname.length + lname.length>39) {
			error += "<li>Please enter a full name with fewer than 39 characters.</li>";
		}
		if (street1.length==0) {
			street = street2;
		} else if (street2.length==0) {
			street = street1;
		} else {
			street = street1 + "\n" + street2;
		}
		var streetobj = document.forms[frm].elements["street"];
		streetobj.value = street;
	if(fl) {
		flnotice.innerHTML = error;
		return false;
	}
	else {
//flnotice.innerHTML = "Looks good!";
//return false;
		//document.forms[frm].submit();
		sendemail('cdtrialemails.php',emailval,titleval,country);
		return true;
	}
}

function validateAlgebraTrial(frm){
	fl = false;
	flnotice = document.getElementById("fail");
	lmns = document.forms[frm].elements.length - 1;
	var error = "";
	var titleObj = document.forms[frm].elements["00N70000001uR3E"];
	var ttl = titleObj[titleObj.selectedIndex].text;
	var countryObj = document.forms[frm].elements['country'];
        var country = countryObj[countryObj.selectedIndex].value;
	var fname = "";
	var lname = "";
	var street1 = "";
	var street2 = "";
	var street = "";

	titleval = titleObj.options[titleObj.selectedIndex].value;
	if (titleval == "none" || titleval=='') {
		error += "<li>Please select a title.</li>";
		titleObj.style.background = "yellow";
		fl = true;
	}
	else {titleObj.style.background = "white";}

	for(j=0;j<lmns;j++){
		elm = document.forms[frm].elements[j];
		if(elm.type == "text" && elm.value.length > 70){
			fl = true;
			error += "<li>You have entered too many characters.</li>";
			elm.style.background = "yellow";
		}
		if(elm.name == 'email' && elm.value!=''){
		var emailval = elm.value;
			if (!(emailFilter.test(elm.value))) {
				elm.style.background = "yellow";
				error += "<li>Please enter a valid email address.</li>";
				fl = true;
				var etest = true;
			}
			if (elm.value.match(illegalChars)) {
				elm.style.background = "yellow";
				error += "<li>The email address contains illegal characters.</li>";
				fl = true;
				}
			if (!(!(emailFilter.test(elm.value)) || elm.value.match(illegalChars) )) {
				elm.style.background = "white";
			}
		}
/*		else if(elm.name=="phone" && elm.value == "" && phonereq.indexOf(ttl)!=-1){
			fl = true;
			error += "<li>We require phone numbers of "+ttl+"s to validate them.</li>";
			elm.style.background = "yellow";
		}*/
		else if((elm.name!='phone') && elm.value == "" && req.indexOf(elm.name)!=-1){
			fl = true;
			if(error.indexOf("You have not filled in all the required fields")==-1) error += "<li>You have not filled in all the required fields.  We require this information in order to help us verify your credentials.</li>";
			elm.style.background = "yellow";
			}
		else if (elm.type == 'text' || elm.type == 'textarea'){
			elm.style.background = "white";
			}

		if (frm=='algform') {
		// Check field lengths
                if (elm.name == 'email' && elm.value.length>80) {
			fl = true;
			error += "<li>Please enter an email address with fewer than 80 characters.</li>";
		} else if (elm.name == 'company' && elm.value.length>30) {
			fl = true;
			error += "<li>Company names on shipping labels are limited to 30 characters.  Your entry has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'addr1' && elm.value.length>30) {
			fl = true;
			error += "<li>Address lines on shipping labels are limited to 30 characters.  Your address line 1 has " + elm.value.length + " characters.</li>";
			street1 = elm.value;
		} else if (elm.name == 'addr2' && elm.value.length>30) {
			fl = true;
			error += "<li>Address lines on shipping labels are limited to 30 charactesr.  Your address line 2 has " + elm.value.length + " characters.</li>";
			street2 = elm.value;
		} else if (elm.name == 'first_name') {
			fname = elm.value;
		} else if (elm.name == 'first_name') {
			lname = elm.value;
		} else if (elm.name == 'city' && elm.value.length>26) {
			fl = true;
			error += "<li>Cities on shipping labels are limited to 26 characters.  Your city has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'state' && elm.value.length>20) {
			fl = true;
			error += "<li>States on shipping labels are limited to 20 characters.  Your state has " + elm.value.length + " characters.</li>";
		} else if (elm.name == 'phone' && elm.value.length>20) {
			fl = true;
			error += "<li>Phone numbers on shipping labels are limited to 20 characters.</li>  Your phone number has " + elm.value.length + " characters.";
		}
		} // if algform

		if (elm.name == 'addr1') { street1 = elm.value; }
		if (elm.name == 'addr2') { street2 = elm.value; }


		}


		if (frm=='algform') {
			if (fname.length + lname.length>39) {
				error += "<li>Please enter a full name with fewer than 39 characters.</li>";
			}
		} // if algform

		if (street1.length==0) {
			street = street2;
		} else if (street2.length==0) {
			street = street1;
		} else {
			street = street1 + "\n" + street2;
		}
		var streetobj = document.forms[frm].elements["street"];
		streetobj.value = street;

	if(fl) {
		flnotice.innerHTML = error;
		return false;
	}
	else {
//flnotice.innerHTML = "Looks good!";
//return false;
		//document.forms[frm].submit();
		if (frm=='fundalgform') {
			sendemail('fundamentalgebratrialemails.php',emailval,titleval,country);
		} else if (frm=='algform') {
			sendemail('algebratrialemails.php',emailval,titleval,country);
			} else {
			sendemail('algebratrialonlineemails.php',emailval,titleval,country);
		}

		return true;
	}
}

function validate1(frm){
	var error = "";
	fl = false;
	flnotice = document.getElementById("fail");
	lmns = document.forms[frm].elements.length - 1;
	var titleObj = document.forms[frm].elements["00N70000001uR3E"];
	var ttl = titleObj[titleObj.selectedIndex].text;
	var countryObj = document.forms[frm].elements['country'];
        var country = countryObj[countryObj.selectedIndex].value;
	titleval = titleObj.options[titleObj.selectedIndex].value;
	for(j=0;j<lmns;j++){
		elm = document.forms[frm].elements[j];
		if(elm.type == "text" && elm.value.length > 70){
			fl = true;
			error += "<li>You have entered too many characters.</li>";
			elm.style.background = "yellow";
		}
		if(elm.name == 'email' && elm.value!=''){
		var emailval = elm.value;
			if (!(emailFilter.test(elm.value))) {
				elm.style.background = "yellow";
				error += "<li>Please enter a valid email address.</li>";
				fl = true;
				}
			if (elm.value.match(illegalChars)) {
				elm.style.background = "yellow";
				error += "<li>The email address contains illegal characters.</li>";
				fl = true;
				}
			}
		if((elm.name!='phone')&&elm.value == "" && req1.indexOf(elm.name)!=-1){
			fl = true;
			elm.style.background = "yellow";
			}
		if (elm.name == 'addr1') { street1 = elm.value; }
		if (elm.name == 'addr2') { street2 = elm.value; }
		} // for
		if (street1.length==0) {
			street = street2;
		} else if (street2.length==0) {
			street = street1;
		} else {
			street = street1 + "\n" + street2;
		}
		var streetobj = document.forms[frm].elements["street"];
		streetobj.value = street;

	if(fl) {
		error += "<li>You have not filled in all the required fields. Please fill in all highlighted fields.</li>";
		flnotice.innerHTML = error;
		return false;
	}
	else {//document.forms[frm].submit();
		sendemail('physicsdlemails.php',emailval,titleval,country);
		return true;
	}

}


function checkaddr(e){
//for the algebra download we want to gather more information about certain types of users.
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;

	titleval = targ.options[targ.selectedIndex].text;
    if (titleval == "") titleval = targ.options[title.selectedIndex].text;
	if (titleval != "none") {
		targ.style.background = "white";
	}

var adusr = ["Home School",
			 "Student",
			 "Parent"];
	if(targ.value) ttl = targ.value;
	else ttl = targ[targ.selectedIndex].innerHTML;
			document.getElementById("address1").disabled=false;
			document.getElementById("address2").disabled=false;
			document.getElementById("zipcode1").disabled=false;
			document.getElementById("address1").style.background="#ffffff";
			document.getElementById("address2").style.background="#ffffff";
			document.getElementById("zipcode1").style.background="#ffffff";

	for (var i = 0; i < adusr.length; i ++){
		if(adusr[i]==ttl){
			document.getElementById("address1").disabled=true;
			document.getElementById("address2").disabled=true;
			document.getElementById("zipcode1").disabled=true;
			document.getElementById("address1").style.background="#cccccc";
			document.getElementById("address2").style.background="#cccccc";
			document.getElementById("zipcode1").style.background="#cccccc";
		}

	}
}

//check if phone field and title select then set title change event
setTimeout("setEvent()",1000);
function setEvent(){
	var selObj = document.getElementById('title');
	if (selObj!=null){
		var phObj = selObj.form.elements['phone'];
		if (phObj != null){
			selObj.onchange = showHidePhone;
		}
	}
}
function showHidePhone(e){
	var selObj = document.getElementById('title');
	var ttl = selObj[selObj.selectedIndex].text;
	if (phonereq.indexOf(ttl)!=-1){
		document.getElementById('phnLabel').style.display = "inline";
		document.getElementById('phnInput').style.display = "inline";
	}
	else {
		document.getElementById('phnLabel').style.display = "none";
		document.getElementById('phnInput').style.display = "none";
		document.getElementById('phnInput').value = "";
	}
}
