var x;
var y;
var req = null;
var readStateFunction = onReadyState;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
var IE = (window.ActiveXObject)?true:false;
// If NS -- that is, !IE -- then set up for mouse capture

/* 
	Used to connect and send params to url 
*/
function sendRequest(url,params,renderfunc)
{
	req = initXMLHTTPRequest();
	if(req)
	{
		req.onreadystatechange=renderfunc;
		req.open("POST",url,true);
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		req.send(params);
	}
}
function sendXmlRequest(url,params,HttpMethod)
{
	if(!HttpMethod)
	{
		HttpMethod = "POST";
	}
	req = initXMLHTTPRequest();
	if(req)
	{
		req.onreadystatechange=readStateFunction;	
		
		/* IE is dying on this following line... see what stupid IE needs */
		if(req.overrideMimeType)
			req.overrideMimeType('text/xml');
		//req.setRequestHeader("Content-Type","text/xml");
		
		req.open(HttpMethod,url,true);
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		req.send(params);
	}
}
/*
	See if we are using IE or a Mozilla Based browser. 
	Create a variable which behaves the same then in all browsers
*/
function initXMLHTTPRequest()	

{
	var xRequest = null;
	if(window.XMLHttpRequest)
	{
		xRequest = new XMLHttpRequest(); //non IE browsers
	}
	else if(window.ActiveXObject)
	{
		xRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return(xRequest);
}
/*
	Callback function.
	We get called and wait until we receive data and the transaction is complete. 
	Currently once we get output from the server, we are displaying it in the toConsole() function
*/
function onReadyState()
{
	var ready = req.readyState;
	var data = null;
	if(ready == READY_STATE_COMPLETE)
	{
		data = req.responseText;
		toConsole(data);
	}			
}
/* I don't know how many comments I'll leave about Internet Explorer, but year it sucks, so here ya go */
if (typeof DOMParser == "undefined") { DOMParser = function (){}
  DOMParser.prototype.parseFromString = function (str, contentType) {
    if (typeof ActiveXObject != "undefined") {
      var d = new ActiveXObject("MSXML.DomDocument");
      d.loadXML(str); 
      return d;
    }
    else if (typeof XMLHttpRequest != "undefined") {
      var req = new XMLHttpRequest;
      req.open("GET", "data:" + (contentType || "application/xml") + 
                                 ";charset=utf-8," + encodeURIComponent(str), false);
      if (req.overrideMimeType) {
        req.overrideMimeType(contentType);
      }
      req.send(null);
      return req.responseXML;
    }
  }
}
window.onload = loader;
function loader()
{
	//if (!IE) document.captureEvents(Event.MOUSEMOVE);
	//document.onmousemove = getMouseXY;
}


function getContent(link)
{
	sendRequest(link,"ajax=true",getContentHelper);
}
function getAndReplace(link,id,handler)
{
	fillId = id
	sendRequest(link,"ajax=true",handler);
}
function reloadContent(link)
{
	sendRequest(link,"ajax=true",getContentHelper);
}
function getContentHelper()
{
	var ready = req.readyState;
	if(ready == READY_STATE_COMPLETE)
	{
		var text = req.responseText;
		if(text!= null && text.substr(0,7 == '<script'))
			install_script(text);
			
		randomssss = document.getElementById('popup_text');
		randomssss.innerHTML = text;		
		if(document.getElementById("popupper").style.display!='block')
			centerDivInScreen('popupper');
	}
}
function submitForm(formId, action, id,handler) {
	fillId = id;
	var parameters = getParams(formId) + "&ajax=true";
	sendRequest(action,parameters,handler);
}
var form_longitude;
var form_latitude;
function getCoords(action,longitude,latitude,address,city,state,zip)
{
	form_longitude = longitude;
	form_latitude = latitude;
	city = getElement(city);
	params = "address=" + getElement(address).value + " " + city.options[city.selectedIndex].text + " " + getElement(state).value + " " + getElement(zip).value + "&ajax=true";
	sendRequest(action,params,getCoordsHelper);
}
function getCoordsHelper()
{
	var ready = req.readyState;
	if(ready == READY_STATE_COMPLETE)
	{
		text = req.responseText;
		if(text != null && text.substr(0,6) != 'error.')
		{
			getElement(form_longitude).value = text.substr(0,text.indexOf(';'));
			getElement(form_latitude).value = text.substr(text.indexOf(';')+1);
		}
		else
			alert("no workie!");
	}
}
function getParams(elementId) {
	el = document.getElementById(elementId);
	
	try{
		tinyMCE.triggerSave(true,true);	
		
	}
	catch (e) {};
	if(el)
		return getParamsRecurse(el);
	else
		alert(elementId + "could not be found!");
}

function getParamsRecurse(element) {
	var child;
	var inputType;
	var result;
	var out = "";
	
	if (element.nodeType == 1) {
		if (element.nodeName.toLowerCase() == "input") {
			inputType = element.type.toLowerCase();
			if (inputType == "text" || inputType == "hidden") {
				out += element.name + "=" + encodeURIComponent(element.value);
			}
			else if((inputType=='checkbox' || inputType=='radio') && element.checked) {
				out += element.name + "=" + encodeURIComponent(element.value);
			}
		} else if (element.nodeName.toLowerCase() == "textarea") {
			out += element.name + "=" + encodeURIComponent(element.value);
			tinyMCE.execCommand("mceRemoveControl", false, element);
		} else if (element.nodeName.toLowerCase() == "select") {
			out += element.name + "=" + encodeURIComponent(element.value);
		}
		else {
			if (element.hasChildNodes()) {
				for (var i = 0; i < element.childNodes.length; i++) {
					child = element.childNodes[i];
					result = getParamsRecurse(child);
					if (out.length != 0 && result.length != 0) out += "&";
					out += result;
				}
			}
		}
	}
	return out;
}
function installScript( script )
{
		try{
	 if(script.src != '')
	 	include_dom(script.src)
    if (!script.innerHTML)
        return;
    //  Internet Explorer has a funky execScript method that makes this easy
    if (window.execScript)
        window.execScript( script.innerHTML );
    else
    {
        window.setTimeout( script.innerHTML, 0 );
        //alert(script.innerHTML);
       }
     }catch (E) {alert("problem" + E);}
}
function GetXmlHttpObject(handler) {
	var objXmlHttp=null;
	
	if (navigator.userAgent.indexOf("Opera")>=0) {
		document.getElementById("caleventtext").innerHTML = "The event viewer will not work with your browser.";
		return; 
	} else if (navigator.userAgent.indexOf("MSIE")>=0) {
		var strName="Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0) {
			strName="Microsoft.XMLHTTP";
		}
		try {
			objXmlHttp=new ActiveXObject(strName);
			objXmlHttp.onreadystatechange=handler; 
			return objXmlHttp;
		} catch(e) {
			document.getElementById("caleventtext").innerHTML = "Error. Scripting for ActiveX might be disabled.  The event viewer won't work.";
			return;
		}
	} else if (navigator.userAgent.indexOf("Mozilla")>=0) {
		objXmlHttp=new XMLHttpRequest();
		objXmlHttp.onload=handler;
		objXmlHttp.onerror=handler; 
		return objXmlHttp;
	}
}
