var agt = navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_mac = (agt.indexOf("mac") != -1);
var is_netscape = document.layers;
var is_ie = (agt.indexOf("msie") != -1);
var is_konqueror = (agt.indexOf("konqueror") != -1);
var is_netscape6 = (agt.indexOf("netscape") != -1);
var is_mozilla = (agt.indexOf("mozilla") != -1 && agt.indexOf("gecko") != -1);
var is_opera = (agt.indexOf("opera") != -1);

var is_smart = (is_ie || is_mozilla || is_netscape6 || is_konqueror) && !is_opera;
var is_smarter = (is_ie || is_mozilla || is_netscape6) && !is_opera;
var is_thesmartest = is_ie && !is_opera;

function getObject(objName) {
    return is_ie?eval(objName):document.getElementById(objName);
}

function selectByValue(obj, value) {
    for(j=0;j<obj.length;j++)
        if(obj.options[j].value == value)
            obj.options[j].selected = true;
    return true;
}

function selectByText(obj, value) {
    for(j=0;j<obj.length;j++)
        if(obj.options[j].text == value)
            obj.options[j].selected = true;
    return true;
}

/**
* Finds all checkboxes in a page with name starting with 'chkDel_' and
* binds them to triggerObj which has to be also a checkbox
*
* @param object frmObject form
* @param object triggerObj checkbox object
* @access public
*/
function doActOnAll(frmObject, triggerObj) {
    with(frmObject) {
        var c = 0;
        var colors = new Array("#dddddd", "#eeeeee");
        for(i=0;i<elements.length;i++) {
            if(elements[i].name && elements[i].name.substr(0, 7) == 'chkDel_') {
                elements[i].checked = triggerObj.checked;
                if(is_smart) {
                    var objRow = elements[i].parentNode.parentNode;
                    for(j=0;j<objRow.childNodes.length;j++)
                        if(objRow.childNodes[j].tagName == 'TD')
                            objRow.childNodes[j].style.backgroundColor = elements[i].checked?"#ff6666":colors[c%2];
                }
                c++;
            }
        }
    }
}


/**
* Highlight the current row of the triggering object
*
* @param object obj triggering object
* @param string color old row color for restore
* @access public
*/
function highlightRow(obj, color) {

    if(is_smart) {
        var objRow = obj.parentNode.parentNode;
        for(var i=0;i<objRow.childNodes.length;i++)
            if(objRow.childNodes[i].tagName == 'TD')
                objRow.childNodes[i].style.backgroundColor = obj.checked?"#ff6666":color;
    }
}

/**
* Given two multiple selects performs movement techniques of items from one object to another
*
* @param object selObjSource source object
* @param object selObjDest destination object
* @param boolean keepSource (default is false) if true keeps the selected items in the original list
* @param boolean ignoreDest (default is false) if true does not write the selected items in destination list
* @access public
*/
function move(selObjSource, selObjDest, keepSource, ignoreDest) {
    selObjSourceLen = selObjSource.length;

    if(!ignoreDest) {
        for(i=0;i<selObjSourceLen;i++) {
            if(selObjSource.options[i].selected == true) {
                selObjDestLen = selObjDest.length;
                selObjDest.options[selObjDestLen] = new Option(selObjSource.options[i].text, selObjSource.options[i].value);
            }
        }
    }
    if(!keepSource) {
        for(i=(selObjSourceLen - 1);i>=0;i--) {
            if(selObjSource.options[i].selected == true) {
                selObjSource.options[i] = null;
            }
        }
    }
}

/**
* Move the selected item from a multiple select one position up in list
*
* @param object selObj list object
* @access public
*/
function up(selObj) {
    if(selObj.selectedIndex>0) {
        var x = selObj.selectedIndex;
        var tmp = selObj.options[selObj.selectedIndex].text;
        selObj.options[selObj.selectedIndex].text = selObj.options[selObj.selectedIndex-1].text;
        selObj.options[selObj.selectedIndex-1].text = tmp;

        var tmp = selObj.options[selObj.selectedIndex].value;
        selObj.options[selObj.selectedIndex].value = selObj.options[selObj.selectedIndex-1].value;
        selObj.options[selObj.selectedIndex-1].value = tmp;
        selObj.selectedIndex = x-1;
    }
}

/**
* Move the selected item from a multiple select one position down in list
*
* @param object selObj list object
* @access public
*/
function down(selObj) {
    if(selObj.selectedIndex < selObj.length-1 && selObj.selectedIndex > -1) {
        var x = selObj.selectedIndex;
        var tmp = selObj.options[selObj.selectedIndex].text;
        selObj.options[selObj.selectedIndex].text = selObj.options[selObj.selectedIndex+1].text;
        selObj.options[selObj.selectedIndex+1].text = tmp;

        var tmp = selObj.options[selObj.selectedIndex].value;
        selObj.options[selObj.selectedIndex].value = selObj.options[selObj.selectedIndex+1].value;
        selObj.options[selObj.selectedIndex+1].value = tmp;
        selObj.selectedIndex = x+1;
    }
}

/**
* Select all items in a select object
*
* @param object selObj list object
* @access public
*/
function selectAll(selObj) {
    selObjLen = selObj.length;
    for(i=0;i<selObjLen;i++)
        selObj.options[i].selected = true;
}


/**
* Ease insertion of date/time values
*
* @param string $type type of the fied : date, time, datetime, timestamp, year
* @param object $obj triggering object
* @return value selected in the specified format
* @access public
*/
function showDateTime(type, obj, p) {
	if(p)
        var wndDateTime = window.open("/setup/wp_dbtools/data/js_" + type + ".php?objname=" + obj.name + "&int=1", "wndDateTime", "left=200,top=200,width=400,height=120");
    else
        var wndDateTime = window.open("js_" + type + ".php?objname=" + obj.name + "&int=0", "wndDateTime", "left=200,top=200,width=400,height=120");
}

