﻿// JScript File
 
 var gmarkers;
 var searchResults;
 var free;
 var member2member;

//======================================================================================================================//
//======================================================================================================================//
//<summary>
// create initial markers
//</summary>
function createMarker(point,member,  name, profile, vetting, html, type, categories, m2m) {

            // var ls = document.getElementById('loadstatus');
             // ls.innerHTML = 'Plotting...'

if (GBrowserIsCompatible()) {

       // alert(member);
//        for (var y=0; y<categories.length; y++) {
//         alert(categories[y]);
//        }


var baseIcon = new GIcon();
baseIcon.iconAnchor = new GPoint(16, 16);
baseIcon.infoWindowAnchor = new GPoint(16, 16); 
baseIcon.infoShadowAnchor  = new GPoint(18, 20); 

//DBug alert(member);
//Dbug  alert(html + ' ' + type);

// set icon image
if (type == 1) 
{
baseIcon.image =  "images/marker/qualityMark.png" ;
baseIcon.iconSize = new GSize(30, 61); 

//alert(name);

}
else if (type == 2 && free == true) 
{
baseIcon.image = "images/marker/markerFree.png" ;
baseIcon.shadow = "images/marker/marker_shadowSmall.png";
baseIcon.iconSize = new GSize(18, 30); 

}
else if (type == 4) 
{
baseIcon.image = "images/marker/markerExpire.png" ;
baseIcon.shadow = "images/marker/marker_shadowExpire.png";
baseIcon.iconSize = new GSize(9, 17); 

}

else if (type == 3) 
{
baseIcon.image = "images/marker/member.png" ;
baseIcon.shadow = "images/marker/shadow50.png";
baseIcon.iconSize = new GSize(20, 34); 

}

markerOptions = {icon:baseIcon};

/// pin actions ----------------------------------------------
       var marker = new GMarker(point, markerOptions);
       
       //delcare marker categories
        marker.mycategories = categories;  
      //declare marker member
        marker.member =  member; 
        //declare marker name
        marker.name =  name; 
         //declare marker profile
        marker.profile =  profile; 
         //declare marker vetting
        marker.vetting =  vetting; 
        // marker m2m
        marker.m2m = m2m;
           
       
       // on pin mouseover--------------------------------------
       GEvent.addListener(marker, "mouseover", function() {
       
         var npoint = marker.getPoint();		
        //include lat/lng marker.openInfoWindowHtml(html + npoint.toUrlValue());
         marker.openInfoWindowHtml(html);
         
         var rmember = document.getElementById('txtMember'); 
rmember.value = member
         
        });

       
       // on pin click----------------------------------------------
    GEvent.addListener(marker, "click", function() {
        marker.closeInfoWindow();
        marker.openInfoWindowHtml(html);
                 var rmember = document.getElementById('txtMember'); 
                rmember.value = member
             
    var npoint = marker.getPoint();
  PerfectArc.MapManager.Ukita.fullRegionControl.GetMemberInfo(member,  LoadText_callback);

    });


            gmarkers.push(marker);
              return marker;
         }
         

    }
       

//======================================================================================================================//
//======================================================================================================================//

function GetMemberData(StrMemberID)
{

           StrMemberID =  document.getElementById('txtMember').value;
 //debug# alert('final ' + StrMemberID);

PerfectArc.MapManager.Ukita.fullRegionControl.GetMemberInfo(StrMemberID,  LoadText_callback);

}

       function LoadText_callback(res)
{
 //debug# alert(res.value.Company);
 var sb 
 var strProfile
 var strM2M
 

 
 var br = "<br/>";
 sb = '<span class=memberHeading>' + res.value.CompanyName + '</span>'; 
 sb += br ; sb += br ;
 sb += 'Contact Name: <strong>' + res.value.FirstName + ' ' + res.value.Surname + '</strong>' ;
 sb += br ;
//sb += 'Address: <strong>' + res.value.Address + '</strong>';
// sb += br ;
  sb += 'Postcode: <strong>' + res.value.Postcode + '</strong>';
sb += br ;
sb += 'Telephone: <strong>' + res.value.Telephone + '</strong>';
 sb += br ;
sb += 'Email: <strong>' + res.value.Email  + '</strong>';
 sb += br ;
sb += 'Website: <strong>' + res.value.Website + '</strong>';
sb +=  res.value.QualityMark;
// sb += br ;
//sb += 'Company Status: <strong>' + res.value.CompanyType + '</strong>' ;

 sb += br ;
sb += 'Employee Size: <strong>' + res.value.EmployeeNumber + '</strong>' ;

 sb += br ;
 sb += br ;
sb += '<a href="' + res.value.UkitaPreview + '">View full entry</a>' ;

//==== member profile ==//
 strProfile = br ; strProfile += br ;
strProfile += '<strong>Profile:</strong> ';
 strProfile += br ;
 strProfile += res.value.CompanyProfile  ;
 
 //=== member 2 member ===//
  strM2M = br ; strM2M += br ;
 strM2M  += '<strong>Member 2 Member Offer:</strong> ';
 strM2M += br ;
 strM2M += res.value.Member2Member  ;


goSmall();
//hide rotator + prem
 $("#divRotatingAdvert").hide();
  $("#divPremiereAdvert").hide();
  $("#divSearch").hide();

//show info
 $("#divInfo").show();


 
 
//set details
var rdiv1 = document.getElementById('spanDetails'); 
rdiv1.innerHTML = sb

//set profile
var rdiv2 = document.getElementById('spanProfile'); 
rdiv2.innerHTML = strProfile
//alert(sb.toString());

//set M2M
var rdiv3 = document.getElementById('spanM2M'); 
rdiv3.innerHTML = strM2M
//alert(sb.toString());

 //hide m2m data //
infoSwitch('profile');

}


//<summary>
// show reotator / hide info
//</summary>
//hide rotator
function HideInfo(){


	if (! document.getElementById('txtAdvancedSearch').value.length > 0) {

 $("#divRotatingAdvert").show();
  $("#divPremiereAdvert").show();

//show info
 $("#divInfo").hide();
  $("#divSearch").hide();
  }
}


//======================================================================================================================//
//======================================================================================================================//
//<summary>
// setup ajax map
//</summary>
function setupSearchMap(bolFree, bolBig, bolScroll, bolM2M) {


//map.addControl(new GSmallZoomControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-10,-60)));
 
        //=== whats being searched ===//
WhatSearching()
WhatFiltering()


    moveEndEvent = GEvent.addListener(map,"moveend", function() {
                
        zoom = map.getZoom();
        
        bounds = map.getBounds();
        southWest = bounds.getSouthWest();
        northEast = bounds.getNorthEast();
        lonSpan = northEast.lng() - southWest.lng();
        latSpan = northEast.lat() - southWest.lat();
        
        //check if window is open
        var iw = map.getInfoWindow(); 
  if (!iw.isHidden()) { 
    return;  //Do nothing 
  } 
  
                   $("#loadstatus").show();
           $("#loading").show();
         $("#loadstatus").html("Downloading...");

        map.clearOverlays();
        getMarkerList(southWest.lng(),northEast.lng(),southWest.lat(),northEast.lat(),zoom, true);


    });
        
              $("#loadstatus").html("Downloading...");

        zoom = map.getZoom();
        
       //=== set up map ===//
       
       //=== free pins ===//
     //  alert(free);
       free = bolFree;
     //  alert(free);
      
      //=== go big screen ===//
     //  alert(bolBig);
       if (bolBig == true) {
               goLarge();
               }else{
               goSmall();
       }
       
       //=== scrol stopped ===//
           // ====== Restricting the range of Zoom Levels =====
           if (bolScroll == true){
      // Get the list of map types      
      var mt = map.getMapTypes();
      // Overwrite the getMinimumResolution() and getMaximumResolution() methods
      for (var i=0; i<mt.length; i++) {
       mt[i].getMinimumResolution = function() {return zoom;}
  //     mt[i].getMaximumResolution = function() {return 9;}
            }
        }
        
        
        //=== member 2 member ===//
     member2member =  bolM2M
     if (bolM2M == true){
      $("#spanM2MSwitch").show()
     }else{
         $("#spanM2MSwitch").hide();
     }
               
               //=== map bounds ===//
               mapBounds();
}

function mapBounds(){
    bounds = map.getBounds();
    southWest = bounds.getSouthWest();
    northEast = bounds.getNorthEast();
    lonSpan = northEast.lng() - southWest.lng();
    latSpan = northEast.lat() - southWest.lat();
    
    map.clearOverlays();
    getMarkerList(southWest.lng(),northEast.lng(),southWest.lat(),northEast.lat(),zoom,true);

}


//======================================================================================================================//
//======================================================================================================================//
// ============================  get marker list ================================   //
function getMarkerList(minLon,maxLon,minLat,maxLat,zoom) {
  //debug//   alert('loadingz');

         //set new array
            gmarkers = [];
        //>>>>>>>>>>>>     var searchResults = new Array();
        searchResults = new Array();
//alert(minLon.toString());
//alert(maxLon.toString());
//alert(minLat.toString());
//alert(maxLat.toString());
//alert(zoom.toString());
	var plotsthisiteration = 0;

    siteCount = 0;
    latDiff=maxLat-minLat;
    lonDiff=maxLon-minLon;

//=== dropdown value ===//
  var rSelect =   document.getElementById('txtHiddenDrop').value;
    var rSelectFilter =   document.getElementById('txtHiddenDropFilter').value;
 //debug   alert("dropload " + rSelect);

   var urlParams = '?f=ukita&zoom='+zoom+'&minLon='+minLon+'&maxLon='+maxLon+'&minLat='+minLat+'&maxLat='+maxLat;
 // '# var filterParams = '&dfilter='+ rSelect;
      var searchParams = '&dsearch=' + document.getElementById('txtAdvancedSearch').value
      var searchLenth = document.getElementById('txtAdvancedSearch').value.length

    //#debug confirm(urlParams);
   //#debug location.href='xmlFeed/getMarkerListing.aspx'+urlParams.toString();
   
    //====== expire =============//
    var expireParam = ''; 
 var expire_param = gup( 'expire' );
    if (expire_param.length > 0)
    {
    expireParam = '&expire=yes';
    }
        
   //####var xmlURL = 'xmlFeed/getMarkerXML.aspx'+urlParams.toString() + filterParams.toString() + searchParams.toString();
   var xmlURL = 'xmlFeed/getMarkerListing.aspx'+urlParams.toString() + searchParams.toString() + expireParam.toString();
    //var xmlURL = 'csvParse.aspx';
 //debug    prompt('url',xmlURL);//debug//
 
 
 //====== debug =============//
 var debug_param = gup( 'debug' );
    if (debug_param.length > 0)
    {
    alert('debug mode ON');
    window.open('xmlFeed/debugMarkerListing.aspx'+urlParams.toString()+ searchParams.toString());
    }
    //=========================//

    GDownloadUrl(xmlURL, function (data, responseCode) {
    //  alert(data);
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName("marker");

        //var siteCount = xml.documentElement.getElementsByTagName("count");     
        //var siteCount = parseInt(siteCount[0].getAttribute("marker_count"));
        //alert(siteCount);

    //=== if no markers stop and show message ===//
    	if (! document.getElementById('txtAdvancedSearch').value.length > 0) {
               if (! markers.length > 0) {
                PanNoResults();
                return;
                }
                else{
                HideInfo();   
                }
             }
    
    
    //=== for each marker ===//
      for (var i=0; i<markers.length; i++) {
          var  pointLat = parseFloat(markers[i].getAttribute("lat"));
          var  pointLng = parseFloat(markers[i].getAttribute("lng"));
          var name = new String(markers[i].getAttribute("name"));
          var member = new String(markers[i].getAttribute("member"));
          var info = markers[i].getAttribute("info");
          var type = parseInt(markers[i].getAttribute("flagType"));
          var profile = new String(markers[i].getAttribute("profile"));
          var vetting = parseInt(markers[i].getAttribute("vetting"));
          var m2m = new String(markers[i].getAttribute("m2m"));
                 
          
   
   //add categories for each marker
      //  var categories = new Array();
         var categoryList = markers[i].getElementsByTagName("Category");
   //debug alert(categoryList.length);
          
          
         var categories = new Array();
         categories.length = 0
 
         if (categoryList.length > 0) {    
                  for (var z=0; z<categoryList.length; z++) {
                  var cat = new String(categoryList[z].getAttribute("CategoryID"));
         //debug       alert("entry " + cat);

                  categories.push(cat);
                  // debug  alert(cat);
                  }
            }
            // debug alert(categories.length);
                             
           //debug  alert(pointLat);
          //debug  alert(pointLng);
            var point = new GLatLng(pointLat, pointLng);

//====== Progress Bar ==== //
         var percent = Math.ceil(((plotsthisiteration+1)/markers.length)*100);
          $("#loadstatus").html("Plotting... ("+percent+"%)"); 
          $("#progresschunk").css("display", "block").css("width", Math.ceil(150*(percent/100))+"px");
        
                 //==== show search results ====//

            if (searchLenth > 0)
            {
            var myClassObj = new MyDisplayClass();
                myClassObj.myName = name;
                myClassObj.myMember = member;
                myClassObj.myProfile = profile;
                myClassObj.myVetting = vetting;
                
            searchResults.push(myClassObj)
            }
            
            //######################
         
         //=== create marker === //
           var marker = createMarker(point,member, name, profile, vetting, info, type, categories, m2m);
            map.addOverlay(marker);
                             
         ///  map.addOverlay(createMarker(point,member, "test", type));
        }
                             $("#loadstatus").hide();
                         $("#progressmeter").hide();
                       //  alert('filter ' + rSelect);
                          show(rSelect, rSelectFilter);
                          
        //=== advanced search - load results === //
                   //debug     alert('len ' + searchLenth );

             if (searchLenth > 0)
            {
            ShowSearchResults()
            }

     //   document.getElementById('mapdata').innerHTML = "You can find <strong>"+siteCount+" hotspots</strong> within the current map view";
    });
    
 }
 

//======================================================================================================================//
//======================================================================================================================//

 //<summary>
 // filter selection
 //</summary>
 function filterSelection(intCriteriaID){
 
 //debug# alert(intCriteriaID)
 }
 
 
 //<summary>
 // filter selection on single dropdwon value
 //</summary>
  function filterDropCatsSelection(val){

 //debug alert("======================= " + val);
   document.getElementById('txtHiddenDrop').value = val;
 show(val, '');
  WhatFiltering()

 }
 
 
  //<summary>
 // filter selection on single dropdwon value
 //</summary>
  function filterDropFilterSelection(val){

 //debug alert("======================= " + val);
   document.getElementById('txtHiddenDropFilter').value = val;
 show('', val);

 }


//======================================================================================================================//
//======================================================================================================================//

 // == shows all markers of a particular category, and ensures the checkbox is checked == //
      function show(category, filter) {

                var searchLenth = document.getElementById('txtAdvancedSearch').value.length
                      searchResults = new Array();


        for (var i=0; i<gmarkers.length; i++) {
        
        if (category == '' && filter == '' )
        {
         gmarkers[i].show();
          //=== refilter saerch results ===//
           if (searchLenth > 0)
                            {
                            var myClassObj = new MyDisplayClass();
                                myClassObj.myName = gmarkers[i].name;
                                myClassObj.myMember = gmarkers[i].member;
                                 myClassObj.myProfile = gmarkers[i].profile;
                                myClassObj.myVetting = gmarkers[i].vetting;
                            searchResults.push(myClassObj)
                            }
         }
         else
         {
        // == set boolean for category exists == //
        var bolExists = new Boolean(false);

            //=== categories ===
            if (category != ''){
                            // == check if marker has categories == //
                               if (gmarkers[i].mycategories.length > 0) {

                                         // == loop categories in array == //
                                         for (var iz=0; iz<gmarkers[i].mycategories.length; iz++){
                                            // == check if category is in marker object == //
                                   //debug//   alert((gmarkers[i].mycategories[iz].toLowerCase() ));
                                                if (gmarkers[i].mycategories[iz].toLowerCase()  == category) {
                                                bolExists = true;
                                                
                         
                                                 break;
                                                }
                                            }
                                  }
                              }    
                              
                                          
             //=== filter ===//
             if (filter != ''){
              if (gmarkers[i].m2m == 'true') {
                      bolExists = true;
                            //    alert("mark" + gmarkers[i].m2m);
                      
              } 
                                            
          }
           
           
           // == set to show or hide pin == //
                 if (bolExists == true)
                 {
                    gmarkers[i].show();
                       //=== refilter saerch results ===//
                         if (searchLenth > 0)
                            {
                            var myClassObj = new MyDisplayClass();
                               myClassObj.myName = gmarkers[i].name;
                                myClassObj.myMember = gmarkers[i].member;
                                 myClassObj.myProfile = gmarkers[i].profile;
                                myClassObj.myVetting = gmarkers[i].vetting;
                            searchResults.push(myClassObj)
                            }
                 }
                 else
                     {
                        gmarkers[i].hide();
                        map.closeInfoWindow();
                     }
                 }
                 
           
       } 
       
             //=== show new filtered search results ===//
                    if (searchLenth > 0)
                 {
                        ShowSearchResults()
                   }
     } 
      ////        for (var i=0; i<gmarkers.length; i++) {
////        
////        }
        // == check the checkbox ==
       // document.getElementById(category+"box").checked = true;


      // == hides all markers of a particular category, and ensures the checkbox is cleared ==
//      function hide(category) {
//        for (var i=0; i<gmarkers.length; i++) {
//          if (gmarkers[i].mycategory == category) {
//                for (var iz=0; iz<gmarkers[i].mycategories.length; iz++){
//                 alert('hide marker ' + gmarkers[i].mycategories[iz]);
//                        if (gmarkers[i].mycategories[iz] == category) {
//                        gmarkers[i].hide();
//                        alert('hide '  + gmarkers[i].mycategories[iz]);
//                        }
//                    }
//          }
//        }
//        // == clear the checkbox ==
//     //   document.getElementById(category+"box").checked = false;
//        // == close the info window, in case its open on a marker that we just hid
//        map.closeInfoWindow();
//      }

//===###########################################################################################
//=== go large / go small==
//===#############################################################################################
function goLarge(){

 $("#rightcolGMap").hide();
  $("#map").width("970px");
  $("#map").height("970px");
  map.checkResize(); 
  mapBounds()

 
}

function goSmall(){

 $("#rightcolGMap").show();
  $("#map").width("561px");
  $("#map").height("561px");
  map.checkResize(); 
 //debug#alert("small");
 
}



//<summary>
// show reotator / hide info
//</summary>
//hide rotator
function viewAdverts(){

goSmall()

 $("#divRotatingAdvert").show();
  $("#divPremiereAdvert").show();

//show info
 $("#divInfo").hide();
  $("#divSearch").hide();
  
}


//=== ###############################################################################################
//=== switch member to member ==//
//=== #################################################################################################
function infoSwitch(type){
    if (type == 'profile'){
        $("#spanM2M").hide();
        $("#spanProfile").show();
    }
    else if (type == 'm2m')
    {
        $("#spanM2M").show();
        $("#spanProfile").hide();
    }
}

//helper
function getArgs() {
var args = new Object();
var query = location.search.substring(1);
var pairs = query.split("&");
for(var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf('=');
if (pos == -1) continue;
var argname = pairs[i].substring(0,pos);
var value = pairs[i].substring(pos+1);
args[argname] = unescape(value);
}
return args;
} 

//###########################################################################################
//########################### help #########################################################
//##########################################################################################
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}