// JavaScript Documentµ
GReplaceElement = '';

function doRequest(url, fieldArr, formname, replaceElement) {
	
	GReplaceElement = replaceElement
	
	var params = ""
	
	// Url
	
	if(url != '') 
		params = params + 'url=' + url
		
	
	// Fields
	
	var form = $(formname); 
	
	var selectedbooks = $(formname).serialize();
	//alert (selectedbooks);
	
	for(i=0; i<fieldArr.length;i++){
		
		var input = form[fieldArr[i]]
		
		if(params != '')
			params = params + "&"
		
		params = params + fieldArr[i] + "="+ $F(input)

	}
	params += "&MyLoginForm=1";
	
	// Use xml service
	
	var service = 'index.php?xml=1' //?xml=0
	
	new Ajax.Request ( service, { method: 'POST', 
					   parameters: params,
					  onComplete: onResult } )
	
}
	 
function onResult( result ) {
	
	if(result.readyState == 4){
			
		alert(result.responseText);
		
		var xmlDoc = result.responseXML.documentElement
		
		// Always check the document head
		
		var domHead = document.getElementsByTagName('head')[0];
		var xmlHead = xmlDoc.getElementsByTagName('head')[0];
		
		// Check new scripts
		
		var newScripts = xmlHead.getElementsByTagName("script");
		for(i=0; i < newScripts.length; i++){
			
			var xmlScript = newScripts[i];
			
			if(xmlScript.getAttribute("src") != ''){
				
				var found = 0;
				var oldScripts = domHead.getElementsByTagName("script");
				
				for(j=0; j < oldScripts.length; j++){
					
					var domScript = oldScripts[j];
					if(domScript.src != '' && domScript.src == xmlScript.getAttribute("src")){
						found = 1;
						break;
					}
				}
				
				if(found == 0){	
					alert(xmlScript.getAttribute("src"));
					var script = document.createElement('script');
					script.src = xmlScript.getAttribute("src");
					script.type = 'text/javascript';
					//script.defer = true;
					//script.id = 'scriptID'; // This will help us in referencing the object later for removal
					domHead.appendChild(script);
				}
				
			} else {
				break;	
			}
		}
		
		// Replace the div
		
		var replacementEL = document.getElementById(GReplaceElement)
		var content = xmlDoc.getElementsByTagName(replacementEL.tagName.toLowerCase())[0]
		str = '';
		for(i=0; i<content.childNodes.length; i++){
			str += xmlContent(content.childNodes[i]);
		}
		alert(str)
		replacementEL.innerHTML = str;
		
		
		// Check body onload scripts
		/*
		var xmlBody = xmlDoc.getElementsByTagName('body')[0];
		if(xmlBody.getAttribute("onLoad") != ''){
			alert(xmlBody.getAttribute("onload"));
			eval(xmlBody.getAttribute("onload"));
		}*/
	}
}

function loadScript(sScriptSrc, oCallback) {
	
	var oHead = document.getElementById('head')[0];
	var oScript = document.createElement('script');
	
	oScript.type = 'text/javascript';
	oScript.src = sScriptSrc;
	
	if(oCallback != ''){
		// most browsers
		oScript.onload = oCallback;
		
		// IE 6 & 7
		oScript.onreadystatechange = function() {
			if (this.readyState == 'complete') {
				oCallback();
			}
		}
	}

	oHead.appendChild(oScript);
}


function xmlContent(xmlNode) {
  if ( window.XMLSerializer ) {
   // FF
    return new XMLSerializer().serializeToString(xmlNode);
  }
  // IE
  return xmlNode.xml;
}

function removeChildren(element){
	// remove all children from element
	while (element.firstChild) {
	  element.removeChild(element.firstChild);
	}
}


/**
 * removejscssfile("somescript.js", "js") //remove all occurences of "somescript.js" on page
 * removejscssfile("somestyle.css", "css") //remove all occurences "somestyle.css" on page
 */
 
function removejscssfile(filename, filetype){
	 
	 var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
	 var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
	 var allsuspects=document.getElementsByTagName(targetelement)
	 for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
	  if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
	   allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
	 }
}



