/*
*   -LufiAjax Framework 0.2-
*
*   by Steve Gee <luffy@mugiwaranoluffy.com>
*   2010
*
*   http://www.mugiwaranoluffy.com
*
*/

/* Configurable Variables */
var enableLoader = 1; //Enable the loader? 0 = no | 1 = image Loader | 2 = text Loader
var prepath = "/";
var valError =  [];
var globalButton;
var globalButtonDisable;

function lufiAjaxJS() {
	var pageRequest = false;
	if (window.XMLHttpRequest) {
		pageRequest = new XMLHttpRequest ();
    } 
	else if (window.ActiveXObject) {
		try {
			pageRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch(e) {
				pageRequest = false;
			}
		}
	}
	return pageRequest;
}

function lufiAjaxGET(WhereDIV, GoTo) {
	var container, urlFinale;
	container = document.getElementById(WhereDIV);
	var params = "";
	for(var i = 2; i < arguments.length; i++) {
		params += arguments[i];
		if ( (i+1) < arguments.length) { params += '&'; }
	}
	if(params) {
		urlFinale = GoTo + '?' + params;
	}
	else {
		urlFinale = GoTo;
	}
	lufiAjax = lufiAjaxJS();
	lufiAjax.open("GET", urlFinale, true);
	lufiAjax.onreadystatechange=function() {
		if(enableLoader) {
			if (lufiAjax.readyState==1) {
				lufiAjaxLOADER(WhereDIV);
			}
			else if(lufiAjax.readyState==4) {
				if(lufiAjax.status==200) {
					container.innerHTML = lufiAjax.responseText;
				}
				else if(lufiAjax.status==0) {
					container.innerHTML = lufiAjax.responseText;
				}				
				else {
					container.innerHTML = "Error";
				}				
			}
		}
		else {
			if(lufiAjax.readyState==4) {
				if(lufiAjax.status==200) {
					container.innerHTML = lufiAjax.responseText;
				}
				else if(lufiAjax.status==0) {
					container.innerHTML = lufiAjax.responseText;
				}								
				else {
					container.innerHTML = "Error";
				}
			}
		}
	}
	lufiAjax.send(null);
}

//The function to post into a page using POST into an element or DIV
function lufiAjaxPOST(WhereDIV, GoTo){
	var container;
    container = document.getElementById(WhereDIV);
	var params = "";
	var argid = "";
	for(var i = 2; i < arguments.length; i++) {
		argid = arguments[i];
		params += argid;
		params += '=';
		params += document.getElementById(argid).value;
		if ( (i+1) < arguments.length) { params += '&'; }
	}
    lufiAjax=lufiAjaxJS();
    lufiAjax.open("POST", GoTo, true);
	valError =  [];
	if(globalButtonDisable==true) {
		var vButton = document.getElementById(globalButton);
		vButton.disabled = true;
	}
    lufiAjax.onreadystatechange=function() {
	if(enableLoader) {
		if (lufiAjax.readyState==1) {
			lufiAjaxLOADER(WhereDIV);
		}
		else if(lufiAjax.readyState==4) {
				if(lufiAjax.status==200) {
					container.innerHTML = lufiAjax.responseText;
				}
				else if(lufiAjax.status==0) {
					container.innerHTML = lufiAjax.responseText;
				}								
				else {
					container.innerHTML = "Error";
				}	
		}
	}
	if(lufiAjax.readyState==4) {
		if(lufiAjax.status==200) {
			container.innerHTML = lufiAjax.responseText;
		}
				else if(lufiAjax.status==0) {
					container.innerHTML = lufiAjax.responseText;
				}						
		else {
			container.innerHTML = "Error";
		}
    }
    }
    lufiAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    lufiAjax.send(params);
}

function lufiAjaxLOADER(WhereDiv, type){
	obj = document.getElementById(WhereDiv);
	if(obj){
			if(type=="small") {
				obj.innerHTML = '<img src="' + prepath + 'images/lufiajax/loading2.gif" />';
			}
			else {
				obj.innerHTML = '<img src="' + prepath + 'images/lufiajax/loading.gif" />';
			}
		}
}


/* Form Staffs */

	function lufiAjaxFormsAnything(Field, TextAccept) {
			TextAccept = typeof(TextAccept) != 'undefined' ? a : "";
			var WhereDIV = Field + "_val";		
			container = document.getElementById(WhereDIV);
			actualField = document.getElementById(Field).value;
			container.innerHTML = '<img src="' + prepath + 'images/lufiajax/accept.png" /> ' + TextAccept;
	}
	
	function lufiAjaxFormsNumber(Field, TextAccept, TextCross) {
			TextAccept = typeof(TextAccept) != 'undefined' ? a : "";
			TextCross = typeof(TextCross) != 'undefined' ? a : "";	
			var WhereDIV = Field + "_val";
			container = document.getElementById(WhereDIV);
			actualField = document.getElementById(Field).value;
				if(isNaN(actualField)==true) {
					container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
					var vButton = document.getElementById(globalButton);
					vButton.disabled = true;
					var aId = valError.indexOf(Field);
					if(aId=='-1') {
						valError.push(Field);			
						vButton.disabled = true;
					}					
				}
				else {
					container.innerHTML = '<img src="' + prepath + 'images/lufiajax/accept.png" /> ' + TextAccept;
					if(valError.indexOf(Field) != -1) {
						var aId = valError.indexOf(Field);
						valError.splice(aId, 1);
						
						if(valError.length > 0) {
							var vButton = document.getElementById(globalButton);
							vButton.disabled = true;
						} else {
							var vButton = document.getElementById(globalButton);
							vButton.disabled = false;
						}
					}					
				}
	}
	function lufiAjaxFormsEmail(Field, TextAccept, TextCross) {
			TextAccept = typeof(TextAccept) != 'undefined' ? a : "";
			TextCross = typeof(TextCross) != 'undefined' ? a : "";
	
			var WhereDIV = Field + "_val";		
			container = document.getElementById(WhereDIV);
			actualField = document.getElementById(Field).value;

				apos=actualField.indexOf("@");
				dotpos=actualField.lastIndexOf(".");
				if (apos<1||dotpos-apos<2) {
					container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
					var vButton = document.getElementById(globalButton);
					vButton.disabled = true;
					var aId = valError.indexOf(Field);
					if(aId=='-1') {
						valError.push(Field);			
						vButton.disabled = true;
					}
				}
				else {
					container.innerHTML = '<img src="' + prepath + 'images/lufiajax/accept.png" /> ' + TextAccept;
					if(valError.indexOf(Field) != -1) {
						var aId = valError.indexOf(Field);
						valError.splice(aId, 1);
						
						if(valError.length > 0) {
							var vButton = document.getElementById(globalButton);
							vButton.disabled = true;
						} else {
							var vButton = document.getElementById(globalButton);
							vButton.disabled = false;
						}
					}					
				}

	}
	function lufiAjaxFormsRequired(Field, TextAccept, TextCross) {
			TextAccept = typeof(TextAccept) != 'undefined' ? a : "";
			TextCross = typeof(TextCross) != 'undefined' ? a : "";	
			var WhereDIV = Field + "_val";	
			container = document.getElementById(WhereDIV);
			actualField = document.getElementById(Field).value;
			if(actualField==""){
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
				var vButton = document.getElementById(globalButton);
				vButton.disabled = true;
				var aId = valError.indexOf(Field);
				if(aId=='-1') {
					valError.push(Field);			
					vButton.disabled = true;
				}
			}
			else{
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/accept.png" /> ' + TextAccept;
				if(valError.indexOf(Field) != -1) {
					var aId = valError.indexOf(Field);
					valError.splice(aId, 1);
					
					if(valError.length > 0) {
						var vButton = document.getElementById(globalButton);
						vButton.disabled = true;
					} else {
						var vButton = document.getElementById(globalButton);
						vButton.disabled = false;
					}
				}
			}
	}
	function lufiAjaxFormsValidator(button) {
			globalButton = button;
			var params = "";
			var paramactual = "";
			for(var i = 1; i < arguments.length; i++) {
				paramactual = "";
				paramactual = arguments[i];
				var vButton = document.getElementById(button);
				vButton.disabled = true;
				var aId = valError.indexOf(paramactual);
				if(aId=='-1') {
					valError.push(paramactual);			
					vButton.disabled = true;
				}
			}
	}

	function lufiAjaxFormsScript(Field, Text, TextCross, Type, URL) {
			TextAccept = typeof(TextAccept) != 'undefined' ? a : "";
			TextCross = typeof(TextCross) != 'undefined' ? a : "";	
		var WhereDIV = Field + "_val";
		container = document.getElementById(WhereDIV);
		lufiAjax=lufiAjaxJS();
		if(Type=='POST') {
			var params = "";
			var argid = "";
			params += Field;
			params += '=';
			params += document.getElementById(Field).value;
			params += '&';
			for(var i = 5; i < arguments.length; i++) {
				argid = arguments[i];
				params += argid;
				params += '=';
				params += document.getElementById(argid).value;
				if ( (i+1) < arguments.length) { params += '&'; }
			}
			lufiAjax.open("POST", URL, true);
		}
		else if(Type=='GET') {
			var params = "";
			var urlFinale;
			for(var i = 3; i < arguments.length; i++) {
				params += arguments[i];
				if ( (i+1) < arguments.length) { params += '&'; }
			}
			if(params) {
				urlFinale = URL + '?' + params;
			}
			else {
				urlFinale = URL;
			}
			lufiAjax.open("GET", urlFinale, true);
		}
	    lufiAjax.onreadystatechange=function() {
		if (lufiAjax.readyState==1) {
			lufiAjaxLOADER(WhereDIV, "small");
		}
		else if (lufiAjax.readyState==4){
			if(lufiAjax.responseText == "false"){
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
				var vButton = document.getElementById(globalButton);
				vButton.disabled = true;
				var aId = valError.indexOf(Field);
				if(aId=='-1') {
					valError.push(Field);			
					vButton.disabled = true;
				}
			}
			else if(lufiAjax.responseText==""){
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
				var vButton = document.getElementById(globalButton);
				vButton.disabled = true;
				var aId = valError.indexOf(Field);
				if(aId=='-1') {
					valError.push(Field);			
					vButton.disabled = true;
				}
			}
			else if(lufiAjax.responseText=="0"){
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/cross.png" /> ' + TextCross;
				var vButton = document.getElementById(globalButton);
				vButton.disabled = true;
				var aId = valError.indexOf(Field);
				if(aId=='-1') {
					valError.push(Field);			
					vButton.disabled = true;
				}
			}
			else{
				container.innerHTML = '<img src="' + prepath + 'images/lufiajax/accept.png" /> ' + TextAccept;

				if(valError.indexOf(Field) != -1) {
					var aId = valError.indexOf(Field);
					valError.splice(aId, 1);
					if(valError.length > 0) {
						var vButton = document.getElementById(globalButton);
						vButton.disabled = true;
					} else {
						var vButton = document.getElementById(globalButton);
						vButton.disabled = false;
					}
				}			
				
				
	         }
	      }
	    }
		
		if(Type=="POST") {
			lufiAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			lufiAjax.send(params);
		}
		else if(Type=="GET") {
			lufiAjax.send(null);
		}	
	}	


lufiAjax=new Object();
lufiAjax.get=lufiAjaxGET;
lufiAjax.post=lufiAjaxPOST;

lufiAjaxForms=new Object();
lufiAjaxForms.anything=lufiAjaxFormsAnything;
lufiAjaxForms.required=lufiAjaxFormsRequired;
lufiAjaxForms.script=lufiAjaxFormsScript;
lufiAjaxForms.validate=lufiAjaxFormsValidator;
lufiAjaxForms.email=lufiAjaxFormsEmail;
lufiAjaxForms.number=lufiAjaxFormsNumber;
