var warningTimeout = 1080000;
var finalTimeout = 1200000;
//var warningTimeout = 3000;
//var finalTimeout = 5000;
var warningTimeoutID;
var finalTimeoutID;
var minrestore=0;
var initialwidth,initialheight;
var ie5=document.all&&document.getElementById;
var ns6=document.getElementById&&!document.all;
var ileft = 50;
var itop = 100;
var valid = true;

function startTimeout() {
	window.clearTimeout(warningTimeoutID);
	window.clearTimeout(finalTimeoutID);
	warningTimeoutID = window.setTimeout('displayWarning()', warningTimeout);
	finalTimeoutID = window.setTimeout('displayTimeoutAlert()', finalTimeout);
}

function displayWarning() {
	loadwindow("warning",500,120);
}

function displayTimeoutAlert() {
	closeit("warning");
    loadwindow("timeout",500,120);
    valid = false;
}

function iecompattest(){
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function loadwindow(wname,width,height){
    var elementStyle = document.getElementById(wname).style;
    elementStyle.display='';
    elementStyle.width=initialwidth=width+"px";
    elementStyle.height=initialheight=height+"px";
    elementStyle.left=ileft + "px";
    elementStyle.top=ns6 ? parseInt(window.pageYOffset)+itop+"px" : parseInt(iecompattest().scrollTop)+itop+"px";
}

function closeit(wname){
	document.getElementById(wname).style.display="none";
}

function submitform(formName, request) {
	var formObj = eval(document.forms[formName]);
	formObj.action = request;
	formObj.submit();
}

// Conditional Fields Methods

function initConditionalFields( targetElements, conditionArray )
{
    if( !conditionArray )
    {
        return;
    }

    if( targetElements )
    {
        for( var index = 0; index < targetElements.length; index++ )
        {
            var targetElement = targetElements[ index ];
            if( targetElement )
            {
                if( isFieldActive( targetElement ) )
                {
                    toggleConditionalFields( targetElement.name, targetElement.value, conditionArray );
                }
                else
                {
                    toggleConditionalFields( targetElement.name, '', conditionArray );
                }
            }
        }
    }
}

function isFieldActive( field )
{
    if( field )
    {
        var fieldType = field.type;
        if( fieldType )
        {
            if( fieldType == 'checkbox' || fieldType == 'radio' )
            {
                return field.checked;
            }
            else if( fieldType == 'file' || fieldType == 'hidden' || fieldType == 'password' || fieldType == 'text' || fieldType == 'textarea' )
            {
                return field.value && field.value.length > 0;
            }
            else if( fieldType == 'select-one' || fieldType == 'select-multiple' )
            {
                var optionArray = field.options;
                for( var index = 0, limit = ( optionArray ?  optionArray.length : 0 ); index < limit; index++ )
                {
                    var optionElement = optionArray[ index ];
                    if( optionElement && optionElement.selected )
                    {
                        return true;
                    }
                }
                return false;
            }
        }
    }
    return false;
}

function toggleConditionalFields( key, flag, conditionArray )
{
    if( !conditionArray )
    {
        return;
    }

    var keyIndex = -1;
    if( entryKeys )
    {
        for( var index = 0; index < entryKeys.length; index++ )
        {
            var entryKey = entryKeys[ index ];
            if( key == entryKey )
            {
                keyIndex = index;
                break;
            }
        }
    }

    if( entryValues )
    {
        if( keyIndex > -1 && keyIndex < entryValues.length )
        {
            var entryValue = entryValues[ keyIndex ];
            if( entryValue )
            {
                var match = false;
                for( var conditionIndex = 0, conditionLimit = conditionArray.length; conditionIndex < conditionLimit; conditionIndex++ )
                {
                    var condition = conditionArray[ conditionIndex ];
                    match |= ( flag == condition );
                }

                if( match )
                {
                    for( var disableIndex = 0; disableIndex < entryValue.length; disableIndex++ )
                    {
                        disableInput( entryValue[ disableIndex ] );
                    }
                }
                else
                {
                    for( var enableIndex = 0; enableIndex < entryValue.length; enableIndex++ )
                    {
                        enableInput( entryValue[ enableIndex ] );
                    }
                }
            }
        }
    }
}

function disableInput( elementID )
{
    if( elementID )
    {
        var element = document.getElementById( elementID );
        if( element )
        {
            element.readOnly = true;
            element.style.backgroundColor = '#ebebe4';
            if( element.type == 'text' )
            {
                element.value = '';
            }
            else if( element.type == 'radio' )
            {
                element.disabled = true;
                element.checked = null;
            }
        }
    }
}

function enableInput( elementID )
{
    if( elementID )
    {
        var element = document.getElementById( elementID );
        if( element )
        {
            element.readOnly = false;
            element.style.backgroundColor = '#ffffff';
            if( element.type == 'radio' )
            {
                element.disabled = false;
            }
        }
    }
}

function makeTopFrame()
{
    if( window.top != window.self )
    {
        window.top.location = windowSelfLocation;
    }
}

function asyncPost( url, callback )
{
    new Ajax.Request(url, {
        method:'post',
        onSuccess: function( transport )
        {
            callback(transport);
        },
        onFailure: function()
        {
            alert('Failed refresh.');
        }
    });
}

function getURL( alink )
{
    if( Object.isString(alink) )
    {
        return alink;
    }
    else if( Object.isElement(alink) )
    {
        return alink.href;
    }
    else
    {
        return alink.toString();
    }
}

function rewrite( alink, callback )
{
    asyncPost(getURL(alink), callback);

    return false;
}

function rewriteXML( alink, element, action )
{
    return rewrite(alink, function( transport )
    {
        action(transport.responseXML, $(element));
    });
}

function rewriteText( alink, element )
{
    return rewrite(alink, function( transport )
    {
        $(element).update().insert(transport.responseText);
    });
}


