// Function created by Dustin Diaz (http://dustindiaz.com)
function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

// Copyright (c)2008 JPhantom.com
function aeinput ()
{
    var numstyle = 'border-bottom: 1px dotted blue';
    var is = getElementsByClass('aei', document, 'input');
    
    for ( var x = 0; x < is.length; x++ )
    {
        set(is[x]);
    }
    
    function set ( t )
    {
        t.value = ( t.value == '' ) ? 0 : t.value;
        var num = parseInt(t.value);
        var max = ( isNaN(parseInt(t.getAttribute('max'))) && t.getAttribute('max') != '' ) ? 100000000000000000 : parseInt(t.getAttribute('max'));
        var min = ( isNaN(parseInt(t.getAttribute('min'))) && t.getAttribute('max') != '' ) ? -100000000000000000 : parseInt(t.getAttribute('min'));
        var n = document.createElement('span');
        n.className = 'aei_text';
        t.parentNode.insertBefore(n, t.nextSibling);
        t.style.display = 'none';
        n.innerHTML = '<span style="' + numstyle + '">' + num + '</span>';
        var xs = 0;
        n.onmousedown = function (e)
        {
            e = e || window.event;
            xs = parseInt(e.clientX);
            
            document.onmousemove = function (e)
            {
                e = e || window.event;
                xd = parseInt(e.clientX) - xs;
                xs = parseInt(e.clientX);
                num += xd;
                if ( num > max && max != '' )
                    num = max;
                else if ( num < min && min != '' )
                    num = min;
                n.innerHTML = '<span style="' + numstyle + '">' + num + '</span>';
                t.value = num;
                if ( t.onchange )
                    t.onchange();
            };
            
            document.onmouseup = function ()
            {
                document.onmousemove = null;
                document.onmouseup = null;
            };
            
            return false;
        };
        
        n.onclick = function ()
        {
            t.style.display = '';
            n.innerHTML = '';
            t.focus();
            t.select();
            t.onkeydown = function ( e )
            {
                e = e || window.event;
                
                switch ( e.keyCode )
                {
                    case 38:
                    {
                        num++;
                        if ( num > max && max != '' )
                            num = max;
                        else if ( num < min && min != '' )
                            num = min;
                        t.value = num;
                        if ( t.onchange )
                            t.onchange();
                        return false;
                    }
                    
                    case 40:
                    {
                        num--;
                        if ( num > max && max != '' )
                            num = max;
                        else if ( num < min && min != '' )
                            num = min;
                        t.value = num;
                        if ( t.onchange )
                            t.onchange();
                        return false;
                    }
                }
            };
            
            t.onkeypress = function ( e )
            {
                e = e || window.event;
                
                switch ( e.keyCode )
                {
                    case 13:
                    {
                        
                        num = ( !isNaN(parseInt(t.value)) ) ? parseInt(t.value) : 0;
                        if ( num > max && max != '' )
                            num = max;
                        else if ( num < min && min != '' )
                            num = min;
                        t.value = num;
                        t.style.display = 'none';
                        n.innerHTML = '<span style="' + numstyle + '">' + num + '</span>';
                        if ( t.onchange )
                            t.onchange();
                        return false;
                    }
                    
                    case 27:
                    {
                        t.style.display = 'none';
                        n.innerHTML = '<span style="' + numstyle + '">' + num + '</span>';
                        t.value = num;
                        return false;
                    }
                }
            };
            
            t.onblur = function ()
            {
                num = ( !isNaN(parseInt(t.value)) ) ? parseInt(t.value) : 0;
                if ( num > max && max != '' )
                    num = max;
                else if ( num < min & min != '' )
                    num = min;
                t.style.display = 'none';
                n.innerHTML = '<span style="' + numstyle + '">' + num + '</span>';
                if ( t.onchange )
                    t.onchange();
                return false;
            };
        };
    }
}

window.onload = function () { aeinput(); };