var isie = navigator.appName.indexOf("Microsoft")!=-1;
var winH = 100; 
var winW = 200;

var map = null;
var marker_cnt=0;
var load_div = null;
var map_div = null;
var left_list = null;
var centerPoint = null;
var zoom = 12;
var TopLine = 106;
var LeftWidth = 300;
var borderPadding = 10;

var req = null;

var centerX=0, centerY=0; //average coordinates of the apartments
var aptX = new Array(); // coords of apartments
var aptY = new Array(); // coords of apartments
var aptDescr = new Array(); // Descriptions of apts
var bedr = new Array(); // bedrooms in apartments

//settings
var pr_fr = 0;
var pr_to = 1600;
var hrs = 24;

// flag, ==1 means the map data is being updated
var isUpdating = 0;

function getE(x) {
	return document.getElementById(x);
}

//returns new ajax object
function makeNewReq()
{
 if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
}


function loadApts() {
	load_div = getE("load_div");
	load_div.innerHTML = 'Loading apartment data...';
	getE('RentList').innerHTML = '';
	delete req;
	makeNewReq();
	req.onreadystatechange = loadAptsHandler;
	req.open("GET", 'list.php?hr='+hrs+'&fr='+pr_fr+'&to='+pr_to, true);
	req.send(""); 
}

function loadAptsHandler() {
	if (req && req.readyState==4) {  		
		var str=req.responseText;		
		var x = getE('RentList');
		var lines = str.split('\n');
		var inner = '<table class="r" border="0" cellspacing="0" cellpadding="0">';
		inner += '<tr><th>&#8470;</th><th>BR</th><th>Price</th>';
		inner += '<th>Dogs</th><th>Cats</th><th>Link</th><th>Phone</th></tr>';
		
		centerX = centerY = 0;
		aptX = new Array();
		aptY = new Array();
		bedr = new Array();
		aptDescr = new Array();
	
		for (i=0;i<lines.length;i++) {
			line = lines[i].split('^');
			if (!line[0]) break;

			//calculate when it was posted
			var minutes = line[14];
			var ago = '';

			//min
			if (minutes>0) ago = (minutes%60)+" minutes";
			minutes=Math.floor(minutes/60);


			//hours
			if (minutes>0) ago = Math.round(minutes%24)+" hours "+ago;
			minutes=Math.floor(minutes/24);

			//hours
			if (minutes>0) ago = Math.round(minutes)+" days "+ago;

			// apartment description
			aptDescr.push(
				"<b>"+(line[1]==100?'Studio':line[1]+' br')+"</b> "+ //bedrooms
				"$"+addCommas(line[2])+"<br>"+ //price
				line[4]+"<br><br>"+ //addr
				"<div class='pst'>Posted "+ago+" ago</div>"+
				"<a href='"+line[10]+"' target='_new'>link</a>"
			);

			bedr.push(parseInt(line[1]));

			aptX.push(parseFloat(line[5]));
			aptY.push(parseFloat(line[6]));

			centerX += parseFloat(line[5]);
			centerY += parseFloat(line[6]);

			inner += '<tr>';
			inner += '<td>'+(i+1)+'</td>';
			inner += '<td>'+(line[1]==100?'st.':line[1])+'</td>';
			inner += '<td>$'+addCommas(line[2])+'</td>';
			inner += '<td>'+(line[8]==1?'Y':'&nbsp;')+'</td>';
			inner += '<td>'+(line[7]==1?'Y':'&nbsp;')+'</td>';
			inner += '<td><a href="'+line[10]+'">link</a></td>';
			inner += '<td>'+(line[12]==''?'&nbsp;':'<nobr>'+line[12]+'</nobr>')+'</td>';

			inner += '</tr>';			
		}			
		inner += '</table>';

		centerX/=aptX.length;
		centerY/=aptX.length;
		x.innerHTML = inner;
		load_div.innerHTML = 'Adding '+lines.length+' apartments to the map...';
		setTimeout("addMarkers()", 10);
	}	

}


function updateApts() {
	isUpdating = 1;
	load_div.style.display="block";
	pr_fr = getE('fr').value;
	pr_to = getE('to').value;
	hrs = getE('hrs').value;
	optionsClose();
	setTimeout("loadApts()", 10);
}

function optionsClose() {
	$('#options').fadeOut(80);
	$('#optMenu').css({backgroundColor:'#eff2e3', color:'#b5b7ac'});
}


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

	//<![CDATA[


function load() {	
	map_div = getE("map");
	
	if (GBrowserIsCompatible()) {
		map = new GMap2(map_div);
		map.enableScrollWheelZoom();
		map.enableContinuousZoom();
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.setCenter(new GLatLng(38.479395, -96.064453), 4); //long,lat
	}


	if (isie) {
		winW = document.body.clientWidth;
		winH = document.body.clientHeight;
	} else {
		winW = window.innerWidth;
		winH = window.innerHeight;
	}
        positionElements();	

	// options menu
	$('#optMenu').click(function() {
		if ($('#options').is(':hidden')) {
			$('#options').fadeIn(80);
			$('#optMenu').css({backgroundColor:'#cc601d', color:'#fff'});
		} else {
			optionsClose();
		}
	});

}//load

window.onresize = function(){
	if (isie) {
		winW = document.body.clientWidth;
		winH = document.body.clientHeight;
	} else {
		winW = window.innerWidth;
		winH = window.innerHeight;
	}
	positionElements();
}


// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var baseIcon = new GIcon();
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);
baseIcon.infoShadowAnchor = new GPoint(18, 25);



function makeNewReq()
{
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
	   	try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
	  	} catch(e) {
			try {
		  		req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
}

var markers = new Array();
var infoTabs = new Array();

function createTabbedMarker(point, index, htmls, labels, bedr) {
	var letter = String.fromCharCode("A".charCodeAt(0) + index);
	var icon = new GIcon(baseIcon);
	//icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	//icon.image = "http://www.google.com/mapfiles/marker.png";
	icon.image = "marker_"+bedr+".png";

	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {

		  var tabs = [];
		  for (var i=0; i<htmls.length; i++) {
			tabs.push(new GInfoWindowTab(labels[i],"<div class=tab1>"+htmls[i]+"</div>"));
		  }
		  marker.openInfoWindowTabsHtml(tabs);
	});
	return marker;
}


function addMarkers() {	
	for (var i = 0; i < marker_cnt; i++) map.removeOverlay(markers[i]);
	marker_cnt=0;
        
	if (isUpdating==0) map.setCenter(new GLatLng(centerX,centerY), zoom); 	

	for (i=0;i<aptX.length;i++) { 

		var html = aptDescr[i];		

		markers[marker_cnt] = createTabbedMarker(new GLatLng(aptX[i],aptY[i]),
						i, [html,"details"], ["Address", "Details"],
						bedr[i]
		);
		map.addOverlay(markers[marker_cnt]);
		marker_cnt++;					   
	 }
	load_div.style.display="none";
}//addmarkers

function setCoords(point, zoom) {
	map.setCenter(point, zoom);
}

function positionElements() {
	var rentL = getE('RentList');
	var cntr = map.getCenter();
	var zoom = map.getZoom();

	// ie position:fixed bug
	if (isie) getE('options').style.position = 'absolute';		

	var x = winH - TopLine -2;
	if (x<1) x = 1;

	var h = x - borderPadding*2;
	if (h<280) h=280;
	var w = winW - LeftWidth - borderPadding*2 - 2;
	if (w<200) w=200;

	map_div.style.top = TopLine + borderPadding;
	map_div.style.height = h;
	map_div.style.left = LeftWidth + borderPadding ;
	map_div.style.width = w;

	h = winH - TopLine - 42;
	if (h<280) h=280;

	rentL.style.height = h;

	map.checkResize();
	map.setCenter(cntr, zoom);
}

function SetCookie(cookieName,cookieValue,nDays) 
{
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

// modifies input with ID=id by adding or subtracting diff
function modify(id, diff) {
	var x = document.getElementById(id);
	x.value = ""+(parseInt(x.value)+diff);
}


//]]>



