(function ($) {
	$.fn.formAjax = function (options) {
		var defaults = { key: "id", value: "label" };
        var settings = $.extend({}, defaults, options);
		return this.each(function () {
            var $$ = $(this);
            $$.click(function () {
            	if(typeof(document.forms[settings.formId]) != "undefined"){
					var data = settings.data;
					var formdata = new Array();
					for(var i=0;i< document.forms[settings.formId].elements.length;i++){
						if(document.forms[settings.formId].elements[i].type != "submit"){
							if(document.forms[settings.formId].elements[i].type == "checkbox"){
								if(document.forms[settings.formId].elements[i].checked == true){
									formdata[i] = document.forms[settings.formId].elements[i].name+"="+document.forms[settings.formId].elements[i].value;
								}
							}else{
								formdata[i] = document.forms[settings.formId].elements[i].name+"="+document.forms[settings.formId].elements[i].value;
							}
						}
					}
                    data["formdata"] = formdata.join("&");
					jQuery.ajax({
	                    url: settings.url,
	                    data: data,
	                    type: (settings.type || 'get'),
	                    dataType: (settings.dataType || 'json'),
						success: function(response){
							jQuery("#"+settings.msgId).empty();
							if(settings.dataType == 'json'){
								var result = new Array(), i = 0, val = "" , key = "";
								for (i = 0; i < response.length; i++) {
		                            key = typeof response[i] == 'object' ? response[i][settings.key] : response[i];
		                            val = typeof response[i] == 'object' ? response[i][settings.value] : response[i];
		                            result[i] = val;
		                        }
								jQuery("#"+settings.msgId).append(result.join("<br />"));	
							}else if(settings.dataType == 'html'){
								jQuery("#"+settings.msgId).append(response);
							}
						},
						error: function(){
	                        jQuery("#"+settings.msgId).empty();
							jQuery("#"+settings.msgId).append("<div>Fehler bei der Übertragung, bitte wende dich an den Support!</div>");
						}
					});
				}
            });
  		});
	};
    $.fn.selectChain = function (options) {
        var defaults = {
            key: "id",
            value: "label"
        };
        
        var settings = $.extend({}, defaults, options);
        
        if (!(settings.target instanceof $)) settings.target = $(settings.target);
        
        return this.each(function () {
            var $$ = $(this);
            
            $$.change(function () {
                var data = null;
                if (typeof settings.data == 'string') {
                    data = settings.data + '&' + this.name + '=' + $$.val();
                } else if (typeof settings.data == 'object') {
                    data = settings.data;
                    data[this.name] = $$.val();
                }
                
                settings.target.empty();
                
                $.ajax({
                    url: settings.url,
                    data: data,
                    type: (settings.type || 'get'),
                    dataType: 'json',
                    success: function (j) {
                        var options = [], i = 0, o = null;
                        
                        for (i = 0; i < j.length; i++) {
                            // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
                            o = document.createElement("OPTION");
                            o.value = typeof j[i] == 'object' ? j[i][settings.key] : j[i];
                            o.text = typeof j[i] == 'object' ? j[i][settings.value] : j[i];
                            settings.target.get(0).options[i] = o;
                        }

						// hand control back to browser for a moment
						setTimeout(function () {
						    settings.target
			                                .find('option:first')
			                                .attr('selected', 'selected')
			                                .parent('select')
			                                .trigger('change');
						}, 0);
                    },
                    error: function (xhr, desc, er) {
                        // add whatever debug you want here.
						//alert("an error occurred\n"+xhr+"\n"+desc+"\n"+er);
                    }
                });
            });
        });
    };  
})(jQuery);
var _tplbeans = [];
_tplbeans["alluser"] = "get_alluser";
// BEAN TEMPLATES
function bean_handler(){
    this.get_alluser = function(args){
        var tpl = '';
        for(var e in args){
        	tpl += '<tr><td>'+e+'</td><td>'+args[e]+'</td></tr>';
        }
        tpl = '<table>'+tpl+'</table>';
        return tpl;
    }
}
var _beans = new bean_handler();
function setRequest(_url,_beanid,_outputid){
	settings = { beanid: _beanid , outputid: _outputid};
	_srinst = this;
	jQuery.ajax({
        url: _url,
        type: ('post'),
        data: { callId: _beanid },
		dataType: ('json'),
		success: function(response){
			var result = new Array(), i = 0, val = "" , key = "";
			for (i = 0; i < response.length; i++) {
                key = typeof response[i] == 'object' ? response[i]["key"] : response[i];
                val = typeof response[i] == 'object' ? response[i]["val"] : response[i];
                result[key] = val;
            }
            jQuery("#"+_srinst.settings.outputid).empty();
			jQuery("#"+_srinst.settings.outputid).append(_beans[_tplbeans[_srinst.settings.beanid]](result));
			jQuery("#"+_srinst.settings.outputid).css("display", "block");

		},
		error: function(){
            jQuery("#"+_srinst.settings.outputid).empty();
			jQuery("#"+_srinst.settings.outputid).append("<div>Fehler bei der Übertragung, bitte wende dich an den Support!</div>");
			jQuery("#"+_srinst.settings.outputid).css("display", "block");
		}
	});
}
