﻿function createAjaxObj()
{
	var httprequest = false
	if (window.XMLHttpRequest)
	{ // if Mozilla, Safari etc
		httprequest = new XMLHttpRequest()
/*		if (httprequest.overrideMimeType)
		httprequest.overrideMimeType('text/javascript')
*/	}
	else if (window.ActiveXObject)
	{ // if IE
		try 
		{
			httprequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			try
			{
				httprequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}
	return httprequest
}

var AsyncReq = new Object()
var containerObj = null
AsyncReq.basedomain = "http://" + window.location.hostname
AsyncReq.ajaxobj = createAjaxObj()
AsyncReq.filetype = "txt"
AsyncReq.addrandomnumber = 1 //Set to 1 or 0.

AsyncReq.getAjaxRequest = function(url, parameters, callbackfunc, filetype, container)
{
	AsyncReq.ajaxobj = createAjaxObj() //recreate ajax object to defeat cache problem in IE
	if (AsyncReq.addrandomnumber == 1) //Further defeat caching problem in IE?
		if(parameters == "")
			parameters += "ajaxcachebust=" + new Date().getTime()
		else
			parameters += "&ajaxcachebust=" + new Date().getTime()
			
	if (this.ajaxobj)
	{
		this.filetype = filetype
		this.containerObj = document.getElementById(container)
		this.ajaxobj.onreadystatechange = callbackfunc
		if(parameters == "")
			this.ajaxobj.open('GET', url, true)
		else
			this.ajaxobj.open('GET', url + "?" + parameters, true)
		this.ajaxobj.send(null)
	}
}

AsyncReq.postAjaxRequest = function(url, parameters, callbackfunc, filetype, container)
{
	AsyncReq.ajaxobj = createAjaxObj() //recreate ajax object to defeat cache problem in IE
	if (this.ajaxobj)
	{
		this.filetype = filetype
		this.containerObj = document.getElementById(container)
		this.ajaxobj.onreadystatechange = callbackfunc;
		this.ajaxobj.open('POST', url, true);
		this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.ajaxobj.setRequestHeader("Content-length", parameters.length);
		this.ajaxobj.setRequestHeader("Connection", "close");
		this.ajaxobj.send(parameters);
	}
}

function processGetPost()
{ 	
//	var LoadingText = "<div align='center'><br /><br /><img src=\"img/loading4.gif\" width=\"138\" height=\"9\" alt=\"Loaing...\" /><br /> در حال دریافت اطلاعات ...</div>";
	var myajax = AsyncReq.ajaxobj
	var myfiletype = AsyncReq.filetype
	var mycontainerObj = AsyncReq.containerObj
//	document.getElementById("Maincontainer").style.display = 'block';
//	if (myajax.readyState == 0){mycontainerObj.innerHTML = "<div align='center'><br /><br /><img src=\"img/loading4.gif\" width=\"138\" height=\"9\" alt=\"Loaing...\" /><br /> در حال ارسال اطلاعات ...</div>";}
//	if (myajax.readyState == 1){mycontainerObj.innerHTML = LoadingText;}
//	if (myajax.readyState == 2){mycontainerObj.innerHTML = LoadingText;}
//	if (myajax.readyState == 3){mycontainerObj.innerHTML = LoadingText;}
	if (myajax.readyState == 4)
	{ //if request of file completed
		if (myajax.status == 200 || window.location.href.indexOf("http") == -1)
		{
			//if request was successful or running script locally
			if (myfiletype == "txt")
				mycontainerObj.innerHTML = myajax.responseText;
			else
				alert(myajax.responseXML);
		}
		AsyncReq.ajaxobj.abort();
	}
}

/* ======================================================================================================================== */
/*                             				Load Object To Your Document									  			    */
/* ------------------------------------------------------------------------------------------------------------------------ */
/* Authentication Provider version 2.0 made by EMZ(Ehsan Maleki Zoeram)														*/
/* This designed for MySQL 4.0.18 Database Server And Required MySQLDataProvider Class.										*/
/* For recieve other versions or other databsase servers class contact  E.M@LEKI.IR or Parseh.Maleki@GMail.COM				*/
/* ======================================================================================================================== */

/*  --------																									*/
/* | Sample |																									*/
/*  --------																									*/
/* <a href="javascript:loadobjs('ajaxfiles/style.css', 'ajaxfiles/tooltip.js');">//Load "style.css" and "tooltip.js"</a> 																										*/

/*  ---------																				 								*/
/* | History |																				  								*/
/*  --------- 																				  								*/
/* [Ali Salkhordeh Haghighi]           1387/03/15          Created							  								*/
/* ------------------------------------------------------------------------------------------------------------------------ */
function LoadObjects()
{
    if (!document.getElementById)
      return
    for (i = 0; i < arguments.length; i++)
    {
        var file = arguments[i]
        var fileref = ""
        if (loadedobjects.indexOf(file) == -1)
        { //Check to see if this object has not already been added to page before proceeding
            if (file.indexOf(".js") != -1)
            { //If object is a js file
                fileref = document.createElement('script')
                fileref.setAttribute("type", "text/javascript");
                fileref.setAttribute("src", file);
            }
            else if (file.indexOf(".css") != -1)
            { //If object is a css file
                fileref = document.createElement("link")
                fileref.setAttribute("rel", "stylesheet");
                fileref.setAttribute("type", "text/css");
                fileref.setAttribute("href", file);
            }
        }
        if (fileref != "")
        {
        	document.getElementsByTagName("head").item(0).appendChild(fileref)
        	loadedobjects += file + " " //Remember this object as being already added to page
        }
    }
}

//ACCESSIBLE VARIABLES (for use within your callback functions):
//1) AsyncReq.ajaxobj //points to the current ajax object
//2) AsyncReq.filetype //The expected file type of the external file ("txt" or "xml")
//3) AsyncReq.basedomain //The root domain executing this ajax script, taking into account the possible "www" prefix.
//4) AsyncReq.addrandomnumber //Set to 0 or 1. When set to 1, a random number will be added to the end of the query string of GET requests to bust file caching of the external file in IE. See docs for more info.

//ACCESSIBLE FUNCTIONS:
//1) AsyncReq.getAjaxRequest(url, parameters, callbackfunc, filetype)
//2) AsyncReq.postAjaxRequest(url, parameters, callbackfunc, filetype)

///////////END OF ROUTINE HERE////////////////////////


//////EXAMPLE USAGE ////////////////////////////////////////////
/* Comment begins here

//Define call back function to process returned data
		function processGetPost()
		{
			var myajax = AsyncReq.ajaxobj
			var myfiletype = AsyncReq.filetype
			if (myajax.readyState == 0){document.getElementById("LoginArea").innerHTML = "<img src=\'img/indicator.gif\'>...در حال ارسال اطلاعات ";}
			if (myajax.readyState == 1){document.getElementById("LoginArea").innerHTML = "<img src=\'img/indicator.gif\'>...در حال دریافت اطلاعات ";}
			if (myajax.readyState == 2){document.getElementById("LoginArea").innerHTML = "<img src=\'img/indicator.gif\'>...در حال دریافت اطلاعات ";}
			if (myajax.readyState == 3){document.getElementById("LoginArea").innerHTML = "<img src=\'img/indicator.gif\'>...در حال دریافت اطلاعات ";}
			if (myajax.readyState == 4)
			{ //if request of file completed
				if (myajax.status == 200 || window.location.href.indexOf("http")==-1)
				{
					//if request was successful or running script locally
					if (myfiletype == "txt")
						document.getElementById("LoginArea").innerHTML = myajax.responseText;
					else
						alert(myajax.responseXML);
				}
			}
		}

/////1) GET Example- alert contents of any file (regular text or xml file):

AsyncReq.getAjaxRequest("example.php", "", processGetPost, "txt",container)
AsyncReq.getAjaxRequest("example.php", "name=George&age=27", processGetPost, "txt",container)
AsyncReq.getAjaxRequest("examplexml.php", "name=George&age=27", processGetPost, "xml",container)
AsyncReq.getAjaxRequest(AsyncReq.basedomain+"/mydir/mylist.txt", "", processGetPost, "txt",container)

/////2) Post Example- Post some data to a PHP script for processing, then alert posted data:

//Define function to construct the desired parameters and their values to post via Ajax
function getPostParameters(){
var namevalue=document.getElementById("namediv").innerHTML //get name value from a DIV
var agevalue=document.getElementById("myform").agefield.value //get age value from a form field
var poststr = "name=" + encodeURI(namevalue) + "&age=" + encodeURI(agevalue)
return poststr
}

var poststr=getPostParameters()

AsyncReq.postAjaxRequest("example.php", poststr, processGetPost, "txt",container)
AsyncReq.postAjaxRequest("examplexml.php", poststr, processGetPost, "xml",container)

Comment Ends here */

//function setAndExecute(divId, innerHTML)
//{
//   var div = document.getElementById(divId);
//   div.innerHTML = innerHTML;
//   var x = div.getElementsByTagName("script"); 
//   for(var i=0;i<x.length;i++)
//   {
//       eval(x[i].text);
//   }
//}