var strMessage = "";
function showError(message)
{
	if (client == 'iphone')
		return;
	strMessage += "<p class=\"error\">" + message + "</p>";
	document.getElementById("hint").innerHTML = strMessage;
	document.getElementById("scroll").scrollTop = 0;
}

function showMessage(message)
{
	if (client == 'iphone')
		return;
	strMessage += "<p class=\"message\">" + message + "</p>";
	document.getElementById("hint").innerHTML = strMessage;
	document.getElementById("scroll").scrollTop = 0;
//	alert('showMessage: ' + strMessage);
}

function hideSideBar() {
	//document.getElementById("sidebar").innerHTML = "&nbsp;";
	strMessage = "";
}

var locShowTime = 0;

var markLocShowTime = function(offset)
{
   if (typeof offset == "undefined")
	     offset = 0;

	time = new Date();
	locShowTime = time.getTime() + offset;
}

var showSideBar = function(list) {
	if (client == 'iphone')
		return;
	time = new Date();
	if (time.getTime() < locShowTime + 3000 || sidebarLock == true)
		return;

   if (typeof list == "undefined") {
     list = 0;
   }

	side = "";
	for (var i in sideBarItems)
		if ((list == 1 && i != 5)
				|| (list != 1 && i != 3))
			side += sideBarItems[i];

	if (list == 1)
		if (locList[zoneArrayID] == "")
			side += "<h2>No locations found in this area.</h2>";
		else
			side += "<h2>Locations in this area:</h2>" + locList[zoneArrayID];

	document.getElementById("sidebar").innerHTML = side;
//	if (newMarker != null)
//		map.removeOverlay(newMarker);

}

var sidebarLock = false;
function lockSidebar()
{
	sidebarLock = true;
}

function unlockSidebar()
{
	sidebarLock = false;
}

// check text area
var checkTA = function(e, elem, size, spid){ //e is event object passed from function invocation
	var characterCode;// literal character code will be stored in this variable

	if(e && e.which){ //if which property of event object is supported (NN4)
		//e = e;
		characterCode = e.which; //character code is contained in NN4's which property
	}
	else{
		//e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}

//	if(characterCode == 13) //if generated character code is equal to ascii 13 (if enter key)
//	{
//		return false;
//	}
//	else
	{
		document.getElementById(spid).innerHTML = (size - elem.value.length).toString();
		if (elem.value.length == size && characterCode != 8 && characterCode != 46)
		{
//			document.getElementById(spid).innerHTML = (size - elem.value.length).toString();
			return false;
		}
//		document.getElementById(spid).innerHTML = (size - elem.value.length - 1).toString();
		return true;
	}

};

// Show characters remaining.
var showCR = function(elem, size, spid)
{
	if (elem.value.length > size)
		elem.value = elem.value.substring(0, size);

	document.getElementById(spid).innerHTML = (size - elem.value.length).toString();
	return true;
};

//Show ad characters remaining.
var showACR = function(elem, size, spid)
{
	//if (elem.value.length > size)
	//	elem.value = elem.value.substring(0, size);
	var tooLong = false;
	var value = elem.value.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g, "<br />");
	if (value.length == 0)
		value = "&nbsp;";
	
	if (size == 0)
	{
		document.getElementById("exhead").innerHTML = value;
		if (document.getElementById("exhead").scrollHeight > 25)
			tooLong = true;
	}
	if (size == 1)
	{
		document.getElementById("exbody").innerHTML = value;
		if (document.getElementById("exbody").scrollHeight > 60)
			tooLong = true;
	}
	if (tooLong)
	{
		document.getElementById(spid).innerHTML = "Too long";
		document.getElementById(spid).style.color = "red";
	}
	else
	{
		document.getElementById(spid).innerHTML = "Length OK";
		document.getElementById(spid).style.color = "black";
	}
	return true;
};

function clearOptions(OptionList) {

   // Always clear an option list from the last entry to the first
   for (x = OptionList.length; x >= 0; x = x - 1) {
      OptionList[x] = null;
   }
}

function addToOptionList(OptionList, OptionValue, OptionText) {
   // Add option to the bottom of the list
   OptionList[OptionList.length] = new Option(OptionText, OptionValue);
}

var popField = function(code, source, target)
{
	//clearOptions(target);
	
	startLoading();
	GDownloadUrl("/formdata.php?q="+code+"&r="+source.value, function(data, responseCode) {
		if(responseCode == 200) {
			//alert(data);
			document.getElementById(target).innerHTML = data;
			/*
			options = data.split('~');
			addToOptionList(target, '', '[ SELECT ]');
			
			for (var i in options)
			{
				parts = options[i].split('|');
				addToOptionList(target, parts[0], parts[1]);
			}
			*/
		} else if(responseCode == -1) {
			alert("Data request timed out. Please try later.");
		} else {
			alert("Request resulted in error. (ED)");
		}
		stopLoading();
	});

}

var latLngUp = function(elem, type)
{
	var value = parseFloat(elem.value);
	if (value == NaN)
	{
		elem.style.color = "red";
	}
	else
	{
		if (newMarker != null)
		{
			var point = newMarker.getLatLng();
			var newPoint = null;
			if (type == 'lat')
			{
				if (Math.abs(value) <= 85.0 && elem.value == value.toString())
				{
					newPoint = new GLatLng(value, point.lng());
					elem.style.color = "black";
				}
				else
					elem.style.color = "red";
			}
			else
			{
				if (Math.abs(value) <= 180.0 && elem.value == value.toString())
				{
					newPoint = new GLatLng(point.lat(), value);
					elem.style.color = "black";
				}
				else
					elem.style.color = "red";
			}
			
			if (newPoint != null && newPoint.toUrlValue() != point.toUrlValue())
			{
				newMarker.setLatLng(newPoint);
				map.setCenter(newPoint);
			}
		}
	}
};

function redirect(urldata, a, b, c)
{
    var sData;
    var sUserName = "YourUserName";
    var sPassword = "YourPassword";
    var sDomain = "http://YourDomain.com";

    sData = "Redirecting...<form name='refer' id='refer' action='/refer.php' method='post'>";
    sData = sData + "<input type='hidden' name='urldata' id='urldata' class='input' value='" + urldata + "' />";
    sData = sData + "<input type='hidden' name='a' id='a' class='input' value='" + a + "' />";
    sData = sData + "<input type='hidden' name='b' id='b' class='input' value='" + b + "' />";
    sData = sData + "<input type='hidden' name='c' id='c' class='input' value='" + c + "' />";
    sData = sData + "</form>";
    sData = sData + "<script type='text/javascript'>";
    sData = sData + "document.refer.submit();</sc" + "ript>";
    OpenWindow=window.open("", "newwin");
    OpenWindow.document.write(sData);
    OpenWindow.document.close();
}

function popUp(URL)
{
	//day = new Date();
	//id = day.getTime();
	//eval("page" + "id" + " = window.open(URL, '" + "id" + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=400,height=600,left=400,top=100');");
	newWindow = window.open(URL, 'pop', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=400,height=600,left=400,top=50');
	if (window.focus)
		newWindow.focus();
}
/*
function showForm(formName, formElement)
{
	if (formName != "locate")
	{
		sideBarItems[0] = "";
		sideBarItems[1] = "";
		showSideBar();
		//loadScript("locationform.js");
	}

	if (formName == "none")
		document.getElementById(formElement).innerHTML = "";
	else
	{
		if (loadedForms[formName] == '')
		{
			startLoading();
			GDownloadUrl("/show_form.php?type="+formName, function(data, responseCode) {
				if(responseCode == 200) {
					//alert(data);
					loadedForms[formName] = data;
					document.getElementById(formElement).innerHTML = data;

					if (formName == "profile" || formName == "contact")
					{
						document.getElementById("rname").value = user_name;
						document.getElementById("remail").value = user_email;
					}
				} else if(responseCode == -1) {
					alert("Data request timed out. Please try later.");
				} else {
					alert("Request resulted in error. (ED)");
				}
				stopLoading();
			});
		}
		else
		{
			document.getElementById(formElement).innerHTML = loadedForms[formName];

			if (formName == "profile" || formName == "contact")
			{
				document.getElementById("rname").value = user_name;
				document.getElementById("remail").value = user_email;
			}
		}
	}

//	if (formName == "register" || formName == "register")
//		loadScript("locationform.js");
}
*/
function trim(sString)
{
	while (sString.substring(0,1) == ' ')
	{
	sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
	sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function getLocationParams(form)
{
	var bool0 = "";
	var bool1 = "";
	var bool2 = "";
	var bool3 = "";
	var bool4 = "";
	var bool5 = "";
	var bool6 = "";
	var bool7 = "";
	var bool8 = "";
	var bool9 = "";

	if (form.l_bool0.length > 0 && form.l_bool0[0].checked) bool0 = form.l_bool0[0].value;
	if (form.l_bool1.length > 0 && form.l_bool1[0].checked) bool1 = form.l_bool1[0].value;
	if (form.l_bool2.length > 0 && form.l_bool2[0].checked) bool2 = form.l_bool2[0].value;
	if (form.l_bool3.length > 0 && form.l_bool3[0].checked) bool3 = form.l_bool3[0].value;
	if (form.l_bool4.length > 0 && form.l_bool4[0].checked) bool4 = form.l_bool4[0].value;
	if (form.l_bool5.length > 0 && form.l_bool5[0].checked) bool5 = form.l_bool5[0].value;
	if (form.l_bool6.length > 0 && form.l_bool6[0].checked) bool6 = form.l_bool6[0].value;
	if (form.l_bool7.length > 0 && form.l_bool7[0].checked) bool7 = form.l_bool7[0].value;
	if (form.l_bool8.length > 0 && form.l_bool8[0].checked) bool8 = form.l_bool8[0].value;
	if (form.l_bool9.length > 0 && form.l_bool9[0].checked) bool9 = form.l_bool9[0].value;

	var l_id_var = "";

	l_id_var = "&l_id=" + form.l_id.value + "&l_orig_location_id=" + form.l_orig_location_id.value;

	return l_id_var
	+ "&l_name=" + form.l_name.value
	+ "&l_location_type_id=" + form.l_location_type_id.value
	+ "&l_created_by=" + form.l_created_by.value
	+ "&l_updated_by=" + form.l_updated_by.value
	+ "&l_lat=" + newMarker.getLatLng().lat().toString()
	+ "&l_lng=" + newMarker.getLatLng().lng().toString()
	+ "&l_url=" + form.l_url.value
	+ "&l_email=" + form.l_email.value
	+ "&l_description=" + trim(form.l_description.value).replace(/\n/g,"```")
	+ "&l_address1=" + form.l_address1.value
	+ "&l_address2=" + form.l_address2.value
	+ "&l_city=" + form.l_city.value
	+ "&l_state=" + form.l_state.value
	+ "&l_post_code=" + form.l_post_code.value
	+ "&l_phone=" + form.l_phone.value
	+ "&l_mobile=" + form.l_mobile.value
	+ "&l_fax=" + form.l_fax.value
	+ "&l_bool0=" + bool0
	+ "&l_bool1=" + bool1
	+ "&l_bool2=" + bool2
	+ "&l_bool3=" + bool3
	+ "&l_bool4=" + bool4
	+ "&l_bool5=" + bool5
	+ "&l_bool6=" + bool6
	+ "&l_bool7=" + bool7
	+ "&l_bool8=" + bool8
	+ "&l_bool9=" + bool9
	+ "&l_value0=" + form.l_value0.value
	+ "&l_value1=" + form.l_value1.value
	+ "&l_value2=" + form.l_value2.value
	+ "&l_value3=" + form.l_value3.value
	+ "&l_value4=" + form.l_value4.value
	+ "&l_value5=" + form.l_value5.value
	+ "&l_value6=" + form.l_value6.value
	+ "&l_value7=" + form.l_value7.value
	+ "&l_value8=" + form.l_value8.value
	+ "&l_value9=" + form.l_value9.value
	+ "&l_text0=" + form.l_text0.value
	+ "&l_text1=" + form.l_text1.value
	+ "&l_text2=" + form.l_text2.value
	+ "&l_text3=" + form.l_text3.value
	+ "&l_text4=" + form.l_text4.value
	+ "&l_text5=" + form.l_text5.value
	+ "&l_text6=" + form.l_text6.value
	+ "&l_text7=" + form.l_text7.value
	+ "&l_text8=" + form.l_text8.value
	+ "&l_text9=" + form.l_text9.value;
}

function submitlocationform (form) {
	hideSideBar();

var t_name  = trim(form.l_name.value);
var error_msg = "";

if (t_name == "")
	error_msg += "<br/>- Name is mandatory";

if (error_msg != "")
{
	error_msg = "Form could not be processed:" + error_msg;
	//document.getElementById("errmsg").innerHTML = error_msg;
	showMessage(error_msg);
//	alert('submitLocationForm: ' + error_msg);
//	showSideBar();
	return;
}

newMarker.disableDragging();

startLoading();
GDownloadUrl("/add_location.php?submit=" + form.submit.value + getLocationParams(form)
, function(data, responseCode) {
		if(responseCode == 200) {
			if (data == "success")
			{
				showMessage("Record saved successfully. Pending approval.");
				if (form.submit.value == "Save")
					map.addOverlay(new GMarker(newMarker.getLatLng()));
				hideForm();
			}
			else
			{
				showMessage(data);
			}
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
		} else {
			showMessage("Request resulted in error. (EE)");
		}
		stopLoading();
//		showSideBar();
	});
//	showSideBar();
}

function changeType(form) {
	if (form.l_location_type_id.value == form.l_form_type_id.value)
		return false;
	
	startLoading();
	GDownloadUrl("/show_form.php?type=ct&loc=ct&submit=" + form.submit.value + getLocationParams(form), function(data, responseCode) {
		if(responseCode == 200) {
			var pieces = decodeArray(data);
			var newForm = pieces[0][0];
			document.getElementById("sidebar").innerHTML = newForm;
			lockSidebar();
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
			showSideBar();
		} else {
			showMessage("Request resulted in error. (E1)");
			showSideBar();
		}
		stopLoading();
	});
	
	return true;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function idToLat(latid, zoom)
{
	return (latid + 0.5) / (3.0 * Math.pow(2, zoom - 10));
}

function idToLng(lngid, zoom)
{
	return (lngid + 0.5) / (2.0 * Math.pow(2, zoom - 10));
}

var campZoneListener; 
function addCampaign(locType, id)
{
	if (user_id == -1)
	{
		showForm('login', 'menuspace', funcCall('addCampaign', locType, id));
		showHint('loginRequired');
		//return;
	}
	else
	{
		hideSideBar();
		startLoading();
		GDownloadUrl("/show_form.php?type=campaign&loc="+locType+"&loc_id="+id+"&cts="+datePrint(new Date()), function(data, responseCode) {
			if(responseCode == 200) {
				loadedForm = data;
				loadedFormType = locType;
				hideSideBar();
				document.getElementById("sidebar").innerHTML = loadedForm;
				lockSidebar();
				if (locType == 'cam')
				{
					var z = document.getElementById("c_zones").value;
					if (z != "")
					{
						zArray = decodeArray(z);
						var slat = 100000;
						var slng = 100000;
						var blat = -100000;
						var blng = -100000;
						
						for (var j in zArray)
						{
							var latid = parseInt(zArray[j][0]);
							var lngid = parseInt(zArray[j][1]);
							var zoom = parseInt(zArray[j][2]);
							markZone(latid, lngid, zoom, 1);

							var lat = idToLat(latid, zoom);
							var lng = idToLng(lngid, zoom);
							
							if (slat > lat) slat = lat;
							if (blat < lat) blat = lat;
							if (slng > lng) slng = lng;
							if (blng < lng) blng = lng;
						}
						var mlat = (slat + blat) / 2.0;
						var mlng = (slng + blng) / 2.0;
						map.setCenter(new GLatLng(mlat, mlng), 9);
					}
					showACR(document.getElementById("c_title"), 0, "c_titlechars");
					showACR(document.getElementById("c_body"), 1, "c_bodychars");
				}
				else
				{
					map.setCenter(markerLocations[id], 9);
				
					markZone(map.getCenter().lat(), map.getCenter().lng(), 10);
				}
				campZoneListener = GEvent.addListener(map,"click",function(overlay,point,overlayPoint) {
					if (overlay == null)
						markZone(point.lat(), point.lng(), parseInt(getCheckedValue(document.forms['campaign'].elements['zsize'])));
				});
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (E1Q)");
			}
			stopLoading();
		});
	}
}

var adzones = [];
function Zone()
{
	this.lat = null;
	this.lng = null;
	this.zoom = null;
	this.poly = null;
}

function Zone(lat, lng, zoom, poly)
{
	this.lat = lat;
	this.lng = lng;
	this.zoom = zoom;
	this.poly = poly;
}

var markZone = function(lat, lng, zoom, mode)
{
	var lat_id = 0;
	var lng_id = 0;
	var zoomlevel = 0;
	var qrect = null;
	var rpoint = null;
	var rpoints = [];

	if (typeof mode == "undefined")
	{
		switch(zoom)
		{
		case 10:
		case 11:
			lat_id = Math.floor(lat * 3);
			lng_id = Math.floor(lng * 2);
			zoomlevel = 10;
			break;
		case 12:
		case 13:
			lat_id = Math.floor(lat * 12);
			lng_id = Math.floor(lng * 8);
			zoomlevel = 12;
			break;
		default:
			lat_id = Math.floor(lat * 48);
			lng_id = Math.floor(lng * 32);
			zoomlevel = 14;
			break;
		}
	}
	else
	{
		lat_id = lat;
		lng_id = lng;
		zoomlevel = zoom;
	}
	
	var zone = new Zone(lat_id, lng_id, zoomlevel, qrect);
	var zoneExists = false;
	for (i = 0; i < adzones.length; i++)
	{
		if (adzones[i].lat == zone.lat
				&& adzones[i].lng == zone.lng
				&& adzones[i].zoom == zone.zoom)
		{
			zoneExists = true;
		}
	}
	if (!zoneExists)
	{
		var latst = lat_id / (3.0 * Math.pow(2, zoomlevel - 10));
		var laten = latst + 1.0 / (3.0 * Math.pow(2, zoomlevel - 10));
		var lngst = lng_id / (2.0 * Math.pow(2, zoomlevel - 10));
		var lngen = lngst + 1.0 / (2.0 * Math.pow(2, zoomlevel - 10));
	
		rpoint = new GLatLng(latst, lngst);
		rpoints[0] = rpoint;
		rpoints[4] = rpoint;
		rpoint = new GLatLng(latst, lngen);
		rpoints[1] = rpoint;
		rpoint = new GLatLng(laten, lngen);
		rpoints[2] = rpoint;
		rpoint = new GLatLng(laten, lngst);
		rpoints[3] = rpoint;
	
		qrect = new GPolygon(rpoints, '#003300', 1, 0.8, '#00DD00', 0.3);
		GEvent.addListener(qrect,"click", function() {
			unmarkZone(zone);
		});
		zone.poly = qrect;
		//GEvent.addListener(qrect,"mouseout", function() {
		//  loc_name.innerHTML = "";
		//});
		map.addOverlay(qrect);
		adzones.push(zone);
		document.getElementById("zonecount").innerHTML = adzones.length + " zones selected";
	}
}

function unmarkZone(zone)
{
	for (i = 0; i < adzones.length; i++)
	{
		if (adzones[i].lat == zone.lat
				&& adzones[i].lng == zone.lng
				&& adzones[i].zoom == zone.zoom)
		{
			adzones.splice(i, 1);
		}
	}
	map.removeOverlay(zone.poly);
	document.getElementById("zonecount").innerHTML = adzones.length + " zones selected";
}

function dateParse(d, t)
{
	t2 = t.split(' ');
	t3 = t2[0].split(':');
	var h = parseInt(t3[0]);
	var m = parseInt(t3[1]);
	if (h == 12) h = 0;
	if (t2[1] == 'PM') h += 12;
	
	var d2 = d.split('-');
	var mo = new Array();mo.push('Jan');mo.push('Feb');mo.push('Mar');mo.push('Apr');mo.push('May');mo.push('Jun');mo.push('Jul');mo.push('Aug');mo.push('Sep');mo.push('Oct');mo.push('Nov');mo.push('Dec');
	var mon = 0;
	for (var i = 0; i < 12; i++)
	{
		if (mo[i] == d2[1]) { mon = i; break; }
	}
	var da = parseInt(d2[0]);
	var y = parseInt(d2[2]);
	//var dt = Math.floor(Date.parse(d) / 1000) + ((h * 60 + m) * 60);
	
	//alert('d:' + d + ', t:' + t + ', h:' + h.toString() + ', m:' + m.toString() + ', y:' + y.toString() + ', mon:' + mon.toString() + ', da:' + da.toString());
	var dat = new Date();
	dat.setHours(h, m, 0, 0);
	dat.setFullYear(y, mon, da);
	return Math.floor(dat.getTime() / 1000);
}
function zeroPad(num,len)
{
	var result = num + '';
	while(result.length < len) {
		result = "0" + result;
	}
	return result;
}

function datePrint(d)
{
	var mo = new Array();mo.push('Jan');mo.push('Feb');mo.push('Mar');mo.push('Apr');mo.push('May');mo.push('Jun');mo.push('Jul');mo.push('Aug');mo.push('Sep');mo.push('Oct');mo.push('Nov');mo.push('Dec');
	var h = d.getHours();
	var a = 'AM';
	if (h >= 12) {a = 'PM'; h -= 12;}
	if (h == 0) h = 12;
	var result = d.getDate().toString() + '-' + mo[d.getMonth()] + '-' + d.getFullYear().toString()
		+ ' ' + zeroPad(h) + ':' + zeroPad(d.getMinutes(), 2) + ' ' + a;
	return result;
}

function submitcampaignform (form) {
	hideSideBar();

	var t_name      	= trim(form.c_name.value);
	var t_type		 	= trim(form.c_type.value);
	var t_start_date	= dateParse(form.c_start_date.value, form.c_start_datetime.value);//Math.floor(Date.parse(form.c_start_date.value) + ' ' + form.c_start_datetime.value) / 1000);
	var t_end_date		= dateParse(form.c_end_date.value, form.c_end_datetime.value);//Math.floor(Date.parse(form.c_end_date.value + ' ' + form.c_end_datetime.value) / 1000);
	var t_url			= trim(form.c_url.value);
	var t_title			= trim(form.c_title.value);
	var t_body			= trim(form.c_body.value).replace(/\n/g,"```");
	var t_loc_id		= trim(form.c_loc_id.value);
	var t_camp_id		= trim(form.c_id.value);
	var t_approved		= (typeof form.c_approved != 'undefined' && form.c_approved.checked ? 'Y' : 'N');
	var t_enabled		= (typeof form.c_enabled != 'undefined' && form.c_enabled.checked ? 'Y' : 'N');
	var t_deleted		= (typeof form.c_deleted != 'undefined' && form.c_deleted.checked ? 'Y' : 'N');
	var error_msg = "";

	if (t_name == "")
		error_msg += "<br/>- Name is mandatory";

	if (t_type == "")
		error_msg += "<br/>- Type is mandatory";

	var now = Math.floor(new Date().getTime() / 1000);

	if (t_start_date < now - 2678400)
		error_msg += "<br/>- Start Date cannot be more than 30 days in the past";

	if (t_start_date > now + 5227200)
		error_msg += "<br/>- Start Date cannot be more than 60 days in the future";

	if (t_end_date < now)
		error_msg += "<br/>- End Date cannot be in the past";
	
	if ((t_end_date - t_start_date) > 2678400)
		error_msg += "<br/>- Campaign duration cannot be more than 30 days";

	if (t_title == "")
		error_msg += "<br/>- Title is mandatory";

	if (t_body == "")
		error_msg += "<br/>- Body is mandatory";

	if (adzones.length < 1)
		error_msg += "<br/>- Please select at least one zone<br /> &nbsp; by clicking on the map";

	if (error_msg != "")
	{
		error_msg = "Form could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
		showSideBar();
	}
	else
	{
		t_start_date	= form.c_start_date.value + ' ' + form.c_start_datetime.value;
		t_end_date		= form.c_end_date.value + ' ' + form.c_end_datetime.value;
		//document.getElementById("errmsg").innerHTML = "";
		var t_zones = "";
		for (i = 0; i < adzones.length; i++)
			t_zones = t_zones + "[" + adzones[i].lat + ":" + adzones[i].lng + ":" + adzones[i].zoom + "]";
	
		startLoading();
		GDownloadUrl("/register.php?submit=Campaign"
				+ "&r_name=" + t_name
				+ "&r_type=" + t_type
				+ "&r_start_date=" + t_start_date
				+ "&r_end_date=" + t_end_date
				+ "&r_url=" + t_url
				+ "&r_title=" + t_title
				+ "&r_body=" + t_body
				+ "&r_loc_id=" + t_loc_id
				+ "&r_camp_id=" + t_camp_id
				+ "&r_zones=" + t_zones
				+ "&r_approved=" + t_approved
				+ "&r_enabled=" + t_enabled
				+ "&r_deleted=" + t_deleted
				+ "&cts=" + datePrint(new Date())
	,	function(data, responseCode)
		{
			if(responseCode == 200) {
				var parts = data.split("|");
				if (parts[1] == "success")
				{
					showMessage("Your campaign will be activated once it is reviewed.");
					
					var ins = false;
					var newcamp = new Array();
					newcamp.push(parts[2]);
					newcamp.push(t_approved);
					newcamp.push(t_enabled);
					newcamp.push(t_name);
					//alert(usercamps.count.toString() + ":" + usercamps[0][0] + "-" + parts[2]);
					for (var i = 0; i < usercamps.length; i++)
					{
						if (usercamps[i][0] == parts[2])
						{
							if (t_deleted == "Y")
								usercamps.splice(i, 1);
							else
								usercamps.splice(i, 1, newcamp);
							ins = true;
						}
					}
					if (!ins)
					{
						if (usercamps.length > 0)
							usercamps.unshift(newcamp);
						else
							usercamps.push(newcamp);
					}
					sideBarItems[4] = camplinks();
					
					cancelcampaignform();
//					showForm('locate', 'menuspace');
				}
				else
				{
					showMessage(data);
				}
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (E1R)");
			}
			stopLoading();
//			showSideBar();
		});
	}
//showSideBar();
}

function echeck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true;
	}


function submitregisterform (form) {
	hideSideBar();

	var t_name  = trim(form.r_name.value);
	var t_email = trim(form.r_email.value);
	var t_pass1 = trim(form.r_pass1.value);
	var t_pass2 = trim(form.r_pass2.value);
	var error_msg = "";

	if (t_name == "")
		error_msg += "<br/>- Name is mandatory";

	if (t_email == "")
		error_msg += "<br/>- Email is mandatory";
	else if (echeck(t_email) == false)
		error_msg += "<br/>- Email address is not valid";

	if (t_pass1 == "")
		error_msg += "<br/>- Password is mandatory";

	if (t_pass2 == "")
		error_msg += "<br/>- Confirm Password is mandatory";
		
	if (t_pass1 != t_pass2)
		error_msg += "<br/>- Password does not match Confirm Password";
	
	if (error_msg != "")
	{
		error_msg = "Form could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
	//	showSideBar();
	}
	else
	{
		//document.getElementById("errmsg").innerHTML = "";
		
	
		startLoading();
		GDownloadUrl("/register.php?submit=Register"
	+ "&r_name=" + t_name
	+ "&r_email=" + t_email
	+ "&r_pass1=" + t_pass1
	+ "&r_pass2=" + t_pass2
	,	function(data, responseCode)
		{
			if(responseCode == 200) {
				if (data == "success")
				{
					showMessage("You are registered. Please check your email.");
					showSideBar();
					showForm('locate', 'menuspace');
				}
				else
				{
					showMessage(data);
				}
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (EF)");
			}
			stopLoading();
		//	showSideBar();
		});
	}
//showSideBar();
}

function submitprofileform (form) {
	hideSideBar();

	var t_name  = trim(form.r_name.value);
	var t_email = trim(form.r_email.value);
	var t_pass  = trim(form.r_pass.value);
	var t_pass1 = trim(form.r_pass1.value);
	var t_pass2 = trim(form.r_pass2.value);
	var error_msg = "";

	if (t_name == "")
		error_msg += "<br/>- Name is mandatory";

	if (t_email == "")
		error_msg += "<br/>- Email is mandatory";
	else if (echeck(t_email) == false)
		error_msg += "<br/>- Email address is not valid";

	if (t_pass != "" || t_pass1 != "" || t_pass2 != "")
	{
		if (t_pass == "" || t_pass1 == "" || t_pass2 == "")
			error_msg += "<br/>- To change password, fill all password fields";
		else if (t_pass1 != t_pass2)
			error_msg += "<br/>- New Password does not match Confirm Password";
	}

	if (error_msg != "")
	{
		error_msg = "Form could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
//		showSideBar();
	}
	else
	{
		//document.getElementById("errmsg").innerHTML = "";
		
	
		startLoading();
		GDownloadUrl("/register.php?submit=Profile"
	+ "&r_name=" + t_name
	+ "&r_email=" + t_email
	+ "&r_pass=" + t_pass
	+ "&r_pass1=" + t_pass1
	+ "&r_pass2=" + t_pass2
	,	function(data, responseCode)
		{
			if(responseCode == 200) {
				if (data == "success")
				{
					user_name = t_name;
					user_email = t_email;
					showMessage("Your profile is saved.");
					showSideBar();
					showForm('locate', 'menuspace');
				}
				else
				{
					showMessage(data);
				}
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (EG)");
			}
			stopLoading();
//			showSideBar();
		});
	}
//showSideBar();
}

function submitreportform (form) {
	hideSideBar();

	var t_reason      	= trim(form.r_reason.value);
	var t_description 	= trim(form.r_description.value);
	var t_loc_id 		= trim(form.r_loc_id.value);
	var error_msg = "";

	if (t_reason == "")
		error_msg += "<br/>- Reason is mandatory";

	if (t_reason == "OTHR" && t_description == "")
		error_msg += "<br/>- Please specify a Description or change the Reason";

	if (error_msg != "")
	{
		error_msg = "Form could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
		showSideBar();
	}
	else
	{
		//document.getElementById("errmsg").innerHTML = "";
		
	
		startLoading();
		GDownloadUrl("/register.php?submit=Report"
				+ "&r_loc_id=" + t_loc_id
	+ "&r_reason=" + t_reason
	+ "&r_description=" + t_description
	,	function(data, responseCode)
		{
			if(responseCode == 200) {
				if (data == "success")
				{
					showMessage("Thanks for your feedback.");
					unlockSidebar();
					showSideBar();
//					showForm('locate', 'menuspace');
				}
				else
				{
					showMessage(data);
				}
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (EH)");
			}
			stopLoading();
//			showSideBar();
		});
	}
//showSideBar();
}

function locOptionList(locType, id)
{
	return "<p><a href=\"javascript:editLocation('" + locType + "', '" + id.toString() + "')\">Edit</a> | " +
			"<a href=\"javascript:reportLocation('" + locType + "', '" + id.toString() + "')\">Report</a> | " +
			"<a href=\"javascript:addCampaign('" + locType + "', '" + id.toString() + "')\">Add Campaign</a> | " +
			"<a href=\"javascript:addLocation('" + locType + "')\">Add Another Location</a></p>";
}

function displayLocData(data, id)
{
	parts = data.replace(/\[a-t\]/g, "@").split("|");

	var numComments = parseInt(parts[4]);
	var commLink = '';
	
	if (numComments > 5)
		commLink = "<a href=\"javascript:popUp('\popup.php?type=comment&id=" + id + "&page=1000')\">More Comments</a>";

	if (user_id == -1)
	{
		if (commLink != '') commLink += ' | ';
		commLink += "<a href=\"javascript:showForm('login', 'menuspace', funcCall('showLoc', '" + id + "'))\">Log In to Add Comments</a>";
	}
	
	if (commLink != '')
		commLink = '<p>' + commLink + '</p>';

	parts[2] = parts[2].replace(/`/g, "|");
	
	if (user_id == -1)
		document.getElementById("sidebar").innerHTML = parts[0] + locOptionList(parts[1], id) + parts[2] + commLink;
	else
		document.getElementById("sidebar").innerHTML = parts[0] + locOptionList(parts[1], id) + parts[2] + commLink + parts[3];
	//time = new Date();
	markLocShowTime();// = time.getTime();
}

function showLoc(id)
{
	startLoading();
	GDownloadUrl("/show.php?lid="+id+"&u="+user_id, function(data, responseCode) {
		if(responseCode == 200) {
			markers[parseInt(id)] = data;
			hideSideBar();
			if (newMarker != null)
				map.removeOverlay(newMarker);

			displayLocData(data, id);
//			parts = data.split("|");
//
//			var commLink = "<p><a href=\"javascript:popUp('\popup.php?type=comment&id=" + id + "&page=1')\">More Comments</a></p>";
//
//			if (user_id == -1)
//				document.getElementById("sidebar").innerHTML = parts[0] + locOptionList(parts[1], id) + parts[2] + commLink;
//			else
//				document.getElementById("sidebar").innerHTML = parts[0] + locOptionList(parts[1], id) + parts[2] + commLink + parts[3];
//			time = new Date();
//			locShowTime = time.getTime();
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
			showSideBar();
		} else {
			showMessage("Request resulted in error. (EU)");
			showSideBar();
		}
		stopLoading();
	});

}

function ratecomm(commId, feedback, locId)
{
	if (user_id == -1)
	{
		showForm('login', 'menuspace', funcCall('ratecomm', commId, feedback, locId));
		showHint('loginRequired');
	}
	else
	{
		hideSideBar();
		startLoading();
		GDownloadUrl("/popup.php?type=comment&comm="+commId.toString()+"&feedback="+feedback+"&noshow=1", function(data, responseCode) {
			if(responseCode == 200) {
				if (data == "success")
					showLoc(locId);
				else
					showMessage(data);
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (E14)");
			}
			stopLoading();
		});
	}
}

function submitcommentform (form) {
	hideSideBar();

	var t_rating      	= trim(form.r_rating.value);
	var t_comment 		= trim(form.r_comment.value).replace(/\n/g,"```");
	var t_loc_id 		= trim(form.r_loc_id.value);
	var t_comm_count	= trim(form.r_comm_count.value);
	var error_msg = "";
	
	if (t_comment == "")
		error_msg += "<br/>- Comment is mandatory";

	if (error_msg != "")
	{
		error_msg = "Form could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
		//showSideBar();
	}
	else
	{
		//document.getElementById("errmsg").innerHTML = "";
		
		startLoading();
		GDownloadUrl("/register.php?submit=Comment"
				+ "&r_loc_id=" + t_loc_id
	+ "&r_rating=" + t_rating
	+ "&r_comment=" + t_comment
	+ "&r_comm_count=" + t_comm_count
	,	function(data, responseCode)
		{
			if(responseCode == 200) {
				if (data == "success")
				{
					showMessage("Comment posted!");
					//unlockSidebar();
					showLoc(t_loc_id);
//					showForm('locate', 'menuspace');
				}
				else
				{
					showMessage(data);
				}
			} else if(responseCode == -1) {
				showMessage("Data request timed out. Please try later.");
			} else {
				showMessage("Request resulted in error. (ER)");
			}
			stopLoading();
//			showSideBar();
		});
	}
//showSideBar();
}

function arrayUnescape(a)
{
	return a.replace(/`0/g, "~").replace(/`1/g, "|").replace(/`3/g, "[").replace(/`4/g, "]").replace(/`5/g, ":").replace(/`9/g, "`");
}

function decodeArray(f)
{
	if (f.charAt(0) == '[')
		f = f.substr(1);
	if (f.charAt(f.length - 1) == ']')
		f = f.substr(0, f.length - 1);
	var rows = f.split('][');
	var result = [];
	//alert(funcs.toString());
	for (var j in rows)
	{
		//alert('func: ' + func);
		var cols = rows[j].split(':');
		//var funcName = parts[0];
		//var params = parts[1].split(';');
		//var funcCall = funcName + "(";
		//var i = 0;
		var row = [];
		for (var k in cols)
		{
			row.push(arrayUnescape(cols[k]));
		}
		result.push(row);
	}
	return result;
}

function callCode(f)
{
	if (f.charAt(0) == '[')
		f = f.substr(1);
	if (f.charAt(f.length - 1) == ']')
		f = f.substr(0, f.length - 1);
	var funcs = f.split('][');
	//alert(funcs.toString());
	for (var j in funcs)
	{
		//alert('func: ' + func);
		var parts = funcs[j].split(':');
		var funcName = parts[0];
		var params = parts[1].split(';');
		var funcCall = funcName + "(";
		var i = 0;
		for (var k in params)
		{
			if (i > 0) funcCall += ", ";
			funcCall += "'" + params[k] + "'";
			i++;
		}
		funcCall += ")";
		
		//alert (funcCall);
		eval(funcCall);
	}
}

function camplinks()
{
	var camptext = "";
	var a = "";
	var b = "";
	for (var j in usercamps)
	{
		var enabled = (usercamps[j][2] == 'Y' ? "&nbsp;(enabled)" : "");
		if (usercamps[j][1] == 'Y')
			a += "<a href=\"javascript:addCampaign('cam', '" + usercamps[j][0] + "')\">" + usercamps[j][3] + "</a>" + enabled + "<br />";
		else
			b += "<a href=\"javascript:addCampaign('cam', '" + usercamps[j][0] + "')\">" + usercamps[j][3] + "</a>" + enabled + "<br />";
	}
	if (b != "")
		camptext += "<p><b>Campaigns Pending Approval</b><br />" + b + "</p>";
	if (a != "")
		camptext += "<p><b>Approved Campaigns</b><br />" + a + "</p>";
	
	return camptext;
}

var slogin = function(form, funcs)
{
//function slogin (form) {
	hideSideBar();

	var a_email = trim(form.a_email.value);
	var a_pass = trim(form.a_pass.value);
	var error_msg = "";

	if (a_email == "")
		error_msg += "<br/>- Email is mandatory";
	else if (echeck(a_email) == false)
		error_msg += "<br/>- Email address is not valid";

	if (a_pass == "")
		error_msg += "<br/>- Password is mandatory";

	if (error_msg != "")
	{
		error_msg = "Log In could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
	}
	else
	{
		startLoading();
		GDownloadUrl("/login.php?submit=" + form.submit.value
+ "&a_email=" + a_email
+ "&a_pass=" + a_pass
, function(data, responseCode) {
		if(responseCode == 200) {
			fields = data.split("|");
			if (fields[0] == "success")
			{
				user_id = fields[1];
				user_name = fields[2];
				user_email = fields[3];
				if (fields[4] != '')
				{
					usercamps = decodeArray(fields[4]);
					sideBarItems[4] = camplinks();
				}
				showForm('locate', 'menuspace');
				document.getElementById('tabs').innerHTML = pageTabUser;
				showMessage("Welcome " + fields[2] + ".");

      			contextmenu.innerHTML = mapCmUser;
//				showHint('zoom');


			}
			else
			{
				showMessage(data);
			}
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
		} else {
			showMessage("Request resulted in error. (EJ)");
		}
		stopLoading();
		showSideBar();
		if (user_id != -1 && typeof funcs != "undefined") {
			callCode(funcs);
		}
	});
	}
	showSideBar();
}

function sreset (form) {
	hideSideBar();

	var a_email = trim(form.r_email.value);
	var error_msg = "";

	if (a_email == "")
		error_msg += "<br/>- Email is mandatory";
	else if (echeck(a_email) == false)
		error_msg += "<br/>- Email address is not valid";

	if (error_msg != "")
	{
		error_msg = "Request could not be processed:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
	}
	else
	{
		startLoading();
		GDownloadUrl("/login.php?submit=" + form.submit.value
+ "&a_email=" + a_email
, function(data, responseCode) {
		if(responseCode == 200) {
			
			if (data == "success")
			{
				showForm('locate', 'menuspace');
				document.getElementById('tabs').innerHTML = pageTabUser;
				showMessage("Please check your email for instructions.");

      			contextmenu.innerHTML = mapCmUser;

			}
			else
			{
				showMessage(data);
			}
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
		} else {
			showMessage("Request resulted in error. (EK)");
		}
		showSideBar();
	});
	}
	showSideBar();
}

function contactus (form) {
	hideSideBar();

	var a_name = trim(form.c_name.value);
	var a_email = trim(form.c_email.value);
	var a_message = trim(form.c_message.value).replace(/\n/g,"```");
	var error_msg = "";

	if (a_name == "")
		error_msg += "<br/>- Your Name is mandatory";

	if (a_email == "")
		error_msg += "<br/>- Your Email is mandatory";
	else if (echeck(a_email) == false)
		error_msg += "<br/>- Your Email address is not valid";
	
	if (a_message == "")
		error_msg += "<br/>- Message is mandatory";

	if (error_msg != "")
	{
		error_msg = "Unable to send message:" + error_msg;
		//document.getElementById("errmsg").innerHTML = error_msg;
		showMessage(error_msg);
	}
	else
	{
		var center = map.getCenter();

		var lat = center.lat();
		var lng = center.lng();

		startLoading();
		GDownloadUrl("/message.php?submit=" + form.submit.value
+ "&c_name=" + a_name
+ "&c_email=" + a_email
+ "&c_message=" + a_message
+ "&x=" + limitDecimalPlaces(lng.toString(), 5)
+ "&y=" + limitDecimalPlaces(lat.toString(), 5)
+ "&z=" + map.getZoom()
, function(data, responseCode) {
		if(responseCode == 200) {
			
			if (data == "success")
			{
				form.c_name.value = '';
				form.c_email.value = '';
				form.c_message.value = '';
				showForm('locate', 'menuspace');
				showMessage("Thanks for your inquiry.");

			}
			else
			{
				showMessage(data);
			}
		} else if(responseCode == -1) {
			showMessage("Data request timed out. Please try later.");
		} else {
			showMessage("Request resulted in error. (EL)");
		}
		stopLoading();
		showSideBar();
	});
	}
	showSideBar();
}

function hideForm() {
	if (newMarker != null)
		map.removeOverlay(newMarker);
	unlockSidebar();
	showSideBar();
}

function cancelcampaignform() {
	while (adzones.length > 0)
	{
		unmarkZone(adzones[0]);
	}
	if (campZoneListener != null)
	{
		GEvent.removeListener(campZoneListener);
		campZoneListener = null;
	}
	unlockSidebar();
	showSideBar();
}

//alert("wow");
