/*
 * MAD CMS (C) 2010 Tocorre
 */
var jMad={
	init:function()
	{
		var k,v;
		for(k in this)
		{
			v=this[k];
			if(typeof(v)=="object" && v.init )
				v.init();
		}
		if(this.pageScripts)this.pageScripts();
	}
	,blobClass:"mad_blob"
	,blobSel:"div.mad_blob"
	,getBlobDiv:function(elt)
	{
		var div=$(elt).closest(jMad.blobSel);
		return div.length > 0 ? div : null;
	}
	,getFormData:function(form)
	{
		var a=$(form).serializeArray(),o={},k,t,n,v;
		for(k in a)
		{
			t=a[k];
			n=t.name;
			v=t.value || '';
			t=n.indexOf("[]");
			if( t>=0 )n=n.substr(0,t);
			if( o[n] )
			{
				if (!o[n].push) {
					o[n] = [o[n]];
				}
				o[n].push(v);
			}
			else
			{
				o[n]=v;
			}
		}
		return o;
	}
	,printer:{
		 url:"?node=printer.ajax"
		,mkCall:function(elt,func)
		{
			var div=jMad.getBlobDiv(elt)
				,xData = div ? div.data("madAjax") : null;
			if( xData )
			{
				var k,post={"x_div":div.get(0).id,"x_func":func};
				for(k in xData)post[k]=xData[k];
				return {data:post,context:div,dataType:"script",url:this.url,type:"POST"};
			}
			alert("printer.call("+func+"): NO_DATA");
			return null;
		}
		,call:function(elt,func,params)
		{
			var xCall=jMad.printer.mkCall(elt,func);
			if( xCall )
			{
				if( params )for(k in params)xCall.data[k]=params[k];
				$.ajax(xCall);
			}
			return false;
		}
	}
	,ajax:{
		click:function(e)
		{
			jMad.ajax.post(e.data["url"],e.data["data"],e.data["handler"]);
			return false;
		}
		,post:function(url,data,handler)
		{
			if(!handler)handler=jMad.ajax._handler;
			$.post(url, data, handler);
		}
		,_handler:function(xml)
		{
			var json,h;
			try {
				json=jQuery.parseJSON($("json",xml).text()) ;	
				h=eval("jMad.ajax."+json.handler);
				if(h)h(json);
			}
			catch(e)
			{
				alert(e.toString());
			}
		}
		,popup:{
			id:"page_popup"
			,visible:false
			,show:function(json)
			{
				var p=jMad.ajax.popup;
				if( json.html <="" )
				{
					p.close();
				}
				else
				{
					var e=$("#"+p.id);
					if( e.length == 0 )
					{
						$("body").append(
						 		"<div id=\""+p.id
						 		+"\" style=\"font-size:12px;position:fixed;top:25%;left:25%;width:50%;padding:15px;color:#000;background:#f8f8f8;border:2px solid #ccc;\">"
						 		+"</div>");
						e=$("#"+p.id);

					}
					e.html(json.html).show().find(".close").click(p.close);
					p.visible=true;
					if( json.script )
						eval(json.script);
				}
			}
			,close:function()
			{
				var p=jMad.ajax.popup;
				if( p.visible )
				{
					$("#"+p.id).hide().html("");
					p.visible=false;
					if(this.id==p.id)return false;
				}
				return undefined;
			}
		}
	}
	,printErr:function(m)
	{
		var d=$("#mad_main_err");
		if(d.length)d.html(m);
		else
		{
			$(document.body).append("<div id=\"mad_main_err\" style=\"font-size:16px;font-weight:bold;position:fixed;top:0;left:0;width:100%;padding:15px;text-align:center;color:#fff;background:#c00\">"+m+"</div>");
		}
		$("#mad_main_err").stop(true,true).fadeIn(0).delay(5000).fadeOut(700);
	}

};

$(document).ready(function() {jMad.init();});
