
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 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 show(cont)
{   
	if (!DHTML) return;
	
}
function hide(cont)
{   
	if (!DHTML) return;
	$(cont).style.visibility = 'hidden';
	$(cont).style.display = 'none';
}

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 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;
}

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);
}

// check whether an ID number is a valid South African ID number
function isValidSAIDNumber(id) {
    // constants
    var VALID_LENGTH = 13;
	var CONTROL_DIGIT_LOCATION = 12;
	var CONTROL_DIGIT_CHECK_VALUE = 10;
	var CONTROL_DIGIT_CHECK_EXCEPTION_VALUE = 9;
	re = /(((\d{2}((0[13578]|1[02])(0[1-9]|[12]\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\d|30)|02(0[1-9]|1\d|2[0-8])))|([02468][048]|[13579][26])0229))(( |-)(\d{4})( |-)(\d{3})|(\d{7}))/;

	// assume that the id number is invalid
	var isValidID=false;

    // check for null value
	if (id != null) {
	    // check length
	    if (id.length == VALID_LENGTH)  {
	        // match regex pattern, only if length is valid
		    if (re.test(id))  { 
                //00 will slip through the regex and checksum
                if (id.substr(2, 2) != '00' && id.substr(4, 2) != '00') {
                    // check control digit, only if previous validations passed
	                var a = 0;
	                var b = 0;
	                var c = 0;
	                var cDigit = -1;
	                var tmp = 0;
	                var even = '';
	                var evenResult = null;

	                // sum odd digits
	                for (var i = 0; i < VALID_LENGTH - 1; i += 2) {
		                a += parseInt(id.charAt(i).toString());
	                }
            		
	                // build a string containing even digits
	                for (var i = 1; i < VALID_LENGTH - 1; i = i + 2) {
		                even += (id.charAt(i).toString());
	                }
            		
	                // multipy by 2
	                tmp = parseInt(even.toString()) * 2;
            		
	                // convert back to string
	                evenResult = tmp.toString();
            		
	                // sum the digits in evenResult
	                for (var i = 0; i < evenResult.length; i++) {
		                b += parseInt(evenResult.charAt(i).toString());
	                }

                    // sum odd digits sum and eventResult sum
	                c = a + b;
                    
                    // subtract result above from check digit value
	                cDigit = CONTROL_DIGIT_CHECK_VALUE - parseInt(c.toString().charAt(1).toString());
            		
            		// check if above result equals control digit value
	                if (cDigit == parseInt(id.charAt(CONTROL_DIGIT_LOCATION).toString())) {
		                isValidID = true;
	                }  else  {
		                if (cDigit > CONTROL_DIGIT_CHECK_EXCEPTION_VALUE) {
			                if (0 == parseInt(id.charAt(CONTROL_DIGIT_LOCATION).toString())) {
				                isValidID = true;
			                }
		                }
	                }
                }
            }					
		}
	}
	return isValidID;
}

 // 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;
}
function getRadioButtonText(id) {
    var inputs = $$('table#' + id + ' input');
    var labels = $$('table#' + id + ' label');
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            return inputs[i].value;
            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;
}

function checkBoxListAtLeastOneChecked(id) { //alert('me');
    var inputs = $$('table#' + id + ' input');
    //alert(inputs.length);
    for(var i = 0; i < inputs.length; i++) {
        //alert(inputs[i].checked);    
        if (inputs[i].checked) {
            return true;
        }
    }
    return false;
}


 // Get drop down selected value
function getDropDownAttributeValue(id, attr) {
   var ddo = $(id);
   return ddo.options[ddo.selectedIndex].getAttribute(attr);
}


function getScreen(url, size) {
    if (url === null) { return ""; }

    size = (size === null) ? "big" : size;
    var vid;
    var results;

    results = url.match("[\\?&]v=([^&#]*)");

    vid = (results === null) ? url : results[1];
    
    if (size == "small") {
        return "http://img.youtube.com/vi/" + vid + "/1.jpg";
    } else {
        return "http://img.youtube.com/vi/" + vid + "/0.jpg";
    }
}

function openNewWindow(url, name, width, height) {
    var x = (document.body.offsetWidth / 2) - width / 2;
    var y = (screen.height / 2) - height / 2;
    window.open(url, 'child', 'width=' + width + ', height=' + height + ', top=' + y + ', left=' + x + ', status=1, scrollbars=1');
}