/**
 * @author Ameno
 */

function AjaxApiCall(method,parameters,type,sequencer)
{
	this.method=method;
	this.parameters=parameters;
	this.type=type;
	this.data;
	this.url = ajaxApiUrl;
	
	this.ajaxGet = function() {
		document.body.style.cursor = 'wait';
		var mypostrequest=new ajaxRequest();
		mypostrequest.onreadystatechange=function(){
		 if (mypostrequest.readyState==4){
		  if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
		   document.body.style.cursor = 'default';
		   this.data=$.parseJSON(mypostrequest.responseText);
		   if (this.data) {
		   		sequencer(this.data);
		   }
		  }
		  else{
		   document.body.style.cursor = 'default';
		   //alert("An error has occured making the request");
		  }
		 }
		}
		var ajaxer = $.toJSON(this);
		var parameters="request="+ajaxer;
		mypostrequest.open("POST", this.url, true);
		mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		mypostrequest.send(parameters);

	}
}

function ajaxRequest() {
	 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //activeX versions to check for in IE
	 if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
	  for (var i=0; i<activexmodes.length; i++){
	   try{
	    return new ActiveXObject(activexmodes[i]);
	   }
	   catch(e){
	    //suppress error
	   }
	  }
	 }
	 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
	  return new XMLHttpRequest();
	 else
	  return false;
}

function dump(arr, level){
	var dumped_text = "";
	if (!level) 
		level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for (var j = 0; j < level + 1; j++) 
		level_padding += "    ";
	
	if (typeof(arr) == 'object') { //Array/Hashes/Objects 
		for (var item in arr) {
			var value = arr[item];
			
			if (typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value, level + 1);
			}
			else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	}
	else { //Stings/Chars/Numbers etc.
		dumped_text = "===>" + arr + "<===(" + typeof(arr) + ")";
	}
	return dumped_text;
}