
function formatLowerCase(a)
{
    a = a.toLowerCase();
    
    var b = "";
    var len = a.length;
    for (var i=0; i<len; i++)
    {
        var c = a.substr(i,1);
        if (c != '\"')
        {
            b += c;
        }
    }
    
    return b;

}

function Place()
{
    this.m_placeID = "";
    this.m_marker = null;
    this.m_bounds = null;
    this.m_extendedData = {};

}

Place.prototype.m_loadJS = function(a, ix)
{
    this.m_placeID = ix;

    this.m_name = a[0];
    this.m_nameLower = formatLowerCase(this.m_name);               

    var x = parseFloat(a[1])
    var y = parseFloat(a[2]);
    this.m_point = new GLatLng(y,x);
    
    var rank = parseFloat(a[3]);  // z-index (rank)
    this.z = 10 - rank;     // reverse rank to get z property   // min z = 12
    
    /* if (this.z > 15)
    {
        this.z = 15;
    } */

    this.m_region = a[4];
    
    this.m_description = a[5];
    
    this.m_category = "poi";    
    this.m_subcategory = a[6];
    
    this.m_extendedData = a[7];
}


Place.prototype.m_loadCityJS = function(a)
{
    this.m_placeID = a[0];
    this.m_name = a[1];
    this.m_nameLower = formatLowerCase(this.m_name);               
    
    this.m_region = a[2];
    
    this.m_category = "city";
    this.m_subcategory = "";
    
    var x = a[3];
    var y = a[4];
    this.m_point = new GLatLng(y,x);
    
    this.z = -1;    // 1000000;   // highest z index
    
    var swx = a[5];
    var swy = a[6];
    var nex = a[7];
    var ney = a[8];
    
    var sw = new GLatLng(swy, swx);
    var ne = new GLatLng(ney, nex);
    
    this.m_bounds = new GLatLngBounds(sw, ne); 
}

Place.prototype.m_showInfo = function(p_point, p_recentre)
{
    gen.m_selectedPlace = this;
    
    if (p_recentre)
    {
        map.setCenter(p_point);
    }
    
    // zoom in
    /* var l_zoom = map.getZoom();
    if (l_zoom < 17)
    {
        map.setZoom(17);
    } */   
    map.setZoom(14);
    if (!this.m_overlay)
    {
        this.m_createOverlay();
    }
    
    var l_interior = this.m_extendedData.interior;
    var l_exterior = this.m_extendedData.exterior;
    
    var html = "<b>" + this.m_name + "</b><br/>" + this.m_description + "<br/>";
    var name  = this.m_name+" - GlobalVision Communication";
    html += "<table><tr valign=top><td>";
    if (l_exterior)
    {
        html += "<a href='javascript:showExterior()'>Exterior</a>&nbsp;";

        showExterior();
    }

    html  += "</td><td>";
    
    if (l_interior)
    {
        html += "<a href='javascript:showInterior()'>Interior</a>";
        
        if (!l_exterior)
        {
            showInterior();
        }
    }

    html += "</td></tr></table>";
    
    html += "<p><a href='javascript:zoomIn()'>Zoom In</a> - <a href='javascript:zoomOut()'>Zoom Out</a></p>";
        
    
        

    this.m_overlay.openInfoWindowHtml(html);
	if(l_interior || l_exterior)
	{
		if(document.getElementById("panDiv2").innerHTML == "")
		{
			dhtmlwindow.close();
		}else
			dhtmlwindow.open('divbox', 'div', 'panDiv2',name, 'width=720px,height=350px,left=35px,bottom=5px,resize=1'); 
	}
    
    
}

Place.prototype.m_createOverlay = function()
{
    var l_place = this;

    var l_icon = new GIcon();
    
    // create new marker
    if (this.m_category == "city")
    {
        l_icon.image = "canton/" + this.m_region + ".png";
        l_icon.iconSize = new GSize(25,25);

        l_icon.printImage = l_icon.image;
        l_icon.mozPrintImage = l_icon.image;
        l_icon.iconAnchor =  new GPoint(12,12);
        l_icon.infoWindowAnchor = new GPoint(12,0);
    }
    else
    {
        var l_subcategory = gen.m_categoryList[this.m_subcategory];
        if (!l_subcategory)
        {
            return;
        }
        
        l_icon.image = l_subcategory.m_markerUrl;
        l_icon.iconSize = new GSize(l_subcategory.m_width, l_subcategory.m_height);

        l_icon.printImage = l_icon.image;
        l_icon.mozPrintImage = l_icon.image;
        l_icon.iconAnchor =  new GPoint(Math.floor(l_subcategory.m_width / 2), l_subcategory.m_height);
        l_icon.infoWindowAnchor = new GPoint(Math.floor(l_subcategory.m_width / 2), 0);
    }
    var l_title = this.m_name;
    
    var l_overlay = new GMarker(l_place.m_point, {"icon":l_icon,"title":l_title}); 
    map.addOverlay(l_overlay);  

    l_overlay.setZ(100 - l_place.z);  // set marker zindex   

    this.m_overlay = l_overlay;
    
    l_overlay.m_place = this;   // to enable rank(z) to be applied)
    
    // click handler 
    if (this.m_category == "city")
    {       
        GEvent.addListener(l_overlay, 'click', function(p_point) 
        {
            cityClick(l_place.m_placeID);
        });
    }
    else
    {
        GEvent.addListener(l_overlay, 'click', function(p_point) 
        {
            l_place.m_showInfo(p_point,false);
        });
    }
    
}

Place.prototype.m_getIndexHtml = function()
{
    var l_html = "";
        
    if (this.m_category == "city")
    {        
        l_html += 
            "<div style='width:150px;padding:2px;height:30px;float:left'>" +
            "<table><tr valign='middle'><td>" +
            "<img src='canton/" + this.m_region + ".png' width='25' height='25' /></td><td>" +
            "<a href='javascript:cityClick(\"" + this.m_placeID + "\");'>" + this.m_name + "</a> " + this.m_region +
            "</td></tr></table></div>";
    }
    else
    {
        l_html += 
            "<div style='width:220px;padding:2px;height:15px;float:left'>" +
            "&bull; <a href='javascript:placeClick(" + this.m_placeID +");'>" + this.m_name + "</a></div> ";
    }
    
        
    return l_html;
}

// TODO
function zoomIn()
{
    map.setZoom(17);
}

function zoomOut(id)
{
    map.zoomOut();
}

function showInterior()
{

    var l_interior = gen.m_selectedPlace.m_extendedData.interior;
    
    eID("panDiv2").innerHTML = 
        
"	<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"720\" height=\"400\" >\r\n" +
"        <param name=\"movie\" value=\"" + l_interior + "\">\r\n" +
"	    <param name=\"allowFullScreen\" value=\"true\">\r\n" +
"	    <embed width=\"720\" height=\"400\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"\r\n" +
"            type=\"application/x-shockwave-flash\" src=\"" + l_interior + "\" allowFullScreen=\"true\" />\r\n" +
"	</object>";
    dhtmlwindow.open('divbox', 'div', 'panDiv2', 'Panorama Image', 'width=720px,height=350px,left=35px,bottom=5px,resize=1');

}


function showExterior()
{
    var l_exterior = gen.m_selectedPlace.m_extendedData.exterior;
    
    eID("panDiv2").innerHTML = 

"	<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"720\" height=\"400\" >\r\n" +
"        <param name=\"movie\" value=\"" + l_exterior + "\">\r\n" +
"	    <param name=\"allowFullScreen\" value=\"true\">\r\n" +
"	    <embed width=\"720\" height=\"400\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"\r\n" +
"            type=\"application/x-shockwave-flash\" src=\"" + l_exterior + "\" allowFullScreen=\"true\" />\r\n" +
"	</object>";
dhtmlwindow.open('divbox', 'div', 'panDiv2', 'Panorama Image', 'width=720px,height=350px,left=35px,bottom=5px,resize=1');
}

GMarker.prototype.setZ = function(a) 
{
    var marker = this;
    var z = "";    
    for (var i in marker)
    {
	    if (eval("typeof marker." + i) == "object")
	    {
		    try {
			    if (eval("typeof marker." + i + "[0].src") != "undefined")
			    {
				    var t = "this." + i;
				    z = t + "[0]";
			    }
		    }
		    catch (ex) {}
		}
	}
    
    // set index
    eval(z + ".style.zIndex = a")
    this.redraw(true);
}


