/*
(c) Taras Kudla, 2009

t@ettera.com
*/


/*
 * Azaria Object Definition
 */

var Azaria = new Object();

/*
 * Params Setting
 */
Azaria.Caller_ID	= null;
Azaria.Caller_Pamas	= null;
Azaria.API			= ___+____;
Azaria.FlagToBuffer = false;
Azaria.QueryBuffer	= "empty";

/*
 * Azaria Methods
 */
Azaria.Redirect= function (link) {
		
	window.location=link;
}


// Loading content by defaut action
Azaria.ProcessAction = function (Action,Params){

this.Caller_ID=Action;
this.Caller_Params=Params;
if(Params=="&")params="";
var link=this.API+"?ProcessAction="+Action+Params;
parent.location.hash=Action.replace("&","#a-");

var GetContentError=false;
var query = $.ajax({
url: link,
error: function(request,text){ GetContentError=true; alert("error in ajax query: '"+link+"',\n\ndescription: "+text); },
async: false
});

var data=query.responseXML;

if(data=="[object XMLDocument]") {
Azaria.HandleContent(data);
}
else { alert("Type is not an xml\nLink:"+link+"\n"+query.responseText); }

}


Azaria.GetContent = function (Action,Params){
var link=this.API+"?GetAction="+Action+Params;
var GetContentError=false;
var data = $.ajax({
url: link,
error: function(request,text){ GetContentError=true; alert("error in ajax query: '"+link+"',\n\ndescription: "+text); },
async: false
}).responseText;

return (GetContentError?false:data);
}

/*
 *  Handling functions
 */

Azaria.handleSubData=function(data,area){
	$(data).find("item").each(function () {
		var id=$(this).attr("id");
		var text=$(this).text();
		
		var object=document.getElementById("function_"+id);
		
		if(object==null){
			var a=$("#output_"+area);
			$(a).hide();
			a.empty();
			a.append(text);
			$(a).fadeIn();
		}
		
		else {
			$("#function_"+id).empty();
			$("#function_"+id).append(text);
		}
		
	});
	
}

Azaria.HandleContent=function(data)
	{
	
	/*
	 * Checking for redirections
	 */
		 
	$(data).find("redirect").each( function() { var link=$(this).text(); Azaria.Redirect(link);   } );

	
	/*
	 * Normal Handling
	 */
	
	$(data).find("items").each( function() {
		var text=$(this).find("data").get();
		var area=$(this).find("area").text();
		
		Azaria.handleSubData(text,area);
					
	});
	
	$(data).find("ext").each(function() {
		loadextjs($(this).text());
		});
	$(data).find("extcss").each(function() {
		loadjscssfile($(this).text(),"css");
		});
		
	}


/*
 * Other functions
 */
Azaria.Redirect=function(link){
	
	document.body.innerHTML="<div id='jloading' style='position:fixed;top:0px;right:0px;z-index:2000;'><span style='color:white;background-color:#990000;padding:2px;'>Redirection...</span></div>";
	
	window.location=link;
}



function loadContent(a,params)
	{
	loading();
	
	CALLER_ID=a;
	
	CALLER_PARAMS=params;	
	
	var n=loadContent.arguments;
	
	if(params=="&")params="";
	
	var link=___+____+"?ProcessAction="+a+params;
	
	parent.location.hash=a.replace("&","#a-");
	
	$.get(link, {} , handleContent );
	
	
	
	}



var CALLER_ID=null;

var CALLER_PARAMS=null;

var API=___+____;

var loaded=new Array();

function loading()
	{
	$("body").append("<div id='jloading' style='position:fixed;top:0px;right:0px;z-index:2000;'><span style='color:white;background-color:#990000;padding:2px;'>Loading...</span></div>");
	}
	
function unloading()
	{
	$("#jloading").empty();
	$("#jloading").remove();
	}

function redirect(link){
	
	document.body.innerHTML="<div id='jloading' style='position:fixed;top:0px;right:0px;z-index:2000;'><span style='color:white;background-color:#990000;padding:2px;'>Redirection...</span></div>";
	
	window.location=link;
}

function loadextjs(file)
	{
	/*$(document.createElement('script')) 
                .attr('src',file) 
          .attr('type', 'text/javascript') 
          .appendTo('head');*/
         
         var c=0;
         for(var i=0;i<loaded.length;i++)
         	{
         	if(loaded[i]==file)
         	c=1;         	
         	}
         if(c==0)
         	{
         	$.getScript(file);
        	loaded[loaded.length+1]=file;
        	}
         
	}


function loadjscssfile(filename, filetype){
 if (filetype=="js"){ //if filename is a external JavaScript file
  
  loadextjs(file);
  
 }
 else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link");
  fileref.setAttribute("rel", "stylesheet");
  fileref.setAttribute("type", "text/css");
  fileref.setAttribute("href", filename);
 }
 if (typeof fileref!="undefined")  
 { document.getElementsByTagName("head")[0].appendChild(fileref); }
  
  }


function processForm(form_id)
	{
	
	var f=$(form_id);
		
	var get=parent.location.hash;
	
	get=get.split("|").join("&");
	
	get=get.split("#").join("");	
	
	act=f.attr("action");
		
	var action= (act.length>3)?act:get;
	
	if(act==CALLER_ID){
	
	action=act+"&"+CALLER_PARAMS;
	

	}
	
	var q=___+____+"?a="+action+"";
	
	//var q=SYS_URL+API_FILE+"?a="+f.attr("action")+ ( (get.length>3)?"&":"" )+get;
	
	var dataString="";
	
	$(':input', f).each(function() {
    		var type = this.type;
    		var tag = this.tagName;
		if(dataString=="")
			{
			dataString+=this.name+"="+this.value;
			}
		else
			{
			dataString+="&"+this.name+"="+this.value;
			}
				
	});
		
	$.ajax({   
  		type:"POST",   
  		url:q,  
  		contentType:"application/x-www-form-urlencoded",
  		data: dataString,   
  		success: handleContent
	       });
	
	
	}

function resetCaptcha(){
	$("#captcha_image").empty();
	var file=___+"mod/captcha/index.php?"+Math.random();
	$("#captcha_image").append("<img onClick='javascript:resetCaptcha();' style='cursor:pointer;' src='"+file+"' border='0' />");
}


function keyForm(form,e){
	if(e.keyCode==13){
		processForm(form);
		if (e.preventDefault)
            e.preventDefault();
        else e.returnValue = false;
	}
}


function handleSubData(data,area){
	$(data).find("item").each(function () {
		var id=$(this).attr("id");
		var text=$(this).text();
		
		var object=document.getElementById("function_"+id);
		
		if(object==null){
			var a=$("#output_"+area);
			$(a).hide();
			a.empty();
			a.append(text);
			$(a).fadeIn();
		}
		
		else {
			$("#function_"+id).empty();
			$("#function_"+id).append(text);
		}
		
	});
	
}

function handleContent(data)
	{
	
	/*
	 * Checking for redirections
	 */
		 
	$(data).find("redirect").each( function() { var link=$(this).text(); redirect(link);   } );

	
	/*
	 * Normal Handling
	 */
	
	$(data).find("items").each( function() {
		var text=$(this).find("data").get();
		var area=$(this).find("area").text();
		
		handleSubData(text,area);
					
	});
	
	$(data).find("ext").each(function() {
		loadextjs($(this).text());
		});
	$(data).find("extcss").each(function() {
		loadjscssfile($(this).text(),"css");
		});
	
	unloading();
	
	}	



function DocOnLoad(){
	
}

function DetectChar(e){
	var charCode; 
    if(e && e.which){
        charCode = e.which;
    }else if(window.event){
        e = window.event;
        charCode = e.keyCode;
    }
	if(charCode==8)return null;
	
	return String.fromCharCode(charCode);
}







