$(function(){
/*
     * Styling
     */
    $('#header').append('<div id="header-cap-left"></div><div id="header-cap-right"></div>');
    $('#footer').append('<div id="footer-cap-left"></div><div id="footer-cap-right"></div>');
    
    /*
     * Pretty forms
     */
    $('form.prettyform input[@type*=radio]').css('border','none');
    $('form.prettyform input[@type*=checkbox]').css('border','none');
    if($.browser.mozilla) { prettyform(); }
    
    /*
     * LI hover fix for IE6
     */
    /*
    $('#navigation ul li').each( function(){
        $(this).mouseover( function(){ $(this).addClass('sfhover'); } ).mouseout( function(){ $(this).removeClass('sfhover'); } );
    });
    */
    
    
    
    $('#navm, li').each( function(){
        $(this).mouseover( function(){ $(this).addClass('hover'); } ).mouseout( function(){ $(this).removeClass('hover'); } );
    });    
    
    $('#nav ul li:last-child').addClass('last');
    
    /*
     * Blur on focus
     */
    $('a').focus(function() { this.blur(); });
    $('input[@type*=submit]').focus(function() { this.blur(); });
    $('input[@type=text], input[@type=password]').addClass("input");
    
    $("ul.inn_list li:odd").addClass("alt");
    $("div.mapLocationList ul li:odd").addClass("alt");
    
    $('ul.inn_list li').each( function(){
        $(this).mouseover( function(){ $(this).addClass('hover'); } ).mouseout( function(){ $(this).removeClass('hover'); } );
    });
    
/*
    $('#slideshow').cycle({ 
        speed:  4000, 
        prev:   '#slideshow-prev', 
        next:   '#slideshow-next',
        sync:   1,  
        before: onBefore 
    }); 
*/     
    function onBefore() { 
        $('#slideshowText') 
            .html("Photo " + this.alt + ' of ' + $('#slideshow').children().length + ' images'); 
    }; 
    
    $("#top_bar li:last-child a").css("border-right","none");
    
    $("#imagegallery a").click(function(event) {                    
             event.preventDefault();
             var image = $(this).attr("href");
             $("img#placeholder").attr("src", image);
             var description = $(this).attr("title");
             $("#caption").empty();
             $("#caption").append(description);
             $("img#placeholder").attr("alt", description);
             $("img#placeholder").attr("title", description);
             //$(this).parent().addClass("active");
             $("#imagegallery li").animate({opacity: "0.50"}, 1);
             $(this).parent().animate({opacity: "1"}, 1);
             
             //$(this).parent().animate( {opacity: "1"} , 1)
            // alert( $(this + ":parent") );
     });
     
     var image = $("#imagegallery a:first").attr("href");
     $("img#placeholder").attr("src", image);
     
     $("#imagegallery li:first").next().addClass("padder");
     $("#imagegallery li:not(:first)").animate({opacity: "0.50"}, 1)
     
     $("#nav li a:last").css("border-right","none");
     $(".rightpane .activities .content-item:last").css("border-bottom","none");
     $("#crumbs a:last").addClass("last");
     $('label.required').append(' <em>*</em>');
     
     $("table.zebra tr:odd").addClass("alt");
     $("em:contains('accommodation since 1994.)").addClass("tagline");
     $("em:contains('in New Zealand since 1994.)").addClass("tagline");
     $("em:contains('accommodation across NZ since 1994.)").addClass("tagline");
     
     $("p i:contains('accommodation since 1994.')").parent().addClass("tagline");
     
      $('a.addRoomBtn').click(function(){
            var roomDate = $(this).attr("rel");
            $('<li>' + roomDate + '</li>').appendTo('ul#tmpRoomList');
            checkRoomCount();
       });
       
     function checkRoomCount() {             
        var link = '<a href="/reservations/booking-planner/selected-properties">Click here to view your booking planner</a> ';
        var count = $("ul#tmpRoomList li").size();
        if( count == 1 ) {
            $(link).insertAfter("ul#tmpRoomList"); 
        }
       
     }
     
     $.get('/booking-planner/info/', null, function(html) {$('#booking-planner').html(html);}, 'html');
});

function clearSearch(i){
    if( $(i).val() == "" ){
        $(i).val('Inn Search');
        $(i).addClass('inactive');
    }else if( $(i).val() == "Inn Search" ){
        $(i).val('');
        $(i).removeClass('inactive');
    }else{
        $(i).select();
    }
}

/*
 * Pretty forms
 */
function prettyform(){
  /*
   * Hide forms
   */
  $( 'form.prettyform' ).hide().end();
  /*
   * Label & list formatting
   */
  $( 'form.prettyform' ).find( 'label' ).not( '.noprettyform' ).each( function( i ){
    var labelContent = this.innerHTML;
    var labelWidth = document.defaultView.getComputedStyle( this, '' ).getPropertyValue( 'width' );
    var labelSpan = document.createElement( 'span' );
        labelSpan.style.display = 'block';
        labelSpan.style.width = labelWidth;
        labelSpan.innerHTML = labelContent;
    this.style.display = '-moz-inline-box';
    this.innerHTML = '';
    this.appendChild( labelSpan );
  } ).end();
  
  /*
   * Show forms
   */
  $( 'form.prettyform' ).show().end();
}

function pop (url, width, height) {
    if (url != "") {
        var winLeft = Math.round((screen.availWidth - 10 - width) / 2), the_top=Math.round((screen.availHeight - 30 - height) / 2);
        NewWindow = window.open(url,'VIANETWIN','toolbar=no,location=no,status=yes,menubar=yes,scrollbars=2,resizable=1,width=' + width + ',height=' + height + ',top=' + the_top + ',left=' + winLeft);
        NewWindow.focus();
    }
}

//maps
function setupMap(areas) {
    map = new GMap2($("#mapDiv").get(0));
    
    var mapTypeControl = new GSmallZoomControl();
    var topRight = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(2,20));
    map.addControl(mapTypeControl, topRight);

    
    map.setCenter(new GLatLng(-40.900557,174.885971), 8);
    //map.setMapType(G_NORMAL_MAP);
    
    $("#message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));
    $.each( areas, function(i, val){
        var coordsArray = val.split(",");
        $('<li />').html( i ).click(function(){
            LOAD_NEW_NODES = coordsArray[2];
            map.setZoom(6);
            map.panTo(new GLatLng(coordsArray[0],coordsArray[1]));
            $(this).parent().css('display', 'none');
        }).appendTo(".mapNavSubNav");
    });
        
//    GEvent.addListener(map, "moveend", function() {
//        if (LOAD_NEW_NODES != false) {
            jQuery.getJSON('/google-map?contentID=' + LOAD_NEW_NODES, 
                function(markers) {
                    var clusterMarkers = [];
                    var zoomTo = null;
                    var boundsSet = false;
                    var bounds = new GLatLngBounds();
                    for (var i=0; i<markers.length; i++) {
                        var marker;
                        if (LOAD_NEW_NODES == markers[i].contentID) {
                            marker = createMarkerHighlight(new GLatLng(markers[i].lng, markers[i].lat), markers[i].name, markers[i].url);
                            map.addOverlay(marker);
                            zoomTo = new GLatLng(markers[i].lng, markers[i].lat);
                        } else {
                            marker = createMarker(new GLatLng(markers[i].lng, markers[i].lat), markers[i].name, markers[i].url);
                        }
                        if (LOAD_NEW_NODES == markers[i].parentID || LOAD_NEW_NODES == markers[i].superParentID) {
                            bounds.extend(marker.getPoint());
                            boundsSet = true;
                        }
                        clusterMarkers.push(marker);
                    }
                    
                    if (! boundsSet) {
                        for (var i=0; i<clusterMarkers.length; i++) {
                            var marker = clusterMarkers[i];
                            bounds.extend(marker.getPoint());
                        }
                    }
                    
                    if (zoomTo == null) {
                        map.setCenter(bounds.getCenter());
                        map.setZoom(map.getBoundsZoomLevel(bounds));
                    } else {
                        map.setZoom(15);
                        map.panTo(zoomTo);
                    }
                    
                    LOAD_NEW_NODES = false;

                    var styles = [{
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      }, 
                      {
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      },
                      {
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      }];
                    
                    var mc = new MarkerClusterer(map, clusterMarkers, {maxZoom: 15, gridSize: 20, styles: styles});
                }
            );
//        }
//    });
    $('li.mapNavHeader').hover(
        function() {$('ul', this).css('display', 'block');},
        function() {$('ul', this).css('display', 'none');}
    );
}

function setupMap_NEW(areas) {
    map = new GMap2($("#mapDiv").get(0));
    
    var mapTypeControl = new GSmallZoomControl();
    var topRight = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(2,20));
    map.addControl(mapTypeControl, topRight);

    map.setCenter(new GLatLng(-40.900557,174.885971), 8);
    //map.setMapType(G_NORMAL_MAP);
    
    $("#message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));
    $.each( areas, function(i, val){
        var coordsArray = val.split(",");
        $('<li />').html( i ).click(function(){
            LOAD_NEW_NODES = coordsArray[2];
            map.setZoom(6);
            map.panTo(new GLatLng(coordsArray[0],coordsArray[1]));
            $(this).parent().css('display', 'none');
        }).appendTo(".mapNavSubNav");
    });
        
//    GEvent.addListener(map, "moveend", function() {
//        if (LOAD_NEW_NODES != false) {
            jQuery.getJSON('/google-map?contentID=' + LOAD_NEW_NODES, 
                function(markers) {
                    var clusterMarkers = [];
                    var zoomTo = null;
                    var boundsSet = false;
                    var bounds = new GLatLngBounds();
                    for (var i=0; i<markers.length; i++) {
                        var marker;
                        if (LOAD_NEW_NODES == markers[i].contentID) {
                            marker = createMarkerHighlight(new GLatLng(markers[i].lng, markers[i].lat), markers[i].name, markers[i].url);
                            map.addOverlay(marker);
                            zoomTo = new GLatLng(markers[i].lng, markers[i].lat);
                        } else {
                            marker = createMarker(new GLatLng(markers[i].lng, markers[i].lat), markers[i].name, markers[i].url);
                        }
                        //if (LOAD_NEW_NODES == markers[i].parentID || LOAD_NEW_NODES == markers[i].superParentID) {
                            bounds.extend(marker.getPoint());
                            boundsSet = true;
                        //}
                        clusterMarkers.push(marker);
                    }
                    
                    if (! boundsSet) {
                        for (var i=0; i<clusterMarkers.length; i++) {
                            var marker = clusterMarkers[i];
                            bounds.extend(marker.getPoint());
                        }
                    }
                    
                    //if (zoomTo == null) {
                        map.setCenter(bounds.getCenter());
                        map.setZoom(map.getBoundsZoomLevel(bounds));
                    /*} else {
                        map.setZoom(15);
                        map.panTo(zoomTo);
                    }*/
                    
                    LOAD_NEW_NODES = false;

                    var styles = [{
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      }, 
                      {
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      },
                      {
                        url: '/asset/images/clusterx.png',
                        height: 40,
                        width: 40
                      }];
                    
                    var mc = new MarkerClusterer(map, clusterMarkers, {maxZoom: 15, gridSize: 20, styles: styles});
                }
            );
//        }
//    });
    $('li.mapNavHeader').hover(
        function() {$('ul', this).css('display', 'block');},
        function() {$('ul', this).css('display', 'none');}
    );
}

function setupHeaderMap(regionProperties, outOfRegionProperties, clusterLevel) {
    headMap = new GMap2($("#headerMapDiv").get(0));
    //headMap.disableDragging();
    
    var mapTypeControl = new GSmallZoomControl();
    var topRight = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(2,2));
    headMap.addControl(mapTypeControl, topRight);
    
    var clusterMarkers = [];
    var bounds = new GLatLngBounds();
    for (var i=0; i<regionProperties.length; i++) {
        var marker = createMarker(new GLatLng(regionProperties[i].lng, regionProperties[i].lat), regionProperties[i].name, regionProperties[i].url);
        
        //headMap.addOverlay(marker);
        if (regionProperties[i].name != null) {
            clusterMarkers.push(marker);
        }
        
        bounds.extend(marker.getPoint());
    }
    
    var outOfRegionClusterMarkers = [];
    for (var i=0; i<outOfRegionProperties.length; i++) {
        var marker = createOutOfRegionMarker(new GLatLng(outOfRegionProperties[i].lng, outOfRegionProperties[i].lat), outOfRegionProperties[i].name, outOfRegionProperties[i].url);
        
        //headMap.addOverlay(marker);
        if (outOfRegionProperties[i].name != null) {
            outOfRegionClusterMarkers.push(marker);
        }
    }
    
    var inStyles = [{url: '/asset/images/clusterx.png',height: 40,width: 40}, 
                    {url: '/asset/images/clusterx.png',height: 40,width: 40},
                    {url: '/asset/images/clusterx.png',height: 40,width: 40}];
    
    var inMarkers = new MarkerClusterer(headMap, clusterMarkers, {maxZoom: 15, gridSize: clusterLevel, styles: inStyles});
    
    var outStyles = [{url: '/asset/images/clusterx_out.png',height: 40,width: 40}, 
                     {url: '/asset/images/clusterx_out.png',height: 40,width: 40},
                     {url: '/asset/images/clusterx_out.png',height: 40,width: 40}];
    
    var outMarkers = new MarkerClusterer(headMap, outOfRegionClusterMarkers, {maxZoom: 15, gridSize: clusterLevel, styles: outStyles});
    
    headMap.setCenter(bounds.getCenter());
    headMap.setZoom(headMap.getBoundsZoomLevel(bounds) -0);
}

function createMarkerHighlight(point, text, url) {
    var iconOptions = {};
    iconOptions.width = 40;
    iconOptions.height = 40;
    iconOptions.primaryColor = "#FF0000";
    iconOptions.cornerColor = "#F7FAE7FF";
    iconOptions.strokeColor = "#3D322EFF";
    var icon = MapIconMaker.createMarkerIcon(iconOptions);
    var marker = new GMarker(point,{title:text,icon:icon});
//    var marker = new GMarker(point,{title:text});
    GEvent.addListener(marker, "click", function() {
          document.location = url;
    });
    return marker;
}

function createMarker(point, text, url) {
    var iconOptions = {};
    iconOptions.width = 29;
    iconOptions.height = 29;
    iconOptions.primaryColor = "#C37342FF";
    iconOptions.cornerColor = "#F7FAE7FF";
    iconOptions.strokeColor = "#3D322EFF";
    var icon = MapIconMaker.createMarkerIcon(iconOptions);
    var marker = new GMarker(point,{title:text,icon:icon});
//    var marker = new GMarker(point,{title:text});
    GEvent.addListener(marker, "click", function() {
          document.location = url;
    });
    return marker;
}

function createOutOfRegionMarker(point, text, url) {
    var iconOptions = {};
    iconOptions.width = 20;
    iconOptions.height = 20;
    iconOptions.primaryColor = "#8080FF";
    iconOptions.cornerColor = "#F7FAE7FF";
    iconOptions.strokeColor = "#3D322EFF";
    var icon = MapIconMaker.createMarkerIcon(iconOptions);
    var marker = new GMarker(point,{title:text,icon:icon});
//    var marker = new GMarker(point,{title:text});
    GEvent.addListener(marker, "click", function() {
          document.location = url;
    });
    return marker;
}

sfHover = function() {
    var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
        sfEls[i].onmouseover=function() {
            this.className+=" sfhover";
        }
        sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);