var _marker = [];
var _markerInnerHTML = [];

var order; 
var order2;

var map;
var geocoder;
var zoomInt = 3;
var defaultZoom = 15;
var dist1,dist2,dist;
var iCnt;
var arrdist=new Array();
var point;
var _currentID;
var _currentID2;

var iPage = 1;
var iCountAll;
var aData;
var aAddress = new Array;

var address; 
var	city;
var zip;
var state;

var _HTML='';


function _onUnload(){
	GUnload();
}

function _onLoad_autoSearch(){
	if (GBrowserIsCompatible()){
		map = new GMap2(getObject("map"));
		GEvent.addListener(map, "moveend", function() {var center = map.getCenter();});
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl());
		geocoder = new GClientGeocoder();
		searchDestination();
	}
}

function _onLoad(){
	if (GBrowserIsCompatible()){
		map = new GMap2(getObject("map"));
		GEvent.addListener(map, "moveend", function() {var center = map.getCenter();});
		axis = new GLatLng(37.4419, -122.1419);
		map.setCenter(axis, defaultZoom);
		map.addControl(new GLargeMapControl());
		geocoder = new GClientGeocoder();
	}
	
	 searchAddress("",1, axis);
}


function showAddress(address) {
	if (geocoder) {
  	geocoder.getLatLng(
        address,
        function(point) {
           if (!point) {

              showErrorMsg(address + " not found");
            } else {
              map.setCenter(point, defaultZoom);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
							searchAddress(aAddress, iPage, point);
            }
          }
        );
      }
    }

function searchDestination(){
	var aAddress_current = new Array;
	aAddress[1] = getObject('sWord_address').value;
//	aAddress[2] = getObject('sWord_city').value;
//	aAddress[3] = getObject('sWord_state').value;;
//	aAddress[4] = getObject('sWord_zip').value;
	aAddress[5] = order;
	detailsHide();

	i=0;
	for(var k in aAddress){
		if(k==5){
			continue;
		}
		if(aAddress[k] != ""){
			aAddress_current[i] = aAddress[k];
			i++;
		}
	}

	address = aAddress_current.join(', ');

	if(address){
		showAddress(address);
	}
	else{
//		showErrorMsg('Please enter valid Address.');	
	}
	
}

function onMySuccess_details(req){
	_aGaragesDetails = evalJson(req.responseText);
	
	aGaragesDetails = _aGaragesDetails['details'];
	aGaragesRates = _aGaragesDetails['rates'];
	
	_HTML2 = '<table width="95%" cellpadding="5" class="info_table">';	

	_HTML2 += '<tr>';
	_HTML2 += '<td><b>'+aGaragesDetails["fldGarageName"]+'</b></td>';
	_HTML2 += '</tr>';

	_HTML2 += '<tr>';
	_HTML2 += '<td>'+aGaragesDetails["fldAddress"]+' '+aGaragesDetails["fldCity"]+' '+aGaragesDetails["fldZipCode"]+'</td>';
	_HTML2 += '</tr>';

	_HTML2 += '<tr>';
	_HTML2 += '<td><img src="files/img/phone_icon.jpg"> '+aGaragesDetails["fldPhone"]+'<br /><b>'+aGaragesDetails["fldCompanyName"]+'</b></td>';
	_HTML2 += '</tr>';
	
	_HTML2 += '<tr>';
	_HTML2 += '<td>';
	_HTML2 += '<table width="100%" bgcolor="#666666" cellspacing="1" cellpadding="1">';

	var arrayRates = new Array; 

	var _myListOrder = getObject('divOrder').innerHTML;
	if(_myListOrder == 'Hourly'){
			_arrayRates = aGaragesRates["hourly"];
		}
	else if(_myListOrder == 'Daily'){
			_arrayRates = aGaragesRates["daily"];
		}
	else if(_myListOrder == 'Monthly'){
			_arrayRates = aGaragesRates["monthly"];
		}
	else{
			_arrayRates = aGaragesRates["all"];
		}

	if(_arrayRates.length > 0){
		_HTML2 += '<tr bgcolor="#FFFF99">';
		_HTML2 += '<td>Hr</td>';
		_HTML2 += '<td>Rate</td>';
		_HTML2 += '<td>Day Range</td>';
		_HTML2 += '<td>Enter</td>';
		_HTML2 += '<td>Exit</td>';
		_HTML2 += '</tr>';


		var fldRateType = 0;
		for(i=0;i<_arrayRates.length;i++){
			if(fldRateType != _arrayRates[i]['fldRateType']){
				 _HTML2 += '<tr bgcolor="#EDFFDF">';
			   _HTML2 += '<td colspan="5"><b>'+_arrayRates[i]['fldRateType']+'</b></td>';
				 _HTML2 += '</tr>';
			}
			fldRateType = _arrayRates[i]['fldRateType'];

			_HTML2 += '<tr bgcolor="#FFFFFF">';
			_HTML2 += '<td> '+_arrayRates[i]['fldTime']+'</td>';
			_HTML2 += '<td> $'+_arrayRates[i]['fldAmount']+'</td>';
			_HTML2 += '<td> '+_arrayRates[i]['fldDayRange']+'</td>';
			_HTML2 += '<td> '+_arrayRates[i]['fldFromTime']+'</td>';
			_HTML2 += '<td> '+_arrayRates[i]['fldToTime']+'</td>';
			_HTML2 += '</tr>';

		}
		fldRateType = 0;
	}

	_HTML2 += '</table>';
	_HTML2 += '</td>';
	_HTML2 += '</tr>';


	if(aGaragesDetails["fldGarageSpecial"]){	
		_HTML2 += '<tr>';
		_HTML2 += '<td><span class="info_title">Specials:</span><br />&bull; '+nl2br(aGaragesDetails["fldGarageSpecial"])+'</td>';
		_HTML2 += '</tr>';
	}
	_HTML2 += '<tr>';
	_HTML2 += '<td><span class="info_title">Helpful Information :</span></td>';
	_HTML2 += '</tr>';

	
	if(aGaragesDetails["fldOperationTime"]){
		_HTML2 += '<tr>';
		_HTML2 += '<td>&bull; <b>'+nl2br(aGaragesDetails["fldOperationTime"])+'</b> Hours Of Operation</td>';
		_HTML2 += '</tr>';

	}

	if(aGaragesDetails["fldAcceptCreditCard"] == "Yes"){
		_HTML2 += '<tr>';
		_HTML2 += '<td>&bull; Accept Credit Cards</td>';
		_HTML2 += '</tr>';

	}
	
	if(aGaragesDetails["fldOverSizeVehicle"] == "Yes"){
		_HTML2 += '<tr>';
		_HTML2 += '<td>&bull; Oversize Vehicle Present</td>';
		_HTML2 += '</tr>';

	}
	
	if(aGaragesDetails["fldGarageDescription"]){
		_HTML2 += '<tr>';
		_HTML2 += '<td>&bull; '+nl2br(aGaragesDetails["fldGarageDescription"])+'</td>';
		_HTML2 += '</tr>';
	}

	_HTML2 += '</table>';

	getObject('_details').innerHTML = _HTML2;
}

function getDetails(id){
	surl = url_garages_details+'?id='+id;
	GetRequest(surl, '_details', 'loader');
}

function detailsHide(){
	showDiv('_results');
	hideDiv('_details');

	hideDiv('closeDiv');
	showDiv('divBorderBottom');
	try{
		getObject('div_show_details').innerHTML='[show details]';
		getObject('div_show_details').href="javascript:detailsShow("+_currentID2+")";
	}	
	catch(e){}
}

function detailsShow(id){
	hideDiv('_results');
	showDiv('_details');
	
	showDiv('closeDiv');
	hideDiv('divBorderBottom');

	_currentID2 = id;
	getObject('div_show_details').innerHTML='[hide details]';
	getObject('div_show_details').href="javascript:detailsHide();"
	getObject('div_show_details').id = 'div_show_details';
	getDetails(id);	
}

function renderTable(){
	_HTML = '<table width="100%" cellspacing="0" cellpadding="0" border="0">';
		_HTML += "<tr style='height:40px;'>";	
		_HTML += "<td style='border-bottom:1px solid #000000;width:3px;'>&nbsp;</td>";
		_HTML += "<td style='border-right:1px solid #000000;border-bottom:1px solid #000000;'>&nbsp;</td>";
		_HTML += "<td style='border-right:1px solid #000000;border-bottom:1px solid #000000;text-align:center;width:70px;' class='f_middle_orange_13b'><span id='divOrder'>Hourly</span><br />Rate</td>";
		_HTML += "<td style='border-bottom:1px solid #000000;text-align:center;width:70px;' class='f_middle_orange_13b'>Prox. to<br />Dest.</td>";
		_HTML += "</tr>";
	

	for(i=0;i<aData.length;i++){
		
		if(aData[i]["fldPhone"]){
			var phone = '<br /><img src="files/img/phone_icon.jpg"> '+aData[i]["fldPhone"];
		}
		else{
			var phone = '';
		}
		_markerInnerHTML[aData[i]["fldGarageId"]] = "<br /><div align='left'><b>"+aData[i]['fldGarageName']+"</b><br />"+aData[i]['fldAddress']+"<br />"+aData[i]['fldCity']+" "+aData[i]['fldZipCode']+phone+"</div><div align='right'><a href='javascript:detailsShow("+aData[i]["fldGarageId"]+");' class='lnk_green_10' id='div_show_details'>[show details]</a></div>";
		addToMap(aData[i]["fldlong"], aData[i]["fldlat"], aData[i]["fldGarageId"]);
	
		_HTML += "<tr style='height:50px;padding:3px;cursor:pointer;' onMouseOver='changeBGColor(this, \"#EEFFCF\");' onMouseOut='changeBGColor(this, \"#FFFFFF\");' onclick='detailsShow("+aData[i]["fldGarageId"]+")' id='"+aData[i]["fldGarageId"]+"'>";	
		_HTML += "<td style='border-right:0px solid #000000;border-bottom:1px solid #000000;padding-right:3px;'>"+(i+((iPage-1)*6)+1)+".</td>";
		_HTML += "<td style='width:240px;border-right:1px solid #000000;border-bottom:1px solid #000000;' onmouseover='showGoogleIcon("+aData[i]["fldlong"]+", "+aData[i]["fldlat"]+", "+aData[i]["fldGarageId"]+");'>";
		_HTML += "<b><a href='javascript:detailsShow("+aData[i]["fldGarageId"]+")' class='lnk_black_11b'>"+aData[i]['fldGarageName']+"</a></b><br />";
		_HTML += "<span class='f_list_address'>"+aData[i]['fldAddress']+"</span><br />";
		_HTML += "<span class='f_list_address'>"+aData[i]['fldCity']+' '+aData[i]['fldZipCode']+"</span><br />";
		_HTML += "<span style='display:none'></span>";
		_HTML += "</td>";
		_HTML += "<td style='border-right:1px solid #000000;border-bottom:1px solid #000000;text-align:center;'>"+(aData[i]['minRate'] ? "$"+aData[i]['minRate'] : '-')+"</td>";
		_HTML += "<td style='border-bottom:1px solid #000000;text-align:center;'>"+aData[i]['ProxDistance']+"</td>";
		_HTML += "</tr>";
}
	

	_HTML += '</table>';
}

function genNavigation(){
	var nav = Navigation.get( {"iNumPage" : iPage });
	
	nav.iPageCount = 7;
	nav.iAllCount = iCountAll;
	nav.sExtraParam = '';
	nav.iJsFunction = 1;
	nav.makeHTML();

	
	var divNavigationBottom = getObject('divBorderBottom');
	divNavigationBottom.innerHTML = nav.sHtml;
}

function onMySuccess_searchAddress(req){
	sJsonList = req.responseText;

	//getObject('test').innerHTML = sJsonList;
	aGaragesList = evalJson(sJsonList);
	iCountAll = aGaragesList['count_all'];
	
	genNavigation();

	if(iCountAll == 0){
		getObject('_results').innerHTML = '<p align="center">No Garages Found</p>';
	}
	else{
		aData = aGaragesList['data'];
		renderTable();
		getObject('_results').innerHTML = _HTML;
		
		try{
			if(aAddress[5] == 'H'){
				getObject('divOrder').innerHTML = 'Hourly';
			}
			else if(aAddress[5] == 'D'){
				getObject('divOrder').innerHTML = 'Daily';
			}
			else if(aAddress[5] == 'M'){
				getObject('divOrder').innerHTML = 'Monthly';
			}
			else if(aAddress[5] == 'A'){
				getObject('divOrder').innerHTML = 'All';
			}
		}
		catch(e){}

	}	
}

function searchAddress(aAddress, page, sAxis){

	lurl = url_garages_list+'?limit=6';

	if(aAddress[1]){
		lurl += '&address='+escape(aAddress[1]);
	}
	
	if(aAddress[2]){
		lurl += '&city='+escape(aAddress[2]);
	}
	
	if(aAddress[3]){
		lurl += '&state='+escape(aAddress[3]);
	}
	
	if(aAddress[4]){
		lurl += '&zip='+escape(aAddress[4]);
	}
	
	if(aAddress[5]){
		lurl += '&order='+escape(aAddress[5]);


	}

	if(aAddress[6]){
		lurl += '&point='+escape(aAddress[6]);
	}

	if(sAxis){
		lurl += '&axis='+escape(sAxis);
	}

	if(page){
		lurl += '&p='+page;
	}
	
	if(order2){
		lurl += '&order2='+order2;
	}

	GetRequest(lurl, '_searchAddress', 'loader');
}

function getPage(i){
	iPage = i;
	searchDestination();	
}

function showErrorMsg(msg){
	alert(msg);
}


function getBubbleHTML(id){
	return _markerInnerHTML[id];
}

function showGoogleIcon(x,y, id){
	point = new GLatLng(x,y);
	map.panTo(point, 7);
//	map.closeInfoWindow();
	_marker[id].openInfoWindowHtml(getBubbleHTML(id));
	//_marker[id].hide();
}

function createMarker(point, picon) {
	var marker = new GMarker(point, picon);
  return marker;
}

function addToMap(x,y, id){
	 
	// Retrieve the latitude and longitude
	point = new GLatLng(y,x);
	
	// Icon
	var icon = new GIcon();
	icon.image="files/img/parkingicon.png";
	icon.iconSize = new GSize(25, 25);
	icon.iconAnchor = new GPoint(25, 25);
	icon.infoWindowAnchor = new GPoint(10, 10);

  // Create a marker
  _marker[id] = createMarker(point, icon);
	
	GEvent.addListener(_marker[id],  "mouseover", function(){
				_marker[id].openInfoWindowHtml(getBubbleHTML(id));
			});

  map.addOverlay(_marker[id]);

}


