var curMap = "";
if(!locations) var locations = new Array();

function openInfo(id) {
	var foundMarker = markers[id];
	if(messages[id]) {
		map.openInfoWindowHtml(foundMarker.getPoint(),messages[id]);
		return;
	}
	var myAjax = new AjaxMe();
	var url = "ajax.php?getInfo&id="+foundMarker.title;
	myAjax.open("GET",url,true);
	myAjax.onreadystatechange=function() {
		if(myAjax.readyState==4 || myAjax.readyState=="complete") {
			map.openInfoWindowHtml(foundMarker.getPoint(),myAjax.responseText);
			messages[id] = myAjax.responseText;
		}
	}
	myAjax.send(null);
}

function addMarker(map, latlon, id,arrayPlace) {
	var temp = latlon.split(",");
	var point = new GLatLng(temp[0], temp[1]);
	var marker = new GMarker(point);
	marker.title = id;
	markers[markers.length] = marker;
	
	GEvent.addListener(marker, "click", function() {
		openInfo(arrayPlace);
	});
	return marker;
}

function openOnMap(id) {
	for (var i = 0; i < markers.length; i++) {
		if (markers[i].title == id) {
			foundMarker = markers[i];
			receiveReq = getXmlHttpRequestObject();
			if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
		                receiveReq.open("GET", '/get_bar_info.php?id='+id, true);
		                receiveReq.onreadystatechange = function() {
		                        if (receiveReq.readyState == 4) {
		                                var myHtml = receiveReq.responseText;
		                                map.openInfoWindowHtml(foundMarker.getPoint(), myHtml);
		                        }
		                }
		                receiveReq.send(null);
		        }
		}
	}
}

function addPlacemarq() {
	var ul = document.getElementById('t_list');
	var form = document.forms['pm_form'];
	var li = document.createElement('li');
	var a = document.createElement('a');
	var tru = checkForm('pm_form');
	if(!tru) return;
	a.innerHTML=form.pm_name.value;
	var nodes = ul.getElementsByTagName('a');
	for(i=0;i<nodes.length;i++) {
		if(nodes[i].innerHTML==form.pm_name.value) {
			alert("That Placemarq already exists!");
			form.pm_name.value="";
			form.pm_name.focus();
			return false;
		}
	}
	toggleOverlay();
	a.setAttribute("href","#");
	a.setAttribute("onclick","openInfo('"+locations[locations.length]+"')");
	li.appendChild(a);
	ul.appendChild(li);
	nodes = ul.getElementsByTagName('a');
	if(nodes.length>12) {
		for(i=1;i<nodes.length;i++) {
			if((24-nodes.length/3)>1) {
				nodes[i].style.padding=(24-nodes.length)/3+"px";
				nodes[i].style.paddingLeft="25px";
			}
			var k = (nodes.length-14)/2;
			var s = 15-(k*.05*15);
			if(s>=10) nodes[i].style.fontSize=s+"px";
		}
	}
	storePlacemarq(form);
	form.reset();
	return false;
}

function storePlacemarq(form) {
	var geocoder = new GClientGeocoder();

	var name = form.pm_name.value;
	var street = form.pm_street.value;
	var city = form.pm_city.value;
	var state = form.pm_state.value;
	var zip = form.pm_zip.value;
	var comment = form.pm_comment.value;

	var address = street + ',' + city + ',' + state;
	geocoder.getLocations(address, function(response) {
		place = response.Placemark[0];
		var lat = place.Point.coordinates[0];
		var lon = place.Point.coordinates[1];
		var gpoint = new GMarker(new GLatLng(lon,lat));
		map.addOverlay(gpoint);
		var bounds = map.getBounds();
		bounds.extend(gpoint.getPoint());
		map.setZoom(map.getBoundsZoomLevel(bounds));
		map.setCenter(bounds.getCenter());
		var url = "ajax.php?addPM";
		url+="&mapID="+curMap+"&name="+name+"&street="+street+"&city="+city+"&state="+state+"&zip="+zip;
		url+="&lat="+lat+"&lon="+lon;
		url+="&comment="+encodeURIComponent(comment);
		AjaxIt(url);
	});
}

function addMap() {
	var outer = document.getElementById('maps_area');
	$('#maps_area').DropOutDown(500);
	var list = document.getElementById('m_list');
	$('#m_list').DropOutUp(500);
	//list.style.display="none";
	deselectTopLinks();
	setTimeout('importMap()',600);
}

function importMap() {
	document.getElementById('list').style.background="#4a4d4e";
	var map = document.createElement('div');
	map.style.display="none";
	a = new Image();
	a.src="images/mock_map.png";
	map.style.background="url(images/mock_map.png) no-repeat top left";
	map.setAttribute("id","map");
	map.style.left="180px";
	document.getElementById('main_content').appendChild(map);
	var center = document.createElement('center');
	center.style.marginTop="140px";
	var div = document.createElement('div');
	div.setAttribute("id","newMapDiv");
	div.style.background="#f7f7f7";
	div.style.border="2px solid #292929";
	div.style.width="250px";
	div.style.padding="5px 5px 10px 5px";
	center.appendChild(div);
	alterElm('header_info','Create New Map...');
	var input = document.createElement('input');
	var form = document.createElement('form');
	form.setAttribute("name","newMap");
	form.setAttribute("onSubmit","return false;");
	input.setAttribute("type","text");
	input.setAttribute("name","title");
	input.setAttribute("maxlength","35");
	input.setAttribute("onkeyup","alterElm('header_info',this.value)");
	input.style.fontSize="15px";
	input.style.border="1px solid #999";
	input.style.padding="3px";
	input2 = document.createElement('input');
	input2.setAttribute("type","submit");
	input2.setAttribute("value","Create");
	input2.setAttribute("class","std_button");
	//input2.style.display="none";
	input2.style.marginTop="5px";
	input2.setAttribute("onclick","finalizeMap();return false;");
	input3 = document.createElement('input');
	input3.setAttribute("type","button");
	input3.setAttribute("class","std_button");
	input3.setAttribute("value","Cancel");
	input3.setAttribute("onclick","reloadMaps()");
	var h2 = document.createElement('h2');
	h2.innerHTML="What's Your Map's Name?";
	h2.style.marginTop="5px";
	div.appendChild(h2);
	div.appendChild(form);
	form.appendChild(input);
	form.appendChild(input2);
	form.appendChild(input3);
	map.appendChild(center);
	setTimeout("document.getElementById('map').getElementsByTagName('input')[0].focus()",600);
	$('#map').Grow(500);
}

function reloadMaps() {
	$('#newMapDiv').DropOutDown(500);
	document.getElementById('main_content').removeChild(document.getElementById('map'));
	//document.getElementById('m_list').style.display="";
	$('#m_list').DropInUp(500);
	document.getElementById('list').style.background="#f7f7f7";
	$('#maps_area').DropInDown(500);
	alterElm('header_info','My Maps');
}

function deselectTopLinks() {
	var links = document.getElementById('header_links').getElementsByTagName('a');
	for(i=0;i<links.length;i++) {
		if(links[i].className=="active") links[i].className="";
	}
}

function checkForm(form) {
	var form = document.forms[form];
	for(i=0;i<form.elements.length;i++) {
		if((form.elements[i].type=="text" || form.elements[i].type=="password") && form.elements[i].getAttribute("noblank")!="1" && form.elements[i].value=="") {
			alert(form[i].getAttribute("title")+" can't be blank!");
			form[i].focus();
			return false;
		}
	}
	return true;
}

function finalizeMap() {
	$('#newMapDiv').DropOutDown(500);
	document.getElementById('list').style.background="#f7f7f7";
	var form = document.forms['newMap'];
	var title = form.title.value;
	var div = document.getElementById('list');
	var ul = document.createElement('ul');
	ul.setAttribute("id","t_list");
	div.appendChild(ul);
	AjaxIt('ajax.php?addMap&title='+title,'','storeMapID');
	var li = document.createElement('li');
	var a = document.createElement('a');
	a.setAttribute("class","add");
	a.setAttribute("onclick","toggleOverlay()");
	a.setAttribute("href","#");
	a.innerHTML="Add PlaceMarq &raquo;";
	li.appendChild(a);
	ul.appendChild(li);
	initialize();
}

function storeMapID(myAjax) {
	curMap = myAjax;
}

function deleteMap() {
	if(confirm("Woah.\nAre you sure you want to delete this map and all its placemarqs?\nThis action cannot be undone!")) {
		AjaxIt('ajax.php?deleteMap='+curMap);
		curMap="";
		$('#map').Shrink(500);
		$('#list').SlideOutLeft(500);
		setTimeout('window.location=\'profile.php\'',1000);
	}
}

function alterElm(id,val) {
	var el = document.getElementById(id).innerHTML='<h1>'+val+'</h1>';
}

function initialize() {
	if (GBrowserIsCompatible()) {
		var crossLayer = new GTileLayer(new GCopyrightCollection(""), 0, 15);
        crossLayer.getTileUrl =  function(tile, zoom) {
          return "./include/tile_crosshairs.png";
        }
        crossLayer.isPng = function() {return true;}

        // Create a new map type incorporating the tile layer
        var layerTerCross = [ G_PHYSICAL_MAP.getTileLayers()[0],
                              crossLayer ];
        var mtTerCross = new GMapType(layerTerCross,
                                      G_PHYSICAL_MAP.getProjection(), "Ter+");

        map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.addMapType(G_PHYSICAL_MAP);
        map.addMapType(mtTerCross);
        map.addControl(new GLargeMapControl())

        var mapControl = new GHierarchicalMapTypeControl();
        
        function createMarker(latlng, number) {
		  var marker = new GMarker(latlng);
		  marker.value = number;
		  GEvent.addListener(marker,"click", function() {
			var myHtml = message[number -1];
			map.openInfoWindowHtml(latlng, myHtml);
		  });
		  return marker;
		}
    }
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var lngSpan = northEast.lng() - southWest.lng();
	var latSpan = northEast.lat() - southWest.lat();
}

function attemptLogin() {
	var form = document.forms['login_form'];
	var url = 'ajax.php?login&username='+form.username.value+"&password="+form.password.value;
	var myAjax = new AjaxMe();
	myAjax.open("GET",url,true);
	myAjax.onreadystatechange=function() {
		if(myAjax.readyState==4 || myAjax.readyState=="complete") {
			if(myAjax.responseText!='error') {
				toggleOverlay();
				toggleLogin();
				form.submit();
			}
			else {
				alert("Incorrect username/password");
				form.username.value="";
				form.password.value="";
				form.username.focus();
				return false;
			}
		}
	}
	myAjax.send(null);
}

function attemptRegister() {
	var form = document.forms['pm_form'];
	if(!checkForm('pm_form')) return;
	form.submit();
	return;
	var username = form.username.value.replace(/ /g,'');
	form.username.value=username;
	if(form.password.value!=form.password2.value) {
		alert("Passwords don't match!");
		form.password.value="";
		form.password2.value="";
		form.password.focus();
	}
	var url = 'ajax.php?register&username='+username+'&password='+form.password.value+'&email='+form.email.value;
	var myAjax = new AjaxMe();
	myAjax.open("GET",url,true);
	myAjax.onreadystatechange=function() {
		if(myAjax.readyState==4 || myAjax.readyState=="complete") {
			if(myAjax.responseText!='error') {
				window.location="http://www.placemarq.com/profile.php";
			}
			else {
				alert("Username already exists!");
				form.username.value="";
				form.username.focus();
			}
		}
	}
	myAjax.send(null);
}

function toggleOverlay() {
        el = document.getElementById('overlay_content');
        el.style.display = (el.style.display == "none") ? "" : "none";
        el = document.getElementById('overlay');
        el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
		if (el.style.visibility == 'visible')
			document.forms['pm_form'].elements[0].focus();
}

function toggleLogin() {
	var o2 = document.getElementById('overlay_content2');
	var o1 = document.getElementById('overlay_content');
	if(o1.style.display=="none") {
		o2.style.display="none";
		o1.style.display="";
	}
	else {
		o2.style.display="";
		o1.style.display="none";
		document.forms['login_form'].username.focus();
	}
}

function AjaxIt(url,id,postfunc) {
	var myAjax = new AjaxMe();
	myAjax.open("GET",url,true);
	myAjax.onreadystatechange=function() {
		if(myAjax.readyState==4 || myAjax.readyState=="complete") {
			if(myAjax.responseText) {
				if(id) {
					ge(id).innerHTML=myAjax.responseText;
					evalScripts(id);
				}
			}
			if(postfunc) eval(postfunc+"(myAjax.responseText)");
			return;
		}
	}
	myAjax.send(null);
}

function sendMsg(url,params,postfunc) {
	myAjax = new AjaxMe();
	myAjax.onreadystatechange = function() {
        if (myAjax.readyState == 4) {
            if(postfunc) eval(postfunc+"("+myAjax+")");
        }
    }
  	myAjax.open('POST', url, true);
  	myAjax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
  	var s = "";
  	for(var i in params) {
  		s+=i+"='"+params[i]+"',";
  	}
  	s = s.substring(0,s.length-1);
  	myAjax.send('params=' + encodeURIComponent(s));
}

function AjaxMe() {
	var xmlHttp=null;
	try {
 		xmlHttp=new XMLHttpRequest();
 	}
	catch (e) {
	 try {
	 		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
 	}
	return xmlHttp;
}
