

function queueScript(aS,s,t) {
	aS[aS.length] = s+"+++^^^"+t; 
	//alert( s+"^^^"+t);
}

function processQueue(aS) {
	if (aS.length>0) {
		//alert(aS[0]);
		var aSi = new Array();
		aSi = aS[0].split("+++^^^");
		aS.splice(0,1);
		var oS = addScript('1',aSi[0],aSi[1]);

		if (oS==null) {
		//	alert('oS is Null' + '\n\nText:'+aSi[1]+'\n\nSrc:'+aSi[0])
		}
		if (oS.readyState==null) {
			processQueue(aS);
		}
		else {
			if (oS.readyState!="loaded") {
				oS.onreadystatechange = function() {
					//alert(this.readyState); 
					if (this.readyState=="loaded" || this.readyState=="complete") {
						this.onreadystatechange=null;
						processQueue(aS);
					}
				}
			}
			else { processQueue(aS); }
		}
	}
	else {
		//alert("Done!");
	}
}

function parseScript(stream) {
	//grove = Xparse(stream);
	//retag(grove,0);
	var d = document.createElement('body'); 
	try {
	d.innerHTML = "<FORM>" + (stream) + "</FORM>"; }
	catch(e){}

	var _src;
	var _text;
	var scr = d.getElementsByTagName("script"); 
	
	if (scr.length>0) {
		var aS = new Array();
		for (var i=0;i<scr.length;i++){
			_src=scr[i].getAttribute("src");
			//_text=scr[i].getAttribute("text");
			_text=scr[i].innerHTML;
			//alert("src:"+_src+"\n\ntetxt:"+_text+"\n\nhtml:"+scr[i].innerHTML)
			queueScript(aS,_src,_text);		
		}

		processQueue(aS);
	}
}

function addScript(i,s,t) {
	//don't add a script if the src is already included in the page
	if ((i=='0') && (s.length > 0)){
		var _src;
		var scr = document.getElementsByTagName("script"); 
		for (var i=0;i<scr.length;i++){
			_src=scr[i].getAttribute("src");
			if (_src != null && _src==s) {return true;};
		}
	}
	//remove a script and replace it with current code
	if (i!='0' && getObj(i)){var oS0 = getObj(i);document.getElementsByTagName("head")[0].removeChild(oS0);}

	var oS = document.createElement('script'); 
	try {
	oS.type = 'text/javascript'; 
	oS.defer = false;
	if (addScript.arguments[2]){oS.text  = unescape(t);}else {oS.src=s;} 
	document.getElementsByTagName("head")[0].appendChild(oS);
	} catch (e){alert('pp---' + e.message)}// {alert('g' + e.message + '\n\nText:'+t+'\n\nSrc:'+s )}
	return oS;
}

function retag(tag,type)
{
	if (tag.name=='script') {
		for(attrib in tag.attributes) {
			if (attrib=='src' && type=='0') { queueScript(tag.attributes[attrib],''); }
		}
	}
	for(var i=0;i < tag.contents.length;i++) {
		if(tag.contents[i].type=="element")	{
			retag(tag.contents[i],type);
		}
		else {
		 	if ((tag.name=='script') && (tag.contents[i].type != "comment") && (tag.contents[i].type != "pi")) {
				queueScript('',tag.contents[i].value);
			}
		}
	}
}
