var isIE = (document.all)?true:false;
var isNN4 =  (document.layers)?true:false;

function isEmpty(inputStr)
{
    if (inputStr == null || inputStr == "")     
        return true;
    else    
        return false;
}

function getDate(t)
{
    var Day = t.getDay();
    var Date = t.getDate();
    var Month = t.getMonth();
    var Year = t.getFullYear();
    
    Month = Month + 1;
    if (Month < 10) {Month = "0"+Month;}
    if (Date < 10) {Date = "0"+Date;}

    timeString = "";
    timeString += Month;
    timeString += "/";
    timeString += Date;
    timeString += "/";
    timeString += Year;
    
    return timeString;
}
    
function getObject(name)
{
     var obj = null;
     if (isIE)
        obj = document.all(name);
     else
        obj = document.layers[name];
        
     return (obj);
}

function getDivObject(name)
{
     var obj = null;
     if (isIE)
        obj = document.all(name);
     else if(isNN4)
        obj = document.layers[name];
     else
        obj = document.getElementById(name);
        
     return (obj);
}

function changeContent(what,text)
{
    if (isIE || !isNN4)
        what.innerHTML = text;
    else if(isNN4)
    {
        what.document.open();
        what.document.write(text);
        what.document.close();
    }
} 

function isValidDate(date) 
{
	var sep = "/";

	var index = date.indexOf(sep);
	if (index == -1) return false;

    // get month
    var month = date.substring(0, index);
	//if (isNaN(month) || month > 12) return false;
	if (isNaN(month) || month < 1 || month > 12 || month.length != 2) return false;

    var rest = date.substring(index+1, date.length);

	// get day
	index = rest.indexOf(sep);
	if (index == -1) return false;
        var day = rest.substring(0, index);
	//if (isNaN(day) || day > 31) return false;
	if (isNaN(day) || day < 1 || day > 31 || day.length != 2) return false;

	// get year 
    year = rest.substring(index+1, rest.length);
	//if (isNaN(year) || (year.length != 2 && year.length != 4))
	if (isNaN(year) || (year.length != 4))
		 return false;

	return true;
}

function isGreaterThanCurrentDate(inputDate) 
{
	var currentDate = getDate(new Date());
    
    if (Date.parse(inputDate) > Date.parse(currentDate))
        return true;
    else
        return false;
}

function isValidTime(time) 
{
    var sep = ":";
	var index = time.indexOf(sep);
	if (index == -1) return false;
	
	var hh = time.substring(0, index);
	if (isNaN(hh) || hh > 23) return false;
	
	var mi = time.substring(index+1, time.length);
	if (isNaN(mi) || mi > 59) return false;
	
	return true;
}
	
function createValidDate(fld) {

	var sep = "/";
	var date = eval("document." + fld + ".value");

	// get month
	var index = date.indexOf(sep);
	if (index == -1) return date;

    var month = date.substring(0, index);
	if (month.length == 1) {month = "0"+month;}

    var rest = date.substring(index+1, date.length);

	// get day
	index = rest.indexOf(sep);
	if (index == -1) return date;
    
    var day = rest.substring(0, index);
	if (day.length == 1) {day = "0"+day;}

	// year should be remainder
    year = rest.substring(index+1, rest.length);
	
	eval("document." + fld + ".value = '" +
		month + sep + day + sep + year + "'");
}

function setCurrentDate()
{
	changeContent(getObject("current_date"), getDate(new Date()));
}

function MM_openBrWindow(theURL,winName,features) 
{ 
    //theChild = window.open(theURL,winName,features);
    window.open(theURL,winName,features);
}
    
//Email validations
function validateEmail(email) 
{
	var msg = "";

	if (email.indexOf("@") == -1) 
	{
   		msg = msg + "Email address must be of the form 'jdoe@e2go.com'.";
   	}
  	//else if ((email.indexOf(".com") == -1)&&(email.indexOf(".org") == -1)
  		 //&&(email.indexOf(".gov") == -1)&&(email.indexOf(".net") == -1)
  		 //&&(email.indexOf(".mil") == -1)&&(email.indexOf(".edu") == -1)) 
  	//{
   		// msg = msg + "Email address should have a prefix of .com,.net,.org,.gov or .mil";
  	//}
	return msg;
 }
 
 function resetForm(form)
 {
    form.reset();
 }
 
 function setActionType(form,actionType)
 {
    form.hdn_action_type.value=actionType;
 }
 
 //This method is used to escape quotes in the given string
 function escapeQuotes(myString) 
 {
    var newString = "";
    var cur_pos = myString.indexOf("'");
    var prev_pos = 0;
    while (cur_pos != -1) 
    {
        if(cur_pos == 0) 
            newString += "\\";
        else if(myString.charAt(cur_pos-1) != "\\") 
            newString += myString.substring(prev_pos, cur_pos) + "\\";
        else if(myString.charAt(cur_pos-1) == "\\") 
            newString += myString.substring(prev_pos, cur_pos);
        
        prev_pos = cur_pos++;
        cur_pos = myString.indexOf("'", cur_pos);
    }
    return(newString + myString.substring(prev_pos, myString.length));
}

//This function populates select field
function populateSelectElement(theSelect, selectedValue)
{
    var optionCount = eval(theSelect+".options.length");
    for(var i=0; i<optionCount; i++)
    {
        if (eval(theSelect+".options[i].value") == selectedValue)
        {
            eval(theSelect+".selectedIndex=i");
            break;
        }
    }
}    

//This function returns true if old value and new value are not the same
function isChanged(oldValue, newValue)
{
    if (oldValue != newValue)
        return true;
    else
        return false;
}    

function isRadioGroupChanged(radioGroup)
{
    for(var i=0; i < radioGroup.length; i++)
    {
        if (radioGroup[i].defaultChecked)
        {
            if (!radioGroup[i].checked)
            {
                return true;
            }
        }
    }
    return false;
}    

function isAlphaNumeric(inputStr)
{
  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  var checkStr = inputStr;
  var allValid = true;
  for (var i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

function isValidPassword(userName) 
{
    var msg="";
    
	var oldPassword = document.frm_user.current_password.value;
	var newPassword = document.frm_user.password.value;
	var pass2 = document.frm_user.re_password.value;

	if (oldPassword.length ==0)
	    msg = msg + "Please enter Current Password\n";
	if (newPassword.length ==0)
	    msg = msg + "Please enter New Password\n";
	if (newPassword != pass2)
		msg = msg + "Passwords do not match\n";
    
    // Check for minimum length
    if (newPassword.length < 6) 
      msg = msg + "Password must be at least 6 characters long.\n";

    // we only care about the first eight characters of the new password
    var length = (newPassword.length < 9)? newPassword.length : 8;

    var newPass1 = newPassword.toLowerCase();
    var newPassArray = new Array(newPass1.length);
    
    var oldPass1 = oldPassword.toLowerCase();
    var oldPassArray = new Array(oldPass1.length);
    
    for (var i = 0;  i < newPass1.length;  i++)
        newPassArray[i]=newPass1.charAt(i);
    
    for (var i = 0;  i < oldPass1.length;  i++)
        oldPassArray[i]=oldPass1.charAt(i);    
    
    // does the new password differ from the old password by at least three
    // characters?
    //
    // start the number of differences as the length difference between
    // the passwords (since any character differs from no character)
    
    var diff_char = (length >oldPassword.length)? length - oldPassword.length: oldPassword.length - length;
    
    // Only compare the number of characters in the shorter password
    var clength = (length < oldPassword.length)? length : oldPassword.length;
    for (var i = 0; i < clength; i++)
      if (newPassArray[i] != oldPassArray[i])
        diff_char++;
    
    if (diff_char < 3) 
        msg = msg + "New password must be at least 3 characters different from the old password.\n";

    // does the new password contain at least two alphabetics and at least
    //    one non-alphabetic?
    var num_alpha = 0;
    var ch;
    for (var i = 0; i < length; i++)
    {
      ch = newPassword.charAt(i);
      if ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(ch) > -1)
        num_alpha++;
    }
    if (num_alpha < 2 || length == num_alpha) 
        msg = msg + "New password must contain at least 2 letters and 1 non-letter.\n";

    // is the new password the same as the reverse of the username or any 
    //    cyclic version of that username?
    // if the two have different lengths, the answer is obviously "no"
    if (length == userName.length)
    {
        var flag = true;
        var half_len = length / 2;
        var userName1 = userName.toLowerCase();
        var userNameArray = new Array(userName1.length);
        
        for (var i = 0;  i < userName1.length;  i++)
            userNameArray[i]=userName1.charAt(i);    
        
        for (var i = 0; i < half_len; i++) 
        {
            if (newPassArray[i] != userNameArray[length-i-1])
            {
                flag=false;
                break;
            }
        }
      
        if (flag)
            msg = msg + "Password cannot be the reverse of userid.\n";
      
        // Comparisons are greatly simplified by making a long String with
        //   two copies of the original end-to-end.
        var username_long = userName.toLowerCase() + userName.toLowerCase();
      
        // Is this a simple cycling of the username?
        if (username_long.indexOf(newPassword) > -1)
            msg = msg + "Password cannot be a rotation of userid.\n";
    }

    if (msg.length > 0)
    {
        alert(msg);
        return false;
    }
    else
        return true;
}
