
String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function()
{
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function()
{
	return this.replace(/\s+$/,"");
}

function getEmptyRequiredFieldIds(form, element_ids)
{
    var retValue = new Array();

    var cnt = element_ids.length;
    var elem_id = null;
    var elem = null;

    for(i=0;i<cnt;i++)
    {
        elem_id = element_ids[i];
        elem = document.getElementById(elem_id);

        if(elem)
        {
            if(elem.value.trim().length == 0)
            {
                retValue.push(elem_id);
            }
        }
    }

    return retValue;
}

function askToFillReqFields(form, emptyReqFieldIds)
{
    var field_cnt = emptyReqFieldIds.length;
    var labels = form.getElementsByTagName('label');
    var messageText = form.elements['SYS_reqFieldMessage'].value;
    var label_cnt = labels.length;
    var namesToAsk = '';

    if(field_cnt > 0)
    {
        for(i=0;i<field_cnt-1;i++)
        {
            for(j=0;j<label_cnt;j++)
            {
                if(labels[j].htmlFor == emptyReqFieldIds[i])
                {
                    namesToAsk += '\n' + labels[j].innerHTML + ', ';
                }
            }
        }

        for(j=0;j<label_cnt;j++)
        {
            if(labels[j].htmlFor == emptyReqFieldIds[i])
            {
                namesToAsk += '\n' + labels[j].innerHTML;
            }
        }
    }

    alert(messageText + ': ' + namesToAsk);
}

function submitForm(form_id, action_elem_id, action, reqFieldArray)
{
    var action_elem = document.getElementById(action_elem_id);
    var form = document.getElementById(form_id);

    if(form)
    {
        if(action_elem)
        {
            action_elem.value = action;

            var emptyReqFieldIds = getEmptyRequiredFieldIds(form, reqFieldArray);

            if(emptyReqFieldIds.length == 0)
            {
                form.submit();
            }
            else
            {
                askToFillReqFields(form, emptyReqFieldIds);
            }
        }
    }
}

function submitFormAfterConfirm(button, form_id, action_elem_id, action, reqFieldArray)
{
    var action_elem = document.getElementById(action_elem_id);
    var form = document.getElementById(form_id);

    if(form)
    {
        if(action_elem)
        {
            action_elem.value = action;

            var emptyReqFieldIds = getEmptyRequiredFieldIds(form, reqFieldArray);

            if(emptyReqFieldIds.length == 0)
            {

            }
            else
            {
                askToFillReqFields(form, emptyReqFieldIds);
            }
        }
    }
}

function toggleVisibility(elem_id, icon_id)
{
    var elem = document.getElementById(elem_id);
    
    var icon = document.getElementById(icon_id);

    if(elem)
    {
        if(elem.style.display == 'none')
        {
            elem.style.display = '';

            if(icon)
            {
                icon.className = 'expDivIcon opened';
            }
        }
        else
        {
            elem.style.display = 'none';

            if(icon)
            {
                icon.className = 'expDivIcon closed';
            }
        }
    }
}

function copyValueOnChange(src_elem_id, dst_elem_id)
{
    src_elem = document.getElementById(src_elem_id);
    dst_elem = document.getElementById(dst_elem_id);

    if(src_elem && dst_elem)
    {
        dst_elem.value = src_elem.value;
    }
}

function getParentForm(elem)
{
    var parentNode = elem.parentNode;

    if(parentNode != null)
    {
        if(parentNode.tagName != "FORM")
        {
            return getParentForm(parentNode);
        }
    }

    return parentNode;
}

function upDownClicked(elem, action, param_str)
{
    var actForm = getParentForm(elem);

    if(actForm)
    {
        var actFormName = actForm.getAttribute('name');


        var actionField = document.getElementById(actFormName + '_action_id');

        if(actionField)
        {
            actionField.value = action + '#' + param_str;
            actForm.submit();
        }
    }
}

