var controlData = new Object();

function __callEvent(target, action, data)
{
	if (data == null)
        data = new Object();
    else {
		if(__isstring(data)) {
			data = unescape(data.replace(/\+/g, " "));
			data = $.parseJSON(data);
		}
	}

	data.ajaxRequest = true;
	data.target = target;
	data.action = action;

	var query = $.param(data);
	document.location.hash = query;

	$.ajax({
	  url: document.location.pathname,
	  dataType: 'json',
	  data: data,
	  success: __processCallback    });

    return false;
}

function __isstring (mixed_var) {
    return (typeof(mixed_var) == 'string');
}

function __isdefined(variable)
{
    return (typeof(variable) == "undefined")?  false: true;
}

function __callEventWithChildren(target, action, source, data)
{
    if (data == null) data = {};
    if (source == null) source = target;
    $('#' + source).find("input").each(function () {

	    if (this.type == "button" || this.type == "submit")
	        return;
	    if (this.type == "checkbox" || this.type == "radio") {
            if(!this.checked)
                return;
        }

	    var name = this.name;
	    if (name.indexOf("[]") >= 0) {
	        name = name.substring(0, name.length - 2);
	        if (!__isdefined(data[name]))
	            data[name] = new Array();
	        data[name].push(this.value);
	    }
	    else
	        data[name] = this.value;

	});
	$('#' + source).find("select").each(function () {
		//if(!__isdefined(data[this.name])) data[this.name] = new Array();
		data[this.name] = this.value;
    });
    return __callEvent(target, action, data);
}

function __ajaxForm(id)
{
	var form = $("#"+id);
	form.find("input['type='submit']").click(function() {
		__callEventWithChildren(id, "postback");
	});
}

function __logError(error)
{
}

function __processCallback(refreshData) {
    controlData = refreshData.data;
	for(var i = 0; i < refreshData.controls.length; i++)
	{
		var obj = document.getElementById(refreshData.controls[i].id);
		if(obj == null) {
			__logError("Can't find object " + refreshData.controls[i].id);
			continue;
		}
		$(obj).html(refreshData.controls[i].content);
	}
}
