// JavaScript Document

var PreviewCenter = 0;

function ShowFormError( result, errorid, text )
{
   
   var errobj = document.getElementById( errorid );	   
   var flag = "block";
   if ( result == true )
	  flag = "none";
	  
   //alert( "showformerror: "+flag );
   
   errobj.style.display = flag;
   if ( text )
      errobj.innerHTML = text;
}

function autotab ( orig, dest )
{
  var destination = document.getElementById( dest );	
  var original = document.getElementById( orig );
  if ( original.getAttribute && original.value.length == original.getAttribute("maxlength") )
     destination.focus();
}

function CheckAddress( id, errorid ) 
{
	var obj = document.getElementById( id );
	var testresult = false;

	if ( obj.value.length > 0 )
	   testresult = true;
	   
   	ShowFormError( testresult, errorid );
	
	return testresult;
}

function CheckPhoneNumber( id, errorid, fromblur )
{
	
	var obj = document.getElementById( id );
	var str = obj.value;
	var testresult = true;
	var blankerrmsg = "Phone number can't be blank."
	var invaliderrmsg = "Phone number doesn't appear to be valid."
	var msg = invaliderrmsg;
	// check from blur...if true then don't flag there's an error if the user didn't type anything
	// we'll require it when the user hits submit
	if ( !fromblur || fromblur && obj.value.length > 0 ) {
		testresult = false;
		if ( obj.value.length == 0 ) {
			msg = blankerrmsg;
		}
		else {
			str = str.replace(/\ /g, '');  // remove spaces if there are any
			// matches phone ###-###-####
			var phoneNumber = /^\(?\d{3}\)?[\s|-]*\d{3}-\d{4}$/;
		
			// International Phone Number
			var phoneNumberInternational = /^\d(\d|-){7,20}/;
			if ( phoneNumber.test( str ) ) {
			   testresult = true;
			}
			else
			   if ( phoneNumberInternational.test( str ) ) {
				   testresult = true;
			   }
			 
		}
	}
	
	ShowFormError( testresult, errorid, msg );
	return testresult;
}

function CheckFingerPrint( id, errorid, fromblur )
{
	var obj = document.getElementById( id );
	var str = obj.value;	
	var testresults = true;
	var blankerrmsg = 'Fingerprint cannot be blank.';
	var invaliderrmsg = 'Fingerprint is not valid.';
	var msg = invaliderrmsg;
	
	if ( !fromblur || fromblur && obj.value.length > 0 ) {
        testresults = false;		
		if ( obj.value.length == 0 )
		   msg = blankerrmsg;
		else {
			var filter=/[a-fA-F0-9]{4}\-[a-fA-F0-9]{4}/
			str = str.replace(/\ /g, '');  // remove spaces if there are any   
			if ( filter.test( str ) ) {
			   testresults = true;
			   obj.value = str.toUpperCase();
			}
		}
	}
	   
	ShowFormError( testresults, errorid, msg );
	
	return testresults;
}

function CheckEmail( id, errorid, fromblur, errormsg  ){
   
   var obj = document.getElementById(id);   
   var str = obj.value;
   var testresults = true;
   if ( !fromblur || fromblur && obj.value.length > 0 ) {
	   var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	   if (filter.test(str))
		 testresults=true;
	   else{    
	   
		 testresults=false;
	   }
   }
   
   ShowFormError( testresults, errorid, errormsg );
   
   return (testresults);
   
}

function DoubleCheckEmail( fromblur ) {

   
   var emailErrorId1 = 'emailerror';
   var emailErrorId2 = 'emailerror2';
   var emailaddr1 = 'emailaddress';
   var emailaddr2 = 'emailaddress2';
   var email1 = document.getElementById( emailaddr1 );
   var email2 = document.getElementById( emailaddr2 );

   var dontcheck1 = false;

   // below we check emails for blankness only if we're submitting the form
   // but if they are blank and we moving from field to field then we want to check only the 
   // emails that have been filled in for validity
   if ( email1.value.length == 0 ) {
      if ( !fromblur  ) {
 	     dontcheck1 = true;
	  }
      ShowFormError( !dontcheck1, emailErrorId1, 'Email address cannot be blank' );
	  if ( fromblur )
	     dontcheck1 = true;
   }

   var dontcheck2 = false;
   if ( email2.value.length == 0 ) {
	   if ( !fromblur ) {
    	  dontcheck2 = true;
	   }
	   ShowFormError( !dontcheck2, emailErrorId2, 'Email address cannot be blank' );
	   if ( fromblur ) {
		   dontcheck2 = true;
	   }
   }

   // now check for validity
  
   var dontCheckEqual1 = false;
   var dontCheckEqual2 = false;
   var invalidEmailErrMsg = 'Email is not a valid email';
   
   if ( dontcheck1 == false ) {
      dontCheckEqual1 = !CheckEmail( emailaddr1, emailErrorId1, fromblur, invalidEmailErrMsg );   
   }
   if ( dontcheck2 == false ) {
      dontCheckEqual2 = !CheckEmail( emailaddr2, emailErrorId2, fromblur, invalidEmailErrMsg );   	   	 
   }
   
   if ( dontcheck1 || dontcheck2 || dontCheckEqual1 || dontCheckEqual2 )
      return false;
  
   var email1text = email1.value;
   var email2text = email2.value;
   var testresults = true;
   if ( email1text != email2text ) {
	  testresults=false;	  
   }
   
   ShowFormError( testresults, emailErrorId2, "Emails don't match, please make sure they're the same." );
   
   return (testresults);
}

/* does basic validation of serial numbers
*/

//var REACHSerials=['14','24','54','64','74','70','84','94','91','92','13','23','53','63'];
function CheckSerialNumber( sn, errorid, fromblur, pc ) {
	
        if ( pc )
           PreviewCenter = 1;
	var obj = document.getElementById( sn );
	var str = obj.value;
	var result = true;
	
	var blankerrmsg = "Serial number can't be blank";
	var invalidsn = "Serial number is not valid";
	var msg = invalidsn;
	if ( !fromblur || fromblur && obj.value.length > 0 ) {
		result = false;

		if ( obj.value.length == 0 )
		   msg = blankerrmsg;
		else {
			if ( obj.value.length >= 5 ) {					
				var stripped = str.replace(/\ /g, '');					
				var serialnumbers=/^\d+$/;
                                if ( PreviewCenter == 1 ) {
                                   serialnumbers=/^[Pp][Cc]\d+$/;
                                }		
				if ( serialnumbers.test( stripped ) ) {
				   result = true;
				}					
			}					
		}
	}
	
	
    ShowFormError( result, errorid, msg );

	return result;
}

function CheckName( nameid, errorid, fromblur )
{
   var obj = document.getElementById( nameid );   
   var str = obj.value;
   var result = true;

   if ( !fromblur || ( fromblur && ( obj.value.length > 0 ) ) ) {  
     result = true;
     if ( obj.value.length == 0 )
        result = false;
   }

   ShowFormError( result, errorid );   

   return result;
}



function validateForm( pcflag ) 
{
   var result;
   var address;
   
   PreviewCenter = flag;

   // put the && result at the end to prevent short circuiting logic so that 
   // all fields that are invalid are presented
   result = CheckName( 'lastname','nameerror' );
   result = CheckName( 'firstname','nameerror' ) && result;
   result = DoubleCheckEmail() && result;
   result = CheckPhoneNumber( 'phone', 'phoneerror' ) && result;
   
   address = CheckAddress('streetaddress','addresserror' );
   address = address && CheckAddress('city','cityerror' );
   address = address && CheckAddress('state','stateerror' );   
   address = address && CheckAddress('zip','ziperror' );   

   result =  CheckSerialNumber('serial','serialnumbererror') && result;
   result = CheckFingerPrint('fp','fperror', false) && result;
      
   return result && address;
}

function purchaseCheck()
{
  
   var box = document.forms[0].purchasedFrom;
   var display = "none";
   var otherfield = document.getElementById( 'otherfield' );
   if ( box[box.selectedIndex].text == "Other" ) {     
      display = "block";
   }
   else {
      var other = document.getElementById( 'other' );
      other.value = " ";
   }
   otherfield.style.display = display;
  
}

var count = 0;
var lastid="";

function FormHelp( formid, onfocus, _yoffset)
{   
   if ( lastid == formid )
      return;
   lastid = formid;	
   var formhelpid = 'formhelp'+formid;
   var forminfo = document.getElementById( formhelpid );
   var formdiv = document.getElementById( 'formdiv' );
   var display = "none";    
   if ( onfocus=="1" ) {     
       formdiv.style.display = "none"; 
	   formdiv.innerHTML = forminfo.innerHTML;	 
	   var dataentry = document.getElementById( 'dataentryform' );	  
	   var field = document.getElementById( formid );
	   var xpos = findPosX( dataentry );
	   var ypos = findPosY( field );
	   formdiv.style.left = xpos + dataentry.offsetWidth;
	   var yoffset = 0;
	   if ( _yoffset )
	      yoffset = _yoffset;
	   formdiv.style.top = ypos + yoffset;
       formdiv.style.display = "block";
   }
   else
      formdiv.style.display = "none";
   
   return true;
}

function formkey( id ) 
{
	if ( id.value.length == 0 ) {
		id.style.backgroundImage="url(images/required.gif)";
	}
	else 
	   id.style.backgroundImage="none";
}