/*
House Finder for Domus Student Housing
(c) Antradar Software Inc, 2008
*/
function encodeHTML(code){
	code=escape(code);
	code=code.replace(/\//g,"%2F");
	code=code.replace(/\?/g,"%3F");
	code=code.replace(/=/g,"%3D");
	code=code.replace(/&/g,"%26");
	code=code.replace(/@/g,"%40");
	code=code.replace(/\+/g,"%2B");
	return code;
}

function sendrequest(d){
	var fname=gid('req_fname');
	var lname=gid('req_lname');
	var phone=gid('req_phone');
	var email=gid('req_email');
	var prids=[];
	for (var key in document.prids){
		if (document.prids[key]==null) continue;
		var prid=document.prids[key].prid;
		prids.push(prid);	
	}	
	var str_prids = prids.join('|');
	
	if (fname.value=='') {fname.style.backgroundColor='#c0c000';return;} else fname.style.backgroundColor='#ffffff';
	if (lname.value=='') {lname.style.backgroundColor='#c0c000';return;} else lname.style.backgroundColor='#ffffff';
	if (email.value=='') {email.style.backgroundColor='#c0c000';return;} else email.style.backgroundColor='#ffffff';
	if (phone.value=='') {phone.style.backgroundColor='#c0c000';return;} else phone.style.backgroundColor='#ffffff';
	
	if (str_prids=='') {
		gid('showlist').innerHTML='<div style="color:cc0000;">Select at least one property from listings</div>';
		return;	
	}
	
	fname=encodeHTML(fname.value);
	lname=encodeHTML(lname.value);
	phone=encodeHTML(phone.value);
	email=encodeHTML(email.value);
	
	document.prids=null;	
	d.disabled='disabled';
	setTimeout(function(){d.disabled='';},500);
	ajxpgn('showlist',document.srv+'?cmd=sendrequest&fname='+fname+'&lname='+lname+'&phone='+phone+'&email='+email+'&prids='+str_prids);
	
		
}

function addrequest(prid,addr){
	if (!document.prids) document.prids=[];
	document.prids['pr'+prid]={prid:prid,addr:addr};
	listrequests();	
}

function listrequests(){
	var html=[];
	for (var key in document.prids){
		if (document.prids[key]==null) continue;
		var prid=document.prids[key].prid;
		var addr=document.prids[key].addr;
		html.push('<div>'+addr+' <a onclick="delrequest('+prid+');">[x]</a>');	
	}	
	gid('showlist').innerHTML=html.join('');
}

function delrequest(prid){
	document.prids['pr'+prid]=null;
	listrequests();
}

function setadid(adid){
  document.filters.adid=adid;
  shownav(adid);
  showads(adid);
}

function shownav(adid){
  ajxpgn('left',document.srv+'?cmd=nav&'+makeparams());
}

function showads(adid){
  ajxpgn('results',document.srv+'?cmd=ads&'+makeparams());
  updatemap();
}

function makeparams(){
  var params=[];
  params.push('adid='+document.filters.adid);
  params.push('neroom='+document.filters.neroom);
  params.push('nroom='+document.filters.nroom);
  params.push('minrent='+document.filters.minrent);
  params.push('maxrent='+document.filters.maxrent);
  params.push('minlat='+document.filters.minlat);
  params.push('minlng='+document.filters.minlng);
  params.push('grouponly='+document.filters.grouponly);
  params.push('maxlat='+document.filters.maxlat);
  params.push('maxlng='+document.filters.maxlng);
  return params.join('&');
}

function setroom(n){
  document.filters.nroom=n;
  setadid(document.filters.adid);
  showfilters();
}

function setgroup(n){
  document.filters.grouponly=n;
  setadid(document.filters.adid);
  showfilters();	
}

function setemptyroom(n){
  document.filters.neroom=n;
  setadid(document.filters.adid);
  showfilters();
}

function chartmin(d,price){
  document.filters.minrent=price;
  document.filters.maxrent=-1;
  d.style.backgroundColor='#abffab';
}

function chartmax(d,price){
  document.filters.maxrent=price;
  d.style.backgroundColor='#abffab';
  if (document.filters.minrent>document.filters.maxrent){
    var t=document.filters.minrent;
    document.filters.minrent=document.filters.maxrent;
    document.filters.maxrent=t;
  }
  setadid(document.filters.adid);
  showfilters();
}

function clearprice(){
  document.filters.minrent=-1;
  document.filters.maxrent=-1;
  setadid(document.filters.adid);
  showfilters();
}


function showfilters(){
  var html=[];
  if (document.filters.nroom>-1) html.push('# rooms: '+document.filters.nroom+' <a href="#" onclick="setroom(-1);">[x]</a>');
  if (document.filters.neroom>-1) html.push(document.filters.neroom+' empty rooms <a href="#" onclick="setemptyroom(-1);">[x]</a>');
  if (document.filters.minrent>-1&&document.filters.maxrent>-1)
    html.push('Price range: $'+document.filters.minrent+' to $'+document.filters.maxrent+' <a href="#" onclick="clearprice();">[x]</a>');
  if (document.filters.grouponly>-1) {
	  var policy="Groups & singles welcome";
	  if (document.filters.grouponly==1) policy="Groups only";
	  html.push('Occupancy: '+policy+' <a href="#" onclick="setgroup(-1);">[x]</a>');
  }
  if (html.length>1) {
	html.push('<a href="#" onclick="setroom(-1);setemptyroom(-1);clearprice();setgroup(-1);">clear all filters</a>');	  
  }  
  gid('filterlist').innerHTML=html.join('<br>');
}

function updatemap(){
  var rq=xmlHTTPRequestObject();
  var params=makeparams();
  var map=document.map;
  
  var minlat=map.getBounds().getNorthEast().y;
  var minlng=map.getBounds().getNorthEast().x;
  var maxlat=map.getBounds().getSouthWest().y;
  var maxlng=map.getBounds().getSouthWest().x;
  var t;
  if (minlat>maxlat){t=minlat;minlat=maxlat;maxlat=t;}
  if (minlng>maxlng){t=minlng;minlng=maxlng;maxlng=t;}
  
  params+='&minlat='+minlat+'&minlng='+minlng+'&maxlat='+maxlat+'&maxlng='+maxlng;
  
  rq.open('GET',document.srv+'?cmd=map&'+params+'&hb='+hb(),true);
  rq.onreadystatechange=function(){
    if (rq.readyState==4){
      document.map.clearOverlays();
      var objs=eval(rq.responseText);
      for (var i=1;i<objs.length;i++){
        var obj=objs[i];
        var lat=obj.lat, lng=obj.lng;
        var marker=new GMarker(new GLatLng(lat,lng));
        var showinfo=function(o){
	        return function(){
		        document.movelock=true;
		        //var html=o.addr+'<br>'+o.mrent;
		        //document.map.openInfoWindowHtml(new GLatLng(o.lat,o.lng),html);
	        }
        }
        
        GEvent.addListener(marker,'click',showinfo(obj));
        document.map.addOverlay(marker);
        
      }
    }
  }
  rq.send(null);
}

function strippx(d){
	if (d=='0') d='0px';
	return parseInt(d.substring(0,d.length-2),10);	
}

function slide(d,min,max){
	var w=d.parentNode.offsetWidth-6;
	
	var ox,x;
	var dragging=false;
	var posx=strippx(d.style.left);
	
	var ub=w, lb=0;
	if (d.id=='curmin') ub=strippx(gid('curmax').style.left)-6;
	if (d.id=='curmax') lb=strippx(gid('curmin').style.left)+6;
	
	d.onmousemove=function(e){
		if (e) x=e.clientX; else x=event.clientX;
		if (!dragging){
			dragging=true;
			ox=x;
		}
		var nx=posx+x-ox;
		if (nx>ub) nx=ub;
		if (nx<lb) nx=lb;
		d.style.left=nx+'px';	
		var value=min+nx*(max-min)/w;
		value=parseInt(value,10);
		gid('pricelabel').innerHTML='$'+value;
	}
	
	d.onmouseup=function(){
		document.onmousemove=null;
		d.onmousemove=null;	
		d.onmouseup=null;
		document.onmouseup=null;
		var value=min+strippx(d.style.left)*(max-min)/w;
		value=parseInt(value,10);
		if (d.id=='curmin') {
			document.filters.minrent=value;
			document.filters.maxrent=max;
		}
		if (d.id=='curmax') {
			document.filters.maxrent=value;
			document.filters.minrent=min;
		}
		
		setadid(document.filters.adid);
		showfilters();		
	}
	
	document.onmousemove=d.onmousemove;
	document.onmouseup=d.onmouseup;	
}

function initmap(){
  document.map=new GMap2(gid('map'));
  document.map.setCenter(new GLatLng(43.4762,-80.5297),14);  
  GEvent.addListener(document.map,'moveend',applymaprange);
  document.map.addControl(new GSmallMapControl());
  updatemap();
}

function reorder(){
  var t;
  if (document.filters.minlat>document.filters.maxlat){
	  t=document.filters.minlat;
	  document.filters.minlat=document.filters.maxlat;
	  document.filters.maxlat=t;
  }	
  if (document.filters.minlng>document.filters.maxlng){
	  t=document.filters.minlng;
	  document.filters.minlng=document.filters.maxlng;
	  document.filters.maxlng=t;
  }
}

function setmaplock(d){
	if (d.checked){
		document.movelock=null;
		applymaprange();	
	} else {
		document.filters.minlat='';
		document.filters.minlng='';
		document.filters.maxlat='';
		document.filters.maxlng='';
		setadid(document.filters.adid);
		showfilters();			
	}
}

function setpage(page){
	ajxpgn('results',document.srv+'?cmd=ads&'+makeparams()+'&page='+page);	
}

function showdetails(adiid,lat,lng){
	gid('details_'+adiid).style.display='block';
	if (gid('details_'+adiid).lasthtml!=null){
		gid('details_'+adiid).innerHTML = gid('details_'+adiid).lasthtml;
		gid('details_'+adiid).lasthtml=null;
		return;	
	}
	gid('details_'+adiid).lasthtml=gid('details_'+adiid).innerHTML;
	ajxpgn('details_'+adiid,document.srv+'?cmd=details&adiid='+adiid);
	document.movelock=true;
	document.map.panTo(new GLatLng(lat,lng));	
}

function applymaprange(){
	if (document.movelock){
		document.movelock=null;
		return;	
	}
	if (!gid('maplock').checked) {
		updatemap();
		return;
	}
	var map = document.map;
	document.filters.minlat=map.getBounds().getNorthEast().y;
	document.filters.minlng=map.getBounds().getNorthEast().x;
	document.filters.maxlat=map.getBounds().getSouthWest().y;
	document.filters.maxlng=map.getBounds().getSouthWest().x;
	reorder();
	setadid(document.filters.adid);
	showfilters();	
	map=null;	
}

function swapimage(d,piid,prid){
	var mypiid=gid('recimage_'+prid).attributes.piid.value;
	gid('recimage_'+prid).attributes.piid.value=d.attributes.piid.value;
	d.attributes.piid.value=mypiid;
	d.src='primgs/thumb_'+d.attributes.piid.value;
	gid('recimage_'+prid).src='primgs/'+gid('recimage_'+prid).attributes.piid.value;	
}
