// FormChek.js

var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var decimalPointDelimiter = "."
var phoneNumberDelimiters = "()- ";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
var SSNDelimiters = "- ";
var validSSNChars = digits + SSNDelimiters;
var digitsInSocialSecurityNumber = 9;
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeter = "-"
var validZIPCodeChars = digits + ZIPCodeDelimiters

var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9

var creditCardDelimiters = " "
var mPrefix = "You did not enter a value into the "
var mSuffix = " field. This is a required field. Please enter it now."

var sUSLastName = "Last Name"
var sUSFirstName = "First Name"
var sWorldLastName = "Family Name"
var sWorldFirstName = "Given Name"
var sTitle = "Title"
var sCompanyName = "Company Name"
var sUSAddress = "Street Address"
var sWorldAddress = "Address"
var sCity = "City"
var sStateCode = "State Code"
var sWorldState = "State, Province, or Prefecture"
var sCountry = "Country"
var sZIPCode = "ZIP Code"
var sWorldPostalCode = "Postal Code"
var sPhone = "Phone Number"
var sFax = "Fax Number"
var sDateOfBirth = "Date of Birth"
var sExpirationDate = "Expiration Date"
var sEmail = "Email"
var sSSN = "Social Security Number"
var sCreditCardNumber = "Credit Card Number"
var sOtherInfo = "Other Information"

var iStateCode = "Please select a US State."
var iZIPCode = "Please enter a valid 5 or 9 digit US Zip Code. No dashes, spaces or punctuations."
var iUSPhone = "Please enter a valid 10-digit Phone number. No dashes, blank spaces, brackets or punctuations. Do not enter a country code of 1 before a US/Canadian number, as that will make it 11 digits not 10. The Fax Number is NOT required."
var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."
var iSSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."
var iEmail = "Please enter a valid Email Address.";
var iName = "Entered the Name in the wrong box? Name cannot contain the @ symbol.";
var iCreditCardPrefix = "This is not a valid "
var iCreditCardSuffix = " credit card number. (Click the link on this form to see a list of sample numbers.) Please reenter it now."
var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."
var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."
var iYear = "This field must be a 2 or 4 digit year number.  Please reenter it now."
var iDatePrefix = "The Day, Month, and Year for "
var iDateSuffix = " do not form a valid date.  Please reenter them now."

var pEntryPrompt = "Please enter a ";
var pStateCode = "2 character code (like CA).";
var pZIPCode = "5 or 9 digit U.S. ZIP Code (like 94043).";
var pUSPhone = "10 digit U.S. phone number (like 415 555 1212).";
var pWorldPhone = "international phone number.";
var pSSN = "9 digit U.S. social security number (like 123 45 6789).";
var pEmail = "valid email address (like foo@bar.com).";
var pCreditCard = "valid credit card number.";
var pDay = "day number between 1 and 31.";
var pMonth = "month number between 1 and 12.";
var pYear = "2 or 4 digit year number.";

var pWCheck = "Please choose a strong password, 8 to 12 characters long. A strong password may consist of at least one UPPERCASE alphabet [A .. Z], at least one lowercase alphabet [a .. z], at least one number [0..9] and at least one symbol [#, $, %, *, etc].";
var vMissingParam = "Missing Parameter in URL. Please travel the link again.";
var vFillOut = "Please fill out this required field.";
var v50 = "The TicketNumber, TestLoginID and/or PinCode is invalid. Case Sensitive. Please try again.";
var vEOption = "You have not selected an option. Please choose an option by clicking in the small circle next to it or from the dropdown list."
var vEState = "Please select a State from the list.";
var vECountry = "Please select a Country from the list.";
var vETState = "Please enter a value for the State/Province field.";
var vUnsafeString = "Invalid character(s) found. Please do not enter any special character(s) in any field.";
var vEFileNotFound = "File Not Found. Please try again after a few minutes."
var vJSReq = "This Web Application requires the use of JavaScript and Cookies. Please enable JavaScript and accept cookies in your web browser."
var vAdmin = "Not logged in as an Administrator."
var vETimeOut = "You have exceeded the time limit allowed for this test. The system has logged you out. Please contact the company/employer who assigned this test to you initially, to re-issue a fresh test invitation to you. The unused test unit will get added back to the inventory of the company/employer automatically (may take up to 6 hours), for re-assigning to someone else at no extra cost. The company/employer will NOT be double-charged for any test unit.";
var vENoAnswr = "You have not answered this question yet. Please click in a Circular button next to an Answer to choose your response, then click on the 'Next' Button.";
var vEWait = "Please Wait after clicking on the button below... (up to 1-2 minutes)";
var vEAlreadyAnswered = "You have already answered this question. Your new response will not be saved.";
var vConnectivity = "IMPORTANT: Using a hard-wired Internet connection is recommended (NOT wireless). A wireless network can lose connectivity temporarily, especially during inclement weather, causing the test to 'freeze' (however, you will be able to re-start the test and pick up where you left off, before the test times out). Close all other Internet applications NOW (not just minimize but CLOSE and  EXIT) such as Internet TV/Radio, RSS Feeds, Streaming Video/Music, Social Networking, Browser Toolbars, News/Magazine Reader, Automatic Backup, Weather Updates, etc. Use a full featured web browser on an adequately powerful full-fledged computer (NOT a small handheld device or mobile phone with a limited capability web browser)."
var vAlertBeforeTest = "CAUTION: When you start the test, an automatic timer will be activated. Once started, the test must ideally be completed in just one session. The test will time out and the test invitation will expire if you leave the test incomplete after having started it. You will NOT be able to start it again if it times out. The test invitation will also expire if you wait too long before taking the test. Please take the test as soon as you can, preferably within 24 hours of having been invited. You can NOT preview or sample the whole test without actually answering one question at a time. Please close your browser window and do not go to the next page if you are not the test taker or if you do not intend to start the timer and complete the test now in this session."
var vStandardAlert = "Do you wish to assign a DUPLICATE test to this person? You have previously assigned the same type of test to this person based on the Email Address. You may either choose another person to test now, or just proceed forward and submit the form AGAIN with this same information if you still wish to assign the same type of test to this person again. The system will allow you to assign a duplicate test to this person if you persist and click to re-submit this form.";
var vName = "Please enter the Full Name of the person (First Name and Surname/Last Name). Entering an incomplete, fake or invalid name or email address can corrupt the database, and would also constitute a violation of our Terms and Conditions. Incorrect information can also cause confusion when you try to use certain useful features of this site.";

var defaultEmptyOK = false


function makeArray(n) {

   for (var i = 1; i <= n; i++) {
      this[i] = 0
   } 
   return this
}

var daysInMonth = makeArray(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;   
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

var USStateCodeDelimiter = "|";
var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)

{   var i;

   
    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {           
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}


function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";  

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}


function stripCharsNotInBag (s, bag)

{   var i;
    var returnString = "";   

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }
    return returnString;
}


function stripWhitespace (s)

{   return stripCharsInBag (s, whitespace)
}


function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}


function stripInitialWhitespace (s)

{   var i = 0;
    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;    
    return s.substring (i, s.length);
}

function isLetter (c)
{return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")));
}

function isDigit (c)
{return ((c >= "0") && (c <= "9"));
}

function isLetterOrDigit (c)
{return (isLetter(c) || isDigit(c));
}

function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {           
        var c = s.charAt(i);
        if (!isDigit(c)) return false;
    }  
    return true;
}


function isSignedInteger (s)

{   if (isEmpty(s)) 
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];
       
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
       return (isInteger(s.substring(startPos, s.length), secondArg));
    }
}


function isPositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isPositiveInteger.arguments.length > 1)
        secondArg = isPositiveInteger.arguments[1];   

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}



function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1]; 

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}



function isNegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNegativeInteger.arguments.length > 1)
        secondArg = isNegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );
}



function isNonpositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonpositiveInteger.arguments.length > 1)
        secondArg = isNonpositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );
}


function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;  

    for (i = 0; i < s.length; i++)
    {   
      
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

  
    return true;
}


function isSignedFloat (s)

{   if (isEmpty(s)) 
       if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedFloat.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedFloat.arguments.length > 1)
            secondArg = isSignedFloat.arguments[1];
        
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
       return (isFloat(s.substring(startPos, s.length), secondArg));
    }
}


function isAlphabetic (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (!isLetter(c))
        return false;
    }    
    return true;
}


function isAlphanumeric (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);


    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}


function reformat (s)

{   var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < reformat.arguments.length; i++) {
       arg = reformat.arguments[i];
       if (i % 2 == 1) resultString += arg;
       else {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    }
    return resultString;
}



function isSSN (s)
{   if (isEmpty(s)) 
       if (isSSN.arguments.length == 1) return defaultEmptyOK;
       else return (isSSN.arguments[1] == true);
       return (isInteger(s) && s.length == digitsInSocialSecurityNumber);
}


function isUSPhoneNumber (s) {
    if (isEmpty(s))
       
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);

       if (s.indexOf("1") == 0) {
           return false;
       }
       return (isInteger(s) && s.length == digitsInUSPhoneNumber);
}


function isInternationalPhoneNumber (s)
{   if (isEmpty(s)) 
       if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isInternationalPhoneNumber.arguments[1] == true);
       return (isPositiveInteger(s));
}


function isZIPCode (s)
{  if (isEmpty(s)) 
       if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
       else return (isZIPCode.arguments[1] == true);
   return (isInteger(s) && 
            ((s.length == digitsInZIPCode1) ||
             (s.length == digitsInZIPCode2)))
}


function isStateCode(s)
{   if (isEmpty(s)) 
       if (isStateCode.arguments.length == 1) return defaultEmptyOK;
       else return (isStateCode.arguments[1] == true);
       return ((USStateCodes.indexOf(s) != -1) &&
             (s.indexOf(USStateCodeDelimiter) == -1));
}


function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
      
    if (isWhitespace(s)) return false;
 
    var i = 1;
    var sLength = s.length;
    
    if (sLength<7) return false;	
	
    while ((i < sLength) && (s.charAt(i) != " ") && (s.charAt(i) != ";") && (s.charAt(i) != ","))
    {i++
    }
    
    if ((i <= sLength) && ((s.charAt(i) == " ") || (s.charAt(i) == ";") || (s.charAt(i) == ","))) return false;
	
	var i = 1;
    var sLength = s.length;
    
    if ((s.charAt(0) == "w") && (s.charAt(1) == "w") && (s.charAt(2) == "w") && (s.charAt(3) == ".")) return false;
  
    while ((i < sLength) && (s.charAt(i) != "@"))
    {
    
    i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function isYear (s)
{   if (isEmpty(s)) 
       if (isYear.arguments.length == 1) return defaultEmptyOK;
       else return (isYear.arguments[1] == true);
    if (!isNonnegativeInteger(s)) return false;
    return ((s.length == 2) || (s.length == 4));
}


function isIntegerInRange (s, a, b)
{   if (isEmpty(s)) 
       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
       else return (isIntegerInRange.arguments[1] == true);
   
    if (!isInteger(s, false)) return false;
    
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}


function isMonth (s)
{   if (isEmpty(s)) 
       if (isMonth.arguments.length == 1) return defaultEmptyOK;
       else return (isMonth.arguments[1] == true);
    return isIntegerInRange (s, 1, 12);
}


function isDay (s)
{   if (isEmpty(s)) 
       if (isDay.arguments.length == 1) return defaultEmptyOK;
       else return (isDay.arguments[1] == true);   
    return isIntegerInRange (s, 1, 31);
}

function daysInFebruary (year)
{   
    return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}

function isDate (year, month, day)
{   
    if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
    
    var intYear = parseInt(year);
    var intMonth = parseInt(month);
    var intDay = parseInt(day);
    
    if (intDay > daysInMonth[intMonth]) return false; 

    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;

    return true;
}


function prompt (s)
{window.status = s;
}

function promptEntry (s)
{window.status = pEntryPrompt + s;
}

function warnEmpty (theField, s)
{theField.focus();
    alert(mPrefix + s + mSuffix);
    return false;
}

function warnInvalid (theField, s)
{theField.focus();
    theField.select();
    alert(s);
    return false;
}

function checkString (theField, s, emptyOK) {

    if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (isWhitespace(theField.value)) 
       return warnEmpty (theField, s);
    else return true;
}

function checkStateCode (theField, emptyOK)
{   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  theField.value = theField.value.toUpperCase();
       if (!isStateCode(theField.value, false)) 
          return warnInvalid (theField, iStateCode);
       else return true;
    }
}

function reformatZIPCode (ZIPString)
{   if (ZIPString.length == 5) return ZIPString;
    else return (reformat (ZIPString, "", 5, "-", 4));
}

function checkZIPCode (theField, emptyOK)
{   if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    { var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
      if (!isZIPCode(normalizedZIP, false)) 
         return warnInvalid (theField, iZIPCode);
      else 
      {
          theField.value = reformatZIPCode(normalizedZIP);
         return true;
      }
    }
}


function reformatUSPhone (USPhone)
{return (reformat(USPhone, "(", 3, ") ", 3, "-", 4));
}

function checkUSPhone (theField, emptyOK)
{   if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters);
       if (!isUSPhoneNumber(normalizedPhone, false)) 
          return warnInvalid (theField, iUSPhone);
       else 
       {
           theField.value = reformatUSPhone(normalizedPhone);
          return true;
       }
    }
}

function checkInternationalPhone (theField, emptyOK)
{   if (checkInternationalPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  if (!isInternationalPhoneNumber(theField.value, false)) 
          return warnInvalid (theField, iWorldPhone);
       else return true;
    }
}


function checkEmail (theField, emptyOK)
{   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if (!isEmail(theField.value, false)) 
       return warnInvalid (theField, iEmail);
    else return true;
}



function reformatSSN (SSN)
{return (reformat(SSN, "", 3, "-", 2, "-", 4));
}


function checkSSN (theField, emptyOK)
{   if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)
       if (!isSSN(normalizedSSN, false)) 
          return warnInvalid (theField, iSSN);
       else 
       {
           theField.value = reformatSSN(normalizedSSN);
          return true;
       }
    }
}

function checkYear (theField, emptyOK)
{   if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isYear(theField.value, false)) 
       return warnInvalid (theField, iYear);
    else return true;
}

function checkMonth (theField, emptyOK)
{   if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isMonth(theField.value, false)) 
       return warnInvalid (theField, iMonth);
    else return true;
}

function checkDay (theField, emptyOK)
{   if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isDay(theField.value, false)) 
       return warnInvalid (theField, iDay);
    else return true;
}

function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
{   
    if (checkDate.arguments.length == 4) OKtoOmitDay = false;
    if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
    if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
    if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
    else if (!isDay(dayField.value)) 
       return warnInvalid (dayField, iDay);
    if (isDate (yearField.value, monthField.value, dayField.value))
       return true;
   alert(iDatePrefix + labelString + iDateSuffix);
   return false;
}

function getRadioButtonValue (radio)
{   for (var i = 0; i < radio.length; i++)
    {   if (radio[i].checked) {break; }
    }
    return radio[i].value;
}



function validateEmail(myfield) {
		if(isEmail(myfield.value) )
		{
			return true;
		}
		else
		{	
			alert("Please enter a valid E-mail Address.")
			myfield.focus();
			return false;
		}
		}
		
		
function isSafeString (s) {
	var i;

	for (i = 0; i < s.length; i++) {

	    if ((s.charAt(i) == "<") || (s.charAt(i) == ">")) {
	        return false;
	    }
	}//end for
	var v = s.toLowerCase();
	if (v.indexOf("script") != -1 || v.indexOf("&lt;") != -1 || v.indexOf("&gt;") != -1 || v.indexOf("&#60") != -1 || v.indexOf("#60") != -1 || v.indexOf("&60") != -1 || v.indexOf("60;") != -1 || v.indexOf("&#62") != -1 || v.indexOf("#62") != -1 || v.indexOf("&62") != -1 || v.indexOf("62;") != -1)
        {
        return false;        
        }
return true;
}		

function isValidName (s) {
	var i;
	
	for (i = 0; i < s.length; i++) {
	
		if ((s.charAt(i) == "@")) {
		return false;
		}
	}
return true;
}			
			
function dateDiff(vDate1,vDate2) {
date1 = new Date();
date1 = vDate1;
date2 = new Date();
date2 = vDate2;
diff  = new Date();

var time1 = "00:00:01AM"

var time2 = "00:00:01AM"

date1temp = new Date(date1 + " " + time1);


date2temp = new Date(date2 + " " + time2);

diff.setTime((date1temp.getTime() - date2temp.getTime()));

var i=1;

timediff = diff.getTime();
if (date1temp.getTime()>date2temp.getTime()) {
i=-1;
}

hours = Math.floor(timediff / (1000 * 60 * 60)); 

return Math.abs(hours)*i;

}

function getCalendarDate()
{
   var months = new Array(13);
   months[0]  = "January";
   months[1]  = "February";
   months[2]  = "March";
   months[3]  = "April";
   months[4]  = "May";
   months[5]  = "June";
   months[6]  = "July";
   months[7]  = "August";
   months[8]  = "September";
   months[9]  = "October";
   months[10] = "November";
   months[11] = "December";
   var now         = new Date(); 
  
   var monthnumber = now.getMonth();   
   var monthname   = months[monthnumber];
   var monthday    = now.getDate();
   var year        = now.getYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = monthname + 
                    ' ' + 
                    monthday + 
                    ', ' + 
                    year;
                    
                    
   var dateString = (monthnumber+1) + 
                    '/' + 
                    monthday + 
                    '/' + 
                    year;
                                        
   return dateString;
} 
			

function passwordChanged(oDoc, vIDStrength, vIDPW) {
    var strength = oDoc.getElementById(vIDStrength);
    var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!-+]).*$", "g");
    var mediumRegex = new RegExp("^(?=.{8,})(((?=.*[A-Z])(?=.*[a-z])(?=.*[!-+]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
var pwd = oDoc.getElementById(vIDPW);
if (pwd.value.length==0) {
    strength.innerHTML = pWCheck;
} else if (false == enoughRegex.test(pwd.value)) {
strength.innerHTML = 'More Characters';
return false;
} else if (strongRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:green">Strong!</span>';
} else if (mediumRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:red">Medium!</span>';
//return false;
} else {
strength.innerHTML = '<span style="color:red">Weak!</span>';
//return false;
}
return true;
}

function moAlert(oDoc, vIDStrength) {
    var strength = oDoc.getElementById(vIDStrength);
    strength.innerHTML = pWCheck;
    return true;
}

function doUnload(vURL) {


    var iX = window.document.body.offsetWidth - window.event.clientX;
    var iY = window.event.clientY;

    if (iX <= 30 && iY < 0) {
        window.open(vURL);

    }

    return true;

}




function days_between(vDate1,vDate2) {
    var ONE_DAY = 1000 * 60 * 60 * 24;


    var dArray = splitDateString(vDate1);

    var d = parseInt(dArray[1], 10);
    var m = parseInt(dArray[0], 10) - 1;
    var y = parseInt(dArray[2], 10);

    var vdateA = new Date(y, m, d);


    dArray = splitDateString(vDate2);

    d = parseInt(dArray[1], 10);
    m = parseInt(dArray[0], 10) - 1;
    y = parseInt(dArray[2], 10);

    var vdateB = new Date(y, m, d);


    var date1_ms = vdateA.getTime();
    var date2_ms = vdateB.getTime();

    var difference_ms = date2_ms - date1_ms;
    return Math.round(difference_ms / ONE_DAY);

}

function formatName(s) {
    var i;
    var j;
    var resultingString = "";

    if (isEmpty(s))
        return defaultEmptyOK;


    j = 0;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (isLetter(c) || isWhitespace(c) || c=="'")
            if (j == 0 && isWhitespace(c)) {
            }
            else {
                resultingString = resultingString + c;
                j = j + 1;
            }
    }

    j = resultingString.length;
    while (j > 0) {
        c = resultingString.charAt(resultingString.length - 1);
        if (isWhitespace(c)) {
            resultingString = resultingString.substring(0, resultingString.length - 1);
            j = j - 1;
        }
        else {
            j = 0;
        }
    }



    if (resultingString.indexOf(" ") > 0) {
        return resultingString;
    }
    else {
        alert(vName);
        return "";
    }
}



	
	
	

	

