var globalXmlFile = "http://www.territorydiscoveries.com/Portals/0/media/MakingTracks/xml/filelist.xml";
var map;
var gmarkers = [];
var first_tab_names = [];
var first_tab_bodies = [];
var second_tab_names = [];
var second_tab_bodies = [];
var directions;
var directions2;
var directions3;
var point = [];
var dirpoints = [];

var binnsPoints = [];
var binnsPoints2 = [];


var xmlVal;
var xmlDocVal;
var markers = [];
var lngDir = [];
var latDir = [];
var latlngDir = [];
var side_bar = "";
var side_bar_t_name = [];
var side_bar_m_name = [];
var timeprice = [];
var imageUrl = [];
var text = [];
var first_tab_name = [];

var products = [];

var productLink = [];

var pagelink;


var xmlDoclist = [];
var xmlDocName = [];

var side_bar_tracks = "";
var side_bar_points = "";

var trackCode = [];

var productCode = [];

var calypsolink = [];

var order = [];

var backHtml;

var jabiruLngLat = "-12.651518741179032,132.80694007873535";

function init(){
	loadXML();
	loadMap();
}

function loadMap() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(-18.79191774423444, 133.3740234375), 5);
        map.setUIToDefault();
        directions = new GDirections(map);
        directions2 = new GDirections(map);
        directions3 = new GDirections(map);
    }
    else {
        window.location.href = 'browser.aspx';
    }
}

function loadXML() {
    side_bar_tracks = "";
    GDownloadUrl(globalXmlFile, function(data) {
        var xmlFileList = GXml.parse(data);
        xmlDocList = xmlFileList.documentElement.getElementsByTagName("xmlfile");

        side_bar_tracks += "<div id='mainTracks2'><p>When was the last time you felt free? With its outback roads, red dirt tracks and horizon bending landscapes the Territory is the place to escape to.</p></div>";
        side_bar_tracks += "<div id='right_titles'>";
        side_bar_tracks += "<p class='p2'>ITINERARIES</p>";
        for (var h = 0; h < xmlDocList.length; h++) {
            side_bar_t_name[h] = xmlDocList[h].getAttribute("track");
            timeprice[h] = xmlDocList[h].getAttribute("timeprice");
            imageUrl[h] = xmlDocList[h].getAttribute("imageUrl");
            text[h] = xmlDocList[h].getAttribute("blurbage");
            productLink[h] = xmlDocList[h].getAttribute("linkurl");
            productCode[h] = xmlDocList[h].getAttribute("code");

            var trackPage3 = '"/makingtracks/internal/' + productCode[h] + '"';
            side_bar_tracks += "<div id='track_titles' onclick='loadPoints(" + h + "); forward(); pageTracker._trackPageview(" + trackPage3 + ");'><a href='javascript:loadPoints(" + h + "); forward();' onclick='pageTracker._trackPageview(" + trackPage3 + ");'>" + side_bar_t_name[h] + "</a></div>";


            GDownloadUrl("/Portals/0/media/makingtracks/xml/" + xmlDocList[h].getAttribute("name"), function(data) {
                var ordercode = GXml.parse(data).documentElement.getElementsByTagName("code")[0].childNodes[0].nodeValue;
                var arrayPosition;
                for (var p = 0; p < xmlDocList.length; p++) {
                    if (xmlDocList[p].getAttribute("code") == ordercode)
                        arrayPosition = xmlDocList[p].getAttribute("order");
                }
                xmlDocName[arrayPosition] = GXml.parse(data);

            });
        }

        side_bar_tracks += "</div>";
        document.getElementById("right_side_itins").innerHTML = side_bar_tracks;


    });
}

function rando() {
    directions.clear();
    map.clearOverlays();
}

function forward() {
    document.getElementById("right_side_itins").innerHTML = side_bar;
}

function loadPoints(xmlVal) {
    directions.clear();
    map.clearOverlays();

    side_bar = "";
    dirpoints = [];

    backHtml = '<div id="backButton" onclick="back();"><p>< BACK</p></div>';

    document.getElementById("backButtonWrap").innerHTML = backHtml;

    markers = xmlDocName[xmlVal].documentElement.getElementsByTagName("marker");

    side_bar += '<div style="padding: 0 10px 0 10px; height: 431px; width: 220px;"><div id="right_point_details"><h1>' + side_bar_t_name[xmlVal] + '<h2>' + timeprice[xmlVal] + '</h2></h1><img src="' + imageUrl[xmlVal] + '" width=217 height=92><br><p>' + text[xmlVal] + '</p></div><div id="poi"><h1>Points of Interest:</h1><h2>(Click the links to explore the map)</h2></div><div id="right_points">';

    for (var k = 0; k < markers.length; k++) {
        var first_tab_name = "Overview";
        var first_tab_headl = markers[k].getAttribute("over_tab_head");
        var first_tab_pic = markers[k].getAttribute("over_tab_pic");
        var first_tab_text = markers[k].getAttribute("over_tab_body");
        var first_tab_body = '<div id="mtracks_fth">' + first_tab_headl + '</div><br /><p>';
        first_tab_body = first_tab_body + '<div id="mtracks_ftb">';
        first_tab_body = first_tab_body + '<div style="margin: 0 auto; width: 200px; height: 100px;"><img src="' + first_tab_pic + '" width=200 height=100></div><br>';
        first_tab_body = first_tab_body + first_tab_text + '</div>';

        var second_tab_name = "Info";
        var second_tab_headl = markers[k].getAttribute("info_tab_head");
        var second_tab_text = markers[k].getAttribute("info_tab_body");
        var second_tab_body = '<div id="mtracks_fth">' + second_tab_headl + '</div><br /><p>';
        second_tab_body = second_tab_body + '<div id="mtracks_ftb">';
        second_tab_body = second_tab_body + second_tab_text + '</div>';


        var lat = parseFloat(markers[k].getAttribute("lat"));
        var lng = parseFloat(markers[k].getAttribute("lng"));

        if (xmlVal == 8) {
            latlngDir[0] = "-17.92353350580425, 122.21745282411575";
            latlngDir[1] = "-17.92351819358601, 122.21868395805359";
            latlngDir[2] = "-17.915412740304983, 122.22307473421097";
            latlngDir[3] = "-17.915318310610264, 122.24683910608292";
            latlngDir[4] = "-17.847686089161616, 122.50290423631668";
            latlngDir[5] = "-17.633161117521396, 123.73893320560455";
            latlngDir[6] = "-17.43916529209324, 124.60688263177872";
            latlngDir[7] = "-17.344009996650005, 123.66500347852707";
            latlngDir[8] = "-17.149343176038865, 125.46695172786713";
            latlngDir[9] = "-17.344009996650005, 123.66500347852707";
            latlngDir[10] = "-17.753693486651596, 124.80073392391205";
            latlngDir[11] = "-17.935713956011558, 124.80334639549255";
            latlngDir[12] = "-17.940480767658354, 124.79910045862198";
            latlngDir[13] = "-17.522160400013522, 127.90783703327179";

            latlngDir[14] = "-15.921949468686638, 128.3809196949005";
            latlngDir[15] = "-15.868648711818459, 128.37168216705322";
            latlngDir[16] = "-15.767195979482477, 128.67430239915848";
            latlngDir[17] = "-14.463768144317749, 132.26108372211456";
            latlngDir[18] = "-14.46575499227471, 132.26362645626068";
            latlngDir[19] = "-14.433028174831687, 132.28428214788437";
            latlngDir[20] = "-14.31985767874367, 132.42285043001175";
            latlngDir[21] = "-14.321822418104016, 132.41896659135818";
            latlngDir[22] = "-14.315356385642314, 132.4226626753807";
            latlngDir[23] = "-12.43355912070105, 130.84806382656097";
            latlngDir[24] = "-12.466740929518402, 130.84588587284088";

            for (var l = 0; l < latlngDir.length; l++) {
                dirpoints[l] = latlngDir[l];
            }

            var poly1 = new GPolyline([
                    new GLatLng(-17.522160400013522, 127.90783703327179),
                    new GLatLng(-17.554924852990258, 128.28570127487183)], "#3333cc", 3, 0.5);
            map.addOverlay(poly1);
            var poly2 = new GPolyline([
                    new GLatLng(-15.921949468686638, 128.3809196949005),
                    new GLatLng(-15.907592518938282, 128.1284111738205)], "#3333cc", 3, 0.5);
            map.addOverlay(poly2);

        }
        else if ((xmlVal == 0) || (xmlVal == 5)) {
            if (k == 1)
                dirpoints[k] = jabiruLngLat;
            else
                dirpoints[k] = lng + "," + lat;
        }
        else if (xmlVal == 1) {
            if (k == 0)
                dirpoints[k] = lng + "," + lat;
            else if (k == 1) {
                dirpoints[k] = jabiruLngLat;
                dirpoints[k + 1] = lng + "," + lat;
            }
            else if (k == markers.length - 1) {
                dirpoints[k + 1] = "-13.046165064442253,131.02309942245483";
                dirpoints[k + 2] = "-12.465368587438888,130.84078431129456";
            }
            else
                dirpoints[k + 1] = lng + "," + lat;
        }
        else if (xmlVal == 2) {
            if (k == 3) {
                dirpoints[k] = "-23.612163424674655, 132.3482072353363";
                dirpoints[k + 1] = "-23.75484543629598, 132.34742134809494";
                dirpoints[k + 2] = "-24.036038783957547, 131.43883109092712";
                dirpoints[k + 3] = "-24.277560154230603, 131.54956072568893";
                dirpoints[k + 4] = lng + "," + lat;
            }
            else
                dirpoints[k] = lng + "," + lat;
        }
        else if (xmlVal == 3) {
            if (k == markers.length - 1) {
                dirpoints[k] = lng + "," + lat;
                dirpoints[k + 1] = "-25.198975842618744, 133.20194631814957";
                dirpoints[k + 2] = dirpoints[k / 2];
            }
            else
                dirpoints[k] = lng + "," + lat;
        }
        else if (xmlVal == 6) {
            if (k == 0) {
                binnsPoints[k] = "-23.713782124718666,133.88025015592575";
                binnsPoints[k + 1] = "-23.694269818985436, 134.03247624635696";
                binnsPoints2[k] = "-22.97023029647037, 134.32491213083267";
                binnsPoints2[k + 1] = "-23.000772468249497, 134.78440135717392";
                dirpoints[k] = "-20.23643636581804, 134.22267705202103";
            }
            else if (k == markers.length - 1) {
                dirpoints[k] = "-14.446387012309527,132.26889699697495";
                dirpoints[k + 1] = "-14.315140674757608,132.42239713668823";
                dirpoints[k + 2] = "-12.89460271549953,132.5196647644043";
                dirpoints[k + 3] = "-12.675801522305791,132.47915267944336";
                dirpoints[k + 4] = "-12.450128292805514,130.82535088062286";
            }
            else
                dirpoints[k] = lng + "," + lat;

            var binnspoly1 = new GPolyline([
                    new GLatLng(-23.694269818985436, 134.03247624635696),
                    new GLatLng(-22.97023029647037, 134.32491213083267)], "#3333cc", 3, 0.5);
            map.addOverlay(binnspoly1);
            var binnspoly2 = new GPolyline([
                    new GLatLng(-23.000772468249497, 134.78440135717392),
                    new GLatLng(-20.601936194281013, 135.1593017578125),
                    new GLatLng(-20.23643636581804, 134.22267705202103)], "#3333cc", 3, 0.5);
            map.addOverlay(binnspoly2);
        }
        else if (xmlVal == 7) {
            if (k == 2) {
                dirpoints[k] = "-23.612163424674655, 132.3482072353363";
                dirpoints[k + 1] = "-23.75484543629598, 132.34742134809494";
                dirpoints[k + 2] = "-24.036038783957547, 131.43883109092712";
                dirpoints[k + 3] = "-24.277560154230603, 131.54956072568893";
                dirpoints[k + 4] = lng + "," + lat;
            }
            else if (k > 2)
                dirpoints[k + 4] = lng + "," + lat;
            else
                dirpoints[k] = lng + "," + lat;
        }
        else if (xmlVal == 10) {
            if (k == markers.length - 1) {
                dirpoints[k] = lng + "," + lat;
                dirpoints[k + 1] = "-25.198975842618744, 133.20194631814957";
                dirpoints[k + 2] = dirpoints[k - k];
            }
            else
                dirpoints[k] = lng + "," + lat;
        }
        else if (xmlVal == 11) {
            if (k == 4) {
                dirpoints[k] = jabiruLngLat;
                dirpoints[k + 1] = lng + "," + lat;
            }
            else if (k == markers.length - 1) {
                dirpoints[k + 1] = lng + "," + lat;
                dirpoints[k + 2] = dirpoints[k - k];
            }
            else if (k > 4)
                dirpoints[k + 1] = lng + "," + lat;
            else
                dirpoints[k] = lng + "," + lat;
        }
        else {
            dirpoints[k] = lng + "," + lat;
        }


        trackCode[k] = markers[k].getAttribute("code");

        side_bar_m_name[k] = markers[k].getAttribute("side_tab_name");

        var trackPage2 = '"/makingtracks/' + productCode[k] + '/' + trackCode[k] + '"';


        if (xmlVal != 4) {

            side_bar += "<div id='marker_name' style='color:#000000'><ul class='markers'><li><a href='javascript:myclick(" + k + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[k] + "</a></li></ul></div>";
            document.getElementById("right_side_itins").innerHTML = side_bar;
        }


        point[k] = new GPoint(lat, lng);

        createTabbedMarker(point[k], first_tab_name, first_tab_body, second_tab_name, second_tab_body, k, trackCode[k], productCode);

        map.addOverlay(gmarkers[k]);


    }

    if (xmlVal == 4) {
        var daytour = xmlDocName[xmlVal].documentElement.getElementsByTagName("daytour");



        for (var z = 0; z < 3; z++) {
            trackPage2 = '"/makingtracks/' + productCode[z] + '/' + trackCode[z] + '"';
            side_bar += "<div id='marker_name' style='color:#000000'><ul><li><a href='javascript:myclick(" + z + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[z] + "</a></li></ul></div>";
        }
        for (var n = 0; n < daytour.length; n++) {

            var numspots = daytour[n].getAttribute("numpoints");
            var daynum = daytour[n].getAttribute("text");

            side_bar += "<div id='marker_name' style='color:#000000'><ul class='markers'><li>" + daynum + "</li></ul></div>";
            side_bar += "<div style='padding: 0 0 5px 15px;'>";
            if (n == 0) {
                for (var b = 0; b < numspots; b++) {
                    var current = b + z;
                    trackPage2 = '"/makingtracks/' + productCode[current] + '/' + trackCode[current] + '"';
                    if (b == numspots - 1) {
                        side_bar += "<a href='javascript:myclick(" + current + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[current] + "</a>";
                    }
                    else {
                        side_bar += "<a href='javascript:myclick(" + current + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[current] + "</a>, ";
                    }
                }
            }
            else {
                for (var b = 0; b < numspots; b++) {
                    var current = b + z + 5;
                    trackPage2 = '"/makingtracks/' + productCode[current] + '/' + trackCode[current] + '"';
                    if (b == numspots - 1) {
                        side_bar += "<a href='javascript:myclick(" + current + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[current] + "</a>";
                    }
                    else {
                        side_bar += "<a href='javascript:myclick(" + current + ");' onclick='pageTracker._trackPageview(" + trackPage2 + ");'>" + side_bar_m_name[current] + "</a>, ";
                    }
                }
            }
            side_bar += "</div>"

        }
        calypsolink = '"/makingtracks/outgoing/' + productCode[xmlVal] + '"';

    }

    var tabs = [];
    var first_tab = new GInfoWindowTab(first_tab_name, first_tab_body);
    var second_tab = new GInfoWindowTab(second_tab_name, second_tab_body);
    tabs[0] = first_tab;
    tabs[1] = second_tab;
    var options = { maxWidth: 180,
        selectedTab: 0
    };


    if (xmlVal == 6) {
        directions2.loadFromWaypoints(binnsPoints, { preserveViewport: true });
        directions3.loadFromWaypoints(binnsPoints2, { preserveViewport: true });
        directions.loadFromWaypoints(dirpoints, { preserveViewport: true });

        GEvent.addListener(directions2, "addoverlay", function() {
            var numMarkers = directions2.getNumRoutes()
            for (var i = 0; i <= numMarkers; i++) {
                var dirmarker = directions2.getMarker(i);
                if (dirmarker != null)
                    dirmarker.hide();
                else
                    alert("Marker is null");
            }
        });

        GEvent.addListener(directions3, "addoverlay", function() {
            var numMarkers = directions3.getNumRoutes()
            for (var i = 0; i <= numMarkers; i++) {
                var dirmarker = directions3.getMarker(i);
                if (dirmarker != null)
                    dirmarker.hide();
                else
                    alert("Marker is null");
            }
        });
        map.setCenter(new GLatLng(-17.748686651728793, 134.5166015625), 5);
    }
    else {
        directions.loadFromWaypoints(dirpoints);
    }

    GEvent.addListener(directions, "addoverlay", function() {
        var numMarkers = directions.getNumRoutes()
        for (var i = 0; i <= numMarkers; i++) {
            var dirmarker = directions.getMarker(i);
            if (dirmarker != null)
                dirmarker.hide();
            else
                alert("Marker is null");
        }
    });
    side_bar += "</div></div><div id='enquireBlue'><a onclick='openPage(" + xmlVal + "); pageTracker._trackPageview(" + calypsolink + ")'><div><table style='vertical-align: middle; height: 32px; width: 100%;'><tr><td><h1>More Information / Enquire</h1></td></tr></table></div></a></div>";
    document.getElementById("right_side_itins").innerHTML = side_bar;
}

function back() {
    directions.clear();
    map.clearOverlays();
    map.setCenter(new GLatLng(-18.79191774423444, 133.3740234375), 5);
    document.getElementById("right_side_itins").innerHTML = side_bar_tracks;
    backHtml = "";
    document.getElementById("backButtonWrap").innerHTML = backHtml;
}

function createTabbedMarker(point, first_tab_name, first_tab_body, second_tab_name, second_tab_body, k, trackCode, productCode) {
    var marker = new GMarker(point);
    var tabs = [];
    var first_tab = new GInfoWindowTab(first_tab_name, first_tab_body);
    var second_tab = new GInfoWindowTab(second_tab_name, second_tab_body);
    tabs[0] = first_tab;
    tabs[1] = second_tab;
    var options = { maxWidth: 250,
        selectedTab: 0
    };

    var trackPage = '/makingtracks/' + productCode + '/' + trackCode;

    GEvent.addListener(marker, "click", function() { marker.openInfoWindowTabsHtml(tabs, options); pageTracker._trackPageview(trackPage); });
    gmarkers[k] = marker;

    first_tab_names[k] = first_tab_name;
    first_tab_bodies[k] = first_tab_body;
    second_tab_names[k] = second_tab_name;
    second_tab_bodies[k] = second_tab_body;
}


function myclick(i) {
    gmarkers[i].openInfoWindowTabsHtml([new GInfoWindowTab(first_tab_names[i], first_tab_bodies[i]),
    new GInfoWindowTab(second_tab_names[i], second_tab_bodies[i])], { maxWidth: 250,
        selectedTab: 0
    });
}

function openPage(i) {
    var NewWindow;
    NewWindow = window.open("https://www.calypso.net.au/apps/ccn/td/au/Promotion_" + productLink[i] + "_consumer.html");
    NewWindow.focus();
}