var Ajax = function()
{
	//
	// MAKE QUERY PARAMETERS
	//
	this.MakeParam = function(params)
	{
		if (params)
		{
			if (typeof params != "string")
			{
				var iparams = "";
				
				for (i = 0; i <= (params.length - 1); i++)
				{
					if (i % 2 == 1)
					{
						iparams += params[i] + "&";
					}
					else
					{
						iparams += params[i] + "=";
					}
				}
				
				params = iparams;
			}
			else
			{
				if (params.substring(0, 1) == "?")
				{
					params = params.substring(1, params.length);
				}
			}
		}
		else
		{
			params = "w=t";
		}
		
		return params;
	}
	
	//
	// AJAX FOR FORMS [INITIALIZE]
	//
	this.FormsInit = function()
	{
		var j, forms = document.getElementsByTagName("form");
		
		for (j = 0; j < forms.length; j++)
		{
			var form = forms[j];
			
			if (form.getAttribute("rel") != "false")
			{
				var file = form.getElementsByTagName("input");
				var x, end = false;
				
				for(x = 0; x < file.length; x++)
				{
					if (file[x].getAttribute("type") == "file")
					{
						end = true;
					}
				}
				
				//if (!end)
				//{
				form.onsubmit = function()
				{
					Ajax.Forms(this);
					
					return false;
				}
				//form.innerHTML = '';
				//form.addEventListener('onsubmit',function() {alert('zxc'); return false;}, false)
				//form.onsubmit();
				//}
				//else
				//{
				//	form.setAttribute("action", form.getAttribute("action"))
				//}
				
				form.setAttribute("rel", "false")
			}
		}
	}
	
	//
	// AJAX FOR NEWS [MAIN FUNCTION]
	//
	this.Forms = function(form)
	{
		var i, query = "?";
		
		var input = form.getElementsByTagName("input");
		var select = form.getElementsByTagName("select");
		var textarea = form.getElementsByTagName("textarea");
		
		for(i = 0; i < input.length; i++)
		{
			var item = input[i];
			
			if (item.type == "text" || item.type == "submit" ||
				item.type == "password" || item.type == "hidden" || item.type == "image")
			{
				query += item.name + "=" + ParseInput(item.value) + "&";
			}
			
			if (item.type == "checkbox")
			{
				if (item.checked)
				{
					query += item.name + "=" + ParseInput(item.value) + "&";
				}
				else
				{
					query += item.name + "=&";
				}
			}
			
			if (item.type == "radio")
			{
				if (item.checked)
				{
					query += item.name + "=" + ParseInput(item.value) + "&";
				}
			}
		}
		
		for(i = 0; i < select.length; i++)
		{
			var item = select[i];
			
			query += item.name + "=" + ParseInput(item.options[item.selectedIndex].text) + "&";
		}
		
		for(i = 0; i < textarea.length; i++)
		{
			var item = textarea[i];
			
			query += item.name + "=" + ParseInput(item.value) + "&";
		}
		
		query = query.substring(0, query.length - 1);
		
		// MAKE AJAX PARAMETES
		Ajax.Load(form.action + "&noframe",
		{
			method: form.method,
			params: query,
			target: form.getAttribute("target"),
			loading: true
		});
	}
	
	//
	// LOAD PAGES
	//
	this.Load = function(url, options)
	{
		var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
		var i;
		var iparams = "";
		
		// METHOD
		var method = options.method == "get" ? "GET" : "POST";
		
		// TARGET PAGE
		var target = options.target ? (typeof options.target == "object" ? options.target : $I(options.target)) : $I("page-content");
		
		// QUERIES [PARAMS]
		var params = Ajax.MakeParam(options.params);
		
		// SHOW LOADING
		if (options.loading == 1)
		{
			//pause(1);
			//document.getElementById('loadbox').innerHTML = "<div id=\"loading\"><div id=\"loading-inner\"><div id=\"loader\">"
							 + "<img src=\"images/loading.gif\" alt=\"\" /></div>"
							 + "<div id=\"loading-label\">در حال بارگذاري ...</div></div></div>";
			
			target.innerHTML = "<div id=\"loading\"><div id=\"loading-inner\"><div id=\"loader\">"
							 + "<img src=\"images/loading.gif\" alt=\"\" /></div>"
							 + "<div id=\"loading-label\">در حال بارگذاري ...</div></div></div>";
		}
		else if (typeof options.loading == "function")
		{
			options.loading();
		}
		
		// CHANGE CURSOR TO `WAIT`
		target.style.cursor = "wait";
		
		// CALL A FUNCTION WHEN THE STATE CHANGES
		http.onreadystatechange = function()
		{
			if (http.readyState == 4)
			{
				if (http.status == 200)
				{
					var html = "";
					var jscript;
					
					html = http.responseText;
					
					if (html)
					{
						// LOAD HTML
						target.innerHTML = html;
						target.style.cursor = "";
						
						//if (document.getElementById("frame").style.visibility != "visible")
						//{
						//	pause(0);
						//}
						
						document.getElementById('loadbox').innerHTML = '';
						
						// RELOADING
						URL();
						Ajax.FormsInit();
						htmltextarea();
						enableTooltips();
						//enableTooltips();
						
						if (is_ie && !is_ie7)
						{
							input();
						}
						
						// JAVASCRIPT RUNNER
						if (target.innerHTML.toLowerCase().indexOf("<script") != -1)
						{
							var i, htm = "";
							// PARSE FILE CONTENTS
							htm = target.getElementsByTagName("script");
							
							for(i = 0; i < htm.length; i++)
							{
								eval(htm[i].innerHTML);
							}
						}
					}
					else
					{
						target.innerHTML = "Empty Page.";
						target.style.cursor = "";
					}
					
					// EXECUTE `ON-COMPLETE` ATTRIBUTE
					if (options.onComplete)
					{
						options.onComplete();
					}
				}
			}
		}
		
		if (method == "POST")
		{
			// OPEN PORT
			http.open("POST", url, true);
			
			// SEND THE PROPER HEADER INFORMATION ALONG WITH THE REQUEST
			http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
			http.setRequestHeader("Content-length", params.length);
			http.setRequestHeader("Connection", "close");
		}
		else
		{
			// OPEN PORT
			http.open("GET", url + (url.indexOf("?") != -1 ? "&" : "?") + params, true);
			http.setRequestHeader("Expires", "Sat, 1 Jan 2005 05:00:00 GMT");
			http.setRequestHeader("Last-Modified", "Sat, 1 Jan 2005 05:00:00 GMT");
			http.setRequestHeader("Pragma", "no-cache");
			http.setRequestHeader("Cache-Control", "no-cache");
		}
		
		// SEND REQUEST
		http.send(method == "POST" ? params : null);
	}
}
/*var Ajax = function()
{
	//
	// MAKE QUERY PARAMETERS
	//
	this.MakeParam = function(params)
	{
		if (params)
		{
			if (typeof params != "string")
			{
				var iparams = "";
				
				for (i = 0; i <= (params.length - 1); i++)
				{
					if (i % 2 == 1)
					{
						iparams += params[i] + "&";
					}
					else
					{
						iparams += params[i] + "=";
					}
				}
				
				params = iparams;
			}
			else
			{
				if (params.substring(0, 1) == "?")
				{
					params = params.substring(1, params.length);
				}
			}
		}
		else
		{
			params = "w=t";
		}
		
		return params;
	}
	
	//
	// AJAX FOR FORMS [INITIALIZE]
	//
	this.FormsInit = function()
	{
		var j, forms = document.getElementsByTagName("form");
		
		for (j = 0; j < forms.length; j++)
		{
			var form = forms[j];
			
			if (!form.getAttribute("rel"))
			{
				var file = form.getElementsByTagName("input");
				var x, end = false;
				
				for(x = 0; x < file.length; x++)
				{
					if (file[x].getAttribute("type") == "file")
					{
						end = true;
					}
				}
				
				//if (!end)
				//{
					form.onsubmit = function(e)
					{
						Ajax.Forms(this);
						
						return false;
					}
				//}
				//else
				//{
				//	form.setAttribute("action", form.getAttribute("action"))
				//}
				
				form.setAttribute("rel", "false")
			}
		}
	}
	
	//
	// AJAX FOR NEWS [MAIN FUNCTION]
	//
	this.Forms = function(form)
	{
		var i, query = "?";
		
		var input = form.getElementsByTagName("input");
		var select = form.getElementsByTagName("select");
		var textarea = form.getElementsByTagName("textarea");
		
		for(i = 0; i < input.length; i++)
		{
			var item = input[i];
			
			if (item.type == "text" || item.type == "submit" ||
				item.type == "password" || item.type == "hidden" || item.type == "image")
			{
				query += item.name + "=" + ParseInput(item.value) + "&";
			}
			
			if (item.type == "checkbox")
			{
				if (item.checked)
				{
					query += item.name + "=" + ParseInput(item.value) + "&";
				}
				else
				{
					query += item.name + "=&";
				}
			}
			
			if (item.type == "radio")
			{
				if (item.checked)
				{
					query += item.name + "=" + ParseInput(item.value) + "&";
				}
			}
		}
		
		for(i = 0; i < select.length; i++)
		{
			var item = select[i];
			
			query += item.name + "=" + ParseInput(item.options[item.selectedIndex].value) + "&";
		}
		
		for(i = 0; i < textarea.length; i++)
		{
			var item = textarea[i];
			
			query += item.name + "=" + ParseInput(item.value) + "&";
		}
		
		query = query.substring(0, query.length - 1);
		
		// MAKE AJAX PARAMETES
		Ajax.Load(form.action + "&noframe",
		{
			method: form.method,
			params: query,
			target: form.getAttribute("target"),
			loading: true
		});
	}
	
	//
	// LOAD PAGES
	//
	this.Load = function(url, options)
	{
		var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
		var i;
		var iparams = "";
		
		// METHOD
		var method = options.method == "get" ? "GET" : "POST";
		
		// TARGET PAGE
		var target = options.target ? (typeof options.target == "object" ? options.target : $I(options.target)) : $I("page-content");
		
		// QUERIES [PARAMS]
		var params = Ajax.MakeParam(options.params);
		
		// SHOW LOADING
		if (options.loading == 1)
		{
			target.innerHTML = "<div id=\"loading\"><div id=\"loading-inner\"><div id=\"loader\">"
							 + "<img src=\"images/loading.gif\" alt=\"\" /></div>"
							 + "<div id=\"loading-label\">در حال بارگذاري ...</div></div></div>";
		}
		else if (typeof options.loading == "function")
		{
			options.loading();
		}
		
		// CHANGE CURSOR TO `WAIT`
		target.style.cursor = "wait";
		
		// CALL A FUNCTION WHEN THE STATE CHANGES
		http.onreadystatechange = function()
		{
			if (http.readyState == 4)
			{
				if (http.status == 200)
				{
					var html = "";
					var jscript;
					
					html = http.responseText;
					
					if (html)
					{
						// LOAD HTML
						target.innerHTML = html;
						target.style.cursor = "";
						
						// JAVASCRIPT RUNNER
						if (target.innerHTML.toLowerCase().indexOf("<script") != -1)
						{
							var i, htm = "";
							
							// PARSE FILE CONTENTS
							htm = target.getElementsByTagName("script");
							
							for(i = 0; i < htm.length; i++)
							{
								eval(htm[i].innerHTML);
							}
						}
						
						// RELOADING
						Ajax.FormsInit();
						URL();
						
						if (is_ie && !is_ie7)
						{
							input();
						}
					}
					else
					{
						target.innerHTML = "Empty Page.";
						target.style.cursor = "";
					}
					
					// EXECUTE `ON-COMPLETE` ATTRIBUTE
					if (options.onComplete)
					{
						options.onComplete();
					}
				}
			}
		}
		
		if (method == "POST")
		{
			// OPEN PORT
			http.open("POST", url, true);
			
			// SEND THE PROPER HEADER INFORMATION ALONG WITH THE REQUEST
			http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
			http.setRequestHeader("Content-length", params.length);
			http.setRequestHeader("Connection", "close");
		}
		else
		{
			// OPEN PORT
			http.open("GET", url + (url.indexOf("?") != -1 ? "&" : "?") + params, true);
			http.setRequestHeader("Expires", "Sat, 1 Jan 2005 05:00:00 GMT");
			http.setRequestHeader("Last-Modified", "Sat, 1 Jan 2005 05:00:00 GMT");
			http.setRequestHeader("Pragma", "no-cache");
			http.setRequestHeader("Cache-Control", "no-cache");
		}
		
		// SEND REQUEST
		http.send(method == "POST" ? params : null);
	}
}*/

