﻿function Ajax(){
	
	this.xmlhttp = null;
	this.progress = "";
	
	this.setProgress = function(imagename){
		this.progress = "<center><div class='processrequest'><img src='"+imagename+"' alt='processando' /></div></center>";
	}
	
	this.initAjaxText = function(div, extra){ 
		var objXmlHttp=null;
		var handlerready = function(){
			if(objXmlHttp.readyState==4 || objXmlHttp.readyState=="complete"){
				document.getElementById(div).innerHTML = objXmlHttp.responseText;
				
				try{ extra.doSomething();}
				catch(e){}
				
				try{ initLightbox();}
				catch(e){}
			}
		}
		
		if (navigator.userAgent.indexOf("Opera")>=0){
			return objXmlHttp;
		}
		
		if (navigator.userAgent.indexOf("MSIE")>=0){
			
			var strName="Msxml2.XMLHTTP";
			if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
				strName="Microsoft.XMLHTTP"
			}
			try{
				objXmlHttp=new ActiveXObject(strName);
				objXmlHttp.onreadystatechange=handlerready;
				return objXmlHttp;
			}
			catch(e){
				return objXmlHttp;
			}
		}
		
		if (navigator.userAgent.indexOf("Mozilla")>=0){
			objXmlHttp=new XMLHttpRequest();
			objXmlHttp.onload=handlerready;
			objXmlHttp.onerror=handlerready;
			return objXmlHttp;
		}
	}
	
	this.commonRequest = function(url, div, vars){
		
		this.xmlhttp = this.initAjaxText(div);
		this.xmlhttp.open("POST", url);
		extra = new Object();
		extra.doSomething = function(){}
		document.getElementById(div).innerHTML = this.progress;
		this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		this.xmlhttp.send(vars);
		
		return false;
	}
	
	this.loginRequest = function(url, div, form){
		
		var vars = "username="+form.username.value+"&password="+form.password.value;
		this.xmlhttp = this.initAjaxText(div);
		this.xmlhttp.open("POST", url);
		extra = new Object();
		extra.doSomething = function(){}
		document.getElementById(div).innerHTML = this.progress;
		this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		this.xmlhttp.send(vars);
	}
	
	this.updateRequest = function(url, div, form){
		
		var vars = "";
		var i=1;
		for(i=0; i<form.length; i++){
			try {
				var oEditor = FCKeditorAPI.GetInstance(form[i].getAttribute('name'));
				vars += "&"+form[i].getAttribute('name')+"="+escape(oEditor.GetXHTML());
			}
			catch(e){
				if(form[i].getAttribute('type') == 'checkbox'){
					if(form[i].checked){
						vars += "&"+form[i].getAttribute('name')+"="+escape(form[i].value);
					}
				}
				else if(form[i].getAttribute('type') == 'radio'){
					if(form[i].checked){
						vars += "&"+form[i].getAttribute('name')+"="+escape(form[i].value);
					}
				}
				else vars += "&"+form[i].getAttribute('name')+"="+escape(form[i].value);
			}
		}
		extra = new Object();
		extra.doSomething = function(){
			var btn = form.submitbtn;
			btn.disabled = false;
			btn.className = "fbutton";
			btn.value = "Salvar &raquo;"
		}
		this.xmlhttp = this.initAjaxText(div, extra);
		this.xmlhttp.open("POST", url);
		form.submitbtn.disabled = true;
		form.submitbtn.className = "fdisabledbutton";
		form.submitbtn.value = "Aguarde...";
		document.getElementById(div).innerHTML = this.progress;
		this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		this.xmlhttp.send(vars);
		
		return false;
	}
	
	this.verifyRequest = function(url, div, vars, btnid){
		
		var btn = document.getElementById(btnid);
		var oldbtntxt = btn.value;
		extra = new Object();
		extra.doSomething = function(){
			btn.disabled = false;
			btn.className = "fbutton";
			btn.value = oldbtntxt;
		}
		this.xmlhttp = this.initAjaxText(div, extra);
		this.xmlhttp.open("POST", url);
		btn.disabled = true;
		btn.className = "fdisabledbutton";
		btn.value = "Aguarde...";
		document.getElementById(div).innerHTML = this.progress;
		this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		this.xmlhttp.send(vars);
	}
}

var ajax = new Ajax();