/* ************************************************
 * Script: register.js
 * --------------------
 *
 * AJAX based navigation for:
 * loggedin, post and thanks pages
 * for Posting a Sighting
 **************************************************/
 // Variables for Sightings
 var xmlHttp;
 var divTagID;

 // Do Register Action
 function doRegister(url,queryString,divTagIDIn) {
   /*
   alert("URL = " + url + "\n" +
         "queryString = " + queryString + "\n" +
         "divTagIDIn = " + divTagIDIn);
   */
   divTagID = divTagIDIn;
   if (window.ActiveXObject) {
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   } else {
     xmlHttp = new XMLHttpRequest();
   }
   xmlHttp.open("POST",url,true);
   xmlHttp.onreadystatechange = handleStateChange;
   xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
   xmlHttp.send(queryString);
 }

 // Handle State Change
 function handleStateChange() {
   //alert("IN HANDLE STATE CHANGE");
   if (xmlHttp.readyState == 4) { // COMPLETE
     if (xmlHttp.status == 200) { // SUCCESS
       var result = xmlHttp.responseText;
       //alert("result="+result);
       var response = document.getElementById(divTagID);
       if (response.hasChildNodes()) {
         response.removeChild(response.childNodes[0]);
       }
       response.innerHTML = result;
     } else { // FAILURE
       document.location = "/account/register/index_notavailable.jsp";
     }
   }
 }

 // Validate Register Form
function validateRegister(subPage, edition) {
	var errors = "";
	var edition = edition.toLowerCase();
	var minimumAge = {
		us:13,
		uk:16
	}
	var year = document.form1.year.options[document.form1.year.selectedIndex].value;
	var month = document.form1.month.options[document.form1.month.selectedIndex].value;
	var daymonth = document.form1.daymonth.options[document.form1.daymonth.selectedIndex].value;

	if (subPage == "register") {
		if(edition =="uk") {
			if(!document.form1.privacypolicy.checked) {
				errors += "; In order to register, you must read and agree to the terms of the Privacy Policy by selecting the checkbox at the bottom of the page.";
			}
		}
		if(checkAge(minimumAge[edition],year,month,daymonth) == false) {
			errors += "; Sorry, but we are unable to register you at this time";
		}
	}

   if (subPage == "register" && (checkRegisterElement("Nickname") != "")) errors += ";"+checkRegisterElement("Nickname");
   if (checkRegisterElement("Email") != "") errors += ";"+checkRegisterElement("Email");
   if (checkRegisterElement("EmailA") != "") errors += ";"+checkRegisterElement("EmailA");
   if (checkValidEmail("Email") != "") errors += ";"+checkValidEmail("Email");
   if (checkRegisterElementsEqual("Email","EmailA") != "") errors += ";"+checkRegisterElementsEqual("Email","EmailA");
   if (checkRegisterElement("Pass") != "") errors += ";"+checkRegisterElement("Pass");
   if (checkRegisterElement("PassA") != "") errors += ";"+checkRegisterElement("PassA");
   if (checkRegisterElementsEqual("Pass","PassA") != "") errors += ";"+checkRegisterElementsEqual("Pass","PassA");
   if (checkRegisterElement("Fname") != "") errors += ";"+checkRegisterElement("Fname");
   if (checkRegisterElement("Lname") != "") errors += ";"+checkRegisterElement("Lname");
   if (checkRegisterElement("Zip") != "") errors += ";"+checkRegisterElement("Zip");
   if (checkRadioElement("gender") != "") errors += ";"+checkRadioElement("gender");
   if (errors != "") {
     //alert("Errors = " + errors);
     doRegister("/account/register/includes/jsp/prt_error_messages.jsp","errors="+errors,"register_errors");
     window.location.hash="errors";
   } else {
     var queryString = "&SubPage="+subPage;
     queryString +="&Nickname="+document.form1.txtNickname.value;
     queryString +="&Email="+document.form1.txtEmail.value;
     queryString +="&Password="+document.form1.txtPass.value;
     queryString +="&Fname="+document.form1.txtFname.value;
     queryString +="&Lname="+document.form1.txtLname.value;
     for (var i=0;i<document.form1.gender.length;i++) {
       if (document.form1.gender[i].checked) {
         queryString +="&Gender="+document.form1.gender[i].value;
         break;
       }
     }
     var ind=document.form1.txtCountry.selectedIndex;
     queryString += "&Country="+document.form1.txtCountry.options[ind].value;
     queryString +="&Zip="+document.form1.txtZip.value;
     ind=document.form1.year.selectedIndex;
     queryString += "&year="+document.form1.year.options[ind].value;
     ind=document.form1.month.selectedIndex;
     queryString += "&month="+document.form1.month.options[ind].value;
     ind=document.form1.daymonth.selectedIndex;
     queryString += "&daymonth="+document.form1.daymonth.options[ind].value;
     if (edition.toLowerCase() !="uk"){
	     var phone=document.form1.txtAreaCode.value+document.form1.txtNumber1.value+document.form1.txtNumber2.value;
	     //var phone=document.form1.txtPhone.value;
	     queryString +="&Phone="+phone;
     }
     if (subPage == "register") {
	     if (edition.toLowerCase() =="uk"){
	       if (document.form1.uk_newsletter.checked) {
	         queryString +="&uk_newsletter=yes";
	       } else {
	         queryString +="&uk_newsletter=no";
	       }
	       if (document.form1.usrshareinfo.checked) {
	         queryString +="&usrshareinfo=yes";
	       } else {
	         queryString +="&usrshareinfo=no";
	       }

	     }
	     else {

			if (document.form1.weekend){// if element exists first, then see if it is checked
				if (document.form1.weekend.checked) {
	         	queryString +="&weekend=yes";
	      	}
			}// end if element exists
			  else {
	         queryString +="&weekend=no";
	       }
			 if (document.form1.awful){ // if element exists first, then see if it is checked
			 	if (document.form1.awful.checked) {
	        		queryString +="&awful=yes";
	       	}
			 }else {
	         queryString +="&awful=no";
	       }
		   if (document.form1.breaking){// if element exists first, then see if it is checked
				if (document.form1.breaking.checked) {
	         	queryString +="&breaking=yes";
	      	}
			}// end if element exists
			  else {
	         queryString +="&breaking=no";
	       }
       }
       queryString +="&masterList="+document.form1.masterList.value;

     } else if (subPage == "profile") {
       queryString += "&Bio="+document.form1.txtBio.value;
       queryString += "&HomePage="+document.form1.txtURL.value;
       queryString += "&City="+document.form1.txtCity.value;
       queryString += "&Occupation="+document.form1.txtOcc.value;
     }
     //alert("phone="+phone);
     //alert("Show QueryString="+queryString);
     window.location.hash="reginfo_top";
     doRegister("/account/register/includes/jsp/ajax_regconfirm.jsp",queryString,"register_left");
     //document.location = "/account/register/includes/jsp/nonajax_regconfirm.jsp?"+queryString;
   }
 }

 // Check Registered Element
 function checkRegisterElement(eleName) {
   var error = "";
   var eleVal = "";

   eleVal = eval('"txt" + eleName;');
   eleVal = document.getElementById(eleVal).value;
   if (eleVal == "") {
	     error = eleName + "Required";
	}
   return error;
 }

 // Check if two elements are equal
 function checkRegisterElementsEqual(eleNameA,eleNameB) {
   var error = "";
   var eleValA = "";
   var eleValB = "";

   eleVarA = eval('"txt"+eleNameA;');
   eleValB = eval('"txt"+eleNameB;');

   eleValA = document.getElementById(eleVarA).value;
   eleValB = document.getElementById(eleValB).value;
   if (eleValA != eleValB) {
     error = eleNameA + "-" + eleNameB + "NotEqual";
   }
   return error;
 }

 // Check Radio Element
 function checkRadioElement(eleName) {
   var checked = false;
   var error = ""
   var eleObj = null;

   //eleObj = eval('eleName;');
   for (var i=0;i<document.form1.gender.length;i++) {
     if (document.form1.gender[i].checked) {
       checked = true;
       break;
     }
   }
   if (!checked) {
     error = eleName + "NotChecked";
   }
   return error;
 }

 // Do Credentials
 function doCredential(credential,credvalue) {
   var tag = "credential_"+credential;
   var queryString = "credential="+credential+"&"+credential+"Cred="+credvalue;
   doRegister("/account/register/includes/jsp/ajax_user_credentials.jsp",queryString,tag);
 }

 // check for valid email
 function checkValidEmail(eleName) {
   var error = "";
   var invalidChars = " /:,;";
   var email = "";

   email = eval('"txt" + eleName;');
   email = document.getElementById(email).value;
    if (email == "") { // cannot be empty
        error = "InvalidEmail";
    }

    for (i=0; i<invalidChars.length; i++) {
        // does it contain any invalid characters?
        badChar = invalidChars.charAt(i);
        if (email.indexOf(badChar,0) > -1) {
            error = "InvalidEmail";
            return error;
        }
    }
    atPos = email.indexOf("@",1);   // there must be one "@" symbol
    if (atPos == -1) {
        error = "InvalidEmail";
        return error;
    } else if (email.indexOf("@",atPos+1) != -1) {   // and only one "@" symbol
        error = "InvalidEmail";
        return error;
    }
    periodPos = email.indexOf(".",atPos);
    if (periodPos == -1) { // and at least one "." after the "@"
        error = "InvalidEmail";
        return error;
    }
    if (periodPos+3 > email.length) { // and at least 2 characters after the "."
        error = "InvalidEmail";
        return error;
    }

    return error;
 }
 function checkAge(min_age,year,month,day)
 {
	 var theirDate = new Date((parseInt(year) + min_age), parseInt(month) - 1, parseInt(day));
	 var today = new Date;

	 if ( (today.getTime() - theirDate.getTime()) < 0) {
		 return false;
	 }
	 else {
	 	return true;
	 }
 }

