var failingfield = "";

//password.aspx
function ValidatePasswordForm()
{
    var reqTextQuestions = "password,newpassword1,newpassword2";
    var errorMsg = "Please complete all fields. ";
    var errorMsgPassword = "Password must contain 6 to 10 characters and only contain letters or digits";
    
    if (!validateTextQuestions(reqTextQuestions))
    {
        ShowStar(reqTextQuestions);
        alert(errorMsg);
        return false;
    }
    else if (document.getElementById('newpassword1').value != document.getElementById('newpassword2').value)
    {
        failingfield = "newpassword1";
        ShowStar(reqTextQuestions);
        ClearFields("newpassword1,newpassword2");
        alert(errorMsg);
        return false;
    }
    else if (!isGoodPassword(document.getElementById('newpassword1').value))
    {
        failingfield = "newpassword1";
        ShowStar(reqTextQuestions);
        ClearFields("newpassword1,newpassword2");
        alert(errorMsgPassword);
        return false;
    }
    else
        document.getElementById('myForm').submit();
}

function ClearFields(fields)
{
    var arrReqFields = fields.split(",");    
    for (var i=0; i<arrReqFields.length; i++)
	{
	    document.getElementById(arrReqFields[i]).value = "";
    }
}

//forgot.aspx
function ValidateForgotForm()
{
    var reqTextQuestions = "email";
    var errorMsg = "Please complete all fields. ";
    
    if (!validateTextQuestions(reqTextQuestions))
    {
        ShowStar(reqTextQuestions);
        alert(errorMsg);
        return false;
    }
    else if (!isEmail(trim(document.getElementById('email').value)))
    {
        failingfield = "email";
        ShowStar(reqTextQuestions);
        alert(errorMsg);
        return false;
    }
    else
        document.getElementById('myForm').submit();
}

//referral.aspx
function ValidateReferralForm()
{
    var reqTextQuestions = "friendName1,friendEmail1";
    var errorMsg = "Please complete all required fields.";
    
    var allFields = reqTextQuestions + ',friendName2,friendEmail2,friendName3,friendEmail3,friendName4,friendEmail4,friendName5,friendEmail5';

    if (!validateTextQuestions(reqTextQuestions))
    {
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else if (!isEmail(trim(document.getElementById('friendEmail1').value)))
    {
        failingfield = "friendEmail1";
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else
    {
        for (var i=1; i<=5; i++)
        {
            if (trim(document.getElementById('friendEmail' + i).value) != '')
            {
                if (trim(document.getElementById('friendName' + i).value) == '')
                {
                    failingfield = 'friendName' + i;
                    ShowStar(allFields);
                    alert(errorMsg);
                    return false;
                }
                else
                {
                    if (!isEmail(trim(document.getElementById('friendEmail' + i).value)))
                    {
                        failingfield = 'friendEmail' + i;
                        ShowStar(allFields);
                        alert(errorMsg);
                        return false;
                    }
                }
            }
        }
        document.getElementById('myForm').submit();
    }
}

//login.aspx
function ValidateLoginForm()
{
    var reqTextQuestions = "email,password";
    var errorMsg = "Please complete all fields. ";
    
    if (!validateTextQuestions(reqTextQuestions))
    {
        ShowStar(reqTextQuestions);
        alert(errorMsg);
        return false;
    }
    else if (!isEmail(trim(document.getElementById('email').value)))
    {
        failingfield = "email";
        ShowStar(reqTextQuestions);
        alert(errorMsg);
        return false;
    }
    else
        document.getElementById('myForm').submit();
}

//update.aspx
function ValidateUpdateForm()
{
    var reqTextQuestions = "email,firstname,lastname";
    var reqSelectQuestions = "interests,state,cities";
    
    if (ValidateProfileForm(reqTextQuestions, reqSelectQuestions))
         document.getElementById('myForm').submit();
    else
        return false;
}

//signup.aspx
function ValidateSignupForm(reqTextQuestions, reqSelectQuestions)
{
    var reqTextQuestions = "email,password,firstname,lastname";
    var reqSelectQuestions = "interests,state,cities";
    var allFields = reqTextQuestions + ',' + reqSelectQuestions + ',departments';
    var errorMsgPassword = "Password must contain 6 to 10 characters and only contain letters or digits";
       
    if (ValidateProfileForm(reqTextQuestions, reqSelectQuestions))
    {
        if (!isGoodPassword(document.getElementById('password').value))
        {
            failingfield = "password";
            ShowStar(allFields);
            alert(errorMsgPassword);
            return false;  
        }
        else
            document.getElementById('myForm').submit();
    }
    else
        return false;   
}

//signup.aspx/update.aspx
function ValidateProfileForm(reqTextQuestions, reqSelectQuestions)
{
    var allFields = reqTextQuestions + ',' + reqSelectQuestions + ',departments';
    var errorMsg = "Please complete all fields. ";
    
    if (!validateTextQuestions(reqTextQuestions))
    {
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else if (!validateSelectQuestions(reqSelectQuestions))  
    {
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else if ((document.getElementById('interests').value == "firefighters") && (document.getElementById('departments').value == ""))
    {
        failingfield = "departments";
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else if (!isEmail(trim(document.getElementById('email').value)))
    {
        failingfield = "email";
        ShowStar(allFields);
        alert(errorMsg);
        return false;
    }
    else
        return true;
    
}

function ShowStar(fields)
{
    var arrReqFields = fields.split(",");    
    for (var i=0; i<arrReqFields.length; i++)
	{
	    document.getElementById(arrReqFields[i] + 'Star').style.visibility='hidden';
    }
    document.getElementById(failingfield + 'Star').style.visibility='visible';
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

// validate textbox questions
function validateTextQuestions(namesString)
{
	var arrReqText = namesString.split(",");
	
	for (var i=0; i<arrReqText.length; i++)
	{
		if (trim(document.getElementById(arrReqText[i]).value) == "")
		{
		    failingfield = arrReqText[i];
			return false;
		}
	}
	return true;
}

// validate select/dropdown questions
function validateSelectQuestions(namesString)
{
	var arrReqText = namesString.split(",");
	
	for (var i=0; i<arrReqText.length; i++)
	{
		//if (document.getElementById(arrReqText[i]).selectedIndex<1)
		if (document.getElementById(arrReqText[i]).value == "")
		{
		    failingfield = arrReqText[i];
			return false;
		}
	}
	return true;
}

// password format
function isGoodPassword(str)
{
    var r = new RegExp("^[a-zA-Z0-9]{6,10}$");
    return (r.test(str));
}

// validate email format
function isEmail(str) {
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

// validate Canada postal Code format
function isPostalCode(str) {
  var r = new RegExp("^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$");
  return (r.test(str));
}

// validate a number field
// do not allow keys other than the number keys to be pressed
// onkeypress="return numbers_only(event)"
function numbers_only(e) 
{
	var key;
	if (e.keyCode)
		key = e.keyCode;
	else if (e.which)
		key = e.which;
	else
		return true;

	var keychar = String.fromCharCode(key);
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27))
		return true;

	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
		return true;
	else
		return false;
}

//open ExternalWindow 
function openWin(varURL,varWidth,varHeight)
{
	var placeLeft = ((screen.availWidth) / 2) - (varWidth / 2) + 100
	var placeTop = ((screen.availHeight) / 2) - (varHeight / 2) - 50
	window.open(varURL,'','width='+varWidth+',height='+varHeight+',screenX='+placeLeft+',left='+placeLeft+',screenY='+placeTop+',top='+placeTop+',resizable=yes,scrollbars=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no')
}