﻿/*
 * jQuery dataForAjax plug-in 1.0
 *
 * http://www.biuuu.com/
 * http://plugins.jquery.com/project/dataForAjax
 *
 * Copyright (c) 2009 biuuu.com
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
jQuery.fn.dataForAjax = function(options) {
    var message = [];
    var error = [];
    var searchKey = '';
    var key;
    var data = '';
    var status = false;
    var id = "#" + this.get()[0].id;
    setting = jQuery.extend({
        showMessage: 'showmessage',
        message: message
    }, options);


    jQuery("#" + setting.showMessage).empty();

    for (key in setting.message) {
        searchKey += key + ',';
    }

    jQuery(id + "  :text").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + "  :password").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + "  textarea").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).val();
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + "  :radio:checked").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + "  :checkbox:checked").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + "  select option:selected").each(function() {
        var name = jQuery(this).parent("select").attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    jQuery(id + " :hidden").each(function() {
        var name = jQuery(this).attr("name");
        var value = jQuery(this).attr("value");
        if (((searchKey.indexOf(name)) != -1) && (value == '')) {
            error.push(setting.message[name]);
            jQuery(this).focus();
            status = true;
            return false;
        }
        data += '&' + name + '=' + value;
    });

    if (status) {
        jQuery("#" + setting.showMessage).addClass("Error");
        jQuery("#" + setting.showMessage).show();
        for (var i = 0; i < error.length; i++) {
            jQuery("#" + setting.showMessage).append("<li>" + error[i] + "</li>");
        }
        //jQuery("#"+setting.showMessage).html(error.join(","));
        return '';
    }
    return data;
}