﻿
var anMonthSel = new Array();
var aSites = new Array();       // an array of Site objects
var aFeatures = new Array();

  // a Site class
    function Site(siteNumber, siteLat, siteLong, siteAddress, siteSize, siteIsSelected, siteIsResult, siteAvails, siteGUID, siteID, siteRegion){
        this.siteNumber = siteNumber;              
        this.showOnMap = true;    
        this.point = null;   
        this.Latitude = 0;
        this.Longitude = 0;    
        this.showOnMap = false;               
        this.sizename = siteSize;
        this.address = siteAddress;
        this.region = siteRegion;
        this.label = siteNumber + " - " + siteAddress;        
        this.isSelected = siteIsSelected;
        this.hasFocus = false;
        this.isResult = siteIsResult;
        this.avails = siteAvails;
        this.GuidID = siteGUID;        
        this.SiteID = siteID;
        
    }  

  
function bodyOnLoad(){
    try{
        // Mark all the months as unselected (which means 'all')
        var eTable = document.getElementById("tblmonths");
        var aeTD = eTable.getElementsByTagName("td");
        for(var i=0;i<aeTD.length;i++){
            aeTD[i].className = "unselected";
            anMonthSel[i] = 0;
        }
        
        // Compact all minor areas
        var allareas = document.getElementById("area_all");
        document.getElementById("media_main").style.display = "none";
        var aeMinor = allareas.getElementsByTagName("div");
        for(var i=0;i<aeMinor.length;i++){
            if(aeMinor[i].className == "area_item"){
                aeMinor[i].style.display = "none"; 
            }
        }
        
        var cb = document.getElementById("area_main");
        cb.checked = false;
        doAreaCBClick(cb);
        
        // Compact media
        var allmedia = document.getElementById("media_all");
        document.getElementById("area_main").style.display = "none";
        var aeMedia = allmedia.getElementsByTagName("div");
        for(var i=0;i<aeMedia.length;i++){
            if(aeMedia[i].className == "media_item"){
                aeMedia[i].style.display = "none"; 
            }
        }
        
        var cb = document.getElementById("media_main");
        cb.checked = false;
        doMediaCBClick(cb);
        
        buildSelectedList();
              
    }catch(err){
        alert(err.message);
    }    
}

function setSelectedSites(){
    var aSelSites = new Array();       
    for(var i=0;i<aSites.length;i++){
        if(aSites[i].isSelected == true){
            aSelSites[aSelSites.length] = aSites[i].SiteID;
        } 
    }
            
    if(aSelSites.length == 0){
        return;
    }
            
    var e = document.getElementById("hselsites");
    e.value = aSelSites.join(',');
}

    /* ==============================================================
     * Jump to Selection.aspx with all selected sites in the basket.
     * An error will be raised if no sites are present in the basket
     * ============================================================== */
    function doConfirm(){
        try{            
            setSelectedSites();
            document.forms["form2"].action = "selection.aspx";
            document.forms["form2"].submit();            
        }catch(err){
            alert(err.message);
        }
    }


function buildSelectedList(){
   try{
        var aeHidden = document.getElementById("selfields").getElementsByTagName("input");
        for(var i=0;i<aeHidden.length;i++){
            if(aeHidden[i].className == "ri_selsite"){
                asData = aeHidden[i].value.split('|');
                if(isNaN(parseFloat(asData[1])) || isNaN(parseFloat(asData[2]))){
                    asData[1] = "";
                    asData[2] = "";                                
                }
                var nSiteIDX = GetSiteIndexByNum(asData[0]);
                if(nSiteIDX == -1){
                    // Add the site
                    nSiteIDX = aSites.length;
                    aSites[nSiteIDX] = new Site(asData[0], asData[1], asData[2], asData[3], asData[4], false, false, asData[5], asData[6], asData[7], asData[8]);                                                        
                }
                //AddSiteToBasket(aSites[nSiteIDX].siteNumber, false)
            }
        }
    }catch(err){}
            
         
}

function GetSiteIndexByNum(sNum){
        try{
            for(var i=0;i<aSites.length;i++){
                if(aSites[i].siteNumber == sNum) return i;             
            }
            return -1;
        }catch(err){
            return -1;
        }
    }
    
   function AddSiteToBasket(sSiteNumber, bDrawMap){
        try{
            // First find the site in our list
            for(var i=0;i<aSites.length;i++){
                if(aSites[i].siteNumber == sSiteNumber) break;             
            }
            
            if(i >= aSites.length) return;      // not found 
            if(aSites[i].isSelected == true){   // already in the basket              
                return;
            }
            // Add the site to the basket            
            CreateNewSelectedSiteBox(aSites[i]);            
            
        }catch(err){
            return;
        }
    }
    
    function RemoveSiteFromBasket(sSiteNumber){
        try{
            // First find the site in our list
            for(var i=0;i<aSites.length;i++){
                if(aSites[i].siteNumber == sSiteNumber) break;             
            }
            
            if(i >= aSites.length) return;      // not found 
            
            if(aSites[i].isSelected != true){   // Not in the basket
                return;
            }
            //document.getElementById("pi_" + aSites[i].siteNumber).className = "resultItem";
            var bi = document.getElementById("bi_" + sSiteNumber);
            bi.style.display = "none";
            
            aSites[i].isSelected = false;
        
        }catch(err){
            return;
        }
    }
    

 function CreateNewSelectedSiteBox(site){
        try{       
            var eBasket = document.getElementById("basketResults");
            
            // If the item already exists then it has been added and removed earlier - resurrect
            var eItem = document.getElementById("bi_" + site.siteNumber);
            if(eItem){
                eItem.style.display = "";
                site.isSelected = true;
                site.InfoPopup();
                return;
            }
            
            var sHTML = '<div class="basketImg">';
            sHTML += '<img src="' + m_ThumbsPhotoPath + site.siteNumber + '.jpg" alt="Site thumbnail" ';
            sHTML += 'onMouseOver="javascript:SelImgMouseEnter(event, \'' + site.siteNumber + '\');"';
            sHTML += ' onMouseOut="javascript:SelImgMouseLeave();"';
            sHTML += ' />';
            sHTML += '</div>';
            sHTML += '<div class="basketDescrip ' + 'title="' + site.label + '">';            
            sHTML += '<div class="basketBtn">';
            sHTML += '<a href="javascript:RemoveSiteFromBasket(\'' + site.siteNumber + '\');">';
            sHTML += '<img src="./images/btn_delete.gif" alt="Remove this product from your selection" /></a></div>';
            var sLabel = site.label;
            if(sLabel.length > 50) sLabel = sLabel.substring(0,50);            
            sHTML += sLabel;           
            sHTML += "</div>";
            sHTML = '<div class="basketItem" id="bi_' + site.siteNumber + '">' + sHTML + '</div>';
            eBasket.innerHTML += sHTML;
            site.isSelected = true;            
            
        }catch(err){
            return;
        }    
    }

function doAreaCBClick(e){
    try{                
        eParent = e.parentNode;
        
        if(eParent.className == "area_main"){
            var aeItems = eParent.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = e.checked; 
                }
            }
            return;
        }
        
        if(eParent.className == "area_item"){            
            document.getElementById("area_main").checked = false;
            var aeItems = eParent.parentNode.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = false;
                    return; 
                }
            }
            return;
        }
        
        if(eParent.className == "area_minor"){
            document.getElementById("area_main").checked = false;
            var aeItems = eParent.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = e.checked; 
                }
            }
            
        }
        
    }catch(err){
        alert(err.message);
    }
}

function doMediaCBClick(e){
    try{                
        eParent = e.parentNode;
        
        if(eParent.className == "media_main"){
            var aeItems = eParent.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = e.checked; 
                }
            }
            return;
        }
        
        if(eParent.className == "media_item"){            
            document.getElementById("media_main").checked = false;
            var aeItems = eParent.parentNode.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = false;
                    return; 
                }
            }
            return;
        }
        
        if(eParent.className == "media_group"){
            document.getElementById("media_main").checked = false;
            var aeItems = eParent.getElementsByTagName("input");
            for(var i=0;i<aeItems.length;i++){
                if(aeItems[i].type == "checkbox"){
                    aeItems[i].checked = e.checked; 
                }
            }
            
        }
        
    }catch(err){
        alert(err.message);
    }
}

function toggleAreaVisibility(e){
    try{
        var aeItems = e.parentNode.getElementsByTagName("div");
        for(var i=0;i<aeItems.length;i++){
            if(aeItems[i].className == "area_item"){
                if(aeItems[i].style.display == "none"){
                    aeItems[i].style.display = "block"; 
                }else{
                    aeItems[i].style.display = "none";
                }
            }
        }
    }catch(err){
        alert(err.message);
    }
}

function toggleMediaVisibility(e){
    try{
        var aeItems = e.parentNode.getElementsByTagName("div");
        for(var i=0;i<aeItems.length;i++){
            if(aeItems[i].className == "media_item"){
                if(aeItems[i].style.display == "none"){
                    aeItems[i].style.display = "block"; 
                }else{
                    aeItems[i].style.display = "none";
                }
            }
        }
    }catch(err){
        alert(err.message);
    }
}


function toggleMonthSel(e, index){
    try{        
        anMonthSel[index] = (anMonthSel[index]==0) ? 1 : 0;
        e.className = (anMonthSel[index]==0) ? "unselected" : "selected";
    }catch(err){
        alert(err.message);
    }
}

function AddMonths(dtDate, nMonths){
    try{
        var nYear = dtDate.getFullYear();
        var nMonth = dtDate.getMonth();
        var nDay = dtDate.getDate();
        
        //alert("AddMonths: " + "y=" + nYear + " m=" + nMonth + " d=" + nDay);
        
        for(var i=0; i < nMonths; i++){
            nMonth++;
            if(nMonth >= 12){
                nMonth = 0;
                nYear++;
            }
        }
        
        var dtNewDate = new Date();
        dtNewDate.setFullYear(nYear, nMonth, nDay);
        return dtNewDate;
        
    }catch(err){
        alert(err.message);
    }
}


function ToggleFeature(e, id){
    if(e.checked){
        AddFeature(id);
    }else{
        RemoveFeature(id);
    }
}

function AddFeature(id){
    for(var i=0;i<aFeatures.length;i++){
        if(aFeatures[i] == id) return;
    }
    aFeatures[aFeatures.length] = id;
}

function RemoveFeature(id){
    for(var i=0;i<aFeatures.length;i++){
        if(aFeatures[i] == id){
            aFeatures[i] = '';            
        }
    }
}

function doSubmit(){
    try{
        // build the hidden fields sets
        
        // The months
        var sMonthList = "";
        var sComma = "";
        var asMonths = new Array();
        asMonths[0] = "Jan";
        asMonths[1] = "Feb";
        asMonths[2] = "Mar";
        asMonths[3] = "Apr";
        asMonths[4] = "May";
        asMonths[5] = "Jun";
        asMonths[6] = "Jul";
        asMonths[7] = "Aug";
        asMonths[8] = "Sep";
        asMonths[9] = "Oct";
        asMonths[10] = "Nov";
        asMonths[11] = "Dec";

        // this will be our reference date, initialised to the first day of the current month
        var dtNow = new Date();
        dtNow.setDate(1);
        
        for(var i=0;i<anMonthSel.length;i++){
            if(anMonthSel[i] == 1){
                var dtThis = AddMonths(dtNow,i);
                sMonthList += sComma + dtThis.getDate() + " " + asMonths[dtThis.getMonth()] + " " + dtThis.getFullYear();
                sComma = ",";
            }
        }
        
        document.getElementById("q_months").value = sMonthList;
        
        // The media
        var asSizeID = new Array();
        var asFeatures = new Array();
        var asMediaFeatures = new Array();  // Welly airport as media
        var eParent = document.getElementById("media_main").parentNode;
        var aeItems = eParent.getElementsByTagName("input");
        for(var i=0;i<aeItems.length;i++){
            if(aeItems[i].type == "checkbox"){
                if(aeItems[i].parentNode.className == "media_item"){
                    if(aeItems[i].checked){
                        // cbm_<mediaid>
                        var mediaid = aeItems[i].id.substr(4);
                        var sSizes = document.getElementById("sl_" + mediaid).value;
                        if(sSizes){                            
                            asSizeID[asSizeID.length] = sSizes;
                        }
                        var sFeatures = document.getElementById("fl_" + mediaid).value;
                        if(sFeatures){                            
                            asMediaFeatures[asMediaFeatures.length] = sFeatures;
                        }           
                    }
                }
            }
        }
        
        document.getElementById("q_media").value = asSizeID.join(',');
        document.getElementById("q_features").value = asFeatures.join(',');
        document.getElementById("q_mediafeatures").value = asMediaFeatures.join(',');
        
        // Areas        
        var asAreaID = new Array();
        eParent = document.getElementById("area_main").parentNode;
        aeItems = eParent.getElementsByTagName("input");
        for(var i=0;i<aeItems.length;i++){
            if(aeItems[i].type == "checkbox"){
                if(aeItems[i].parentNode.className == "area_item"){
                    if(aeItems[i].checked){
                        var areaid = aeItems[i].id.substr(4);
                        asAreaID[asAreaID.length] = areaid;           
                    }
                }
            }
        }

        
        document.getElementById("q_areas").value = asAreaID.join(',');  

        // Features - note that we may already have some features in the list that have come from the media selection

        var ef = document.getElementById("q_features");
        for(var i=0;i<aFeatures.length;i++){
            if(aFeatures[i] == '') continue;
            if(ef.value.length > 0) ef.value += ',';
            ef.value += aFeatures[i]; 
            asFeatures[asFeatures.length] = aFeatures[i];           
        }

        //var sKeyword = document.getElementById("keywordinput").value;       
        //document.getElementById("q_keywords").value = sKeyword;        
        
        // At least a media or an area or a keyword must be present
        if( (asSizeID.length + asFeatures.length + asAreaID.length + asMediaFeatures.length) == 0){
            alert("Please select at least a Media, an Area or a Feature.");
            return;
        }
        
        setSelectedSites();
        document.forms["form2"].submit();
                        
    }catch(err){
        alert(err.message);
    }
}

function showKeywordHelp(){
    try{
        var sText = "The following keywords may be entered for your search:\n\n";
        sText += "Motorway\n";
        sText += "School\n";
        sText += "Lighting\n";
        sText += "Free standing\n";
        sText += "Wall mounted\n";
        sText += "Intersection\n";
        sText += "Solus\n";
        sText += "Supermarkets\n";
        sText += "Petrol Stations\n";
        sText += "Service Stations\n";
        sText += "Main Arterials\n";
        sText += "Inbound\n";
        sText += "Outbound\n";
        sText += "High Traffic\n";
        alert(sText);
    }catch(err){
        alert(err.message);
    }
}

/* =====================================================================================
 *
 * ===================================================================================== */
function getScrollX() {
    var scrOfX = 0;;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfX = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant        
        scrOfX = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfX = document.documentElement.scrollLeft;
    }
    return scrOfX;
}

function getScrollY() {
    var scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;    
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
    }
    return scrOfY;
}
        
        
function SelImgMouseEnter(thisEvent, sitenumber){
    try{
        if(!thisEvent) thisEvent = event;
        var eSrc = (thisEvent.srcElement) ? thisEvent.srcElement : thisEvent.target;  
        var nOffsetY = (thisEvent.offsetY) ? thisEvent.offsetY : 0;       
        var nOffsetX = (thisEvent.offsetX) ? thisEvent.offsetX : 0;       
        var nTop = (thisEvent.clientY - nOffsetY) + getScrollY();
      
        //if(nTop > getScrollY()) nTop = getScrollY();
        if((nTop + 160) > windowHeight()){
            nTop = windowHeight() - 160;
        }
        var nWidth = (eSrc.clientWidth) ? eSrc.clientWidth : 0;
        var nLeft = (thisEvent.clientX - nOffsetX) + nWidth;
        var eImg = document.getElementById("hoverimage");
        eImg.src = m_SmallPhotoPath + sitenumber + ".jpg";
        eImg.style.left = nLeft + "px";
        eImg.style.top = nTop + "px";
        eImg.style.visibility = "visible";
    }catch(err){
        alert(err.message);
        return;
    }
}

function windowHeight() {
    var myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myHeight = document.body.clientHeight;
    }  
    
    return myHeight;  
}

function windowWidth() {
    var myWidth = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
    }
}

function SelImgMouseLeave(){
    try{
        var eImg = document.getElementById("hoverimage");
        eImg.style.visibility = "hidden";
        
    }catch(err){
        return;
    }
}
