/*
 * WILDFIRE - the internet content and commerce management and application development suite
 * Copyright (C) 2005-2006 Nick Donald & Colin Redpath
 *
 * For further information visit:
 * 		http://www.spreadwildfire.net
 *
 * File Name: scripts.js
 *
 *
 * File Authors:
 * 		Nick Donald & Colin Redpath (info@spreadwildfire.net)
 */

//drag and drop
var ie=document.all;
var nn6=document.getElementById&&!document.all;

function isIE7()
{
	var rv = -1;
	if (navigator.appName == 'Microsoft Internet Explorer')
	{
		var ua = navigator.userAgent;
		var re	= new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
			rv = parseFloat( RegExp.$1 );
	}
	return rv >= 7;
}

var ie7 = ie && isIE7();

/*
	Ajax Handlers
*/

// Load an XML document
var approot = "";
function loadXMLDoc(uri, callback)
{
	var req = null;
	// Native XMLHttpRequest object
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
        if (req){
			try {
				//req.onreadystatechange = callback;
	          	req.onreadystatechange = function(){if(req.readyState == 4) doCallback(req, callback)};
				req.open('GET', approot+uri, true);
				req.send(null);
			} catch(e) {
				alert("Unable to send request for data.\n\n" + e.toString());
				delete req;
				req = null;
			}
        }else{
			alert("Unable to create new XMLHTTPRequest object.");
		}
    }else if (window.ActiveXObject){
       	req = new ActiveXObject('Microsoft.XMLHTTP');

        if (req)
        {
			try
			{
	          	req.onreadystatechange = function(){if(req.readyState == 4) doCallback(req, callback)};
            	req.open('GET', approot+uri, true);
            	req.send();
			}catch(e){
				alert("Unable to send request for data.\n\n" + e.toString());
				delete req;
				req = null;
			}
        }else{
			alert("Unable to create new Microsoft.XMLHTTP ActiveXObject.");
		}
    }

    if (!req)
    {
		alert('Unable to send request for data. Please try again.')
	}
}

function doCallback(http, callback)
{
	if (callback != null) eval(callback+"(http)");
}

//Send Form Data
function postData(uri, data)
{
	var http = null;
	if(window.XMLHttpRequest)
	{
		http = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		http = new ActiveXObject("Microsoft.XMLHTTP");
	}

	http.onreadystatechange = function(){if(http.readyState == 4)handleSave(http);};
	http.open("POST", approot+uri, true);
	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	http.send(data);
}

function sendViaAjax(form, method, str)
{
	var data = "";
	data += addToPost(data,"aj",method);
	data += addToPost(data,"fn",form.name);
	for (var i=0;i<form.elements.length;i++)
	{
		if (form.elements[i].name != null)
		{
			if (form.elements[i].type != "checkbox" || form.elements[i].checked) data += addToPost(data, form.elements[i].name, form.elements[i].value);
		}
	}

	if (str) data += "&"+str;
	if (data != "") postData(form.action, data);
}

function addToPost(postdata, key, value)
{
	if (value != null)
	{
		value = value.toString().replace(/\+/g,"W__I__L__D__F__I__R__E__A__J__A__X__P__L__U__S");
		return (postdata != ""?"&":"")+key+"="+escape(value);
	}else return "";
}

function gebi(id)
{
	return document.getElementById(id);
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function addCSS(ob, css)
{
	if (!ob) return;
	var classes = ob.className.split(" ");
	var add = true;
	for (var i=0;i<classes.length;i++)
	{
		if (classes[i] == css) add = false;
	}

	if (add)
	{
		if (ob.className == "")
			ob.className += css;
		else
			ob.className += " "+css;
	}
}

function remCSS(ob, css)
{
	try
	{
		str = ob.className;
		str = str.replace(css,"");
		str = str.replace(/  /g," ");

		if (ie && (str == "" || str == " "))
		{
			ob.removeAttribute("className");
		}else{
			ob.className = str;
		}
	}catch(E){

	}
}

/* generic google maps **/

function createMarker(point,name,html,addlist)
{
	html = html.replace(/&lt;/g, "<");
	html = html.replace(/&gt;/g, ">");
	var marker = new GMarker(point,icon);
	if(addlist)
	{
		GEvent.addListener(marker, "mouseover", function() {
			marker.openInfoWindowHtml(html);
		});
	}
	return marker;
}

function renderGLabel(title,num_prop,ref)
{
	var prop = (num_prop == 1) ? "property" : "properties";
	var l = "<h1>"+title+"</h1><p><b>"+num_prop+"</b> "+prop+" available<br/><a href=\"property_list.html?$a_region="+ref+"\">Click here to view "+prop+"</a>";

	return l;
}

function openWin(url,w,h)
{
	var win=window.open(url,'changeWin','width='+w+',height='+h+',resizable=0,status=0,toolbar=0');
	win.focus();
}