/*********************************************************
 * 3SLive AJAX Library - 2006 - 06 - 28
 *********************************************************/

/*********************************************************
 * Generic AJAX Functions
 * 
 * Contains All Functions that relate to all AJAX calls
 *********************************************************/

function createXMLHttpRequest() {
  if (typeof XMLHttpRequest != 'undefined') {
    return new XMLHttpRequest();
  }
  try {
    return new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) { }
  }
  return false;
}

/*********************************************************
 * Specific AJAX Functions
 *
 * Should contain all specific functions to enable AJAX controls
 *
 *********************************************************/

function AJAXTasksTodoListOnChange(strShowInTodoListCheckbox, strTaskTypeDropdown)
{
	var taskTypes = document.getElementById(strTaskTypeDropdown);
	var taskTypeID = taskTypes.options[taskTypes.selectedIndex].value;
	if (taskTypeID > 0){
		var requestUrl = "AJAX\\DataPageAJAXHandler.aspx?AJAXFunction=showintodo&TaskTypeID=" + encodeURIComponent(taskTypeID);
		var xmlhttp = createXMLHttpRequest();
		if (xmlhttp) {
			xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if(xmlhttp.responseXML.getElementsByTagName("result").item(0).firstChild.data == 0){
					document.getElementById(strShowInTodoListCheckbox).checked = false;
				} else{
					document.getElementById(strShowInTodoListCheckbox).checked = true;
				}
			}
		}
		xmlhttp.open("GET", requestUrl, true);
		xmlhttp.send(null);
		}  
	}
}

function AJAXWebService(){

	this.strServiceURL = "";
	this.strMethod = "";
	this.async = false;
	var fCallBack;
	
	this.CallWebService = CallWebService;
	
	function CallWebService(params, callback){
		var xmlhttp = createXMLHttpRequest();
		if (xmlhttp) {
			if (callback != void(0)){
				fCallBack = callback;
			}
			
			var strRequestUrl = this.strServiceURL + "/" + this.strMethod;
			var strParams = "";
			for (var i in params) {
				if (strParams.length > 0) strParams += "&";
				var paramVal = params[i];
				if (paramVal.length > 0) paramVal = paramVal.replace(/&amp;/gi, '&').replace(/&/gi, '%26');
				strParams += i + "=" + paramVal;
			}
			//strParams = strParams.replace(/&amp;/gi, '&');
			
			if (this.async && callback != void(0)) 
			{
				xmlhttp.onreadystatechange = function () {
					var objResult = new Result();
					if (xmlhttp.readyState == 4) 
					{
						if (xmlhttp.status == 200){
							objResult.error = false;
							objResult.value = extractValue(xmlhttp);
						} else {
							try{
								objResult.error = true;
								objResult.errorDetail = xmlhttp.responseText;
							}
							catch(e){
								objResult.error = true;
								objResult.errorDetail = "UNKNOWN";
							}
						}
						callback(objResult);
					}				   					
				};
			}
				
			xmlhttp.open("POST", strRequestUrl, this.async);
			xmlhttp.setRequestHeader("Host","localhost");
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlhttp.setRequestHeader("Content-Length", strParams.length);
			xmlhttp.send(strParams);
			
			//alert("params: " + strParams);
			//alert(xmlhttp.responseText);
			
			if (!this.async) {
				//alert(xmlhttp.responseText);
				var objResult = new Result();
				if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
					objResult.error = false;
					objResult.value = extractValue(xmlhttp);
				} else {
					//alert('Error: ' + xmlhttp.responseText);
					try{
						objResult.error = true;
						objResult.errorDetail = xmlhttp.responseText;
					}catch(e){
						objResult.error = true;
						objResult.errorDetail = "UNKNOWN";
					}
				}
				return objResult;
			}
		} else {
			return false;
		}
	}
	
	function extractValue(objXml){
		if ( objXml.responseXML.getElementsByTagName("string").length > 0 ){
			try{
				return objXml.responseXML.getElementsByTagName("string").item(0).firstChild.data;
			}catch(e){
				return "";
			}
		} else if ( objXml.responseXML.getElementsByTagName("int").length > 0 ){
			try{
				return objXml.responseXML.getElementsByTagName("int").item(0).firstChild.data;
			}catch(e){
				return null;
			}
		} else if ( objXml.responseXML.getElementsByTagName("double").length > 0 ){
			try{
				return objXml.responseXML.getElementsByTagName("double").item(0).firstChild.data;
			}catch(e){
				return null;
			}			
		} else if ( objXml.responseXML.getElementsByTagName("boolean").length > 0 ){
			try{
				var tmpValue = objXml.responseXML.getElementsByTagName("boolean").item(0).firstChild.data;
				if ( tmpValue == 'true' ){
					return true;
				} else {
					return false;
				}
			}catch(e){
				return null;
			}
		} else if ( objXml.responseXML.getElementsByTagName("DataSet").length > 0 ){
			try{
				return objXml.responseXML.getElementsByTagName("DataSet");
			}catch(e){
				return null;
			}
		} else if ( objXml.responseText.length > 0 ) {
			try {
				return objXml.responseText;
			} catch(e) {
				return null;
			}
		}
	}
	
	function Result(){
		this.value;
		this.error = false;
		this.errorDetail = "";
	}
}


function AJAXDrawChart(height,width,querystring,element_id){
	
	var element = document.getElementById(element_id);
    element.innerHTML = "<p style='text-align:center;font-weight:bold; font-face:Verdana; font-size:8pt;'>Loading ...</p>";
	//var requestUrl = "dashChart.aspx?ChartID=" + encodeURIComponent(chartid) + "&width=" + encodeURIComponent(width) + "&height=" + encodeURIComponent(height);
	if(querystring.indexOf("noresize=true") > 0){
		var requestUrl = "dashChart.aspx?" + querystring;
	} else {
		var requestUrl = "dashChart.aspx?" + querystring + "&width=" + encodeURIComponent(width) + "&height=" + encodeURIComponent(height);
	}
	var xmlhttp = createXMLHttpRequest();
	if (xmlhttp) {
		xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			//alert(xmlhttp.responseXML.getElementsByTagName("body"));
			//element.style.display = "none";
			element.innerHTML = xmlhttp.responseText;
			//document.write(xmlhttp.responseText);
		}
	}
	xmlhttp.open("GET", requestUrl, true);
	xmlhttp.send(null);
	}  
	
}

function AJAXDelete(intDataPageID, intPrimaryID, intPermanent){

	var objAWS = new AJAXWebService();
	objAWS.strServiceURL = "WebServices/dataPageFunctions.asmx"
	objAWS.strMethod = "deleteData"
	var objResult = objAWS.CallWebService({intDataPageID : intDataPageID, intPrimaryID : intPrimaryID, intPermanent : intPermanent});
	

}




