/** form tag **/
var formOnSubmitActions = new Array();

function formSubmitActions() {
    for (i=0; i < formOnSubmitActions.length; i++) {
        eval(formOnSubmitActions[i]);
    }
}
/** /form tag **/

/** button tag **/
function initButtonById(buttonId) {
    var obj = document.getElementById(buttonId);
    obj.onmousedown = function() {
        onButtonMouseDown(this.id);
    }

    obj.onmouseup = function() {
        onButtonMouseUp(this.id);
    }
}

function isButtonDisabled(buttonId) {
    var button = findChildNode(document.getElementById(buttonId), function (o) { return o.getAttribute("id") == buttonId + '_button'; });
    return getNodeBooleanAttribute(button, "btnDisabled", false);
}

function isButtonOdisabled(buttonId) {
    var button = findChildNode(document.getElementById(buttonId), function (o) { return o.getAttribute("id") == buttonId + '_button'; });
    return getNodeBooleanAttribute(button, "odisabled", false);
}

function disableButtonById (buttonId) {
    disableButton(document.getElementById(buttonId));
}

function getObjectButtonById (buttonId) {
    return document.getElementById(buttonId);
}

function disableButton (buttonSpan) {
    if (!buttonSpan) return;
    var buttonId = buttonSpan.getAttribute("id");
    var button = findChildNode(buttonSpan, function (o) { return o.getAttribute("id") == buttonId + '_button'; });
    if (button && !getNodeBooleanAttribute(button, "btnDisabled", false)) {

        unsubscribeClickHandler(buttonSpan);
//        buttonSpan.className = 'button-disabled';
        buttonSpan.style.cursor = 'default';
        if (getNodeBooleanAttribute(buttonSpan, "autosize", false)){
            button.style.color = '#808080';
        } else {
            button.firstChild.style.color = '#808080';
        }
        buttonSpan = null;
        button.setAttribute("btnDisabled", "true");

    }
}

function enableButtonById (buttonId) {
    enableButton(document.getElementById(buttonId));
}

function enableButton (buttonSpan) {
    if (!buttonSpan) return;
    var buttonId = buttonSpan.getAttribute("id");
    var button = findChildNode(buttonSpan, function (o) { return o.getAttribute("id") == buttonId + '_button'; });
    if (button && getNodeBooleanAttribute(button, "btnDisabled", true)) {

        subscribeClickHandler(buttonSpan);
//        buttonSpan.className = 'hand';
        buttonSpan.style.cursor = 'hand';
        buttonSpan.style.cursor = 'pointer';
        if (getNodeBooleanAttribute(buttonSpan, "autosize", false)){
            button.style.color = "#003399";
        } else {
            button.firstChild.style.color = "#003399";
        }
        buttonSpan = null;
        button.setAttribute("btnDisabled", "false");
    }
}

function onButtonMouseDown(buttonId) {
    var btn = document.getElementById(buttonId + "_button");
    if (btn) {
        btn.style.paddingTop = "1px";
    }
}

function onButtonMouseUp(buttonId) {
    var btn = document.getElementById(buttonId + "_button");
    if (btn) {
        btn.style.paddingTop = "0px";
    }
}

/** /button tag **/

/** spinEdit tag **/
function spinEditUpClick(editId) {
    var edit = document.getElementById(editId);
    _spinEditUpClick(edit);
}

function _spinEditUpClick(edit){
    if (!edit.disabled) {
        var oldValue = parseInt(edit.value);
        var newValue = (edit.minValue != null) ? edit.minValue : 0;
        if (!isNaN(oldValue)) {
            if (edit.maxValue != null) {
                newValue = (oldValue >= edit.maxValue) ? oldValue : oldValue + 1;
            } else newValue = oldValue + 1;
        }
        edit.value = newValue;
    }
}

function spinEditDownClick(editId, promtMsg) {
    var edit = document.getElementById(editId);
    _spinEditDownClick(edit, promtMsg);
}

function _spinEditDownClick(edit, promtMsg){
    if (!edit.disabled) {
        var oldValue = parseInt(edit.value);
        var newValue = (edit.minValue != null) ? edit.minValue : 0;
        if (!isNaN(oldValue)) {
            if (edit.minValue != null) {
                newValue = (oldValue <= edit.minValue) ? oldValue : oldValue - 1;
            } else newValue = oldValue - 1;
        }
        if (!isNaN(oldValue) && oldValue != newValue) {
            if (promtMsg && promtMsg != "") {
                if (!window.confirm(promtMsg)) {
                    return;
                }
            }
        }
        edit.value = newValue;
    }
}

function spinEditKeyPress(event, obj) {    
    var code = (event.which == null)? event.keyCode: event.which;
    var result = true;
    if (( (code < 48) || (code > 57) ) & ((code != 0) & (code != 8))) result = false;

    var allowNegatives = ((obj.minValue == null) || obj.minValue < 0);
    if (code == 45) result = allowNegatives;

    return result;
}

function spinEditChange(spinEdit, promtMsg, allowEmpty) {
 var value = spinEdit.value;
 if (value.trim() == "" && allowEmpty) {
     spinEdit.value = "";
 } else {
     value = parseInt( Number(value) );

     if ( isNaN(value) ) {
          value = 0;
     }
     value =  ((spinEdit.minValue != null )&&(value < spinEdit.minValue))? spinEdit.minValue: value;
     value =  ((spinEdit.maxValue != null )&&(value > spinEdit.maxValue))? spinEdit.maxValue: value;
     spinEdit.value = value;
 }
}

function spinEditOnFocus(spinEdit) {
    spinEdit.oldValue = spinEdit.value;
}

function spinEditRollback(spinEdit, rightValue) {
    if (rightValue) {
        spinEdit.value = rightValue;
        spinEdit.oldValue = rightValue;
    } else {
        spinEdit.value = spinEdit.oldValue;
    }
}

function spinEditIsValid(spinEdit) {
    if (spinEdit.minValue == null && spinEdit.maxValue == null) {
        return true;
    }
    var minValid;
    var maxValid;
    if (spinEdit.minValue != null) {
        minValid = (spinEdit.value >= spinEdit.minValue);
    }
    if (spinEdit.maxValue != null) {
        maxValid = (spinEdit.value <= spinEdit.maxValue);
    }
    return (minValid && maxValid);
}

function disableSpinEdit(id) {
    var spinEditDiv = document.getElementById(id + "_div");
    var input = document.getElementById(id);

    input.disabled = true;

    var upBtn = findChildNodeByType(spinEditDiv, "upBtn");
    upBtn.src = upBtn.src.replace(".gif", "_d.gif");
    var downBtn = findChildNodeByType(spinEditDiv, "downBtn");
    downBtn.src = downBtn.src.replace(".gif", "_d.gif");
}

function enableSpinEdit(id) {
    var spinEditDiv = document.getElementById(id + "_div");
    var input = document.getElementById(id);

    input.disabled = false;

    var upBtn = findChildNodeByType(spinEditDiv, "upBtn");
    upBtn.src = upBtn.src.replace("_d.gif", ".gif");
    var downBtn = findChildNodeByType(spinEditDiv, "downBtn");
    downBtn.src = downBtn.src.replace("_d.gif", ".gif");
}
/** /spinEdit tag **/

/** groupbox tag **/
function groupBoxExpandRollup(groupboxImage){
  var content = document.getElementById(groupboxImage.id + '_content');
  var hint = document.getElementById(groupboxImage.id + '_hint');
  var visiblity = content.style.display;
  if (visiblity == 'none') {
    content.style.display ='';
	hint.style.display ='none';
	groupboxImage.src = tolunapath+'/common/img/groupbox/minus.gif';
  } else {
    content.style.display = 'none';
	hint.style.display = '';
    groupboxImage.src = tolunapath+'/common/img/groupbox/plus.gif';
  }
}

function expanded(groupboxImage) {
    var content = document.getElementById(groupboxImage.id + '_content');
    var visibility = content.style.display;
    if (visibility == 'none') {
        return false;
    } else {
        return true;
    }
}
/** /groupbox tag **/

/** tabletag **/
function cell_click(cell)  {
    // on cell click
}

function row_click(row) {
    // on row click
}

function head_cell_click(cell) {
    // on table head cell click
}

function head_cell_mouse_over(cell) {
    // on table head mouse over
}

function head_cell_mouse_out(cell) {
    // on table head mouse out
}
/** /tabletag **/

/** select panels tag **/
function selectPanelsSetPanels(list1, list2, dest1, dest2){
    fistList = document.getElementById(list1);
    secondList = document.getElementById(list2);
    input1 = document.getElementById(dest1);
    input2 = document.getElementById(dest2);
    if (input1 != null) selectToString(fistList, input1);
    if (input2 != null) selectToString(secondList, input2);
}

function selectPanelsListSwap(list1, list2, swapAll){
  listgive=document.getElementById(list1);
  listtake=document.getElementById(list2);

  if (swapAll == true){
    while (listgive.length>0){
      listtake.options[listtake.options.length] = new Option(listgive.options[0].text, listgive.options[0].value);
      listgive.remove(0);
    }
  }
  else{
    while (listgive.selectedIndex>=0){
      listtake.options[listtake.options.length] = new Option(listgive.options[listgive.selectedIndex].text, listgive.options[listgive.selectedIndex].value);
      listgive.remove(listgive.selectedIndex);
    }
  }
}

function selectToString(list, inp){
    var len = list.length;
    var i;
    var res="";
    for (i = 0; i < len; i++)
    {
        res += list.options[i].value;
        if (i < len - 1)
            res += "|";
    }
    inp.value = res;
}

function onDivScroll(obj, maxOptions)
{
    var list = obj.getElementsByTagName("SELECT")[0];
    if (list.options.length > maxOptions)
    {
        list.size = list.options.length;
    }
    else
    {
        list.size = maxOptions;
    }
}

function onSelectFocus(list, maxOptions)
{
    var parentNode = list.parentNode;
    if (parentNode.scrollLeft != 0)
    {
        parentNode.scrollLeft = 0;
    }

    if (list.options.length > maxOptions)
    {
        list.focus();
        list.size = maxOptions;
    }
}

/** /select panels tag **/

/** color input tag **/
var colorInputActive = false;
function changeColor(input) {
	if (!colorInputActive) {
        var id = input.id;
        var colorTable = document.getElementById(id+'_color_table');
        colorTable.ownerId = id;
        var container = document.getElementById(id+'_color_input_container');
        container.style.display = 'block';
	} else colorInputActive = false;
}
function setColor(cell, color) {
	colorInputActive = true;
    var row = cell.parentNode;
    var section = row.parentNode;
    var colorTable = section.parentNode;
    var id = colorTable.ownerId;
    var container = document.getElementById(id+'_color_input_container');
	container.style.display = 'none';
	var result = document.getElementById(id);
	result.style.backgroundColor = color;
}
/** /color input tag **/

/** progress bar tag **/
function setProgress(barId, progressValue) {
    var progressBar = document.getElementById(barId);
    var progress = progressBar.getElementsByTagName('div')[0];
    progress.style.width = progressValue;
}
function setMaxProgress(barId, maxValue) {
    var progressBar = document.getElementById(barId);
    progressBar.style.width = maxValue;
}
/** /progress bar tag **/

/** custom checkbox tag **/
function onCheckboxClick(id) {
    var cb = document.getElementById(id);
    if (cb.tagName.toLowerCase() == 'input') {
        cb.click();
    } else {
        var disabled = cb.getAttribute('cb_disabled');
        if (disabled != 'true') {
            var checked = cb.getAttribute('checked');
            if (checked == 'false') {
                cb.setAttribute('checked', 'true');
                document.getElementById(id + '_image_checked').style.display = '';
                document.getElementById(id + '_image_nonchecked').style.display = 'none';
            } else {
                cb.setAttribute('checked', 'false');
                document.getElementById(id + '_image_checked').style.display = 'none';
                document.getElementById(id + '_image_nonchecked').style.display = '';
            }
        }
    }
}

function setCheckedById(id, checked) {
    var cb = document.getElementById(id);
    if (cb.tagName.toLowerCase() == 'input') {
        cb.checked = checked;
    } else {
        if (checked) {
            cb.setAttribute('checked', 'true');
            document.getElementById(id + '_image_checked').style.display = '';
            document.getElementById(id + '_image_nonchecked').style.display = 'none';
        } else {
            cb.setAttribute('checked', 'false');
            document.getElementById(id + '_image_checked').style.display = 'none';
            document.getElementById(id + '_image_nonchecked').style.display = '';
        }
    }
}

function setDisabledById(id, disabled) {
    var cb = document.getElementById(id);
    if (cb.tagName.toLowerCase() == 'input') {
        cb.disabled = disabled;
    } else {
        if (disabled) {
            cb.setAttribute('cb_disabled', 'true');
        } else {
            cb.setAttribute('cb_disabled', 'false');
        }
    }
}

function isDisabledById(id) {
    var cb = document.getElementById(id);
    if (cb.tagName.toLowerCase() == 'input') {
        return cb.disabled;
    } else {
        var disabled = cb.getAttribute('cb_disabled');
        if (disabled == 'false') {
            return false;
        } else {
            return true;
        }
    }
}

function isCheckedById(id) {
    var cb = document.getElementById(id);
    if (cb.tagName.toLowerCase() == 'input') {
        return cb.checked;
    } else {
        var checked = cb.getAttribute('checked');
        return checked == 'true';
    }
}

function isChecked(obj) {
    if (obj.tagName.toLowerCase() == 'input') {
        return obj.checked;
    } else {
        return obj.getAttribute('checked') == 'true';
    }
}

function setChecked(obj, checked) {
    if (obj.tagName.toLowerCase() == 'input') {
        obj.checked = checked;
    } else if (obj.tagName.toLowerCase() == 'table') {
        if (checked) {
            obj.setAttribute('checked', 'true');
            document.getElementById(obj.id + '_image_checked').style.display = '';
            document.getElementById(obj.id + '_image_nonchecked').style.display = 'none';
        } else {
            obj.setAttribute('checked', 'false');
            document.getElementById(obj.id + '_image_checked').style.display = 'none';
            document.getElementById(obj.id + '_image_nonchecked').style.display = '';
        }
    }
}
/** /custom checkbox tag **/

/** custom radiobutton tag **/
function onRadioClick(id) {
    var rb = document.getElementById(id);
    if (rb.tagName.toLowerCase() == 'input') {
        rb.click();
    } else {
        var disabled = rb.getAttribute('rb_disabled');
        if (disabled != 'true') {
            checked = rb.getAttribute('checked');
            if (checked == 'false') {
                rb.setAttribute('checked', 'true');
                document.getElementById(id + '_image_checked').style.display = '';
                document.getElementById(id + '_image_nonchecked').style.display = 'none';

                var form_name = rb.getAttribute('name');
                var tables = document.getElementsByTagName('table');
                for (i = 0; i < tables.length; i++) {
                    var table = tables[i];
                    var isRB = table.getAttribute('radiobutton');
                    if (isRB == 'true' && table.getAttribute('name') == form_name && table != rb) {
                        table.setAttribute('checked', 'false');
                        document.getElementById(table.id + '_image_checked').style.display = 'none';
                        document.getElementById(table.id + '_image_nonchecked').style.display = '';
                    }
                }
            }
        }
    }
}

function setRadioCheckedById(id, checked) {
    var rb = document.getElementById(id);
    if (rb.tagName.toLowerCase() == 'input') {
        rb.checked = checked;
    } else {
        if (checked) {
            rb.setAttribute('checked', 'true');
            document.getElementById(id + '_image_checked').style.display = '';
            document.getElementById(id + '_image_nonchecked').style.display = 'none';

            var form_name = rb.getAttribute('name');
            var tables = document.getElementsByTagName('table');
            for (i = 0; i < tables.length; i++) {
                var table = tables[i];
                var isRB = table.getAttribute('radiobutton');
                if (isRB == 'true' && table.getAttribute('name') == form_name && table != rb) {
                    table.setAttribute('checked', 'false');
                    document.getElementById(table.id + '_image_checked').style.display = 'none';
                    document.getElementById(table.id + '_image_nonchecked').style.display = '';
                }
            }
        } else {
            rb.setAttribute('checked', 'false');
            document.getElementById(id + '_image_checked').style.display = 'none';
            document.getElementById(id + '_image_nonchecked').style.display = '';
        }
    }
}

function setRadioDisabledById(id, disabled) {
    var rb = document.getElementById(id);
    if (rb.tagName.toLowerCase() == 'input') {
        rb.disabled = disabled;
    } else {
        if (disabled) {
            rb.setAttribute('rb_disabled', 'true');
        } else {
            rb.setAttribute('rb_disabled', 'false');
        }
    }
}

function isRadioDisabledById(id) {
    var rb = document.getElementById(id);
    if (rb.tagName.toLowerCase() == 'input') {
        return rb.disabled;
    } else {
        var disabled = rb.getAttribute('rb_disabled');
        if (disabled == 'false') {
            return false;
        } else {
            return true;
        }
    }
}

function isRadioCheckedById(id) {
    var rb = document.getElementById(id);
    if (rb.tagName.toLowerCase() == 'input') {
        return rb.checked;
    } else {
        var checked = rb.getAttribute('checked');
        if (checked == 'false') {
            return false;
        } else {
            return true;
        }
    }
}
/** /custom radiobutton tag **/

/** paging tag **/
function setPage(page, actionForm, action) {
    document.getElementById('currentPage').value = page;
    document.getElementById('action').value = action;
    document.getElementById(actionForm).submit();
}
/** /paging tag **/

function unsubscribeClickHandler(obj) {
    obj.handler = obj.onclick;
    obj.onclick = null;
    obj.onmousedown = null;
    obj.onmouseup = null;
}

function subscribeClickHandler(obj) {
    if (obj){
        if (!obj.handler) return;
        obj.onclick = obj.handler;

        obj.onmousedown = function() {
            onButtonMouseDown(this.id);
        }

        obj.onmouseup = function() {
            onButtonMouseUp(this.id);
        }
    }
}



function subscribeClickHandlerById(id) {
    subscribeClickHandler(document.getElementById(id));
}

function unsubscribeClickHandlerById(id) {
    unsubscribeClickHandler(document.getElementById(id));
}
