

function CheckCheckBox(thisRowItem,thisFormView,thisFormItem)
{
   var str=thisFormView+'_'+thisFormItem;
   var ChkBoxID =thisRowItem.id
   ChkBoxID = ChkBoxID.replace(str,"chkb");
   ChkBox= document.getElementById(ChkBoxID);  

   if(ChkBox.checked != true)
    ChkBox.click();
    //alert(str);
}

function CheckCheckBox2(thisRowItem,thisFormView,thisFormItem)
{
   
   var str=thisFormItem;
   var ChkBoxID =thisRowItem.id
   ChkBoxID = ChkBoxID.replace(str,"chkb");
   ChkBox= document.getElementById(ChkBoxID);  
   if(ChkBox.checked != true)
    ChkBox.click();
}

function CheckCheckBoxByID(ChkBoxID)
{
   ChkBox= document.getElementById(ChkBoxID);  

   if(ChkBox.checked != true)
    ChkBox.click();
}

function EnableValidation(thisItem,Location,Items,thisFormItem)
{
     var str;
     var ValidationITem;
     for (i in Items)
     {
        //str=thisItem.id;
        //ValidationITem=str.replace(thisFormItem,Location+Items[i]);
        //ValidationITem+=".enabled=\"True\"";
        str=thisItem.id;
        ValidationITem=str.replace(thisFormItem,Location+Items[i]);
        ValidationITem+=".validationGroup = \"Validate\"";

        eval(ValidationITem);
    }    
}
function DisableValidation(thisItem,Location,Items,thisFormItem)
{
     var str;
     var ValidationITem;
     for (i in Items)
     {
 /*       str=thisItem.id;
        ValidationITem=str.replace(thisFormItem,Location+Items[i]);
        ValidationITem+=".enabled=\"\"";
        alert(ValidationITem);
        eval(ValidationITem);*/
        str=thisItem.id;
        ValidationITem=str.replace(thisFormItem,Location+Items[i]);
        ValidationITem+=".validationGroup = \"\"";
        eval(ValidationITem);eval(ValidationITem);eval(ValidationITem);
    }    
}


  

function showHide(AbC)
{

       Bb = document.getElementById(AbC);
       if (Bb.style.display == "")
       {
               Bb.style.display = "none";
       }
       else
       {
               Bb.style.display = "";
       }
}

function showHide2(ThisItem,TheItem,TheHide)
{

   var ABC =ThisItem.id;
   ABC = ABC.replace(TheItem,TheHide);

       Bb = document.getElementById(ABC);
       if (Bb.style.display == "")
       {
               Bb.style.display = "none";
       }
       else
       {
               Bb.style.display = "";
       }
}

var newwindow;
function popupt(url)
{
	newwindow=window.open(url,'name','toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1,width=800,height=600');
	if (window.focus) {newwindow.focus()}
}

function moveData(thisField, fromField, toField)
{

  var outputField=thisField.id; 
  outputField=outputField.replace(fromField,toField);
  outField = document.getElementById(outputField);
  outField.value = thisField.value;
}

/*****************Shaimmaa Functions**********************/

/*function used to copy a certain textbox value to the next relative textboxes
  depending on id that is given in design or code and
  become part of id while running*/
function CopyToNext()
{
    /*arguments are 
      0 the textbox id that will copy its value
      1 the part of the id to check on*/
    var args = CopyToNext.arguments;
    var allElements = document.forms[0].elements;
    var i = 0;
    var isNextControl = false;
    for(i = 0; i < allElements.length; i++)
    {
        if (allElements[i].type == "text" &&
            allElements[i].id.indexOf(args[1]) > -1)
        {
            if(isNextControl)
                allElements[i].value = document.getElementById(args[0]).value;
            
            if (allElements[i].id == args[0])
                isNextControl = true;
        }
    }
}

/*function used to check the value of a certain textbox
  to uncheck a relative checkbox and also the textbox value
  doesn't exceed a certain value*/
function CheckTxtValue()
{
    /*arguments are 
      0 this the textbox firing thevent
      1 the textbox id
      2 the checkbox id
      3 the max number value can take*/
    var args = CheckTxtValue.arguments;
    var txtValue = args[0].value;
    if(txtValue != "")
    {
        document.getElementById(args[0].id.replace(args[1], args[2])).checked = false;
        
        if(isNaN(txtValue) || Number(txtValue) > args[3])
            document.getElementById(args[0].id).value = "";
    }
}
/*function used to check/uncheck a certain checkbox
  depending on id that is given in design or code and
  become part of id while running*/
function SelectAllChks()
{
    /*arguments are 
      0 (this)the checkbox of check/uncheck All
      1 the part of the id to check on
      ********new part for permission********
      2 the part of the hidden field  id to check on
      3 the value of the hidden field id to check on*/
    var args = SelectAllChks.arguments;
    var allElements = document.forms[0].elements;
    var i = 0;
    var isOneOfGroup = false;
    for(i = 0; i < allElements.length; i++)
    {
        if (args.length > 2 &&
            allElements[i].type == "hidden" &&
            allElements[i].id.indexOf(args[2]) > -1 &&
            allElements[i].value == args[3])
        {
            isOneOfGroup = true;
        }
        if (args.length > 2 &&
            allElements[i].type == "checkbox" &&
            allElements[i].id.indexOf(args[1]) > -1 &&
            isOneOfGroup)
        {
            if (allElements[i].checked != args[0].checked)
                allElements[i].click();
            isOneOfGroup = false;
        }
        else if(args.length == 2 &&
                allElements[i].type == "checkbox" &&
                allElements[i].id.indexOf(args[1]) > -1 &&
                allElements[i].checked != args[0].checked)
        {
            allElements[i].click();
        }
    }
}

/*function used to uncheck the check All checkbox
  depending on id that is given in design or code and
  become part of id while running
*/
function UnSelectAllChks()
{
    /*arguments are 
      0 (this) the checkbox firing the event
      1 the part of the id of check All checkbox to check on
      ********new part for permission********
      2 the part of the hidden field  id to check on
      3 the value of the hidden field id to check on*/
    var args = UnSelectAllChks.arguments;
    if(!args[0].checked)
    {
        var allElements = document.forms[0].elements;
        var i = 0;
        var isAll = false;
        for(i = 0; i < allElements.length; i++)
        {
            if (args.length > 2 &&
                allElements[i].type == "hidden" &&
                allElements[i].id.indexOf(args[2]) > -1 &&
                allElements[i].value == args[3])
            {
                isAll = true;
            }
            if (allElements[i].type == "checkbox" &&
                allElements[i].id.indexOf(args[1]) > -1)
            {
                if(args.length > 2 && isAll)
                {
                    allElements[i].checked = false;
                    isAll = false;
                    break;
                }
                else if(args.length == 2)
                {
                    allElements[i].checked = false;
                    break;
                }
                
            }
        }
    }
}
/*function used to calculate the weight of the next quarters
  depending on previous values entered for quarters' weights
*/
function CalulateFromQuarter()
{     
    /*arguments are 
      0 number Of Quarters
      1 quarter Index firing the event
      2 to args[0] + 1 the array of quarters' checkboxs
      args[0] + 1 to args.length - 2 the array of quarters textboxes
      args.length - 1 (this) the control firing the control*/
    var args = CalulateFromQuarter.arguments;
    
    if(args.length > 0)
    {
        try
        {
            var numberOfQuarters = args[0];
            var myIndex = args[1];
            
            var idString = args[args.length - 1].id;
            idString = idString.substring(0, idString.lastIndexOf(args[numberOfQuarters + 2 + myIndex]));
            
            var numberOfCheckedQuarters = 0;
            var prevQuarterValue = 0;
            var i = 0; //for indexof args
            for(i = 2; i < numberOfQuarters + 2; i++)
            {
                if(document.getElementById(idString + args[i]).checked)
                    numberOfCheckedQuarters++;
            }
            for(i = numberOfQuarters + 2; i < numberOfQuarters + 3 + myIndex; i++)
            {
                if(document.getElementById(idString + args[i - numberOfQuarters]).checked)
                {
                    prevQuarterValue = prevQuarterValue + (document.getElementById(idString + args[i]).value * 1);
                    numberOfCheckedQuarters--;
                }
            }
            var newQuarterValue = 0;
            var textboxindex = i; // will be diffrent when prevQuarterValue > 100 & to subtaract 1 from i
            if(prevQuarterValue < 100)
            {
                newQuarterValue = (100 - prevQuarterValue)// numberOfCheckedQuarters;
            }
            else
            {
                textboxindex--;
                numberOfCheckedQuarters++;
                newQuarterValue = 100 - prevQuarterValue + (document.getElementById(idString + args[textboxindex]).value * 1)//numberOfCheckedQuarters;
            }
            if(numberOfCheckedQuarters > 0)
            {
                newQuarterValue = newQuarterValue / numberOfCheckedQuarters;
                for(i = textboxindex; i < args.length - 1; i++)
                {
                    if(document.getElementById(idString + args[i - numberOfQuarters]).checked)
                        document.getElementById(idString + args[i]).value = newQuarterValue;
                    else
                        document.getElementById(idString + args[i]).value = '';
                }
            }
            else
            {
                newQuarterValue = 100 - (prevQuarterValue * 1) + (document.getElementById(idString + args[i - 1]).value * 1);
                if(document.getElementById(idString + args[i - numberOfQuarters - 1]).checked)
                {
                    //newQuarterValue = newQuarterValue;
                    document.getElementById(idString + args[i - 1]).value = newQuarterValue;
                }
                else
                    document.getElementById(idString + args[i - 1]).value = '';
            }
        }
        catch(err)
        {
            alert(err);
        }
    }
}

/*function used to reset the weights of the quarters selected
  depending on how many quarters are selected
*/
function ResetQuarter()
{     
    /*arguments are 
      0 number Of Quarters
      1 quarter Index firing the event
      2 to args[0] + 1 the array of quarters' checkboxes
      args[0] + 1 to args.length - 2 the array of quarters textboxes
      args.length - 1 (this) the control firing the control*/
    var args = ResetQuarter.arguments;
    
    if(args.length > 0)
    {
        try
        {
            var numberOfQuarters = args[0];
            var myIndex = args[1];
            
            var idString = args[args.length - 1].id;
            idString = idString.substring(0, idString.lastIndexOf(args[2 + myIndex]));
            var numberOfCheckedQuarters = 0;
            var quarterValue = 100;
            var i = 0;
            for(i = 2; i < numberOfQuarters + 2; i++)
            {
                if(document.getElementById(idString + args[i]).checked)
                    numberOfCheckedQuarters++;
            }
            if(numberOfCheckedQuarters > 0)
            {
                quarterValue = 100 / numberOfCheckedQuarters
            }
            for(i = numberOfQuarters + 2; i < args.length - 1; i++)
            {
                if(document.getElementById(idString + args[i - numberOfQuarters]).checked)
                    document.getElementById(idString + args[i]).value = quarterValue;
                else
                    document.getElementById(idString + args[i]).value = '';
            }
        }
        catch(err)
        {
            alert(err);
        }
    }
}

/*function used to calculate the percentage of the next policy itemss
  depending on previous values entered for items' percentage
*/
function CalulatePolicyPercentage()
{     
    /*arguments are 
      0 part of checkbox id to check for it
      1 part of txt to check for it
      2 (this) the control firing the control*/
    
    var args = CalulatePolicyPercentage.arguments;
    var allElements = document.forms[0].elements;
    var i = 0;
    var chkArray = new Array();
    var txtArray = new Array();
    var myIndex = 0;
    
    for(i = 0; i < allElements.length; i++)
    {
        if (allElements[i].type == "checkbox" &&
            allElements[i].id.indexOf(args[0]) > -1)
        {
            chkArray.push(allElements[i].id);
        }
        else if (allElements[i].type == "text" &&
            allElements[i].id.indexOf(args[1]) > -1)
        {
            if (allElements[i].id == args[2].id)
            {
                myIndex = txtArray.push(allElements[i].id) - 1;
            }
            else
            {
                txtArray.push(allElements[i].id);
            }
        }
    }
    
    if(args.length > 0)
    {
        try
        {
            var numberOfQuarters = chkArray.length;
            
            //var idString = chkArray[myIndex].id;
            //idString = idString.substring(0, idString.lastIndexOf(args[numberOfQuarters + 2 + myIndex]));
            
            var numberOfCheckedQuarters = 0;
            var prevQuarterValue = 0;
            for(i = 0; i < numberOfQuarters; i++)
            {
                if(document.getElementById(chkArray[i]).checked)
                    numberOfCheckedQuarters++;
            }
            for(i = 0; i < myIndex + 1; i++)
            {
                if(document.getElementById(chkArray[i]).checked)
                {
                    prevQuarterValue = prevQuarterValue + (document.getElementById(txtArray[i]).value * 1);
                    numberOfCheckedQuarters--;
                }
            }
            var newQuarterValue = 0;
            var textboxindex = i; // will be diffrent when prevQuarterValue > 100 & to subtaract 1 from i
            if(prevQuarterValue < 100)
            {
                newQuarterValue = (100 - prevQuarterValue); // numberOfCheckedQuarters;
            }
            else
            {
                textboxindex--;
                numberOfCheckedQuarters++;
                newQuarterValue = 100 - prevQuarterValue + (document.getElementById(txtArray[textboxindex]).value * 1); //numberOfCheckedQuarters;
            }
            if(numberOfCheckedQuarters > 0)
            {
                newQuarterValue = newQuarterValue / numberOfCheckedQuarters;
                for(i = textboxindex; i < chkArray.length; i++)
                {
                    if(document.getElementById(chkArray[i]).checked)
                        document.getElementById(txtArray[i]).value = newQuarterValue;
                    else
                        document.getElementById(txtArray[i]).value = '';
                }
            }
            else
            {
                newQuarterValue = 100 - (prevQuarterValue * 1) + (document.getElementById(txtArray[i - 1]).value * 1);
                if(document.getElementById(chkArray[i - 1]).checked)
                {
                    //newQuarterValue = newQuarterValue;
                    document.getElementById(txtArray[i - 1]).value = newQuarterValue;
                }
                else
                    document.getElementById(txtArray[i - 1]).value = '';
            }
        }
        catch(err)
        {
            alert(err);
        }
    }
}

/*function used to reset the percentages of the policy items selected
  depending on how many items are selected
*/
function ResetPolicyPercentage()
{     
    /*arguments are 
      0 number Of Plicy items
      1 item Index firing the event
      2 to args[0] + 1 the array of items' checkboxes
      args.length - 1 (this) the control firing the control*/
    var args = ResetPolicyPercentage.arguments;
    
    if(args.length > 0)
    {
        try
        {
            var numberOfQuarters = args[0];
            var myIndex = args[1];
            
            var idString = args[args.length - 1].id;
            idString = idString.substring(0, idString.lastIndexOf(args[2 + myIndex]));
            var numberOfCheckedQuarters = 0;
            var quarterValue = 100;
            var i = 0;
            for(i = 2; i < numberOfQuarters + 2; i++)
            {
                if(document.getElementById(idString + args[i]).checked)
                    numberOfCheckedQuarters++;
            }
            if(numberOfCheckedQuarters > 0)
            {
                quarterValue = 100 / numberOfCheckedQuarters
            }
            for(i = 0; i < numberOfQuarters; i++)
            {
                if(document.getElementById(idString + args[i + 2]).checked)
                    document.getElementById(idString + "Manage" + i + "_frmvPolicyHasPolicyItem_txtPercentage").value = quarterValue;
                else
                    document.getElementById(idString + "Manage" + i + "_frmvPolicyHasPolicyItem_txtPercentage").value = '';
            }
        }
        catch(err)
        {
            alert(err);
        }
    }
}

function ResetPolicyPercentage2()
{     
    /*arguments are 
      0 number Of Plicy items
      1 item Index firing the event
      2 to args[0] + 1 the array of items' checkboxes
      args.length - 1 (this) the control firing the control*/
    var args = ResetPolicyPercentage2.arguments;
    
    if(args.length > 0)
    {
        try
        {
            var numberOfQuarters = args[0];
            var myIndex = args[1];
            
            var idString = args[args.length - 1].id;
            idString = idString.substring(0, idString.lastIndexOf(args[2 + myIndex]));
            var numberOfCheckedQuarters = 0;
            var quarterValue = 100;
            var i = 0;
            for(i = 2; i < numberOfQuarters + 2; i++)
            {
                if(document.getElementById(idString + args[i]).checked)
                    numberOfCheckedQuarters++;
            }
            if(numberOfCheckedQuarters > 0)
            {
                quarterValue = 100 / numberOfCheckedQuarters
            }
            for(i = 0; i < numberOfQuarters; i++)
            {
                if(document.getElementById(idString + args[i + 2]).checked)
                    document.getElementById(idString + "Manage" + i + "_frmvPolicyHasPolicyItemSubType_txtPercentage").value = quarterValue;
                else
                    document.getElementById(idString + "Manage" + i + "_frmvPolicyHasPolicyItemSubType_txtPercentage").value = '';
            }
        }
        catch(err)
        {
            alert(err);
        }
    }
}

function EnableDisable()
{  
    /*arguments are 
      0 this on its change will enable or disable (checkBox or radioButton)
      1 control ID to be enabled or disabled
      2 
    */
    var args = EnableDisable.arguments;
    
    if(args.length > 0)
    {
        try
        {
            if(args[0].checked)
                document.getElementById(args[1]).disabled = "disabled";
            else
                document.getElementById(args[1]).disabled = "";
        }
        catch(err)
        {
            alert(err);
        }
    }
}

function EnableDisable2()
{  
    /*arguments are 
      0 this on its change will enable or disable (checkBox or radioButton)
      1 control ID to be enabled or disabled
      2 
    */
    var args = EnableDisable2.arguments;
    
    if(args.length > 0)
    {
        try
        {
            if(args[0].checked)
                document.getElementById(args[1]).disabled = "";
            else
                document.getElementById(args[1]).disabled = "disabled";
        }
        catch(err)
        {
            alert(err);
        }
    }
}
/*
function to remove initial text in txt
*/
function RemoveInitialText(textboxName, initialText)
{
	if(document.getElementById(textboxName).value == initialText)
	{
		document.getElementById(textboxName).value = "";
	}
}
/*
function to insert initial text in txt if it is empty
*/
function InsertInitialText(textboxName, initialText)
{
	if(document.getElementById(textboxName).value == "")
	{
		document.getElementById(textboxName).value = initialText;
	}
}
/*
change validation group for an array of validators
*/
function ChangeValidation(thisItem, idPart, Items, validationText)
{
     var ValidationITem;
     for (i in Items)
     {
        ValidationITem = thisItem.id.replace(idPart, Items[i]);
        ValidationITem += ".validationGroup = \"" + validationText + "\"";

        eval(ValidationITem);
    }    
}
/*
check ckeckbox if element value not empty
*/
function CheckCheckBox11(thisItem, idPart, checkBoxID)
{
    ChkBoxID = thisItem.id.replace(idPart, checkBoxID);
    ChkBox = document.getElementById(ChkBoxID);  

    if(ChkBox.checked != true)
        ChkBox.click();
}

function GetItems()
{
	var args = GetItems.arguments;
	if(document.getElementById(args[0]) != null)
	{
		var i;
		document.getElementById(args[1]).value = "";
		document.getElementById(args[2]).value = "";			
		for(i = 0; i < document.getElementById(args[0]).length; i++)
		{
			if(document.getElementById(args[1]).value.length > 0)
				document.getElementById(args[1]).value += ",";
			document.getElementById(args[1]).value += document.getElementById(args[0]).options[i].value;
			
			if(document.getElementById(args[2]).value.length > 0)
				document.getElementById(args[2]).value += ",";
			document.getElementById(args[2]).value += document.getElementById(args[0]).options[i].text;
		}
	}
}

function AddOrRemoveItems()
{
	var args = AddOrRemoveItems.arguments;
	var arrText = new Array();
	var arrValue = new Array();
	var iIndexesArrayCount = 0;
	var i;
	//if args[0] equals 1 then adding items
	if(args[0] == 1)
	{
		var iSelectLength = document.getElementById(args[1]).length
		for(i = iSelectLength - 1; i >= 0; i--)
		{
			if(document.getElementById(args[1]).options[i].selected)
			{
				
				arrText[iIndexesArrayCount] = document.getElementById(args[1]).options[i].text;
				arrValue[iIndexesArrayCount] = document.getElementById(args[1]).options[i].value;
				
				document.getElementById(args[1]).options[i] = null;
				
				iIndexesArrayCount++;
			}
		}
		for(i = iIndexesArrayCount - 1; i >= 0; i--)
		{
			var newOption = new Option(arrText[i], arrValue[i]);
			var selLength = document.getElementById(args[2]).length;
			document.getElementById(args[2]).options[selLength] = newOption;
		}
	}
	//else if args[0] equals -1 then deleting items
	else if(args[0] == -1)
	{
		var iSelectLength = document.getElementById(args[2]).length
		for(i = iSelectLength - 1; i >= 0; i--)
		{
			if(document.getElementById(args[2]).options[i].selected)
			{
				
				arrText[iIndexesArrayCount] = document.getElementById(args[2]).options[i].text;
				arrValue[iIndexesArrayCount] = document.getElementById(args[2]).options[i].value;
				
				document.getElementById(args[2]).options[i] = null;
				
				iIndexesArrayCount++;
			}
		}
		for(i = iIndexesArrayCount - 1; i >= 0; i--)
		{
			var newOption = new Option(arrText[i], arrValue[i]);
			var selLength = document.getElementById(args[1]).length;
			document.getElementById(args[1]).options[selLength] = newOption;
		}
	}
	//first lisboxes group has fired event
//	if(args[3])
//	{
		document.getElementById(args[3]).value = "";
		document.getElementById(args[4]).value = "";
		for(i = 0; i < document.getElementById(args[2]).length; i++)
		{
			if(document.getElementById(args[3]).value.length > 0)
				document.getElementById(args[3]).value += ",";
			document.getElementById(args[3]).value += document.getElementById(args[2]).options[i].value;
			
			if(document.getElementById(args[4]).value.length > 0)
				document.getElementById(args[4]).value += ",";
			document.getElementById(args[4]).value += document.getElementById(args[2]).options[i].text.replace(",", "%2C");
		}
//	}
}

/******************************************************************************/

// Password strength meter v2.0
// Matthew R. Miller - 2007
// www.codeandcoffee.com
// Based off of code from:
//  http://www.intelligent-web.co.uk
//  http://www.geekwisdom.com/dyn/passwdmeter

/*
	Password Strength Algorithm:
	
	Password Length:
		10 Points: < 6 characters
		20 Points: 6 to 8
		30 Points: more than 8
		
	Letters:
		0 Points: No letters
		10 Points: Letters are all lower case or upper
		20 Points: Letters are upper case and lower case

	Numbers:
		0 Points: No numbers
		10 Points: 1 number
		20 Points: 2 or more numbers
		
	Characters:
		0 Points: No characters
		10 Points: 1 character
		25 Points: More than 1 character

	Bonus:
		2 Points: Letters and numbers
		3 Points: Letters, numbers, and characters
		4 Points: Mixed case letters, numbers
		5 Points: Mixed case letters, numbers, and characters
		
	Password Text Range:
	
		>= 90: Very Secure
		>= 80: Secure
		>= 70: Very Strong
		>= 60: Strong
		>= 50: Average
		>= 25: Weak
		>= 0: Very Weak
		
*/


// Settings
// -- Toggle to true or false, if you want to change what is checked in the password
var m_strUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var m_strLowerCase = "abcdefghijklmnopqrstuvwxyz";
var m_strNumber = "0123456789";
var m_strCharacters = "!@#$%^&*?_~"

// Check password
function checkPassword(strPassword)
{
	// Reset combination count
	var nScore = 0;
	if(strPassword != "")
	{
	    // Password length
	    // -- Less than 6 characters
	    if (strPassword.length < 6)
	    {
		    nScore += 10;
	    }
	    // -- 6 or more
	    else if (strPassword.length > 5)
	    {
		    nScore += 20;
	    }

	    // Letters
	    var nUpperCount = countContain(strPassword, m_strUpperCase);
	    var nLowerCount = countContain(strPassword, m_strLowerCase);
	    var nLowerUpperCount = nUpperCount + nLowerCount;
	    // -- Letters are all lower case
	    if ((nUpperCount == 0 && nLowerCount != 0) ||
	        (nUpperCount != 0 && nLowerCount == 0))
	    { 
		    nScore += 10; 
	    }
	    // -- Letters are upper case and lower case
	    else if (nUpperCount != 0 && nLowerCount != 0) 
	    { 
		    nScore += 20; 
	    }
    	
	    // Numbers
	    var nNumberCount = countContain(strPassword, m_strNumber);
	    // -- 1 number
	    if (nNumberCount < 3)
	    {
		    nScore += 10;
	    }
	    // -- 3 or more numbers
	    else if (nNumberCount >= 3)
	    {
		    nScore += 20;
	    }
    	
	    // Characters
	    var nCharacterCount = countContain(strPassword, m_strCharacters);
	    // -- 1 character
	    if (nCharacterCount == 1)
	    {
		    nScore += 10;
	    }	
	    // -- More than 1 character
	    if (nCharacterCount > 1)
	    {
		    nScore += 25;
	    }
    	
	    // Bonus
	    // -- Letters and numbers
	    if (nNumberCount != 0 && nLowerUpperCount != 0)
	    {
		    nScore += 2;
	    }
	    // -- Letters, numbers, and characters
	    if (nNumberCount != 0 && nLowerUpperCount != 0 && nCharacterCount != 0)
	    {
		    nScore += 3;
	    }
	    // -- Mixed case letters, numbers
	    if (nNumberCount != 0 && nUpperCount != 0 && nLowerCount != 0)
	    {
		    nScore += 4;
	    }
	    // -- Mixed case letters, numbers, and characters
	    if (nNumberCount != 0 && nUpperCount != 0 && nLowerCount != 0 && nCharacterCount != 0)
	    {
		    nScore += 5;
	    }
    }	
	
	return nScore;
}
 
// Runs password through check and then updates GUI 
function runPassword(strPassword, strFieldID, ctrlID, ctrlUsernameID) 
{
	// Check password
	var nScore = 0; //checkPassword(strPassword);
	var strText = "";
	var strColor = "";
	
	// Get controls
	var ctlBar = document.getElementById(strFieldID + "_bar"); 
	var ctlText = document.getElementById(strFieldID + "_text");
	if (!ctlBar || !ctlText)
		return;
	
	if (strPassword.length < 6)
	{
	    strText = "Password must be 6 or more characters";
 		strColor = "#e71a1a";
 		document.getElementById(ctrlID).disabled = "disabled";
	}
	else if (strPassword.toLowerCase().indexOf(document.getElementById(ctrlUsernameID).value.toLowerCase()) > -1)
	{
	    strText = "Username Can't be included in the password";
 		strColor = "#e71a1a";
 		document.getElementById(ctrlID).disabled = "disabled";
	}
	else if (strPassword.indexOf("123") > -1 ||
	         strPassword.indexOf("321") > -1 ||
	         strPassword.indexOf("456") > -1 ||
	         strPassword.indexOf("654") > -1 ||
	         strPassword.indexOf("789") > -1 ||
	         strPassword.indexOf("987") > -1)
	{
	    strText = "Password can't contain 3 sequential numbers";
 		strColor = "#e71a1a";
 		document.getElementById(ctrlID).disabled = "disabled";
	}
	else
	{
	    nScore = checkPassword(strPassword);
	    // Set new width
	    ctlBar.style.width = nScore + "%";

 	    if (nScore >= 50)
 	    {
 		    document.getElementById(ctrlID).disabled = "";
	    }
	    else
 	    {
 		    document.getElementById(ctrlID).disabled = "disabled";
	    }
 	    // Color and text
	    // -- Very Secure
 	    if (nScore >= 90)
 	    {
 		    strText = "Very Secure";
 		    strColor = "#0ca908";
 	    }
 	    // -- Secure
 	    else if (nScore >= 80)
 	    {
 		    strText = "Secure";
 		    strColor = "#7ff67c";
	    }
	    // -- Very Strong
 	    else if (nScore >= 70)
 	    {
 		    strText = "Very Strong";
 		    strColor = "#1740ef";
	    }
	    // -- Strong
 	    else if (nScore >= 60)
 	    {
 		    strText = "Strong";
 		    strColor = "#5a74e3";
	    }
	    // -- Average
 	    else if (nScore >= 50)
 	    {
 		    strText = "Average";
 		    strColor = "#e3cb00";
	    }
	    // -- Weak
 	    else if (nScore >= 25)
 	    {
 		    strText = "Weak";
 		    strColor = "#e7d61a";
	    }
	    // -- Very Weak
 	    else
 	    {
 		    strText = "Very Weak";
 		    strColor = "#e71a1a";
	    }
	}
	ctlBar.style.backgroundColor = strColor;
	ctlText.innerHTML = "<span style='color: " + strColor + ";'>" + strText + " - " + nScore + "</span>";
}
 
// Checks a string for a list of characters
function countContain(strPassword, strCheck)
{ 
	// Declare variables
	var nCount = 0;
	
	for (i = 0; i < strPassword.length; i++) 
	{
		if (strCheck.indexOf(strPassword.charAt(i)) > -1) 
		{ 
	        	nCount++;
		} 
	} 
 
	return nCount; 
}