
var DHTML = (document.getElementById || document.all || document.layers);	

// Extended Tooltip Javascript
var DH = 0;
var an = 0;
var al = 0;
var ai = 0;
if (document.getElementById) 
    {ai = 1; DH = 1;}
else 
    {
        if (document.all) 
        {
            al = 1; 
            DH = 1;
        } 
        else 
        { 
            browserVersion = parseInt(navigator.appVersion); 
            
            if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) 
            {
                an = 1; DH = 1;
            }
        }
    } 
   
function fd(oi, wS) 
{
    if (ai) return wS ? document.getElementById(oi).style:document.getElementById(oi); 
    if (al) return wS ? document.all[oi].style: document.all[oi]; 
    if (an) return document.layers[oi];
}


function pw() 
{
    return window.innerWidth != null? window.innerWidth: document.body.clientWidth != null? document.body.clientWidth:null;
}

function mouseX(evt) 
{
    if (evt.pageX) 
        return evt.pageX; 
    else 
        if (evt.clientX)
            return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); 
        else 
            return null;
}

function mouseY(evt) 
{
    if (evt.pageY) 
        return evt.pageY; 
    else 
        if (evt.clientY)
            return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
        else 
            return 
        null;
}

function popUp(evt,oi) 
{
    if (DH) 
    {
        var wp = pw(); 
        ds = fd(oi,1); 
        dm = fd(oi,0); 
        st = ds.visibility; 
        
        //Get the Width of the Div
        if (dm.offsetWidth) 
            ew = dm.offsetWidth; 
        else 
            if (dm.clip.width) 
                ew = dm.clip.width; 
        
        //Get the Height Of the Div
        if (dm.offsetHeight)
            eh = dm.offsetHeight;
        else
            if (dm.clip.height)
                eh  = dm.clip.height; 
        
        if (st == "visible" || st == "show") 
        { 
            ds.visibility = "hidden"; 
        } 
        else 
        {
            
            tv = mouseY(evt) - eh; 
            //lv = mouseX(evt) - (ew/4); 
            lv = mouseX(evt);
            lv+= 50;
            
            if (lv < 2) 
                lv = 2; 
            else 
                if (lv + ew > wp) 
                    lv -= ew/2; 
            
            if (!an) 
            {
                lv += 'px';tv += 'px';
            } 
            ds.left = lv; 
            ds.top = tv; 
            ds.visibility = "visible";
        }
    }
}

function HTMLEncode(s)
{
    s = s.replace(/</g, "&lt;");
    s = s.replace(/>/g, "&gt;");
    return s;
}

function capLock(e, id)
{
    kc = e.keyCode?e.keyCode:e.which;
    sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
    if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk))
        invi(0, id);
    else
        invi(1, id);
}

function GenerateUsername() 
{
    var isNumber1 = false;
    var isNumber2 = false;
    var isNumber3 = false;

    var firstname = new getObj("ctl00_ContentPlaceHolder1_txtFirstname");
	var surname = new getObj("ctl00_ContentPlaceHolder1_txtSurname");
	var username = new getObj("ctl00_ContentPlaceHolder1_txtUsername");
	
	var genNumbers = ""
	var genFirstname = firstname.obj.value.replace(" ", "").toLowerCase().substring(0, 3);
	var genSurname = surname.obj.value.replace(" ", "").toLowerCase().substring(0, 3);
	var genUsername = ""
	
	if (username.obj.value.length >= 3)
	{
	    if (IsNumber(username.obj.value.charAt(0))) { isNumber1 = true; }
	    if (IsNumber(username.obj.value.charAt(1))) { isNumber2 = true; }
	    if (IsNumber(username.obj.value.charAt(2))) { isNumber3 = true; }    
	}
	
	if (isNumber1 && isNumber2 && isNumber3)
	{
	    genNumbers = username.obj.value.charAt(0) + username.obj.value.charAt(1) + username.obj.value.charAt(2);
    } 
    else
    {
	    genNumbers = Math.ceil((Math.random()+1)*100);
	}
		
    genUsername = genNumbers + genFirstname + genSurname;	
	username.obj.value = genUsername;
}

function Username_onfocus() 
{
	var username = new getObj("ctl00_ContentPlaceHolder1_txtUsername");
	if (username.obj.value == "")
	{
	    GenerateUsername();
	}
}

function Show(page, width, height)
{
    var settings = "toolbar=no,menubar=no,width=" + width + ",height=" + height + ",resizable=yes,scrollbars=yes";
    //window.open(page, "info", "toolbar=no,menubar=no,width=400,height=300,resizable=yes,scrollbars=yes");
    window.open(page, "info", settings);
}

function chbYes_onclick() {
    var check = new getObj('ctl00_ContentPlaceHolder1_chbYes');
    var button = new getObj('ctl00_ContentPlaceHolder1_btnSubmit');
    
    if (check.obj.checked) 
    {
	    button.obj.disabled = false;
    }
    else
    {
	    button.obj.disabled = true;
    }
}

function getObj(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function checkinvi(cont)
{
	if (!DHTML) return;
		var x = new getObj(cont);
	if (x.style.visibility =='hidden'){
		return true
	}else if (x.style.visibility =='visible'){
		return false 					
	}
}

function toggle(item)
{
    if (!DHTML) return;
	var x = new getObj(item);
	if (x.style.visibility=='hidden')
	{
		invi(0,item);
	}
	else
	{		
		invi(1,item);
	}	
}

function changeStatus(item)
{
    if (!DHTML) return;
	var x = new getObj(item);
	if (x.style.visibility=='hidden')
	{
		invi(0,item);
	}
	else
	{		
		invi(1,item);
	}	
}
		
function invi(flag, cont)
{   
	if (!DHTML) return;
		var x = new getObj(cont);
		
		x.style.visibility = (flag) ? 'hidden' : 'visible';
		x.style.display = (flag) ? 'none' : 'block';
		
}

function checkEmail(name){
	  	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test(document.getElementById(name).value))
			testresults=true
                       else{
                       alert('Invalid email address!')
                           testresults=false
                       }
        return (testresults)
}


function InsertText(input, insTexte) { 

	startTag = ''; 
	endTag = ''; 

	if (input.createTextRange) {
		var text; 
		input.focus(input.caretPos); 
		input.caretPos = document.selection.createRange().duplicate(); 

		if(input.caretPos.text.length>0) { 
			input.caretPos.text = startTag + input.caretPos.text + endTag;
			} 
			else { 
			input.caretPos.text = startTag + "" + insTexte + " " + endTag; 
			}
         }
         else 
		input.value += startTag + insTexte + endTag; 
}


function IsFaxPhoneChar() {
    if (event.keyCode != 8) 
    {
        var myValue = String.fromCharCode(event.keyCode);
        event.returnValue = (IsNumeric(myValue)) ? myValue : "";
    }
}


function IsCountryCodeChar(obj, charCount) {
   if (event.keyCode != 8) 
    {
        var myValue = String.fromCharCode(event.keyCode);
        event.returnValue = (IsCellPhone(myValue, charCount)) ? myValue : "";
    }
}
    
function IsNumeric(sText)
    {
        var ValidChars = "0123456789";
        var IsNumber=true;
        var Char;

        for (i = 0; i < sText.length && IsNumber == true; i++) 
        { 
            Char = sText.charAt(i); 
            if (ValidChars.indexOf(Char) == -1) 
            {
                IsNumber = false;
            }
        }
        return IsNumber;
     }
     
function IsCellPhone(sText, charCount)
{
    var ValidChars = "+0123456789";
    var IsNumber=true;
    var Char;
    
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    {        
        Char = sText.charAt(i);
        if (charCount == 0 && Char == '+') 
        {
		    IsNumber = true;
        }
	    else if (ValidChars.indexOf(Char) == -1) 
	    {
            IsNumber = false;
        }
    }
    return IsNumber;
 }

function ConvertToCell(obj)
{
    var strHoldText  = ''
    strHoldText = obj.value;
    var strHoldNew = ''
    for (var i = 0 ; i < strHoldText.length ; i++)
    {
        if (IsCellPhone(strHoldText.charAt(i),i) == true)
        {
            strHoldNew += strHoldText.charAt(i) ;
        }
    }
    obj.value = strHoldNew;
}
     
function IsNumber(sText)
{
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;

    Char = sText.charAt(0) ; 
    if (ValidChars.indexOf(Char) == -1) 
    {
        IsNumber = false;
    }
    
    return IsNumber;
 }
     
function ConvertNumber(obj)
{
   var strHoldText  = ''
   strHoldText = obj.value;
   var strHoldNew = ''
   for (var i = 0 ; i < strHoldText.length ; i++)
   {
       if (IsNumber(strHoldText.charAt(i)) == true)
       {
           strHoldNew += strHoldText.charAt(i) ;
       }
   }
   obj.value = strHoldNew;
}

function ConvertText(obj)
{
   var strHoldText  = ''
   strHoldText = obj.value;
   var strHoldNew = ''
   for (var i = 0 ; i < strHoldText.length ; i++)
   {
       strHoldNew += strHoldText.charAt(i) ;
   }
   obj.value = strHoldNew;
}
	
function ConvertPhone(obj)
{
    var strHoldText  = '';
    strHoldText = obj.value;
    var strHoldNew = '';
    var i;
    for (i = 0 ; i < strHoldText.length ; i++)
    {
        if (IsPhone(strHoldText.charAt(i),i) == true)
        {
            strHoldNew += strHoldText.charAt(i) ;
        }
    }
    obj.value = strHoldNew;
}
	
function IsPhone(sText,charCount)
{
    var ValidChars = "0123456789";
    var IsValidPhone=true;
    
    
    if (charCount == 0 && sText == '+')
    {
	    IsValidPhone = true;
	}
	else if (ValidChars.indexOf(sText) == -1) 
	{
        IsValidPhone = false;
    }
    return IsValidPhone;
 }
 
function Trim1(obj)
{
    var strHoldText  = ''
    strHoldText = obj.value;
    var strHoldNew = ''
    for (var i = 0 ; i < strHoldText.length -1 ; i++)
    {
        strHoldNew += strHoldText.charAt(i) ;
    }
    obj.value = strHoldNew;
}
	
function ConvertToDate(obj)
{
    var strHoldText  = ''
    strHoldText = obj.value;
    var strHoldNew = ''
    for (var i = 0 ; i < strHoldText.length ; i++)
    {
        if (IsDate(strHoldText.charAt(i),i) == true)
        {
            strHoldNew += strHoldText.charAt(i) ;
        }
    }
    obj.value = strHoldNew;
}
	
function IsDate(sText,charCount)
{
    var ValidChars = "/0123456789";
    var IsNumber=true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        
        Char = sText.charAt(i) ;
        if (charCount == 0 && Char == '+') {
			IsNumber = true;
        }
		else if (ValidChars.indexOf(Char) == -1) 
		{
            IsNumber = false;
        }
    }
    return IsNumber;
 }
	
//What it does
//	Displays the amount of characters left in a lable that may be typed into a textbox and and pops up a msgbox 
//	to let user know when max amount has been reached 
//How to use
//Create a text box and a maching lable underneath
//For argument sake txtTextBox and lblLable
//lblLable text  = ""
//add the onkeypress and onkeyup events for txtTextBox
//e.g. 
//<asp:TextBox ID="txtTextBox" onkeypress="return CheckTextCount(this,'ctl00_ContentPlaceHolder1_lblLable',250);" onkeyup="return CheckTextCount(this,'ctl00_ContentPlaceHolder1_lblLable',250);" runat="server" Height="60px" TextMode="MultiLine" Width="200px">
//</asp:TextBox>
//<br />
//<asp:Label ID="lblLable" runat="server"></asp:Label>

//This example was made for dot net 2005
//For 2003 all you would need to change is the lable name you sent through "ctl00_ContentPlaceHolder1_lblLable" to what ever it need to be in 2003
		
function CheckTextCount(TextControl,DisplayControl,Max)
{ 
    var strText = new String(""); 
    strText = TextControl.value;
    if (strText.length < Max)
    { 
	    document.getElementById(DisplayControl).innerText = (Max - strText.length) + ' characters left'; 
	} 
	else 
	{
	    strText = TextControl.value;
	    strText = strText.substr(0,Max);
	    TextControl.value = strText;
	    document.getElementById(DisplayControl).innerText = (Max - strText.length) + ' characters left';
	    alert('Maximum Amount of Caracters Reached');
	    return false;
	}
}
    
    
//What it does
//This is a support function for the function
//This function returns the count of the checkboxlist items for the name you provided
//String in Integer out
    
function GetListCount(Name)
{
    var intCount = 1;
    var blnListEnd = false;
    while (blnListEnd == false)
    {
        try
        {   var obj = new getObj(Name + '_' + intCount);
            if (obj == null )
            { 
                blnListEnd = true;
                break;
            }
        }
        catch(e)
        {
            blnListEnd = true;
            break;
        } 
        intCount++;
    }
    return (intCount);
}

/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Will Bontrager :: http://willmaster.com/ */

/* For additional information about this JavaScript
and how to use it, see the "Displaying Number of Words
Typed Into Form Fields" article, linked from the archives
at from http://willmaster.com/possibilities/archives/
The above note and the copyright line must remain with
this JavaScript source code. Comments below this point
in the code may be removed if desired. */

// Customizing this JavaScript code requires specifying eight values.


//////////////////////////////////////////////////////
//                                                  //
//  No modfications are required below this point.  //
//                                                  //
//////////////////////////////////////////////////////

WordsMonitor = 0;

function CharLengthCheck(s,l) {
    if (s.length > l) { 
        s = s.substring(0,l); 
    }
    return s;
} 

function InputCharacterLengthCheck(textBox, maxChars, labelCharsLeft, labelCharsTyped) {
    if (maxChars <= 0) { 
        return; 
    }
    var currentstring = new String();
    currentstring = textBox.value;
    var currentlength = currentstring.length;
    currentstring = CharLengthCheck(textBox.value, maxChars);
    if (labelCharsLeft != null) {
	    var left = 0;
	    left = maxChars - textBox.value.length;
	    if (left < 0) { 
	        left = 0; 
	    }
	    labelCharsLeft.innerHTML = left;
	    if (currentstring.length < currentlength) { 
	        textBox.value = currentstring.substring(0);
	    }
	}
    if (labelCharsTyped != null) {
        labelCharsTyped.innerHTML = currentstring.length;
	    if (currentstring.length < currentlength) { 
	        textBox.value = currentstring.substring(0);
	    }
	}
} 

function WordLengthCheck(s,l) {
    WordsMonitor = 0;
    var f = false;
    var ts = new String();
    for(var vi = 0; vi < s.length; vi++) {
	    vs = s.substr(vi,1);
	    if((vs >= 'A' && vs <= 'Z') || (vs >= 'a' && vs <= 'z') || (vs >= '0' && vs <= '9') || (vs >= '-' && vs <= '-')) {
		    if(f == false)	{
			    f = true;
			    WordsMonitor++;
			    if((l > 0) && (WordsMonitor > l)) {
				    s = s.substring(0,ts.length);
				    vi = s.length;
				    WordsMonitor--;
				}
			}
		}
	    else { f = false; }
	    ts += vs;
	}
    return s;
}

function GetWordCount(s) {
    var cnt = 0;
    var w = s.split(' ');
    for (var i = 0; i < w.length; i++) {
        if (w[i] != '') {
            cnt++;
        }
    }
    return cnt;
}



function InputWordLengthCheck(textBox, maxWords, labelWordsLeft, labelWordsTyped) {
    if(maxWords <= 0) { 
        return; 
    }
    var currentstring = new String();
    currentstring = textBox.value;
    var currentlength = currentstring.length;
    currentstring = WordLengthCheck(textBox.value, maxWords);
    
    if (labelWordsLeft != null) {
	    var left = maxWords - WordsMonitor;
	    if (left < 0) { 
	        left = 0; 
	    }
	    labelWordsLeft.innerHTML = left;
	    if (currentstring.length < currentlength) { 
	        textBox.value = currentstring.substring(0);
	    }
	}
    if (labelWordsTyped != null) {
        labelWordsTyped.innerHTML = WordsMonitor;
	    if (currentstring.length < currentlength) { 
	        textBox.value = currentstring.substring(0);
	    }
	}
} 


 // Get radio button selected value
function getRadioButtonValue(id) {
    var inputs = $$('table#' + id + ' input');
    var labels = $$('table#' + id + ' label');
    for(var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            return labels[i].innerHTML;
            break;
        }
    }
    return null;
}

 // Checks if checkbox with value in checkbox list with is is checked or not
function checkBoxListValueIsChecked(id, value) {
    var inputs = $$('table#' + id + ' input');
    var labels = $$('table#' + id + ' label');
    for(var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked && labels[i].innerHTML==value) {
            return true;
        }
    }
    return false;
}

 // Checks if checkbox with value in checkbox list with is is checked or not
function getTotalChecked(id) {
    var inputs = $$('table#' + id + ' input');
    var count = 0;
    for(var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            count +=1;
        }
    }
    return count;
}

function setCheckBoxListChecks(id, state) {
    var inputs = $$('table#' + id + ' input');
    var count = 0;
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].checked = state;
    }
    return count;
}

function setTextBoxesText(id, value) {
    var inputs = $$('table#' + id + ' input');
    var count = 0;
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].value = value;
    }
    return count;
}

 // Get drop down selected value
function getDropDownAttributeValue(id, attr) {
   var ddo = $(id);
   return ddo.options[ddo.selectedIndex].getAttribute(attr);
}

// Makes sure a Textbox only receives Numbers (eg mobile no)
function allowNumeric(obj) {
    var temp = obj.value;
    var result = '';
    var i;
    for (var i=0 ; i<temp.length ; i++) {
        if (parseInt(temp.charAt(i)).toString() != 'NaN') {
            result += temp.charAt(i) ;
        }
    }
    obj.value = result;
}

// JLAKER - Comment
// This CLIENTSIDE script needs is used with a CustomControlvalidator 
//      and makes sure at least some is checked (where atLeast is the number)
//      The CustomControlValidator needs the following set (when looking at the eg below it):
//      ClientValidationFunction="cboBusinessObjectives_check"
//
// Usage: Inject using the ScriptManager.RegisterClientScriptBlock like this:
//      .AppendLine("function cboBusinessObjectives_check(source, args) {")
//      .AppendLine("   args.IsValid = CBOnlyCheckedCount($('" & cboBusinessObjectives.ClientID & "').id,3);")
//      .AppendLine("}")
//
// Tested with: IE, FireFox and Chrome
// NOTE! Check out AddCheckBoxListOnClicks for a different way and FORCING checks rather than using a Validator

function CBAtLeastCheckedCount(cbControlID, atLeast) {
    var chkBoxList = document.getElementById(cbControlID); 
    var chkBoxCount= chkBoxList.getElementsByTagName('input'); 
    var checkedCounter = 0;
    for(var i=0;i<chkBoxCount.length;i++) {
        if (chkBoxCount[i].checked==true) {
            checkedCounter++;
        }
    }
    if (checkedCounter >= atLeast)
        return true;
    else
        return false;
}

// JLAKER - See above comment for CBAtLeastCheckedCount
function CBOnlyCheckedCount(cbControlID, onlyCount) {
   var chkBoxList = document.getElementById(cbControlID); 
   var chkBoxCount= chkBoxList.getElementsByTagName('input'); 
   var checkedCounter = 0;
   for(var i=0;i<chkBoxCount.length;i++) {
       if (chkBoxCount[i].checked==true) {
           checkedCounter++;
       }
   }
   if (checkedCounter==onlyCount)
       return true;
   else
       return false;
}

// JLAKER - COMMENT
// This limits how many checkboxes can be checked clientside
// Add this to your ScriptManager.RegisterStartupScript when you inject script
// eg. .AppendLine("AddCheckBoxListOnClicks($('" & cboBusinessObjectives.ClientID & "').id,3);")
// The above example will make sure a person selects 3 Business Objectives, not more.
// Tested on IE,Firefox and Chrome

function AddCheckBoxListOnClicks(cbControlID, limit) {
    var chkBoxList = document.getElementById(cbControlID); 
    var chkBoxItem= chkBoxList.getElementsByTagName('input'); 
    for(var i=0;i<chkBoxItem.length;i++) {
        chkBoxItem[i].onclick=function() {
            var checkedcount = 0
            for (var j=0; j<chkBoxItem.length; j++) {
                checkedcount += (chkBoxItem[j].checked)? 1 : 0
                if (checkedcount>limit) {
                    this.checked=false
                }
            }
        }
    }
}
 // Checks if checkbox with value in checkbox list with is is checked or not
function checkBoxListValueIsChecked(id, value) {
    var inputs = $$('table#' + id + ' input');
    var labels = $$('table#' + id + ' label');
    for(var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked && labels[i].innerHTML==value) {
            return true;
        }
    }
    return false;
}

