function ajaxcall(url, params, returnfunc) {
	var xmlhttp = Gethttp();
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			if (returnfunc != "") {
				eval(returnfunc + '("'+xmlhttp.responseText+'")');
			}
		}
	}
	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(params);
	
}
function Gethttp() {
	if (window.XMLHttpRequest)
	  {
	  // code for IE7+, Firefox, Chrome, Opera, Safari
	  var xmlhttp=new XMLHttpRequest();
	  }
	else
	  { 
	  // code for IE6, IE5
	  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }	
	  return xmlhttp
}

function loadXMLFromStr(str) {
    if (window.DOMParser) {
        parser = new DOMParser();
       var  tmpxmlDoc = parser.parseFromString(str, "text/xml");
    }
    else // Internet Explorer
    {
        var tmpxmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        tmpxmlDoc.async = "false";
        tmpxmlDoc.loadXML(str);
    }
    return tmpxmlDoc;
}

function childNodesToArray(elem) { // lets add some recursion here
    var array = new Array();
    var children = elem.childNodes;
    var childrennum = children.length;
    for (var i = 0; i < childrennum; i++) {
	    try {
	        if (elem.getElementsByTagName(children[i].nodeName)[0].childNodes[0].hasChildNodes() ) {
	            array[children[i].nodeName] = childNodesToArray(elem.getElementsByTagName(children[i].nodeName)[0]);
	        }
	        else {
	            array[children[i].nodeName] = elem.getElementsByTagName(children[i].nodeName)[0].childNodes[0].nodeValue;
	        }
    	}
    	catch (e) {
	     	array[children[i].nodeName] = "";
    	}
    
        
    }

    return array;
}
function edit(val, table, field, id, typ, elem) {
	
	if (typ=="bool") {
		ajaxcall("includes/ajax.php", "action=SaveEdit&value="+val+"&table="+table+"&field="+field+"&id="+id+"&refresh=1", "saveReturn");
		//window.location.reload(false);
		return true;
	}
	if (typ=="delete") {
		if (confirm("Are you sure you want to delete this item?")) {
		ajaxcall("includes/ajax.php", "action=SaveDelete&table="+table+"&id="+id+"&refresh=1", "saveReturn");
		//window.location.reload(false);
		}
		return true;
		
	}
	if (val.length > 60) {
		typ='longtext';
		var div = document.createElement("div");
		var inp = document.createElement("textarea");	
	}
	else {
		var div = document.createElement("span");
		var inp = document.createElement("input");
	}
	
	inp.value=val;
	if (typ == 'longtext') {
		inp.rows=5;
		inp.cols=60;
	}
	else {
	inp.type='text';
	
	inp.size = val.length;
	}
	var strid = randomString();
	inp.id=strid;
	if (typ == "datetime") {
		//inp.disabled = true;
		inp.value = mysqldatetodf(val);
	}
	var savetyp = typ;
	var simg = document.createElement("img");
	simg.src="includes/save.gif";
	simg.alt="save";
	simg.onclick = function() {
		
		if (typ == 'longtext') {
			var inpt = this.parentNode.getElementsByTagName("textarea")[0];
			savetyp='text';
		}
		else {
			var inpt = this.parentNode.getElementsByTagName("input")[0];
		}
		saveEdit(inpt.value, table, field, id, savetyp);
		
		var invalue = inpt.value;
		this.parentNode.className="editable";
		this.parentNode.onmouseover = function() {
			setedit(invalue, table, field, id, savetyp, this);
		}
		
		if (typ == "datetime") {
			
			// this.parentNode.innerHTML = ""+dateFormat(datePickerToDateFormat(invalue), "dddd, mmm d");
			this.parentNode.innerHTML = invalue;
			
		}
		else {
			this.parentNode.innerHTML = invalue;
		}

	}
	
	var cimg = document.createElement("img");
	cimg.src="includes/cancel.gif";
	cimg.onclick = function() {
		if (typ == 'longtext') {
			var inpt = this.parentNode.getElementsByTagName("textarea")[0];
			savetyp='text';
		}
		else {
			var inpt = this.parentNode.getElementsByTagName("input")[0];
		}
		
		//saveEdit(inpt.value, table, field, id);
		var invalue = inpt.value;
		
		this.parentNode.className="editable";
		this.parentNode.onmouseover = function() {
			setedit(val, table, field, id, savetyp, this);
		}
		if (typ == "datetime") {
			
			//this.parentNode.innerHTML = dateFormat(val, "dddd, mmm d");
			this.parentNode.innerHTML = val;
		}
		else {
			this.parentNode.innerHTML = val;
		}
		

	}
	div.appendChild(inp);
	if (typ=="datetime") {
		var sel = document.createElement("a");
		sel.appendChild(document.createTextNode("select"));
		sel.href="#";
		sel.onclick = function() {
			NewCal(this.parentNode.getElementsByTagName("input")[0].id, 'mmddyyyy', false, 12);
			return false;
		}
		div.appendChild(sel);
		//NewCal(strid, 'mmddyyyy', true, 12);
	}
	div.appendChild(simg);
	div.appendChild(cimg);
	elem.parentNode.replaceChild(div,elem);
	if (typ=="datetime") {
		NewCal(strid, 'mmddyyyy', true, 12);
	}
	
}
function setedit(val, table, field, id, typ, elem){
	elem.onclick = function() {
	 edit(val, table, field, id, typ, elem);
	}
}
function saveEdit(val,table,field,id, typ) {
	ajaxcall("includes/ajax.php", "action=SaveEdit&value="+escape(val)+"&table="+table+"&field="+field+"&id="+id+"&typ="+typ, "saveReturn");
}
function mysqldatetodf(mysqldate) {
	var datetime = mysqldate.split(" ");
	var datepcs = datetime[0].split("-");
	var retdate = datepcs[1]+"-"+datepcs[2]+"-"+datepcs[0]/* +" "+datetime[1]*/;
	return retdate;
}
function datePickerToDateFormat(date) {
	var datetime = date.split(" ");
	var datepcs = datetime[0].split("-");
	var df = new Date(datepcs[1]+"-"+datepcs[0]+"-"+datepcs[1]/*+" "+datetime[1]*/);
	return df;
}
function saveReturn(stat) {
	if (stat == "fail") {
		alert("save failed");
	}
	else if (stat=="refresh") {
		window.location.reload(false);
	}
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return "id"+randomstring;
}
function openWindow(url, winname , h, w, sb) {
	window.open(url, '', "status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=0, scrollbars="+sb+", height="+h+", width="+w+"");
}

