var Ajax = new Object();
Ajax.RunGet = function(url, element, loading_div, callback_method, loading_message, success_message){
	
	Page.getPageCenterX();
	Ajax.element			 = element;	
	Ajax.loading_message	 = (loading_message != "" && loading_message != null) ? loading_message : "Loading...";
	Ajax.success_message	 = (success_message != "" && success_message != null) ? success_message : "On click performed";
	callback_method		     = (callback_method != "" && callback_method != null) ? callback_method : Ajax.Response;
	
	//loading style settings...
	if(loading_div != "" && loading_div != null){
		if(isNaN(loading_div)){
			Ajax.loading_style		 = 0;
			Ajax.loading_div		 = loading_div;
		}else{		
			Ajax.loading_style		 = parseInt(loading_div);
			Ajax.loading_div		 = "";
		}
	}else{		
		Ajax.loading_style		 = 1;
		Ajax.loading_div		 = "";
	}
	//alert(Ajax.loading_style);	
	Ajax.loading_image       = "http://"+document.domain+"/news_cms/admin/themes/default/images/loading1.gif";
	Ajax.transparent_image   = "http://"+document.domain+"/news_cms/admin/themes/default/images/tp.gif";
	
	//alert("T:"+Page.top+"H:"+Page.height+"W:"+Page.width);	
	Ajax.request = Ajax.createRequestObject();
	Ajax.request.onreadystatechange = callback_method;	
	
	//Kill the Cache problem in IE.
	var now = "nocid/" + new Date().getTime(); //note for clean url / -> =
	url_query = url;	
	
	var separator = (url_query.indexOf("?") >= 0) ? "/" : "/"; //note for clean urls / - ? or &
	url_query += separator + now
	Ajax.request.open("GET", url_query, true);
	Ajax.request.send(null);
}

Ajax.RunPost = function(url, element, form, loading_div, callback_method, loading_message, success_message){
	
	Page.getPageCenterX();
	Ajax.element			 = element;	
	Ajax.loading_message	 = (loading_message != "" && loading_message != null) ? loading_message : "Loading...";
	Ajax.success_message	 = (success_message != "" && success_message != null) ? success_message : "On click performed";
	callback_method		     = (callback_method != "" && callback_method != null) ? callback_method : Ajax.Response;
	
	//loading style settings...
	if(loading_div != "" && loading_div != null){
		if(isNaN(loading_div)){
			Ajax.loading_style		 = 0;
			Ajax.loading_div		 = loading_div;
		}else{		
			Ajax.loading_style		 = parseInt(loading_div);
			Ajax.loading_div		 = "";
		}
	}else{		
		Ajax.loading_style		 = 1;
		Ajax.loading_div		 = "";
	}
	//alert(Ajax.loading_style);	
	Ajax.loading_image       = "http://"+document.domain+"/news_cms/admin/themes/default/images/loading1.gif";
	Ajax.transparent_image   = "http://"+document.domain+"/news_cms/admin/themes/default/images/tp.gif";
	
	//alert("T:"+Page.top+"H:"+Page.height+"W:"+Page.width);	
	Ajax.request = Ajax.createRequestObject();
	Ajax.request.onreadystatechange = callback_method;	
	
	//Kill the Cache problem in IE. @note No need for post	
	var query = Ajax.buildQuery(form);	//build query from form
	//alert(query);
	Ajax.request.open("POST", url, true);
	Ajax.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	Ajax.request.setRequestHeader("Content-length", query.length);
	Ajax.request.setRequestHeader("Connection", "close");
	Ajax.request.send(query);
}

Ajax.buildQuery = function(form){
	theForm = document.forms[form]; //create form object first
	var reqStr = "";	 
	for(var i = 0; i < theForm.elements.length; i++){ 
		isFormObject = false;	 
		switch (theForm.elements[i].tagName) { 
			case "INPUT": 	 
				switch (theForm.elements[i].type) { 
					case "text": 
					case "hidden": 
						reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value); 
						isFormObject = true; 
						break; 
		 
					case "checkbox": 
						if (theForm.elements[i].checked) { 
							reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value; 
						}else{ 
							reqStr += theForm.elements[i].name + "="; 
						} 
						isFormObject = true; 
						break; 
				 
					case "radio": 
						if (theForm.elements[i].checked){ 
							reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value; 
							isFormObject = true; 
						} 
				} 
				break; 
		 
			case "TEXTAREA": 	 
				reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value); 
				isFormObject = true; 
				break; 
		 
			case "SELECT": 
				var sel = theForm.elements[i]; 
				reqStr += sel.name + "=" + sel.options[sel.selectedIndex].value; 
				isFormObject = true; 
				break; 
		} 
		 
		if ((isFormObject) && ((i+1)!= theForm.elements.length)){ 
			reqStr += "&"; 
		}	 
	}	 
	return reqStr;
}

// Callback functions (this one is generalised)
Ajax.Response = function (){
	if(Ajax.CheckReadyState(Ajax.request)){			
		document.getElementById(Ajax.element).innerHTML = Ajax.request.responseText;
	}
}

// callback functions for post
Ajax.postResponse = function(){
	if(Ajax.CheckReadyState(Ajax.request)){			
		document.getElementById(Ajax.element).innerHTML = Ajax.request.responseText;
	}
}

// Creating request object as per Browser
Ajax.createRequestObject = function(){
	var xmlHttpObj = null;
	// Get the proper xmlHttpRequest Object	
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttpObj = new XMLHttpRequest();
		if (xmlHttpObj.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //xmlHttpObj.overrideMimeType('text/xml');
            xmlHttpObj.overrideMimeType('text/html');
         }		
	}catch (e){
		// Internet Explorer
		try{
			xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
		  try{
		  	xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
		  }catch (e){
				alert("Your browser does not support AJAX!");
				return false;
		  }
		}
	}
	return xmlHttpObj;	
}

// Handling reponse status
Ajax.CheckReadyState = function(obj){
	//create loading style as per flag
	if(Ajax.loading_style == -1){
		var background_element = '';
		var loading_element = '';
	}else if(Ajax.loading_style == 0){
		var background_element = '';
		var loading_element = document.getElementById(Ajax.loading_div);		
	}else{
		// Creating element for transparent background
		var transparent_obj = document.getElementsByTagName("body")[0].appendChild(document.createElement("div"));
		transparent_obj.id = "transparent_background";		
		var background_element = document.getElementById('transparent_background');	
		
		// Creating element for loading 
		var loading_obj = document.getElementsByTagName("body")[0].appendChild(document.createElement("div"));
		loading_obj.id = "loading";	
		var loading_element = document.getElementById('loading');	
	}		
	
	if(obj.readyState < 4) {		
		// Setting the loading style
		Ajax.setLoadingStyle(loading_element, background_element, Ajax.loading_style);				  
	}
	//if(obj.readyState == 1) { document.getElementById('loading').innerHTML = "Loading..."; }
	//if(obj.readyState == 2) { document.getElementById('loading').innerHTML = "Loading..."; }
	//if(obj.readyState == 3) { document.getElementById('loading').innerHTML = "Loading..."; }	
	if(obj.readyState == 4){
		if(obj.status == 200){	
			// Setting the loaded style		
			Ajax.setLoadedStyle(loading_element, background_element, Ajax.loading_style);			
			return true;
		}else{
			loading_element.innerHTML = "Error: HTTP " + obj.status;			
		}
	}
}
// Setting the loading style
Ajax.setLoadingStyle = function(loading_element, background_element, num){	
	if(num == -1){
		//do nothing
	}else if(num == 0){
		loading_element.innerHTML = '<font style="font-size:100%; color:black;">'+Ajax.loading_message+'</' + 'font>';
	}else{
		// creating transparent background
		Ajax.setBackgroundStyle(background_element);	
		loading_element.style.position = "absolute";
		loading_element.style.zIndex = "1000";
		
		if(num == 1){	
			loading_element.innerHTML = '<font style="font-size:100%; color:white;">'+Ajax.loading_message+'</' + 'font>';		
			loading_element.style.top = Page.top + 'px'; //0px
			loading_element.style.right = '0px';		
			loading_element.style.backgroundColor = 'red';		
			loading_element.style.padding = '2px';
		}
		
		if(num == 2){
			loading_element.style.top = (Page.top + Page.height/2)-100;
			loading_element.style.left = Page.width/2-75;		
			loading_element.innerHTML = '<table border="0" cellpadding="0" cellspacing="2" width="160" bgcolor="gray"><tr><td align="center" class="loading" height="70" bgcolor="#ffffff"><div style="font-size:110%;color:gray">'+Ajax.loading_message+'<br /><img src="'+Ajax.loading_image+'" border="0"/></div></td></tr></table>';
		}
	}	
}

// Setting the loaded style
Ajax.setLoadedStyle = function(loading_element, background_element, num){
	if(num == -1){
		//do nothing
	}else if(num == 0){
		loading_element.innerHTML = '';
	}else{
		// remove the transparent background
		background_element.style.display = 'none';
		if(num == 1){
			loading_element.style.display = 'none';		
			setTimeout('Page.loadOut()',1000);
		}
		
		if(num == 2){
			loading_element.innerHTML = '<table border="0" cellpadding="0" cellspacing="2" width="160" bgcolor="gray"><tr><td align="center" class="loaded" height="45" bgcolor="#ffffff"><div style="font-size:110%;color:gray">'+Ajax.success_message+'</div></td></tr></table>';			
			setTimeout('Page.loadOut()',2000);
		}
	}
}

// Making background transparent
Ajax.setBackgroundStyle = function(background_element){
	background_element.style.position = "absolute";
	background_element.style.zIndex = "1";
	background_element.style.width = "100%"; //Page.width + "px";	
	background_element.style.height = Page.top + Page.height + "px";//"100%";
	background_element.style.top = "0px";
	background_element.style.left = "0px";
	background_element.style.opacity = ".50";
	background_element.style.background = "#000000";
	background_element.style.filter = "alpha(opacity=40)";
	background_element.style.MozOpacity = "0.4";
	background_element.style.backgroundImage = "url("+Ajax.transparent_image+")"; // required for IE
}

/**********************************************************
* Page Object
**********************************************************/
var Page = new Object();
Page.width;
Page.height;
Page.top;

Page.loadOut = function (){
	//document.getElementById('loading').innerHTML ='';
	document.getElementsByTagName("body")[0].removeChild(document.getElementById("loading"));
	document.getElementsByTagName("body")[0].removeChild(document.getElementById("transparent_background"));
}
Page.getPageCenterX = function (){
	var fWidth;
	var fHeight;		
	
	if(document.all){ //For old IE browsers 
		fWidth = document.body.clientWidth; 
		fHeight = document.body.clientHeight; 
	}else if(document.getElementById &&!document.all){ //For DOM1 browsers 
		fWidth = innerWidth; 
		fHeight = innerHeight; 
	}else if(document.getElementById){ 
		fWidth = innerWidth; 
		fHeight = innerHeight; 		
	}else if (is.op){ //For Opera 
		fWidth = innerWidth; 
		fHeight = innerHeight; 		
	}else if (document.layers){ //For old Netscape 
		fWidth = window.innerWidth; 
		fHeight = window.innerHeight; 		
	}
	Page.width	 = fWidth;
	Page.height	 = fHeight;
	Page.top	 = document.documentElement.scrollTop;//window.document.body.scrollTop
}