function isdefined(variable)	{
	return (typeof(window[variable]) == "undefined")?  false: true;
}

function translate(parm, langx){
	if (window.languages) {
		langx = langx || langSelect.selectedIndex;
		if (typeof(parm) == 'string')
			return parm;
		return parm[langx] || parm[0];
	} else {
		return parm;
	}
}

function buildCatControl() {
	var currentselected = catSelect.selectedIndex || 0;
	catSelect.options.length = 0;
	for (var i=0; i<categories.length; i++){
		opt = document.createElement('option');
		opt.text = translate(categories[i]);
		opt.value = i;
		catSelect.options.add(opt);
	}
	catSelect.options[Math.max(currentselected,0)].selected = true;
}

function buildPriceRange() {
	alert("build the price range box");	
}

function init(){
	
	//displayDiv = $(document.createElement('div'));
	//displayDiv.className = 'dDiv';
	//document.body.appendChild(displayDiv);
	
	//create the language control box if they have one specified
	if (window.companyLink) {
		$('linkCol').appendChild(companyLink);	
	}
	if (window.languages) {
		var d = $(document.createElement('div'));
		langSelect = $(document.createElement('select'));
		langSelect.style.marginBottom = '12px';
		var opt;
		langSelect.id = 'langSelect';
		for (var i=0; i<languages.length; i++){
			opt = document.createElement('option');
			opt.text = languages[i];
			opt.value = i;
			langSelect.options.add(opt);
		}
		langSelect.observe('change', function(){
			buildCatControl(); 
			var links = document.getElementsByClassName('fLink');
			for (var i=0;i<links.length; i++){
				links[i].innerHTML = String.fromCharCode("A".charCodeAt(0) + i) + '. ' + translate(latlngArray[i].displayName);
			}
			setCookie('LANGUAGE',this.value, 90);
			loadMap($('categorySelect').value || 0);
		} );
		d.appendChild(langSelect);
		$('linkCol').appendChild(d);
		langSelect.options[langNumSelect].selected = true;
	}
	
	//create the categories box
	if (window.categories){
		catSelect = document.createElement('select');
		catSelect.style.marginBottom = '12px';
		catSelect.id = 'categorySelect';
		buildCatControl();
	}
	
	$('linkCol').appendChild(catSelect);
	Event.observe(catSelect,'change', function(){
		loadMap(this.value);
	}.bind(catSelect));

	linksDiv = $(document.createElement('div'));
	$('linkCol').appendChild(linksDiv);
	
	//linksDiv.style.border = '1px solid red';
	//linksDiv.style.backgroundColor = 'pink';
	linksDiv.style.height = ($('linkCol').getHeight()-linksDiv.offsetTop)+'px'
	linksDiv.style.overflow = 'auto';

	if (GBrowserIsCompatible()) { 
		map = new GMap2(document.getElementById("map_canvas")); 
		map.setUIToDefault(); 
		map.setCenter(new GLatLng(latlngArray[0].lat,latlngArray[0].lng), latlngArray[0].zoom);
		mgr = new MarkerManager(map);
					
		// Create a base icon for all of our markers that specifies the
		// shadow, icon dimensions, etc.
		baseIcon = new GIcon(G_DEFAULT_ICON);
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);

		loadMap(latlngArray[0].category);
		
	}
}

function openInfo(m,s,i){
	return function(){
		m.openInfoWindowHtml(setHTML(i));
		s.set();
	};
}

function loadMap(category){
	mgr.clearMarkers();
	//var lat, lng, point ;
	markers = [];
	var a = latlngArray;
	var x = 1;
	var linkDiv, linkSpan, markerIndex;
	linksDiv.innerHTML = '';
	
	for (var i=0; i<a.length; i++){
		if (a[i].category == category || i==0 ){
			markerIndex = markers.length;
			markers[markerIndex] = createMarker(new GLatLng(latlngArray[i].lat,latlngArray[i].lng), x, i);
			linkDiv = createLink(i,x);
			linkSpan = linkDiv.firstChild;
			linksDiv.appendChild(linkDiv);
			GEvent.addListener(markers[markerIndex], "click", openInfo(markers[markerIndex],linkSpan,i))
			x++;
		}
	}
	
	
	//for (var i=0; i<markers.length; i++){
	//	mgr.addMarker(markers[i]);
	//}
	map.checkResize();
	mgr.addMarkers(markers, 7)
	mgr.refresh();
	markers[0].openInfoWindowHtml(setHTML(0));
	linksDiv.firstChild.firstChild.set();
	

}
function createMarker(point, x, i){
	var numberedIcon = new GIcon(baseIcon);
	numberedIcon.image = "http://www.midlandonline.com/wwwroot/remaint/markers/marker" + x + ".png";

	 // Set up our GMarkerOptions object
	markerOptions = { icon:numberedIcon };
	var marker = new GMarker(point, markerOptions);
	
	return marker;
}
function createLink(i,x){
	var span = $(document.createElement('span'));
	span.className = 'fLink';
	span.innerHTML = x + '. ' + translate(latlngArray[i].displayName);
	var div = document.createElement('div');
	div.className = 'containerDiv';
	div.appendChild(span);
	
	span.set = function(){
		if (window.selectedLink)
			selectedLink.removeClassName('selectd');
		selectedLink = this;
		this.addClassName('selectd');
		//displayDiv.innerHTML = this.parentNode.innerHTML;
	}
	span.onclick = function(){
		if (latlngArray[i].minZoom > map.getZoom()) {
			map.setZoom(latlngArray[i].zoom);
		}
		span.set();
		if (markers[x-1].isHidden())
			map.setCenter(new GLatLng(latlngArray[i].lat,latlngArray[i].lng));
		setTimeout(function(){markers[x-1].openInfoWindowHtml(setHTML(i))},100);
	};
	
	return div;
}

function setHTML(i){
	var htmlArray = ['<strong>'+translate(latlngArray[i].displayName)+'</strong>'];
		if (latlngArray[i].displayAddress)
			htmlArray.push('<br>'+translate(latlngArray[i].displayAddress));
		htmlArray.push('<br><br>'+translate(latlngArray[i].description));
	return htmlArray.join('');
}
function setCookie(c_name,value,exdays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate() + exdays);
	var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
	document.cookie=c_name + "=" + c_value;
}
		

		/*


		Event.observe(span,'mouseover', function(){
			var ttop = 0;
			var tleft = 0;
			var tElm = this.parentNode;
			while (tElm && tElm.tagName != 'HTML' ){
				ttop += tElm.offsetTop;
				tleft += tElm.offsetLeft;
				tElm = tElm.offsetParent;
			}
			
			displayDiv.style.top = ttop+'px';
			displayDiv.style.left = tleft+'px';
			displayDiv.innerHTML = this.parentNode.innerHTML;
			
			displayDiv.onclick = this.onclick;
		}.bind(span));
		Event.observe(span,'click', function(){
			if (latlngArray[index].zoom > map.getZoom()) {
				map.setZoom(latlngArray[index].zoom);
			}
			this.set();
			setTimeout(function(){marker.openInfoWindowHtml(setHTML(index))},200);
		}.bind(span));
		*/

