var markers = new Array();
var font_size=11;
var map = null;
var map2 = null;
var marker_index = 1;
var address_index = 0;
var addresses = new Array();
var latlongObjs = new Array();
var pushpinSkin = new Array();
var pushpinDetails = new Array();
var largeMapDrawn = false;
var indexes = new Array();
var pins = new Array();
var theMap = 0;
var layer = null;

function el_id(elm_id){
    if(document.getElementById(elm_id)) return document.getElementById(elm_id);
    else return 0;
}

function show_more(big_logo_name, hid_block_id, profile, ids, go_profile, cnt, groupurl)
{
	if ( (groupurl != '') && (groupurl != undefined) )
	{
		location.href = groupurl;
		return false;
	}
	if (lang_version == 'fr')
	{
		var close = 'Fermer';
		var phone_and_info = 'Tel et info';
		var tb = '-240px -24px';
		var tw = '67px';
		var twc = '56px';
	}
	else
	{
		var close = 'Close';
		var phone_and_info = 'Phone &amp; Info';
		var tb = '-68px -46px';
		var tw = '82px';
		var twc = '54px';
	}
    
    var tbl = el_id('tab_info_'+hid_block_id);
    if(el_id('morelink_'+hid_block_id).innerHTML != close)
    {
	    el_id('comp_hid_'+hid_block_id).style.display = 'block';
	    el_id('comp_id_'+hid_block_id).style.display = 'none';	    
	    if(el_id('logo_id_'+hid_block_id).src) el_id('logo_id_'+hid_block_id).src = el_id('logo_id_'+hid_block_id).src.replace('/small', '');
        el_id('morelink_'+hid_block_id).innerHTML = close;  
	    el_id('ccats'+hid_block_id).style.display='block';
                
        tbl.style.width=twc;
	tab_over('tab_info_', hid_block_id, 'out');
 
	    el_id('addrdiv_'+hid_block_id).style.width='320px';
	    el_id('priologo_'+hid_block_id).style.width='140px';
        for(var i=0; i<push_pin_coords.length; i++){
                if(push_pin_coords[i].ids==ids){ 
                        map.setCenter(new GLatLng(push_pin_coords[i].lat, push_pin_coords[i].long), 14);
                }
        }
        el_id('dont_scroll').checked=false;        
    } else {
    	if (go_profile == 1)
	{
		location.href = profile;
		return true;
	}
        el_id('comp_hid_'+hid_block_id).style.display = 'none';
        el_id('comp_id_'+hid_block_id).style.display = 'block';       
        if(el_id('logo_id_'+hid_block_id).src) el_id('logo_id_'+hid_block_id).src = el_id('logo_id_'+hid_block_id).src.replace('img.411.ca/', 'img.411.ca/small/');
        el_id('morelink_'+hid_block_id).innerHTML = phone_and_info;
        el_id('addrdiv_'+hid_block_id).style.width='398px';
        el_id('priologo_'+hid_block_id).style.width='74px';  
	    el_id('ccats'+hid_block_id).style.display='none';
        
        tbl.style.backgroundPosition = tb;
        tbl.style.width=tw;
	tab_over('tab_info_', hid_block_id, 'out');
    }
}

function tab_over(prefix, tab_id, what){
   if(prefix=='tab_info_')
   { 
        if ((el_id(prefix+tab_id).style.width == '56px') || (el_id(prefix+tab_id).style.width == '54px') )
	{
		if (lang_version == 'fr')
		{
	                if (el_id(prefix+tab_id).className=='tabprofilefr')
				var pos = (what=='over'?'-180px -100px':'-180px -80px');
			else if (el_id(prefix+tab_id).className=='ntabprofilefr')
				var pos = (what=='over'?'-320px -78px':'-320px -60px');
		}
		else
		{
	                if (el_id(prefix+tab_id).className=='tabprofile')
				var pos = (what=='over'?'-68px -28px':'-122px -27px');
			else if (el_id(prefix+tab_id).className=='ntabprofile')
				var pos = (what=='over'?'-320px -42px':'-320px -24px');
		}
        }
	else
	{
		if (lang_version == 'fr')
		{
		        if (el_id(prefix+tab_id).className=='tabprofilefr') 
			{
				var pos = (what=='over'?'-240px -42px':'-240px -24px');
			}
		        else
			{
				var pos = (what=='over'?'-240px -78px':'-240px -60px');
			}
		}
		else
		{
	                if (el_id(prefix+tab_id).className=='tabprofile')
				var pos = (what=='over'?'-68px -64px':'-68px -46px');
	                else
				var pos = (what=='over'?'-68px -100px':'-68px -82px');
		}
	}
   }
   if(prefix=='tabprofile_')
   {
        if (el_id(prefix+tab_id).className=='tabprofile') 
	{
		var pos = (what=='over'?'-68px -64px':'-68px -46px');
	}
        else
	{
		var pos = (what=='over'?'-68px -100px':'-68px -82px');
	}
   }     
   if(prefix=='tabwebsite_')
   {
   	if (lang_version == 'fr')
	{
	   	var pos = (what=='over'?'-180px -42px':'-180px -24px');
	}
	else
	{
	   	var pos = (what=='over'?'0px -136px':'0px -118px');
	}
   }
   el_id(prefix+tab_id).style.backgroundPosition = pos;
}

function company_over(comp_hblock_id, comp_id, cnt, pp){
    if(el_id('dhov'+comp_hblock_id).className=='priortitle'){ 
        var color1='#c9eaf9';
        var color2='#f0f9fe';
	if (pp == 1) { color1 = '#FF4600'; }
	if (pp == 2) { color1 = '#0079C2'; }
	if (markers[cnt])
	{
		var num = cnt;
		zi[num] = document.getElementById('marker'+num).style.zIndex;
		document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelOver';
		document.getElementById('marker'+num).style.zIndex = 1000;
	}
    }
    else { 
        var color1 = '#fbfaf3';
        var color2 = '#fbfaf3';
	if (markers[cnt])
	{
		var num = cnt;
		zi[num] = document.getElementById('marker'+num).style.zIndex;
		document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelOverG';
		document.getElementById('marker'+num).style.zIndex = 1000;
	}
        if(el_id('priologo_'+comp_hblock_id)) el_id('priologo_'+comp_hblock_id).style.backgroundColor=color2;        
        if(el_id('ctr_'+comp_hblock_id)) el_id('ctr_'+comp_hblock_id).style.backgroundColor=color2;                   
    }
    if(el_id('dhov'+comp_hblock_id)) el_id('dhov'+comp_hblock_id).style.backgroundColor=color1;
    if(el_id('addrdiv_'+comp_hblock_id)) el_id('addrdiv_'+comp_hblock_id).style.backgroundColor=color2;
}

function company_out(comp_hblock_id, comp_id, cnt, pp)
{
    if(el_id('dhov'+comp_hblock_id).className=='priortitle'){ 
        var color1='#f0f9fe';
        var color2='#fff'; 
	if (pp == 1) { color1 = '#FF4600'; }
	if (pp == 2) { color1 = '#0079C2'; }
	if (markers[cnt])
	{
		var num = cnt;
		document.getElementById('marker'+num).className = 'LabeledMarker_markerLabel';
		document.getElementById('marker'+num).style.zIndex = zi[num];
	}
    }
    else { 
        var color1 = '#fff';
        var color2 = '#fff';
        if(el_id('priologo_'+comp_hblock_id)) el_id('priologo_'+comp_hblock_id).style.backgroundColor=color2;        
        if(el_id('ctr_'+comp_hblock_id)) el_id('ctr_'+comp_hblock_id).style.backgroundColor=color2;                   
	if (markers[cnt])
	{
		var num = cnt;
		document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelG';
		document.getElementById('marker'+num).style.zIndex = zi[num];
	}
    }
    if(el_id('dhov'+comp_hblock_id)) el_id('dhov'+comp_hblock_id).style.backgroundColor=color1;
    if(el_id('addrdiv_'+comp_hblock_id)) el_id('addrdiv_'+comp_hblock_id).style.backgroundColor=color2;
}

function show_top_categories(boxid){
    for(var i=0; i<=3; i++) el_id('popupcat' + i).style.display='none';
	var obj = el_id('popupcat' + boxid);           
    var left_width = ((document.body.offsetWidth - el_id('yelpaneldat').offsetWidth)/2);
    switch(boxid){                          
        case 3:           
            left_width += el_id('cat_block_2').offsetWidth;                     
        case 2:            
            left_width += el_id('cat_block_1').offsetWidth;          
        case 1:
            left_width += el_id('cat_block_0').offsetWidth;         
            break;
        default:
            left_width -= 11;
    }    
	obj.style.left = ((left_width+11)*1)+'px';
	var height = el_id('afheadbg').offsetHeight + el_id('yelpaneldat').offsetHeight - el_id('cat_block_' + boxid).offsetHeight;   
	obj.style.top = ((height-1)*1)+'px';
 	obj.style.display='block';
}


function FontSizeMinus()
{
    if (font_size == 11) { font_size = 9; }
    if (font_size == 13) { font_size = 11; }
    adjustFontSize(font_size);
}

function FontSizePlus()
{
    if (font_size == 11) { font_size = 13; }
    if (font_size == 9) { font_size = 11; }
    adjustFontSize(font_size);
}

function adjustFontSize(toValue) {
    var b = document.body;
    b.style.fontSize = toValue + "px";    
}

var blogo_prefix = 'http://img.411.ca/';

var inputStartText = "Starting address...";
var inputEndText = "Ending address...";

var directionsPair = new Array();

function CreateMap() {
    map = new VEMap('tinyMapDiv');    
}

function lage_map(){
    if(!largeMapDrawn) {                             
    
        el_id('fullMapDiv').style.display='block';
        el_id('fullMapDiv').style.visibility='visible';
        el_id('resz').style.display='block';
        el_id('resz').style.visibility='visible'; 
        el_id('tinyMapDiv').style.display='none';
        el_id('smoll_map_div').style.display='none';        
        el_id('map_div').style.top=((795)*1)+'px';        
        el_id('check_scroll').style.display='none';
        
       	if (GBrowserIsCompatible())
	{
		map2 = new GMap2(document.getElementById("fullMapDiv"));
		var latCenter = parseFloat(lat_coords) + parseFloat((lat_coords2 - lat_coords) / 2);
		var longCenter = parseFloat(long_coords) + parseFloat((long_coords2 - long_coords) / 2);
		var center = new GLatLng(latCenter, longCenter);
		map2.setCenter(center, 13);
		// map2.addControl(new GMapTypeControl());
		// map2.addControl(new GSmallMapControl());
			var customUI = map.getDefaultUI();
                      customUI.controls.scalecontrol = true;
                      map2.setUI(customUI);
		var bounds = new GLatLngBounds;
		for(var i=0; i<push_pin_coords.length; i++)
		{
			var point = new GLatLng(push_pin_coords[i].lat, push_pin_coords[i].long);
			var z = push_pin_coords[i].cnt;
			markers[z] = createMarker(point, push_pin_coords[i].cnt, push_pin_coords[i].pl, push_pin_coords[i].cname, push_pin_coords[i].ids);
			map2.addOverlay(markers[z]);
			bounds.extend(point);
		}
		map2.setZoom(map2.getBoundsZoomLevel(bounds));
        	largeMapDrawn = true;
	}
    } 
}

var zi = new Array();

function createMarker(point, num, pl, cname, ids)
{
	var icon = new GIcon();
	if (pl == 1) { icon.image = '/res/opin_0.png'; }
		else { icon.image = '/res/gpin_0.png'; }
	icon.shadow = '/res/opin_0_shadow.png';
	icon.iconSize = new GSize(20, 23);
	icon.shadowSize = new GSize(30, 23);
	icon.iconAnchor = new GPoint(6, 23);
	icon.infoWindowAnchor = new GPoint(14, 0);
	if (pl == 1) { lClass = 'LabeledMarker_markerLabel'; } else { lClass = 'LabeledMarker_markerLabelG'; }
	opts = {
		"icon": icon,
		"clickable": true,
		"title": cname,
		"labelText": num,
		"labelOffset": new GSize(-8, -30),
		"labelClass": lClass
	}
	var marker = new LabeledMarker(point, opts);
	var url = el_id('profile_info_'+ids).href;
	GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml("<a href='"+url+"' style='color:black;'><b>" + cname + "</b><br>Click for full Profile</a>"); });
	GEvent.addListener(marker, "mouseover", function() {
		zi[num] = document.getElementById('marker'+num).style.zIndex;
		if (pl == 1)
		{
			document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelOver';
		}
		else
		{
			document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelOverG';
		}
		document.getElementById('marker'+num).style.zIndex = 1000;
	});
	GEvent.addListener(marker, "mouseout", function() {
		if (pl == 1)
		{
			document.getElementById('marker'+num).className = 'LabeledMarker_markerLabel';
		}
		else
		{
			document.getElementById('marker'+num).className = 'LabeledMarker_markerLabelG';
		}
		document.getElementById('marker'+num).style.zIndex = zi[num];
	});
	return marker;
}

function LoadGMap()
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("tinyMapDiv"));
		var latCenter = parseFloat(lat_coords) + parseFloat((lat_coords2 - lat_coords) / 2);
		var longCenter = parseFloat(long_coords) + parseFloat((long_coords2 - long_coords) / 2);
		var center = new GLatLng(latCenter, longCenter);
		map.setCenter(center, 13);
		// map.addControl(new GMapTypeControl());
		// map.addControl(new GSmallMapControl());
		var bounds = new GLatLngBounds;
		for(var i=0; i<push_pin_coords.length; i++)
		{
			var point = new GLatLng(push_pin_coords[i].lat, push_pin_coords[i].long);
    			latlongObjs.push(point);
			var z = push_pin_coords[i].cnt;
			markers[z] = createMarker(point, push_pin_coords[i].cnt, push_pin_coords[i].pl, push_pin_coords[i].cname, push_pin_coords[i].ids);
			map.addOverlay(markers[z]);
		}
			var customUI = map.getDefaultUI();
                      customUI.controls.scalecontrol = true;
                      map.setUI(customUI);

		map.setCenter(GetBestView());
		var trafficOptions = {incidents:true};
	        trafficInfo = new GTrafficOverlay(trafficOptions);
	        map.removeOverlay(trafficInfo);
	}
}

function GetBestView()
{

	var bounds = new GLatLngBounds;

    var maxLatDiff = 0.4470846426447679;
    var maxLonDiff = 1.0794067382812642;
    
    var lats = new Array();
    var lons = new Array();
    
    var minLat = 1000;
    var maxLat = -1000;
    var minLon = 1000;
    var maxLon = -1000;
   
    for(var i = 0; i < latlongObjs.length; i++)
    {
        if(latlongObjs[i].lat() < minLat)
            minLat = latlongObjs[i].lat();
        if(latlongObjs[i].lat() > maxLat)
            maxLat = latlongObjs[i].lat();
        if(latlongObjs[i].lng() < minLon)
            minLon = latlongObjs[i].lng();
        if(latlongObjs[i].lng() > maxLon)
            maxLon = latlongObjs[i].lng();
        lats.push(latlongObjs[i].lat());
        lons.push(latlongObjs[i].lng());
    }

    if(Math.abs(maxLat - minLat) < maxLatDiff && Math.abs(maxLon - minLon) < maxLonDiff)
	{
		var latCenter = parseFloat(minLat) + parseFloat((maxLat - minLat) / 2);
		var longCenter = parseFloat(minLon) + parseFloat((maxLon - minLon) / 2);
    		for(var i = 0; i < latlongObjs.length; i++)
		{
			var point = new GLatLng(latlongObjs[i].lat(), latlongObjs[i].lng());
			bounds.extend(point);
		}
		map.setZoom(map.getBoundsZoomLevel(bounds));
		return new GLatLng(latCenter, longCenter);
	}
    
    var bestArray = new Array();
    for(var i = 0, lenLats = lats.length; i < lenLats; i++)
    {
        for(var j = 0, lenLons = lons.length; j < lenLons; j++)
        {
        var tmpArray = new Array();        
            
            for(var k = 0, lenObjs = latlongObjs.length; k < lenObjs; k++)
        {
            latDiff = Math.abs(latlongObjs[k].lat()) - Math.abs(lats[i]);
            lonDiff = Math.abs(latlongObjs[k].lng()) - Math.abs(lons[j]);
                    if(latDiff < maxLatDiff && latDiff > 0 && lonDiff < maxLonDiff && lonDiff > 0)
                        tmpArray.push(latlongObjs[k]);
        }
            
        if(tmpArray.length > bestArray.length)
                    bestArray = tmpArray.slice();
        }
    }

    minLat = minLon = 1000;
    maxLat = maxLon = -1000;
    
    for(var i = 0, lenArr = bestArray.length; i < lenArr; i++)
    {
        if(bestArray[i].lat() < minLat)
            minLat = bestArray[i].lat();
        if(bestArray[i].lat() > maxLat)
            maxLat = bestArray[i].lat();
        if(bestArray[i].lng() < minLon)
            minLon = bestArray[i].lng();
        if(bestArray[i].lng() > maxLon)
            maxLon = bestArray[i].lng();
	var point = new GLatLng(bestArray[i].lat(), bestArray[i].lng());
	bounds.extend(point);
    }

	var latCenter = parseFloat(minLat) + parseFloat((maxLat - minLat) / 2);
	var longCenter = parseFloat(minLon) + parseFloat((maxLon - minLon) / 2);
	map.setZoom(map.getBoundsZoomLevel(bounds));
	return new GLatLng(latCenter, longCenter);

}

