﻿// ColinForm functions
function ColinForm() {
    return document.forms["Colin_Form"];
}

function submitToController() {
    ColinForm().action = 'controller.aspx';
    ColinForm().submit();
}

// ColinTree functionality
function toggleColinTree()
{
    var treeCookie = getCookie("ColinTreeHidden");
    var newValue = "True";
    
    if (treeCookie) {
        if (treeCookie == "True") {
            newValue = "False";
        }
    }
    else {
        newValue = "True";
    }
    
    // name, value, expires, path, domain, secure
    setCookie("ColinTreeHidden", newValue, 1, "/", "", "");
    // reload the page
    document.location.href = document.location.href;
}

// update javascript variable
function updateVariable(val,variable)
{
    eval(variable +" = '"+ val +"'");
}

// ajax functionality
function PopupAjaxError(result) {
    alert('An Ajax error has occurred:\n\n' + result.get_message());
}

// form functionality
function disableFormField (field) {
   ColinForm()[field].disabled = true;
}

function enableFormField (field) {
   ColinForm()[field].disabled = false;
}

function maxlength(limitField, limitNum)
{
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }                 
}

function updateField(val,field)
{
    ColinForm()[field].value = val;
}

function getRadioButtonValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function setRadioButtonValue(radioObj, newValue) {
    if(!radioObj)
        return;
    var radioLength = radioObj.length;
    if(radioLength == undefined) {
        radioObj.checked = (radioObj.value == newValue.toString());
        return;
    }
    for(var i = 0; i < radioLength; i++) {
        radioObj[i].checked = false;
        if(radioObj[i].value == newValue.toString()) {
            radioObj[i].checked = true;
        }
    }
}


// check if an array contains a value
Array.prototype.contains = function(value) {
    var ret = false;
    var i=0;
    while (i<this.length && !ret) {
        if (this[i] == value) {
            ret = true;
        }
        i++;
    }
    return ret;
};

// functions to hide / show / toggle divs
function hidediv(id) {
if (document.getElementById) { // DOM3 = IE5, NS6
document.getElementById(id).style.visibility = 'hidden';
}
else {
if (document.layers) { // Netscape 4
document[id].visibility = 'hidden';
}
else { // IE 4
document.all[id].style.visibility = 'hidden';
}
}
}

function showdiv(id) {
if (document.getElementById) { // DOM3 = IE5, NS6
document.getElementById(id).style.visibility = 'visible';
}
else {
if (document.layers) { // Netscape 4
document[id].visibility = 'visible';
}
else { // IE 4
document.all[id].style.visibility = 'visible';
}
}
} 

function toggleElement(id) {
	var el = document.getElementById(id);
	if(el.style.display == "block") {
    	el.style.display = "none";
  	}
	else {
		el.style.display = "block";
	}
}

function toggleElementOn(id) {
	var el = document.getElementById(id);
    el.style.display = "block";
} 

function toggleElementOff(id) {
	var el = document.getElementById(id);
   	el.style.display = "none";
} 

// left / right / trim functions

function left(str, n){
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0,n);
}

function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function trim(str, chars) {
    if (str)
        return ltrim(rtrim(str, chars), chars);
    else
        return "";
}
 
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}


// generic function to set a cookie
function setCookie( name, value, expires, path, domain, secure ) 
{
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );

    /*
    if the expires variable is set, make the correct 
    expires time, the current script below will set 
    it for x number of days, to make it for hours, 
    delete * 24, for minutes, delete * 60 * 24
    */
    if (expires)
    {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );

    document.cookie = name + "=" +escape( value ) + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) + ( ( secure ) ? ";secure" : "" );
}

// generic function to get a cookie
function getCookie(check_name) {
    // first we'll split this cookie up into name/value pairs
    // note: document.cookie only returns name=value, not the other components
    var a_all_cookies = document.cookie.split(";");
    var a_temp_cookie = "";
    var cookie_name = "";
    var cookie_value = "";
    var b_cookie_found = false; // set boolean t/f default f
	
    for ( i = 0; i < a_all_cookies.length; i++ )
    {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split("=");
		
        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, "");
	
        // if the extracted name matches passed check_name
        if ( cookie_name == check_name )
        {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if ( a_temp_cookie.length > 1 )
            {
                cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, "") );
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = "";
    }
	
    if (!b_cookie_found)
    {
        return null;
    }
}