/************************************************************************************************************

Ajax dynamic content

Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland



This library is free software; you can redistribute it and/or

modify it under the terms of the GNU Lesser General Public

License as published by the Free Software Foundation; either

version 2.1 of the License, or (at your option) any later version.



This library is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

Lesser General Public License for more details.



You should have received a copy of the GNU Lesser General Public

License along with this library; if not, write to the Free Software

Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA



Dhtmlgoodies.com., hereby disclaims all copyright interest in this script

written by Alf Magne Kalleland.



Alf Magne Kalleland, 2006

Owner of DHTMLgoodies.com





************************************************************************************************************/	



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;

	document.getElementById(divId).innerHTML = 'Loading content - please wait';

	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	

	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;	// Specifying which file to get

	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found

	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	

	

	

}



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){ // safari detection in jQuery

        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]);

	}	

}
