/*
 * ------------------------
 * | Generic Ajax Request |
 * ------------------------
 *
 * This function is tested and certified with Scriptaculous Prototype.js (1.8.1)
 *
 *
 * @parm element: the div which will get injected new HTML source
 * @parm type    : currently only 'popup' is supported in order to 
 * 				   trigger a modal popup approach.
 * @parm url     : the url to submit (it can contain embedded parms)
 * @parm parms   : addition parms to post along with the request. Can be NULL 
 * 				   or ignored in method call.
 *
 *
 * Usage Example : getServiceFeed('myDiv',null,'myAction.php','parm1=hello&parm2=world');
 */

function getServiceFeed(element, type, url, parms) {

	var postParms;
	var rand = Math.random(9999);

	/* Assign unique post */
	postParms = 'rand=' + rand;
	
	if (parms != null) {
		postParms = postParms + '&' + parms;
	}

	var El = $(element);
	if (El!=null ){
		El.innerHTML = "<img src='./images/ajax.gif'/>";
	}

	var myAjax = new Ajax.Request( url, { method: 'post', 
										  parameters: postParms, 
										  /*onLoading: callMethod(),*/ 
										  onComplete: 
										  	function(response) {

												var newData = response.responseText;
												$(element).innerHTML = newData;
															
												if (type=='popup') {
													$("overlay").style.display = "inline";
												}

												//2008-NOV-15 TOFORL1: to be tested on all sites before implementing 
												//runEvalOnInnerHtmlScripts();
												
											}
										 } 
									);

}


/*
 * From the current service feed request, grab xml tag value.
 * You need a delay cause we never know how long ajax response will be.
 */
//function grabServiceFeedXML(anyTag) {
//	requestedTagName = anyTag;
//	setTimeout("grabServiceFeedXMLWithDelay()",3000);
//}
//function grabServiceFeedXMLWithDelay() {
//	return myAjaxRq.transport.responseXML.documentElement.getElementsByTagName(requestedTagName)[0].childNodes[0].nodeValue;
//}


/*
 * Sometimes ajax responses contain inner javascript
 * and that won't get executed unless its forced.
 */
function runEvalOnInnerHtmlScripts() {

	var arr = new Array(); 

	arr = document.documentElement.getElementsByTagName("*");
	//alert("Total Number of HTML Elements Found: " + document.documentElement.getElementsByTagName("*").length);

	for(var i=0; i < arr.length; i++) {
		var tagName = document.documentElement.getElementsByTagName("*").item(i).nodeName; 

		switch (tagName) {
			//case "DIV": var tagObj = document.documentElement.getElementsByTagName("*").item(i);
			//alert("TagName: " + tagName + "\n\ninnerText:\n" + tagObj.innerText); 
			//break;

 			//case "SPAN": var tagObj = document.documentElement.getElementsByTagName("*").item(i);
			//alert("TagName: " + tagName + "\n\ninnerText:\n" + tagObj.innerText); 
 			//break;

			//case "P": var tagObj = document.documentElement.getElementsByTagName("*").item(i);
			//alert("TagName: " + tagName + "\n\ninnerText:\n" + tagObj.innerText); 
			//break;

			case "SCRIPT": var tagObj = document.documentElement.getElementsByTagName("*").item(i);
			//alert("TagName: " + tagName + "\n\ninnerText:\n" + tagObj.innerText);
			eval(tagObj.innerHTML);
			break;

			
			default:

		}
	}
}


/*
 * ------------------------
 * | Generic Ajax Request |
 * ------------------------
 *
 * This function is tested and certified with jQuery 1.2.6
 *
 * @parm element : the div which will get injected new HTML source
 * @parm type    : Default is 'xml'. Currently only 'xml' and 'html' is supported. 
 * @parm url     : the url to submit (it can contain embedded parms)
 * @parm parms   : addition parms to post along with the request. Can be NULL or ignored in method call.
 *
 *
 * Usage Example : getServiceFeedJQuery('myDiv',null,'myAction.php','parm1=hello&parm2=world');
 */
function getServiceFeedJQuery(element, type, url, parms) {

	var postParms;
	var rand = Math.random(9999);

	/* Assign unique post */
	postParms = 'rand=' + rand;
	
	if (parms != null) {
		postParms = postParms + '&' + parms;
	}

	if (type == null) {
		type = 'xml';
	}
	
	/* Show loading scroller */
	$("#"+ element).empty();
	$("#"+ element).append("<img src='./images/ajax.gif'/>");

	/* Fetch */
	$.ajax(
	{
		type: "POST",
		url: url,
		data: postParms,
		dataType: type,
		success: function(response) {
					
			//alert("Data Returned: " + response);
		
			// Flush current div content
			$("#"+ element).empty();		

			// Display the html content
			var displayableData = $(response).find('description').text();
			$("#"+ element).append(displayableData);
			
		}
	});

}
