jQuery.fn.isEmpty = function()
    {

        var e = this.first();
        if (e.attr('default') != undefined && e.attr('default').length>0)
        {
            if (e.attr('ready')=='true' || jQuery.trim(e.val())=='')
                return true;

            return false;
        }


        if (jQuery.trim(e.val())=='')
            return true;

        return false;

    }




jQuery.fn.inlineInput = function(overrideSettings)
{
    var settings = {
        'defaultColor': '#a0a0a0'
    };
    if (overrideSettings != undefined && overrideSettings.defaultColor!=undefined)
    {
        settings.defaultColor = overrideSettings.defaultColor;
    }

    this.each(function(a,b)
    {
        var c = jQuery(b);
        //If attribute ready exists this element already has default input set and must not be
        //performed twice.
        if (c.attr('ready'))
            return;

        var originalType = b.type;

        b.setAttribute('originalType',originalType);

        c.attr('originalColor',c.css('color'));
        c.attr('originalClass',c.attr('class'));
        c.attr('defaultColor',settings.defaultColor);

        if (c.val()=='')
        {

            if (navigator.userAgent.indexOf('MSIE')>0)
            {
                b = inlineCloneNode(b, 'text');
                b.css('color',b.attr('defaultColor'));
                b.attr('ready','true');
                b.val(b.attr('default'));
            }
            else
            {
                b.type='text';
                b=jQuery(b);
                b.css('color',b.attr('defaultColor'));
                b.attr('ready','true');
                b.val(b.attr('default'));

                b.bind('click', inlineInputFocus);
                b.bind('focus', inlineInputFocus);
                b.bind('blur',  inlineInputBlur);
                b.bind('change',inlineInputBlur);
            }
        }
        else
        {
            c.bind('click', inlineInputFocus);
            c.bind('focus', inlineInputFocus);
            c.bind('blur',  inlineInputBlur);
            c.bind('change',inlineInputBlur);
            c.attr('ready','false');
        }

    })
}

function inlineCloneNode(node,type,focus)
{

    var newNode = jQuery(node).clone();
    var html = $('<div>').append(newNode).remove().html();
    if (html.indexOf('type=password')>0)
        html = html.replace('type=password', 'type="'+type+'"');
    else if (html.indexOf('type=text')>0)
        html = html.replace('type=text', 'type="'+type+'"');
    else
        html = html.replace('>', ' type="'+type+'" >');


    newNode = jQuery(html);

    //newNode.get(0).type='text';
    jQuery(node).replaceWith(newNode);

    if (focus)
    {
        newNode.get(0).focus();
    }

    newNode.bind('click',inlineInputFocus);
    newNode.bind('focus',inlineInputFocus);
    newNode.bind('blur',inlineInputBlur);
    newNode.bind('change',inlineInputBlur);




    return newNode;
/*
    var parent = node.parentNode;

    var newNode = document.createElement('input');
    for (var i = 0; i < node.attributes.length; i++)
    {
        if (node.attributes[i].nodeName!='type')
            newNode.setAttribute(node.attributes[i].nodeName,node.attributes[i].nodeValue);
    }
    var jNewNode = jQuery(newNode);
    jNewNode.attr('type','text');

    jNewNode.attr('class',jQuery(node).attr('class'));
    alert(jNewNode.attr('class'));


    //alert(jQuery(node).css());

    parent.replaceChild(newNode, node);
    return newNode;
     */
}


function inlineInputFocus()
{

    var n = jQuery(this);
    n.css('color',n.attr('originalColor'));
    n.attr('class',n.attr('class_focus'));

    if (n.attr('ready')=='true')
    {
        var originalType = n.attr('originalType');
        if (navigator.userAgent.indexOf('MSIE')>0)
        {
            if (originalType.toLowerCase()=='password')
                n = inlineCloneNode(n,'password',true);
            n.attr('ready','false');
            n.val('');

            n.get(0).focus();

        }
        else
        {
            if (originalType.toLowerCase()=='password')
                this.type = 'password';
            n.css('color',n.attr('originalColor'));
            n.attr('ready','false');
            n.val('');
        }
    }

}

function inlineInputBlur()
{
    var n = jQuery(this);

    if (n.val().length==0)
    {

        if (navigator.userAgent.indexOf('MSIE')>0)
        {
            if (this.type=='password')
                n = inlineCloneNode(n,'text',false);
        }
        else
        {
            if(this.type=='password')
                this.type='text';
        }
        n.css('color',n.attr('defaultColor'));
        n.val(n.attr('default'));
        n.attr('ready','true');

    }
    n.attr('class',n.attr('originalClass'));

}

jQuery.extend({
    inlineInput:
    {
        clearEmptyInputs: function(p)
        {
            
            if (p==undefined || p==null)
                p = document.body;
            $('input[default]',p).each(function(n,e){
               
                if ($(e).isEmpty())
                    $(e).val('');
            });
        }
    }
});

