$.fn.clearInput = function() {
    return this.focus(function() {
	if( this.value == this.defaultValue ) {
	    this.value = "";
	}
    }).blur(function() {
	if( !this.value.length ) {
	    this.value = this.defaultValue;
	}
    });
};

$.fn.placeholderLabel = function() {
    return this.focus(function() {
	if( $(this).val() == $(this).attr("label") ) {
	    $(this).val("").removeClass('labeled');
	}
    }).blur(function() {
	if( !this.value.length && $(this).attr("label") ) {
	    $(this).val($(this).attr("label")).addClass('labeled');
	}
    });
};

$.fn.serializeMultiInput = function(){
    var inputs = new Object();
    var data = $(this).find(":input");
    var label, name, value;
    for (i=0; i < data.length; i++){
	label = $(data[i]).attr('label');
	name =  $(data[i]).attr('name');
	value = $(data[i]).val();

	if (label){
	    // input has label attribute defined. It's only relevant
	    // data if value is different from label.
	    if (value != label){	    
		inputs[name] = value;
	    }
	}
	else {
	    inputs[name] = value;
	}
	
    }


    return inputs;				 
}

$.fn.ajaxForm = function(){
    var o = {};
    var sections = $(this).find("ul.serializable").children("li.serializable");
    sections.each(function(){
	var name = $(this).attr("name");
	var items = $(this).find(".serializable");
	if (name){
	    o[name] = new Array();
	    items.each(function(){
		o[name].push( $(this).serializeMultiInput() );
	    });
	}
    });
    return o;
};


    