var aspNetForm;

addEvent = function(source, eventType, callBack)
{
    if (window.addEventListener)
        source.addEventListener(eventType, callBack, false);
    else if (window.attachEvent)
        source.attachEvent('on' + eventType, callBack);
}

simulateImageButtonClick = function(imgButtonElm)
{
    var hidInputX = document.createElement('input');
    var hidInputY = document.createElement('input');
    
    hidInputX.name = imgButtonElm.name + '.x'; hidInputX.value = '3';
    hidInputY.name = imgButtonElm.name + '.y'; hidInputY.value = '3';
    
    hidInputX.type = 'hidden';
    hidInputY.type = 'hidden';
    
    imgButtonElm.name += '.old';
    
    aspNetForm.appendChild(hidInputX);
    aspNetForm.appendChild(hidInputY);
    
    aspNetForm.submit();
}

simulateSubmitButtonClick = function(submitButtonElm)
{
    var hidInput = document.createElement('input');
    
    hidInput.name = submitButtonElm.name + '.x'; hidInputX.value = '3';
    hidInput.type = 'hidden';
        
    submitButtonElm.name += '.old';

    aspNetForm.appendChild(hidInput);
    aspNetForm.submit();
}

getXmlHttp = function()
{
    var result;

    try
    {
        result = new XMLHttpRequest();
    }
    catch (e)
    {
        try
        {
            result = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e)
        {
            try
            {
                result = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (e)
            {
                return false;
            }
        }
    }
    return result;
}

getFirstChild = function(elm)
{
    var result = elm.firstChild;
    
    if (result.nodeName == '#text')
        return result.nextSibling;
        
    return result;
}

getNextSibling = function(elm)
{
    var result = elm.nextSibling;
    
    if (result.nodeName == '#text')
        return result.nextSibling;
        
    return result;
}

var submitHacksLastTrigger = null;

submitHacksSubmitting = function()
{
    if (submitHacksLastTrigger == null)
        return true;
    if (submitHacksLastTrigger.type == 'submit' || submitHacksLastTrigger.type == 'image')
    {
        // Pressed the button
        return true;
    }
    else
    {
        // Pressed Enter on the input field
        if (submitHacksLastTrigger.enterKeyButton.type == 'image')
            simulateImageButtonClick(submitHacksLastTrigger.enterKeyButton);
        else if (submitHacksLastTrigger.enterKeyButton.type == 'submit')
            simulateSubmitButtonClick(submitHacksLastTrigger.enterKeyButton);
    }
        
    return false;
}

submitHacksWindowLoad = function()
{
    aspNetForm = document.forms[0];
    var inputElms = document.getElementsByTagName('input');
    var inputElmsLen = inputElms.length;
    
    for (var i = 0; i < inputElmsLen; i++)
    {
        var inputElm = inputElms[i];
        
        if (inputElm.className.indexOf('EnterKeyHack') > -1)
        {
            var buttonName = inputElm.className.match(/EnterKeyHack(.*)/)[1];
            var buttonId = buttonName.replace(/\$/g, '_');
            var buttonElm = document.getElementById(buttonId);
            
            inputElm.enterKeyButton = buttonElm;
            
            buttonElm.onclick = function()
            {
                if (submitHacksLastTrigger == null)
                    submitHacksLastTrigger = this;
            }
            
            inputElm.onkeydown = function(evt)
            {
                evt = evt || event;
                
                if (evt.keyCode == 13 && submitHacksLastTrigger == null)
                    submitHacksLastTrigger = this;
            }
        }
        else
        {
            if (inputElm.className.indexOf('OnClickHack') == -1)
            {
                if (inputElm.type == 'submit')
                    inputElm.onclick = function() { submitHacksLastTrigger = null; }
            }
        }
    }
    
    addEvent(aspNetForm, 'submit', submitHacksSubmitting);
}

preValueClickWindowLoad = function()
{
    var inputElms = document.getElementsByTagName('input');
    var inputElmsLen = inputElms.length;
    
    for (var i = 0; i < inputElmsLen; i++)
    {
        var inputElm = inputElms[i];
        if (inputElm.className.indexOf('prevalue') > -1)
        {
            inputElm.oldValue = inputElm.value;
            
            inputElm.onfocus = function()
            {
                if (this.value == this.oldValue)
                {
                    this.value = '';
                    this.className = this.className.replace(/prevalue/, 'inputvalue');
                }
            }
            
            inputElm.onblur = function()
            {
                if (this.value == '')
                {
                    this.value = this.oldValue;
                    this.className = this.className.replace(/inputvalue/, 'prevalue');
                }
            }
        }
    }
}

addEvent(window, 'load', submitHacksWindowLoad);
addEvent(window, 'load', preValueClickWindowLoad);
