// Ajax Framework for Full Bhuna by Paul Egan

// Main get and put functions...

var fbAjaxFrameworkVersion = 3;

function getData(url,divID,loadingDIV,loadingHTML) // loading vars added later and optional
{
	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
	XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
	XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
	}
	if(XMLHttpRequestObject) {
		var obj = document.getElementById(divID);
		loadingDIV = typeof(loadingDIV)==="undefined" ? obj : document.getElementById(loadingDIV); 
		loadingHTML = typeof(loadingHTML)==="undefined" ? "<img src='/images/loading_16x16.gif' width='16' height='16' border='0' align='absmiddle'>" : loadingHTML;
		if(loadingHTML!="") { obj.innerHTML = loadingHTML; }
		XMLHttpRequestObject.open("GET", url);
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
			obj.innerHTML = XMLHttpRequestObject.responseText;
			delete XMLHttpRequestObject;
			XMLHttpRequestObject = null;
			}
		}
		XMLHttpRequestObject.send(null);
	}
}

function postData(url, data, divID)
{
	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
	XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
	XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
	}
	if(XMLHttpRequestObject) {
		var obj = document.getElementById(divID);
		obj.innerHTML = "<img src='/images/loading_16x16.gif' width='16' height='16' border='0' align='absmiddle'>";
		XMLHttpRequestObject.open("POST", url);
		XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
			obj.innerHTML = XMLHttpRequestObject.responseText;
			delete XMLHttpRequestObject;
			XMLHttpRequestObject = null;
			}
		}
		XMLHttpRequestObject.send(data);
	}
}







// search suggest

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} 
}

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

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(suggestURL) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('s').value);
		if(str.length>2) { // only do if longer than 2 chars
		document.getElementById('search_suggest').style.display = "block";
		suggestURL = suggestURL ? suggestURL : '/includes/searchSuggest.php';
		searchReq.open("GET", suggestURL+'?wordsearch=' + str, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
		} else {
			document.getElementById('search_suggest').innerHTML = '';
		}
	}		
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
			ss.innerHTML += suggest;
		}
	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
	document.getElementById('s').value = decodeHTML(value); // uses new function below to clean
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = "none";
}

function addListener(type,callback,obj) // handles cross browser add listeners
{
	obj = (typeof(obj) === "undefined") ? window : obj; // backward compat as function initially has 2 args
	if(obj.addEventListener) {
		obj.addEventListener(type, callback, false); //FF
	} else if (obj.attachEvent) {
		obj.attachEvent("on" +type, callback,false); //IE
	}
}

function removeListener (type,callback) // handles cross browser remove listeners
{
	if(window.removeEventListener) {
		window.removeEventListener(type,callback,false);
	} else if (window.detachEvent) {
		window.detachEvent("on"+type,callback,false);
	}
}

// used for Business Base
function stopEvent(e) {
    if (!e) e = window.event;
    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
        e.cancelBubble = true;
    }
}

function decodeHTML(html){
	/* turn HTML characters into normal text, e.g. for insertion into text boxes */
	var entities=[
			['&amp;','&'],
			['&nbsp;',' ']
		];

	var clean = html.replace(/<[^>]*>/g,"");
	for( var i=0, limit=entities.length; i < limit; ++i)
	{
		clean = clean.replace( new RegExp(entities[i][0],"ig"), entities[i][1]);
	}
return clean;
}

 function cancelEvent(e) {
	  e.cancelBubble = true; e.returnValue = false; // IE
		if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } //FF
  }
	
