﻿// JScript File
 
 var gmarkers;
 var searchResults;

//======================================================================================================================//
//======================================================================================================================//
//<summary>
// create initial markers
//</summary>
function createMarker(point,member,  name, profile, vetting, html, type, categories) {

            // 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(32, 85); 

}
else if (type == 2) 
{
baseIcon.image = "images/marker/marker_Small.png" ;
baseIcon.shadow = "images/marker/marker_shadowSmall.png";
baseIcon.iconSize = new GSize(18, 30); 

}
else 
{
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; 
           
       
       // 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.MembershipManager.DemoFrame._controls_FullRegionControl.GetMemberInfo(member,  LoadText_callback);

    });


            gmarkers.push(marker);
              return marker;
         }
         

    }
       
       ///<summary>
       /// load text info
       ///</summary>
       function LoadText_callback(res)
{
 var sb 
 var br = "<br/>";
 sb = '<span class=memberHeading>' + res.value.Company + '</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 += br ;
sb += 'Quality Mark: <strong>' + res.value.QualityMark  + '</strong>';
 sb += br ;
sb += 'Company Status: <strong>' + res.value.CompanyType + '</strong>' ;

 sb += br ;
sb += 'Employee Size: <strong>' + res.value.purchasetypeinfo.Description + '</strong>' ;

 sb += br ; sb += br ;
sb += '<strong>Profile:</strong> '
 sb += br ;
 sb += res.value.Profile  ;

//hide rotator + prem
var radiv = document.getElementById('divRotatingAdvert');
radiv.style.display = 'none';
var padiv = document.getElementById('divPremiereAdvert');
padiv.style.display = 'none';



//show info
var divInf = document.getElementById('divInfo');
divInf.style.visibility = 'visible'; 

//set info
var rdiv = document.getElementById('spanDetails'); 
rdiv.innerHTML = sb
//alert(sb.toString());

}

//======================================================================================================================//
//======================================================================================================================//

function GetMemberData(StrMemberID)
{

           StrMemberID =  document.getElementById('txtMember').value;

//##alert('final ' + StrMemberID);

PerfectArc.MembershipManager.DemoFrame._controls_FullRegionControl.GetMemberInfo(StrMemberID, 'skillfair',  LoadText_callback);

}

       function LoadText_callback(res)
{
//debug alert(res.value.Company);
 var sb 
 var br = "<br/>";
 sb = '<span class=memberHeading>' + res.value.Company + '</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 += br ;
//sb += 'Quality Mark: <strong>' + res.value.QualityMark  + '</strong>';
// sb += br ;
//sb += 'Company Status: <strong>' + res.value.CompanyType + '</strong>' ;

// sb += br ;
//sb += 'Employee Size: <strong>' + res.value.purchasetypeinfo.Description + '</strong>' ;

 sb += br ; sb += br ;
sb += '<strong>Profile:</strong> '
 sb += br ;
 sb += res.value.Profile  ;

//hide rotator + prem
 $("#divRotatingAdvert").hide();
  $("#divPremiereAdvert").hide();
  $("#divSearch").hide();

//show info
 $("#divInfo").show();

//set info
var rdiv = document.getElementById('spanDetails'); 
rdiv.innerHTML = sb
//alert(sb.toString());

}


//<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() {
       
        //=== 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();
        
    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;

    var myDropDownList = document.getElementById("ctl00_ContentRight_ctlMap_drpCategories");
  var rSelect =  myDropDownList.value;
    //alert(rSelect);

   var urlParams = '?f=skillfair&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();
        
   //####var xmlURL = 'xmlFeed/getMarkerXML.aspx'+urlParams.toString() + filterParams.toString() + searchParams.toString();
   var xmlURL = 'xmlFeed/getMarkerListing.aspx'+urlParams.toString() + searchParams.toString();
    //var xmlURL = 'csvParse.aspx';
    //debug// prompt('url',xmlURL);

    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"));
                 
          
   
   //add categories for each marker
      //  var categories = new Array();
         var categoryList = markers[i].getElementsByTagName("Category");
 //  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("CategoryName"));
                 //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);
            map.addOverlay(marker);
                             
         ///  map.addOverlay(createMarker(point,member, "test", type));
        }
                             $("#loadstatus").hide();
                         $("#progressmeter").hide();
                       //  alert('filter ' + rSelect);
                          show(rSelect);
                          
        //=== advanced search - load results === //
                         //#   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){
 
 alert(intCriteriaID)
 }
 
 
 //<summary>
 // filter selection on single dropdwon value
 //</summary>
  function filterDropSelection(){
 var myDropDownList = document.getElementById("ctl00_ContentRight_ctlMap_drpCategories");
  var rSelect =  myDropDownList.value;
 show(rSelect);
  WhatFiltering()

 }


//======================================================================================================================//
//======================================================================================================================//

 // == shows all markers of a particular category, and ensures the checkbox is checked == //
      function show(category) {
      
                var searchLenth = document.getElementById('txtAdvancedSearch').value.length
                      searchResults = new Array();


        for (var i=0; i<gmarkers.length; i++) {
        
        if (category == '')
        {
         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);

    // == 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;
                        }
                    }
          }
           
           
           // == 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();
//      }

