framework.http = {
_httpObjectsArray:{},
_httpResultsArray:{},
loadUrl:function(name, url, querystring, callbackSuccess, callbackFailure, timeout, redirectURL, httpMethod)
{
	function _getDate()
	{
	 	var myDate=new Date();
	     myDate = myDate.getYear() + "" + (myDate.getMonth() + 1) + "" +
	     		  myDate.getDate() + "" + myDate.getHours() + "" +
	     		  myDate.getMinutes() + "" + myDate.getSeconds();
	     return myDate;		
	};
	querystring = querystring + "&timestamp=" + _getDate();
	callbackSuccess = callbackSuccess + "('" + name + "')";
	callbackFailure = callbackFailure + "('" + name + "')";
	if(httpMethod==null){
		httpMethod = "POST";
	}
	framework.http._executeHttpCall(name, url, querystring, callbackSuccess, callbackFailure, timeout, redirectURL, httpMethod);
},
getHttpCallResults:function (name) 
{
	return framework.http._httpResultsArray[name];	
},
_executeHttpCall:function(name, url, querystring, callbackSuccess, callbackFailure, timeout, redirectURL, httpMethod) 
{
	querystring = querystring + "&cookies=" + escape(document.cookie);
	framework.http._httpResultsArray[name] = {};
	framework.http._httpObjectsArray[name] = framework.http._getHttpObject();
	if (framework.http._httpObjectsArray[name]!=null) 
	{
		framework.http._httpObjectsArray[name].open(httpMethod, url, true); 
		framework.http._httpObjectsArray[name].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		framework.http._httpObjectsArray[name].setRequestHeader("Content-length", querystring.length);
		framework.http._httpObjectsArray[name].setRequestHeader("Connection", "close");
		framework.http._httpObjectsArray[name].onreadystatechange = function() 
		{
			if (framework.http._httpObjectsArray[name].readyState == 4)
			{
				try
				{
					if (framework.http._httpObjectsArray[name].status == 200)
					{
						var timeoutId = framework.http._httpResultsArray[name]["timeoutId"];
						window.clearTimeout(timeoutId);
						framework.http._httpResultsArray[name].name=name;
						framework.http._httpResultsArray[name]["responseText"] = framework.http._httpObjectsArray[name].responseText;
						framework.http._httpResultsArray[name]["url"] = url;
						framework.http._httpResultsArray[name]["status"] = framework.http._httpObjectsArray[name].status;
						if (redirectURL!=null)
						{
							var text = framework.http._httpObjectsArray[name].responseText;
							if (text.indexOf("<html") > -1 && text.indexOf("</html>") > -1)
							{
								window.location.href = redirectURL;
							}
						}
						try
						{
							eval(callbackSuccess); 
						} 
						catch(e) 
						{	 
						}
					} 
					else 
					{
						var timeoutId = framework.http._httpResultsArray[name]["timeoutId"];
						window.clearTimeout(timeoutId);
						framework.http._httpResultsArray[name]["responseText"] = "";
						framework.http._httpResultsArray[name]["url"] = url;
						framework.http._httpResultsArray[name]["status"] = framework.http._httpObjectsArray[name].status;
						try
						{
							eval(callbackFailure);
						} 
						catch(e) 
						{ 
						}
					}
				} 
				catch (e)
				{
					var timeoutId = framework.http._httpResultsArray[name]["timeoutId"];
					window.clearTimeout(timeoutId);
					framework.http._httpResultsArray[name]["responseText"] = "";
					framework.http._httpResultsArray[name]["url"] = url;
					framework.http._httpResultsArray[name]["status"] = -1;
					try
					{
						eval(callbackFailure);
					} 
					catch(e) 
					{ 
					}
				}
			}
		};
		var timeoutId = window.setTimeout(
			function() 
			{
				var readyState = framework.http._httpObjectsArray[name].readyState;
				if (readyState != 4 || readyState != 0)
				{
					framework.http._httpObjectsArray[name].abort();
				}
				if (framework.http._isInternetExplorer())
				{
					framework.http._httpObjectsArray[name].onreadystatechange = function() {};
				}
				else
				{
					framework.http._httpObjectsArray[name].onreadystatechange = null;
				}
				framework.http._httpObjectsArray[name] = {};
				framework.http._httpResultsArray[name]["responseText"] = "";
				framework.http._httpResultsArray[name]["url"] = url;
				framework.http._httpResultsArray[name]["status"] = 1001;
				try
				{
					eval(callbackFailure);
				} 
				catch(e) 
				{ 
					return 113;
				}
			}, 
			timeout);
		framework.http._httpResultsArray[name]["timeoutId"] = timeoutId;
		framework.http._httpObjectsArray[name].send(querystring);
	}
},
setDebugEnabled:function(enabled)
{
	framework.http._isDebugEnabled = enabled;
},
debug:function(message)
{
	if (framework.http._isDebugEnabled)
	{
		if (window.console && console.log) console.log( message );
		else if (window.opera && opera.postError) opera.postError( message );
	}
},
_isDebugEnabled:false,
_xmlHttpFactories:
[
	function()
	{
		var retval = new XMLHttpRequest();
		framework.http.debug("using XMLHttpRequest");
		return retval;
	},
	function()
	{
		var retval = new ActiveXObject("MSXML2.XMLHTTP.6.0");
		framework.http.debug("MSXML2.XMLHTTP.6.0");
		return retval;
	},
	function()
	{
		var retval = new ActiveXObject("MSXML2.XMLHTTP.3.0");
		framework.http.debug("MSXML2.XMLHTTP.3.0");
		return retval;
	}
],
_getHttpObject:function() 
{
	var xmlHttp = null;
	for (var i = 0; i < framework.http._xmlHttpFactories.length; i += 1)
	{
		try
		{
			xmlHttp = framework.http._xmlHttpFactories[i]();
		}
		catch (e)
		{
			continue;
		}
		break;
	}
	return xmlHttp;
},
cancelAllHttp:function() 
{
	for (var x in framework.http._httpObjectsArray)
	{
		try
		{
			if (framework.http._isInternetExplorer())
			{
				framework.http._httpObjectsArray[x].onreadystatechange = function() {};
			}
			else
			{
				framework.http._httpObjectsArray[x].onreadystatechange = null;
			}
			if (readyState == 4 || readyState == 0)
			{
				framework.http._httpObjectsArray[name].abort();
			}
			framework.http._httpObjectsArray[x] = null;
		}
		catch (e)
		{
		}
	}
	return 0;
},
cancelSingleHttp:function(name) 
{
	try
	{
		if (framework.http._isInternetExplorer())
		{
			framework.http._httpObjectsArray[name].onreadystatechange = function() {};
		}
		else
		{
			framework.http._httpObjectsArray[name].onreadystatechange = null;
		}framework.http._httpObjectsArray[name].onreadystatechange = function() {};
		if (readyState == 4 || readyState == 0)
		{
			framework.http._httpObjectsArray[name].abort();
		}
		framework.http._httpObjectsArray[name] = null;
	}
	catch (e)
	{
	}
	return 0;
},
_isInternetExplorer:function()
{
	return (!!window.navigate && !!(typeof(document.getElementById) == 'object'));
},
translate : 
{
	_replacementFunc : function()
	{
		var argumentCount = arguments.length;
		for (var index=0;index<argumentCount-2; index++) 
		{
			var entity = arguments[index];
			var propertyValue = /[\w\.]+/.exec(entity);
			var newValue = eval(propertyValue[0]);
			return (newValue) ? newValue : propertyValue;
		};
		return arguments[0];
	},
	phrase : function(value) 
	{
		var reggieCustomEntity = /&![\w\.]+;/gm;
		if (reggieCustomEntity.test(value)) 
		{
        	return value.replace(reggieCustomEntity, framework.http.translate._replacementFunc);
		}
		else
		{
			return value;
		}
	},
	html : function()
	{
		if (document.evaluate && !/Opera/.test(navigator.userAgent)) 
		{
			var currentNode;
			var textNodeArray = document.evaluate("//text()", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
			if (textNodeArray)
			{					
				var len=textNodeArray.snapshotLength;
				for (var i=0; i < len; i++) 
				{
					if (textNodeArray.snapshotItem(i).nodeValue.indexOf("document.write")>-1){
						continue;
					}
					textNodeArray.snapshotItem(i).nodeValue = this.phrase(textNodeArray.snapshotItem(i).nodeValue);
				}
			}
			var inputNodeArray = document.evaluate("//input[@value]", document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
			if (inputNodeArray)
			{					
				currentNode=inputNodeArray.iterateNext();
				while(currentNode)
				{
					currentNode.value = this.phrase(currentNode.value);
					currentNode=inputNodeArray.iterateNext();
				}
			}
		}
		else 
		{
			function walkTheDOM(node) 
			{
				if (node.nodeType==3)
				{
					node.nodeValue = framework.http.translate.phrase(node.nodeValue);
				}
				else if (node.nodeName=="INPUT")
				{
					node.value = framework.http.translate.phrase(node.value);
				}
				else if (node.nodeName=="TITLE")
				{
					node.text = framework.http.translate.phrase(node.text);
				}
				node = node.firstChild;
				while (node) {
					walkTheDOM(node);
					node = node.nextSibling;
				}
			};
			walkTheDOM(document.documentElement);			
		}
	}
},
_loadedScripts : [],
_timer : {},
loadJS : function(url, callback) 
{
	if (this._loadedScripts.toString().indexOf(url) == -1) 
	{ 
		this._loadedScripts.push(url); 
		var fileref=document.createElement('script');
		fileref.setAttribute("type","text/javascript"); 
		fileref.setAttribute("src", url); 
		fileref.setAttribute("charset", "utf-8");
		fileref.setAttribute("async", "true");
		var head = document.getElementsByTagName("HEAD")[0];
		head.appendChild(fileref);
		function cleanup() {
	 		fileref.onload = null;
	 		fileref.onreadystatechange = null;
	 	}
		if (callback!=null) 
		{
			fileref.onreadystatechange = function () 
			{
				if (fileref.readyState == 'loaded' || fileref.readyState == 'complete') 
				{
					callback();
					cleanup();
					return;
				}
			}                            
			fileref.onload = fileref.onerror = function () 
			{
				callback();
				cleanup();
				return;
			}
			var userAgent = navigator.userAgent.toLowerCase();
			if ((/webkit/.test(userAgent) && !userAgent.match(/version\/3/) && !userAgent.match(/version\/4/)) || 
				/opera/.test(userAgent)) 
			{ 
				this._timer[url] = setInterval(function() 
				{					
					var readyState = document.readyState;
					if (/loaded/.test(readyState) || /complete/.test(readyState)) 
					{
						clearInterval(LSHP.lazyLoad._timer[url]);
	                    callback();
	                    cleanup();
					}
				}, 10);
			}
		}
	}
	else 
	{
		callback();
	}
},
loadScript:function(id, src)
{
	if (src != null)
	{
		var oScript = document.createElement("script");
		oScript.language = "javascript";
		oScript.type = "text/javascript";
		oScript.charset = "utf-8";
		oScript.async = 'true';
		oScript.id = id;
		oScript.text = src;
		var oHead = document.getElementsByTagName('HEAD').item(0);
		oHead.appendChild(oScript);
	}
},
loadCss:function(id, url)
{
	if (document.getElementById(id) == null)
	{
		var fileref = document.createElement('link');
		fileref.setAttribute("id", id);
		fileref.setAttribute("type", "text/css");
		fileref.setAttribute("href", url); 
		fileref.setAttribute("rel", "stylesheet");
		var head = document.getElementsByTagName("HEAD")[0];
		head.appendChild(fileref);
	}
},
loaded:true
};
//Version 3.5
