var button_locations = new Array();
var button_forms = new Array();
var button_alerts = new Array();
var button_jHadr_submit_form = new Array();
var loading = false;

function jHadr(url,data) {

	if(typeof(data) == "object") {
		for(var key in data) {
			if(data[key].substr(0,8) == 'object::') {
				var obj = document.getElementsByName(data[key].substr(8))[0];
				if(typeof(obj) != "undefined") {
					data[key] = obj.value;
				} else {
					var obj = document.getElementById(data[key].substr(8));
					if(typeof(obj) != "undefined") 
						data[key] = obj.value;
				}
			}
		}
	} else {			
		if(typeof(document.getElementsByName(data)[0]) != "undefined") {
			
			var data2 = new Object();
			
			jQuery.each($("form[name="+data+"]").find("input,select"), function(i, val) {
				if($(this).attr("type") != "button" && $(this).attr("type") != "submit" && $(this).attr("type") != "checkbox" && $(this).attr("type") != "radio") {
					data2[$(this).attr("name")] = $(this).attr("value");
				}
			});
			
			jQuery.each($("form[name="+data+"]").find("input[type=checkbox][checked]"), function(i, val) {
					data2[$(this).attr("name")] = 'on';
			});
			
			jQuery.each($("form[name="+data+"]").find("input[type=checkbox]:not(:checked)"), function(i, val) {
					data2[$(this).attr("name")] = 'off';
			});
			
			jQuery.each($("form[name="+data+"]").find("input[type=radio][checked]"), function(i, val) {
					data2[$(this).attr("name")] = $(this).val();
			});
			
			jQuery.each($("form[name="+data+"]").find("textarea"), function(i, val) {
				data2[$(this).attr("name")] = $(this).val();
			});
			
			data = new Object();				
			data = data2;
		} else {
			if(data.substr(0,8) == 'object::') {
				var name = data.substr(8);
				var obj = document.getElementsByName(name)[0];
				if(typeof(obj) != "undefined") {
					data = new Object();	
					data[name] = obj.value;		
				}			
			}
		}
	}		
	
	data.request_method = 'jhadr'; // aditive information for server's processing script
		
	loading = true;
	
	$("#jhadr_dialog").dialog('option','width', 280);
	$("#jhadr_dialog").dialog('option','height', 100);
	$("#jhadr_dialog").dialog('option','resizable', false);
	$("#jhadr_dialog").dialog('option','buttons', {});
	$("#jhadr_dialog").dialog('option','title', 'Načítám data');
	$("#jhadr_dialog").html('<br /><br /><div style="text-align: center"><img src="skin/images/loading.gif" alt="Načítám data..." /></div>');
	$("#jhadr_dialog").dialog('open');

	$.post(url, data, function (response) {
		if(response == "") {
			$("#jhadr_dialog").dialog('close');			
			return;	
		}
		if(loading == false) return;
		
		$("#jhadr_dialog").dialog('close');		
		$("#jhadr_dialog").dialog('option','height', 'auto');
		//$("#jhadr_dialog").dialog('option','width', 'auto');
		
		loading = false;
		
		if(response.substr(0,1) != "{") alert(response);
		
		resp = JSON.parse(response);
		
		if(typeof(resp.goto) == "string") {
			if(resp.goto == 'refresh') {
				location.reload();	
			} else {
				location = resp.goto;
			}
			return;
		}
		
		if(typeof(resp.submit_form) == "string") {
			document.getElementsByName(resp.submit_form)[0].submit();
//			$("form[name=" + resp.submit_form + "]").submit();
			return;
		}
						
		for(var key in resp) {
			if(key != 'html' && resp.hasOwnProperty(key) && key != 'buttons') {
				$("#jhadr_dialog").dialog('option', key, eval("resp."+key));
			}
		}
		
		var buttons = new Object();
		
		button_locations = new Array();
		button_forms = new Array();
		button_alerts = new Array();
		button_jHadr_submit_form = new Array();
		
		for(var key in resp.buttons) {
			name = resp.buttons[key].name;
			type = resp.buttons[key].type;
			func = resp.buttons[key].func;
			
			switch(type) {
				case 'close': 
					buttons[name] = function() { $("#jhadr_dialog").dialog("close"); };
					break;
					
				case 'location': 
					button_locations[name] = func;
					buttons[name] = function() { $("#jhadr_dialog").dialog("close"); };
					break;
					
				case 'refresh': 
					buttons[name] = function() { location.reload(); };
					break;
					
				case 'alert': 
					button_alerts[name] = func;
					buttons[name] = function() { $("#jhadr_dialog").dialog("close"); };
					break;
					
				case 'submit': 
					button_forms[name] = func;
					buttons[name] = function() { $("#jhadr_dialog").dialog("close"); };
					break;
					
				case 'jHadr_submit':
					button_jHadr_submit_form[name] = func;
					buttons[name] = function() { $("#jhadr_dialog").dialog("close"); };
					break;					
			}
		}
		
		$("#jhadr_dialog").dialog('option','resizable', true);
		$("#jhadr_dialog").dialog('option', 'buttons', buttons);
		$("#jhadr_dialog").dialog('option','resizable', true);		
		$("#jhadr_dialog").html(resp.html);		
		$("#jhadr_dialog").dialog('open');
	});
}	

$(function() {
	$("#jhadr_dialog").dialog({
		bgiframe: true,
		minheight: 100,
		minwidth: 280,
		height: 100,
		width: 280,
		position: 'center',
		draggable: true,
		modal: true,
		title: "",
		autoOpen: false,
		closeOnEscape: true,
		close:  function (event, ui) {
					loading = false;
				}
	});
});	

$("button[type=button]").live("click", function() {		

	if(typeof(button_locations[$(this).html()]) != "undefined") {
		location = button_locations[$(this).html()];
		return;
	}
	
	if(typeof(button_forms[$(this).html()]) != "undefined") {
		$("form[name="+button_forms[$(this).html()]+"]").submit();
		return;
	}
	
	if(typeof(button_alerts[$(this).html()]) != "undefined") {
		jHadr(button_alerts[$(this).html()], {submethod: 'alert_button'});
		return;
	}
	
	if(typeof(button_jHadr_submit_form[$(this).html()]) != "undefined") {
		jHadr($('form[name='+button_jHadr_submit_form[$(this).html()]+']').attr('action'), button_jHadr_submit_form[$(this).html()]);
		return;
	}
	
});
