var marker = new Array();
var html = new Array();
var map;
var mapshown=false;
var nextpage;
var query = "";
var area = 0;
var prefix;


function initmap(resp)
{
    document.getElementById('homepage').style.display = 'none';
    document.getElementById('mappage').style.display = 'block';

    //pnt[0] = lat
    //pnt[1] = lng
    //pnt[2] = zoom

    pnt = resp.split(",");
    loc = new google.maps.LatLng(parseFloat(pnt[0]),parseFloat(pnt[1]));
    opts = { zoom: parseInt(pnt[2]), center: loc, mapTypeId: google.maps.MapTypeId.ROADMAP };
    try {
       map = new google.maps.Map(document.getElementById("map_canvas"), opts);
    } catch (err) {
        txt = "an error occurred: ";
        txt += err.description;
        alert(txt);
    }
    mapshown = true;
    if (query == "") {
        loadcatdesc(); 
        loadcarparks();
        loadshops();
    } else {
        updatecatdesc("Search Results"); 
        loadcarparks();
        srchshops();
    }

}

function reposinit(sarea)
{
    _data = 'area=' + sarea;
    execAjax(null, 'getarea.php', null, null, _data, 6, sarea);
}

function reposmap(resp, sarea)
{
    //alert("reposmap(" + resp + "\n\n" + sarea + ")");
    pnt = resp.split(",");
    map.setCenter(new google.maps.LatLng(parseFloat(pnt[0]),parseFloat(pnt[1])), parseInt(pnt[2]));
    if (query == "") {
        loadcatdesc();
        loadcarparks();
        loadshops();
    } else {
        updatecatdesc("Search Results"); 
        loadcarparks();
        srchshops(sarea); 
    }
}

function loadcatdesc()
{
    _data = 'category=' + category;
    execAjax(null, 'getcatdesc.php', null, null, _data, 5);
}

function updatecatdesc(resp)
{
    document.getElementById("cattitle").innerHTML = resp;
}

function loadshops()
{
    _data = 'area=' + area + '&category=' + category;
    execAjax('list', 'getshops.php', null, null, _data, 2);
}

function loadcarparks()
{
    _data = 'area=' + area;
    execAjax('list', 'getcarparks.php', null, null, _data, 7);
}

function initcategory()
{
    _data = "area=" + area;
    execAjax("cat"+area, 'getcategories.php', null, null, _data, 3);
}

function initialise()
{
    //alert("initialise");
    _data = 'area=' + area;
    execAjax('map_canvas', 'getarea.php', null, null, _data, 1);
}

function showinfo(mkr)
{
    infowindow = new google.maps.InfoWindow({content:html[mkr]});
    infowindow.open(map, marker[mkr]);
}

function createMarker(point, html, carpark)
{
    markopts = { position: point, map: map };
    var marker = new google.maps.Marker(markopts);
       
    if (carpark) {
        loc = window.location.href;
        loc = loc.substr(0,loc.lastIndexOf('/'));
        loc += "/images/parkings.png";
        try {
            myicon = new google.maps.MarkerImage(loc, new google.maps.Size(50,50), null, new google.maps.Point(10,10), new google.maps.Size(20,20));
        } catch (err) {
            alert("Error creating Car Park Image");
        }
        try {
           marker.setIcon(myicon);
        } catch (err) {
           alert("Cannot add car park icon to marker");
        }
    }
    var infowindow = new google.maps.InfoWindow({content:html});
    google.maps.event.addListener(marker, "click", function() { infowindow.open(map, marker); });
    return marker;
}

function clear()
{
    while (marker[0])
       marker.pop().setMap(null);
}    

function getAddress(address)
{
    //var geocoder = new GClientGeocoder();
    //var point = new GLatLng();

    //geocoder.getLatLng(address, point);
    //return point;
}

function updateshops(resp, sarea)
{
    if (sarea == undefined) sarea = area; 
    
    //shop[0] = Lat
    //shop[1] = Lng
    //shop[2] = name
    //shop[3] = description
    //shop[4] = addressline1
    //shop[5] = addressline2
    //shop[6] = town
    //shop[7] = postcode
    //shop[8] = telno
    //shop[9] = voucher count
    //shop[10] = business id
    //shop[11] = webaddress
    //shop[12] = email
    //shop[13] = new/updated flag
    //shop[14] = categories

    //alert(resp);
    var shops = resp.split("\n");
    var output = "";
    for (n=0; n<shops.length; n++)
    {
        shop = shops[n].split("^");
        if (shop == "") break;
        //alert(shop[13]);
        temp = "<div class=\"bubtitle\">" + shop[2] + " " + shop[13] + "</div>";
        temp += "<div class=\"bubdesc\">" + shop[4];
        if (shop[5] != "") temp += ", " + shop[5];
        if (shop[6] != "") temp += ", " + shop[6];
        temp += "</div>";
        temp += "<div class=\"bubdesc\"><span class=\"bubsub\">" + shop[7] + "</span>";
        if (shop[8] != "") temp += " " + shop[8] + "</div>";
        if (shop[11] != "")
        { 
            temp += "<div class=\"bubdesc\"><a href=\"";
            if (shop[11].substr(0,7) != "http://") temp += "http://"; 
            temp += shop[11] + "\" target=\"_blank\">" + shop[11] + "</a></div>";
        }
        if (shop[12] != "") temp += "<div class=\"bubdesc\"><a href=\"mailto:" + shop[12] + "\">" + shop[12] + "</a></div>";
        if (shop[14] != undefined) temp += "<div class=\"bubdesc\">" + shop[13] + "</div>";
        //if (parseInt(shop[9]) > 0) temp += "<div class=\"bubdesc\" style><a href='javascript:loadvouchers(" + shop[10] + ");'><img src='images/" + prefix + "-Voucher.png' width='77' height='11' alt='Get Vouchers' /></a></div>";
        //temp += "<div class=\"bubsub\" style=\"padding-top: 1em;\">" + shop[3] + "</div>";
        
        //alert(temp);
        html[n] = temp;

        point = new google.maps.LatLng(parseFloat(shop[0]),parseFloat(shop[1]));
        marker[n] = createMarker(point, html[n], false);
        
        output += "<div class=\"shop\"><div class='bubtitle'><a href=\"javascript:showinfo(" + n + ");\">" + shop[2] + " " + shop[13] + "</a></div>";
        output += "<div class=\"bubdesc\">" + shop[4] + "</div>";
        output += "<div class=\"bubdesc\">" + shop[3] + "</div>";
        if (shop[9] > 0) output += "<div class=\"bubdesc\" style=\"text-align: right;\"><a href='javascript:loadvouchers(" + shop[10] + ");'><img src='images/" + prefix + "-Voucher.png' width='73' height='11' alt='Get Vouchers' /></a></div>"; 
        //if (shop[12] != undefined) output += "<div class=\"bubsub\">" + shop[12] + "</div>";
        output += "</div>";
    }

    if (output == "")
    {
        output = "<div class=\"shop bubdesc\"><a href=\"javascript:search(0);\">Your search did not find anything"
        if (sarea != 0) output += " in this area. Click here to widen your search";
        output += ".</a></div>"; 
    }

    document.getElementById('list').innerHTML = output;
    query = "";
}

function showcp(resp)
{
    //carpark[0] = Lat
    //carpark[1] = Lng
    //carpark[2] = title
    //carpark[3] = capactiy
    //carpark[4] = disabled
    //carpark[5] = electric
    //carpark[6] = hours
    //carpark[7] = tariff

    var carparks = resp.split("\n");
    for (n=0; n<carparks.length; n++)
    {
        carpark = carparks[n].split("^");
        if (carpark == "") break;
        temp = "<div style=\"width: 200px;\"><div class=\"bubtitle\">" + carpark[2] + "</div>";
        temp += "<div class=\"bubdesc\"><span class=\"bubsub\">Capacity</span>: " + carpark[3];
        if (carpark[4] != "") temp += " " + carpark[4];
        if (carpark[5] != "") temp += " " + carpark[5];
        temp += "</div>";
        if (carpark[6] != "") temp += "<div class=\"bubdesc\"><span class=\"bubsub\">Opening Hours</span>: " + carpark[6] + "</div>";
        if (carpark[7] != "") temp += "<div class=\"bubdesc\"><span class=\"bubsub\">Tariff</span>: " + carpark[7] + "</div>";
        temp += "</div></div>";

        point = new google.maps.LatLng(parseFloat(carpark[0]),parseFloat(carpark[1]));
        marker[n] = createMarker(point, temp, true);
    }
}

function updatecats(resp)
{
    document.getElementById("cat"+area).innerHTML = resp;
}

function loadvouchers(busid,prefix)
{
    window.open("vouchers.php?AreaID="+area+"&BusinessID="+busid);
}

function selectcat_old(cat)
{
    category = cat;
    if(mapshown)
    {
        clear();
        loadcatdesc();
        loadshops();
    } else {
        initialise();
    }
}

function search(sarea)
{
    //alert("search");
    if (sarea == undefined) sarea = area; 
    query = document.getElementById("srchtxt").value;
    //alert(query);
    if (query == "") return;
    
    if(mapshown)
    {
        clear();
        reposinit(sarea);
    } else {
        initialise();
    }
}

function srchshops(sarea)
{
    if (sarea == undefined) sarea = area;
    _data = 'area=' + sarea + '&q=' + query;
    execAjax('list', 'srchshops.php', null, null, _data, 2, sarea);
}

function selectcat(cat)
{
    category = cat;
    if(mapshown)
    {
        clear();
        reposinit(area);
    } else {
        initialise();
    }
}

function selectarea(larea)
{
    area = larea;
    mapshown = false;
    clear();
}

function getevents()
{
    _data = "area="+area;
    execAjax('events', 'getevents.php', null, null, _data, 4);
}

function updateevents(resp)
{
    document.getElementById('events').innerHTML = resp;
}

function loadareapage()
{
    area = document.getElementById('area').value;
    prefix = document.getElementById('prefix').value;
    mapshown = false;
    initcategory();
    getevents();
}

function loadhomepage()
{
    mapshown = false;
    getevents();
}
