/* general.js */
document.getElementsByClassName = function (needle) {
    var s = document.getElementsByTagName('*'), i = s.length, r = [], e, c;
    needle = ' ' + needle + ' ';
    while (i--){
        e = s.item(i);
        if (e.className){
            c = ' ' + e.className + ' ';
            if (c.indexOf(needle) != -1) { r.push(e); }
        }
    }
    return r;
}

/* Popup wrapper */
var popup_count = 0;
function popitup(wname,url,ht,wt,sb,rz) {
    newwindow=window.open(url,wname,'height='+ht+',width='+wt+',scrollbars='+sb+',resizable='+rz+'');
    if (window.focus) {newwindow.focus()}
    popup_count++;
}
/* Bookmark a link */
function bookmarksite(title,url){
    
    var chr = 'CTRL-D';
    var agt=navigator.userAgent.toLowerCase();
    if(agt.substr(agt.indexOf('opera')+6,1) < 9) chr = 'CTRL-T';
    if (window.sidebar) 
        window.sidebar.addPanel(title, url, ""); // FireFox
    else if (window.external) 
        window.external.AddFavorite(url, title); // IE
    else alert('Press '+chr+' to bookmark this page.');
}
var toggleStarted = false;
/* Toggle Element Visibility */
function toggleReset(obj) {
    with(obj.style){
        display = 'none';
    }
}
function toggleEl(el){
    toggleObj(document.getElementById(el));
}
function toggleObj(obj, displayType){
    if(!toggleStarted){
        toggleReset(obj);
    }
    if(!displayType){
        displayType = 'block';
    }
    with(obj.style){
        if(display == 'none'){
            display = displayType;
        } else {
            display = 'none';
        }
    }
    toggleStarted = true;
}
/* Toggle Element Visibility Depending on condition */
function compareEl(el, compareValue, trueValue){
    if(compareValue == trueValue){
        toggleEl(el);
    }
}
/* Display characters left counter */
function fieldCounter(fieldId,targetId,charLimit) {
    var fieldObj  = document.getElementById(fieldId);
    var targetObj = document.getElementById(targetId);
    if (fieldObj.value.length >= charLimit) {
        fieldObj.value = fieldObj.value.substring(0, charLimit);
    }
    targetObj.value = charLimit - fieldObj.value.length;
}
/* Check all elements */
function checkUncheckAll(theElement) {
    var theForm = theElement.form, z = 0;
    for(z=0; z<theForm.length;z++){
        if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
            theForm[z].checked = theElement.checked;
        }
    }
}
function disable_inputs_in_element(comp_value1, comp_value2, element_id, input_type, hide_element, background_color_element, invert_comparison){
    var disabled_value;
    var element_background_color;
    element_container = document.getElementById(element_id);
    
    var element_comparison = (comp_value1 == comp_value2);
    if(invert_comparison){
        if(element_comparison) {
            element_comparison = false;
        } else {
            element_comparison = true;
        }
    }
    if(element_comparison){
        element_background_color = '#eee';
        element_display_type = 'none';
        disabled_value = true;
    } else {
        element_background_color = 'transparent';
        element_display_type = 'block';
        disabled_value = false;
    }
    if(hide_element){
        element_container.style.display = element_display_type;
    } else if(background_color_element){
        element_container.style.backgroundColor = element_background_color;
    }
    if(elements = element_container.getElementsByTagName('input')){
        for (var i=0;i<elements.length;i++) {
            var element = elements[i];
            if(element.type == input_type){
                element.disabled = disabled_value;
            }
        }
    }
    return false;
}
function addEvent(obj, type, fn){
    if (obj.addEventListener)
        obj.addEventListener( type, fn, false );
    else if (obj.attachEvent)
    {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
    }
}

function removeEvent( obj, type, fn ){
    if (obj.removeEventListener)
        obj.removeEventListener( type, fn, false );
    else if (obj.detachEvent)
    {
        obj.detachEvent( "on"+type, obj[type+fn] );
        obj[type+fn] = null;
        obj["e"+type+fn] = null;
    }
}
/* Calendar related */
var currentX;
var currentY;
function getCoords(e) {
    e = e || window.event;
    if (e.pageX || e.pageY) {
        currentX = e.pageX;
        currentY = e.pageY;
    } 
    else {
        currentX = e.clientX + 
            (document.documentElement.scrollLeft || 
            document.body.scrollLeft) - 
            document.documentElement.clientLeft;
        currentY = e.clientY + 
            (document.documentElement.scrollTop || 
            document.body.scrollTop) - 
            document.documentElement.clientTop;
    }
}

function positionElement(obname,x,y){
    ob = document.getElementById(obname);
    ob.style.top =  y + 'px';
    ob.style.left = x + 25 + 'px';
}
var tooltipId = 'toolTipContainer';
function toolTip(obname,content){
    ob = document.getElementById(obname);
    //alert(content);
    if(content != ob.innerHTML){
        ob.innerHTML = content;
        positionElement(tooltipId,currentX,currentY);
    }
    toggleEl(tooltipId);
}
/* End Calendar related */
function toggleElementsByClassName(className){
    var is_IE = (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
    var elements = document.getElementsByClassName(className);
    for(var i in elements){
        if(elements[i].nodeName){
            var display_type = false;
            switch(elements[i].nodeName){
                case 'TD':
                    if(is_IE){
                        display_type = 'block';
                    } else {
                        display_type = 'table-cell';
                    }
                break;
                case 'TR':
                    if(is_IE){
                        display_type = 'block';
                    } else {
                        display_type = 'table-row';
                    }
                break;
                case 'DIV':
                case 'P':
                    display_type = 'block';
                break;
                case 'SPAN':
                    display_type = 'inline';
                break;
                default:
                    alert(elements[i].nodeName + ' is not yet handled.');
                break;
            }
            if(display_type){
                toggleObj(elements[i], display_type);
            }
        }
    }
    return true;
}


/* Legacy Methods for toggling */
function expand(id) {
    document.getElementById(id).style.display='block';
    document.getElementById(id+'more').style.display='none';
    document.getElementById(id+'less').style.display='inline';
}
function contract(id) {
    document.getElementById(id).style.display='none';
    document.getElementById(id+'more').style.display='inline';
    document.getElementById(id+'less').style.display='none';
}


/*
function makeExternal() {
  if (document.getElementsByTagName) {
    var anchors = document.getElementsByTagName("a");
    if(anchors) {
    for (var i=0; i<anchors.length; i++) {
      var anchor = anchors[i];
      if (anchor.getAttribute("rel") == "external") {
        anchor.target = "_blank";
      }
    }
    }
  }
}

*/


function str_replace(haystack, needle, replacement) {
    var temp = haystack.split(needle);
    return temp.join(replacement);
}
function str_replace_reg(haystack, needle, replacement) {
    var r = new RegExp(needle, 'g');
    return haystack.replace(r, replacement);
}

function getPluralSuffix(iNum){
    return (iNum == 1) ? '' : 's';
}
function getCookie(c_name){
    var results = document.cookie.match ('(^|;) ?' + c_name + '=([^;]*)(;|$)');
    if(results){
        return (unescape(results[2]));
    } else {
        return null;
    }
}

function setCookie(c_name,value,expiredays,path,domain,secure){
    var cookie_string = c_name + "=" + escape (value);
    if(expiredays!=null){
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays);
        cookie_string += "; expires=" + exdate.toGMTString();
    }
    if(path){
        cookie_string += "; path=" + escape(path);
    } else {
        cookie_string += "; path=/";
    }
    if(domain){
        cookie_string += "; domain=" + escape(domain);
    }
    if(secure){
        cookie_string += "; secure";
    }
    document.cookie = cookie_string;
}
function deleteCookie(c_name, b_reload){
    setCookie(c_name,null,-1);
    if(b_reload){
        document.location.href=document.location.href;
    }
}
