var enableCache = true;
var jsCache = new Array();
var dynamicContent_ajaxObjects = new Array();

function ajax_showContent(divId, ajaxIndex, url, callbackOnComplete)
 {
	 var targetObj = document.getElementById(divId);
	 
		targetObj.innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
	 
		if(enableCache)
	  jsCache[url] = 	dynamicContent_ajaxObjects[ajaxIndex].response;
	
	 dynamicContent_ajaxObjects[ajaxIndex] = false;
	
	 ajax_parseJs(targetObj);
	
	 if(callbackOnComplete)
	  executeCallback(callbackOnComplete);
 }
	
function executeCallback(callbackString)
 {
	 if(callbackString.indexOf("(") == -1)
	  callbackString = callbackString + "()";
	
	 try
		 {
		  eval(callbackString);
	  }
	 catch(e)
		 { }
 }
	
function ajax_loadContent(divId, url, callbackOnComplete)
 {
		if(enableCache && jsCache[url])
		 {
		  document.getElementById(divId).innerHTML = jsCache[url];
		  ajax_parseJs(document.getElementById(divId))
		  evaluateCss(document.getElementById(divId))
		  
				if(callbackOnComplete)
		   executeCallback(callbackOnComplete);
		  
				return;
	  }
			
	 var ajaxIndex = dynamicContent_ajaxObjects.length;
	 
	 dynamicContent_ajaxObjects[ajaxIndex] = new sack();
			
		/*dynamicContent_ajaxObjects[ajaxIndex].onLoaded = function()
		 {
				document.getElementById(divId).innerHTML = "<img style='width:100px' src='../images/loading.gif' /><br /><h2>Loading Content...</h2>";
			}*/
			
	 if(url.indexOf('?') >= 0)
		 {
		  dynamicContent_ajaxObjects[ajaxIndex].method = "GET";
		  
				var string = url.substring(url.indexOf("?"));
		  
				url = url.replace(string, "");
		  string = string.replace("?", "");
		  
				var items = string.split(/&/g);
		
		  for(var no = 0; no < items.length; no++)
				 {
			   var tokens = items[no].split("=");
			   
						if(tokens.length == 2)
			    dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0], tokens[1]);
		   }	
		  
				url = url.replace(string, "");
	  }
	
	 dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;
	 
		dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function()
			{
				ajax_showContent(divId, ajaxIndex, url, callbackOnComplete);
			};
	 
		dynamicContent_ajaxObjects[ajaxIndex].runAJAX();
 }

function ajax_parseJs(obj)
 {
	 var scriptTags = obj.getElementsByTagName("script");
	 var string = "";
	 var jsCode = "";
	 
		for(var no = 0; no < scriptTags.length; no++)
		 {	
  		if(scriptTags[no].src)
				 {
	     var head = document.getElementsByTagName("head")[0];
	     var scriptObj = document.createElement("script");
	
	     scriptObj.setAttribute("type", "text/javascript");
	     scriptObj.setAttribute("src", scriptTags[no].src);  	
		   }
				else
				 {
			   if(navigator.userAgent.toLowerCase().indexOf("opera") >= 0)
			    jsCode = jsCode + scriptTags[no].text + '\n';
			   else
				   jsCode = jsCode + scriptTags[no].innerHTML;	
		   }
 	 }
	
	 if(jsCode)
		 ajax_installScript(jsCode);
 }

function ajax_installScript(script)
 {		
  if(!script)
   return;		
  
		if(window.execScript)
  	window.execScript(script)
		else if(window.jQuery && jQuery.browser.safari)
   window.setTimeout(script, 0);
		else
   window.setTimeout(script, 0);
 }	

function evaluateCss(obj)
 {
	 var cssTags = obj.getElementsByTagName("style");
	 var head = document.getElementsByTagName("head")[0];
	 
		for(var no = 0; no < cssTags.length; no++)
	  head.appendChild(cssTags[no]);
 }
