function ajaxrequest(fileurl, elementid, query) {
	try {
 		var xmlhttp = new XMLHttpRequest();
	}
	catch (error)	{
		try{
   			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		}
 		catch (error) {
		   return false;
 		}
	}

	xmlhttp.open('POST', fileurl, true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(query);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			
			document.getElementById(elementid).innerHTML=xmlhttp.responseText;
			
			// Auto run canvas affect on elements if it's available
			//	NOTE: This will do nothing if the element doesn't have any divs with the *canvas classes
			if(jQuery&&jQuery.fn.canvas){
				jQuery(document.getElementById(elementid)).canvas();
			}
		}
	}
}
function ajaxrequestLoad(fileurl, elementid, query) {
	try {
 		var xmlhttp = new XMLHttpRequest();
	}
	catch (error)	{
 		try{
   			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		}
 		catch (error) {
		   return false;
 		}
	}

	xmlhttp.open('POST', fileurl, true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(query);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 2) {
			 document.getElementById(elementid).innerHTML='Loading... Please wait!';
		}
		if (xmlhttp.readyState == 4) {
			 document.getElementById(elementid).innerHTML=xmlhttp.responseText;
		}
	}
}

//doesn't work if you put inputs inside of class objects
//overall you should use br in the forms and nothing else
function ajaxFormSubmit(handlerURL, obj, target_id) {
	//document.getElementById(target_id).innerHTML='Loading... Please wait!';
  var getstr = "";

  for (i=0; i<obj.childNodes.length; i++) {
	//alert(" name = " + obj.childNodes[i].name + "  value = " + obj.childNodes[i].value);
	 if (obj.childNodes[i].tagName == "INPUT") {
		if (obj.childNodes[i].type == "text") {
		   getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
		else if (obj.childNodes[i].type == "checkbox") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   } else {
			  getstr += obj.childNodes[i].name + "=&";
		   }
		}
		else if (obj.childNodes[i].type == "hidden") {
			 getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
		else if (obj.childNodes[i].type == "select") {
		  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
		else  if (obj.childNodes[i].type == "radio") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   }
		}else if (obj.childNodes[i].type == "password") {
			getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
	 }
	 
	if (obj.childNodes[i].tagName == "SELECT") {
		var sel = obj.childNodes[i];
		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
	 }
	 
	if (obj.childNodes[i].type == "textarea") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }
  }
   ajaxrequest(handlerURL, target_id, getstr);
}

function ajaxAdminEdit(handlerURL, obj, base, target_id) {
  //document.getElementById(target_id).innerHTML='Loading... Please wait!';
  var getstr = base;
  var field = document.getElementById(obj).value;

  getstr += "&new=" + field; 
  
   ajaxrequest(handlerURL, target_id, getstr);
}
/*
	This is the JavaScript file for the AJAX Suggest Tutorial

	You may use this code in your own projects as long as this 
	copyright is left	in place.  All code is provided AS-IS.
	This code is distributed in the hope that it will be useful,
 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	
	For the rest of the code visit http://www.DynamicAJAX.com
	
	Copyright 2006 Ryan Smith / 345 Technical / 345 Group.	

*/
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	try {
 		return new XMLHttpRequest();
	}
	catch (error)	{
 		try{
   			return new ActiveXObject("Microsoft.XMLHTTP");
 		}
 		catch (error) {
		   return false;
 		}
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();


var firstAlpha;
var reqList;
var useCachedList;
var current;
var oldcurrent;
var num;
var total;
//Called from keyup on the search textbox.
//Starts the AJAX request.
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}

current=-1;
function search_handler(e) {
	var KeyID = (window.event) ? event.keyCode : e.keyCode;
	if((KeyID == 38 || KeyID == 37) && current > 0){
		var KeyStop = (window.event) ? event.preventDefault() : e.preventDefault()
		//Go up in the list.
		//alert (current);
		oldcurrent=current;
		//suggestOut(current);
		current = current -1;
		//alert(current);
		suggestOver(current);
	} else if((KeyID == 40 || KeyID == 39) && current < (total-1)){
		//go down in the list
		//alert (current);
		var KeyStop = (window.event) ? event.preventDefault() : e.preventDefault();
		oldcurrent=current;
		//suggestOut(current);
		current = current +1;
		//alert(current);
		suggestOver(current);
	} else if (KeyID == 13){
		var KeyStop = (window.event) ? event.preventDefault() : e.preventDefault();
		setSearch(document.getElementById('suggest_' + current).innerHTML);
		document.getElementById('search_suggest').style.display = 'hidden';

	}
	//alert(KeyID);
	var str = escape(ltrim(document.getElementById('txtSearch').value));
	if (str.length>1) {
		if (str.substring(0,1)!=firstAlpha) {
			if (searchReq.readyState == 4 || searchReq.readyState == 0) {
				// 2 is the initial number of characters after which the list is generated
				firstAlpha=str.substring(0,2);
				useCachedList=false;
				searchReq.open("GET", 'search_handler.php?search=' + str, true);
				searchReq.onreadystatechange = handlesearch_handler;
				searchReq.send(null);
			}
		} else {
			useCachedList=true;
			handlesearch_handler();
		}
	} else {
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		ss.style.display="none";
	}	
}
function selectCurrent(id){
	suggestOver(id);
}
//Called when the AJAX response is returned.
function handlesearch_handler(e) {

	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		ss.style.display="block";
		
		if (useCachedList==false) {
			reqList = searchReq.responseText.split("\n");
		} else {
			// nothing
		}
		
		var qlen=document.getElementById('txtSearch').value.length;
		//alert(qlen);

		total=0;
		for(i=0; i < reqList.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			if (document.getElementById('txtSearch').value.toLowerCase()==reqList[i].substring(0,qlen).toLowerCase()) {
				var suggest = '<div onmouseover="javascript:suggestOver(' + i + ');" ';
				suggest += 'onmouseout="javascript:suggestOut(' + i + ');" ';
				suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
				suggest += 'class="suggest_link" id="suggest_' + i + '">' + reqList[i] + '</div>';
				ss.innerHTML += suggest;
				total++;
			}
			if(total<1){
				document.getElementById('search_suggest').style.display = 'none';
			}
		}
	}
}

//Mouse over function
function suggestOver(id) {
	suggestOut(current);
	document.getElementById("suggest_" + id).className = 'suggest_link_over';
	current = id;
}
//Mouse out function
function suggestOut(id) {
	document.getElementById("suggest_"+id).className = 'suggest_link';
//	selectCurrent();
}
//Click function
function setSearch(value) {
	document.getElementById('txtSearch').value = value;
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'hidden';
}
function getSelect(handler, element, target, base){
	var e = document.getElementById(element).value;
	string = base + '&elm=' + e;
		
	ajaxrequest(handler,target, string);

}

function switchDiv(div_id, newVisibility)
		{
		  var style_sheet = getStyleObject(div_id);
		  if (style_sheet)
		  {
		    style_sheet.display = newVisibility;
		  }
}
function toggleDiv(div_id){
			
			if(document.getElementById(div_id).style.display=='none'){
				document.getElementById(div_id).style.display='block';
			} else {
				document.getElementById(div_id).style.display='none';
			}
}

function getStyleObject(objectId) 
		{
  		if(document.getElementById && document.getElementById(objectId)) {
		return document.getElementById(objectId).style;
   		}
   		else if (document.all && document.all(objectId)) {  
		return document.all(objectId).style;
   		} 
   		else if (document.layers && document.layers[objectId]) { 
		return document.layers[objectId];
   		} 
   		else {
		return false;
   		}
}

function simpleFormBuilder(handler, target, email, content, act, i){

var em = document.getElementById(email).value;
var con = document.getElementById(content).value;
var ac = document.getElementById(act).value;

var string = "action=" + ac + "&content=" + con + "&variable=" + em + "&increment=" + i;

ajaxrequest(handler,target,string);

}

function simpleFormBuilder2(handler, target, email, content, act, i, extra){

var em = document.getElementById(email).value;
var con = document.getElementById(content).value;
var ac = document.getElementById(act).value;
var em2 = document.getElementById(extra).value;

var string = "action=" + ac + "&content=" + con + "&variable=" + em + "&variable2=" + em2 + "&increment=" + i;

ajaxrequest(handler,target,string);

}

function orderSwap(handler, div, object, entity_id, list, pos, sec){
var obj = document.getElementById(object).value;
var string = "action=listorder&list=" + list + "&entity_id=" + entity_id + "&position=" + obj + "&original=" + pos + "&section_id=" + sec;

ajaxrequest(handler, div, string);
}

function updateComment(handler, target, elem, comment_id){
var com=document.getElementById(elem).value;
var str="action=updateComment&com=" + com + "&comment_id=" + comment_id;
ajaxrequest(handler,target,str);
}

function roll(img_name, img_src)
   {
   document[img_name].src = img_src;
   }
   
  



function textLimit(field, maxlen) {
if (field.value.length > maxlen + 1)
//alert('your input has been truncated!');
if (field.value.length > maxlen)
field.value = field.value.substring(0, maxlen);
}