var map;
var geocoder;
var marker;
var html;
var baseIcon;
var asInitVals = new Array();
var oTable;
var mgr;
var markers = [];
var MapH;
var dtHeight;
var pharmacyIcon;
var MapAuFirstOpen = false;
var MapAuSetHeight;


$(document).ready(function() {	


	 $("#PharmacyAccordion").accordion({
                fillSpace: false,
                header: 'h6',
				autoHeight: false,
				clearStyle: true
                }
            )      
 	$('#PharmacyAccordion').bind('accordionchange', function(event, ui) {
  		
		if(ui.newHeader.text() == "New Zealand"){
			
			if ($('#NZ_Map').is(':hidden')) {
            	GetNZData();
        	}	
			
		}		
		
	});
 
	
        $('.required').css({ 'position': 'relative', 'color': 'red', 'font-weight': 'bold', 'width': '4px' });

	
	oTable = $('#pharmacies').dataTable({
					"bFilter": false,
					"bLengthChange": false,
					"oLanguage": {"sSearch": "filter results:"},
					"aoColumns": [
    /* Platinum */   { "bVisible": true },
    /* Name */  null,
    /* Address */  null,
    /* Suburb */  null,
    /* Poscode */   null,
    /* State */   null,
    /* PH */   null,    
	/* Map Link  */   null
				]
				});
	
	map = new GMap2(document.getElementById('GMapAU'));
	var AustCent = new GLatLng(-25.335448,135.745076);
   	geocoder = new GClientGeocoder();
	map.setCenter(AustCent, 4);
	map.addControl(new GSmallMapControl());
	baseIcon = new GIcon();
	baseIcon.iconAnchor = new GPoint(68, 45);
	baseIcon.infoWindowAnchor = new GPoint(115, 15);	
	
	pharmacyIcon = new GIcon(baseIcon);
    pharmacyIcon.image = "http://optifast.icontract.com.au/images/GmarkerIcon_w_shadow.png";
    pharmacyIcon.iconSize = new GSize(138, 58);     
        
	
	$('#StateResultsMsgAU').dialog({ 
									modal:true,
									autoOpen: false,
									buttons: { "Ok": function() { $(this).dialog("close"); } }
									 });
	
	$('#SearchErrorMsgAU').dialog({ 
									modal:true,
									autoOpen: false,
									buttons: { "Ok": function() { $(this).dialog("close"); } }
									 });
	
} );







    function LoadDataTableResults(DataArr) {

		var LinkHTML;
	
        oTable.fnClearTable(0);
		
		if(DataArr[0] == "STATE--RESULTS"){
			DataArr.shift();
			$('#StateResultsMsgAU').dialog( 'open' );
		}			
		
		// alert(DataArr.length); 
		 
		 var TableDataArr = [];
		 
        for (i = 0; i < DataArr.length; i++) {     
		
			 LinkHTML = '<a href="#OpenMarkerInfoWindow-' + i + '" OnClick="OpenMarkerInfoWindow(' + i + ')">Show</a>';
		 	var platinum = '<img src="/images/shim.gif" width="30px" height="30px" alt="" />';
		 	if(DataArr[i][9] == '1'){		 
				platinum = '<img src="/images/platinum.gif" width="30px" height="30px" alt="Platinum Pharmacy" />'	
		 	}		    
            
			TableDataArr[i] = [platinum,
                        DataArr[i][2],
                        DataArr[i][3],
                        DataArr[i][4],
                        DataArr[i][1],
                        DataArr[i][5],
                        DataArr[i][6],
                        LinkHTML               
                    ];
          
        }	
		indexes = oTable.fnAddData(TableDataArr);		
		oTable.fnSort( [ [0,'desc'], [1,'asc'] ] );
        $("#SearchResultsTable").show();		
		
		MapAuFirstOpen = false;	
    }


    function AddGoogleMarkers(DataArr) {
	
		//clear the markers
		map.clearOverlays(); 
		markers = new Array();
		$('#AU_Map').hide();
   		
        for (i = 0; i < DataArr.length; i++) {
			marker = FormatMarker(DataArr[i], i);			
			 map.addOverlay(marker);
			
        }        			
			
    }

    function FormatMarker(markerData) {
        
		
		point = new GLatLng(markerData[8],
                            markerData[7]);                            
                            
        html = "<strong>" + markerData[2] + "</strong><br/>";
        html += markerData[3];
        html += "<br/>" + markerData[4] + " " + markerData[5] + " " + markerData[1];
        html += "<br/>Ph: " + markerData[6];		
		
       	marker = new GMarker(point, { icon:pharmacyIcon });
       	var i = markers.length;
      	
		marker.bindInfoWindowHtml(html);
      	markers.push(marker);	
        return marker;

    }
	
	
	function FormatMarkerNZ(markerData) {
        
		
		if(markerData[8].length > 0 || markerData[7].length > 0){
		
			point = new GLatLng(markerData[8],
                            markerData[7]); 
		
		}
		else{
			address = markerData[3] + " " + markerData[4] + " " + markerData[1] + " New Zealand";
			//alert(address)
			point = GetLonLatFromAdd(address);		
		}
		
		
		if(!point){
			
			
		}
		else{		                              
                            
	        html = "<strong>" + markerData[2] + "</strong><br/>";
	        html += markerData[3];
	        html += "<br/>" + markerData[4] + " " + markerData[5] + " " + markerData[1];
	        html += "<br/>Ph: " + markerData[6];		
			
	       	marker = new GMarker(point, { icon:pharmacyIcon });
	       	var i = markers.length;
	      	
			marker.bindInfoWindowHtml(html);
	      	markers.push(marker);	
	        return marker;
		}

    }
	
	
	

     function OpenMarkerInfoWindow(i) { 	
		
		map.setCenter(markers[i].getLatLng(), 14);			
		if($('#AU_Map').is(':hidden')){		
					
			if(!MapAuFirstOpen){
				MapH = parseInt($('#AU_Map').height());			
				dtHeight = parseInt($('.display').height());			
				$('#SearchResultsTableAU').css('min-height',  (MapH + dtHeight + 70) + 'px');	
				$('#SearchResultsTableAU').css('height',  (MapH + dtHeight + 80) + 'px');					
				MapAuFirstOpen = true;
				MapAuSetHeight = (MapH + dtHeight);
			}
			else{
				
				dtHeight = parseInt($('.display').height());	
				$('.dataTables_wrapper').css('min-height', (dtHeight + 70) + 'px');
                $('.dataTables_wrapper').css('height', (dtHeight + 70) + 'px');	
				
				dtHeight = parseInt($('.dataTables_wrapper').height());	
				$('#SearchResultsTableAU').css('min-height',  (MapH + dtHeight + 70) + 'px');	
				$('#SearchResultsTableAU').css('height',  (MapH + dtHeight + 80) + 'px');		
				
				
			}			
						
			$('#AU_Map').show('slide');	
			map.checkResize();       	
		}		
		
		GEvent.trigger(markers[i],"click");

      }

	  
	  function ToggleSearchWidgetWindow(WidgetType){    	
		
			WidgetTypeID= "#" + WidgetType;		
			WidgetTypeCloseBut = "#" + WidgetType + "_X";	
			$(WidgetTypeID).toggle('blind'); 
			$(WidgetTypeCloseBut).toggleClass("ui-icon-closethick");
			$(WidgetTypeCloseBut).toggleClass("ui-icon-power");			
	  }
	  
	  function CloseAU_Map(){
	  		$('#AU_Map').hide('slide', function callback() {
					dtHeight = parseInt($('.dataTables_wrapper').height());
	  				$('#SearchResultsTableAU').css('min-height',  (dtHeight + 10) + 'px');			
					$('#SearchResultsTableAU').css('height',  (dtHeight + 15) + 'px');					  	
				}
			);
	  }
	  
	  function CloseError(){
	  	$('#ErrorPanel').hide('blind');	  
	  }
	  
	  function LoadNZmap(DataArr){  
	  			
		if(DataArr.length>0){
			mapNZ = new GMap2(document.getElementById('GMapNZ'));
			var NZcenter = new GLatLng(-35.031332,157.765625);
	   		geocoder = new GClientGeocoder();
			mapNZ.setCenter(NZcenter, 5);
			mapNZ.addControl(new GSmallMapControl());			
			AddGoogleMarkersNZ(DataArr);
			
			$('#NZ_Map').show('slide');				
			$('#GMapNZ').show();
			mapNZ.checkResize();   
	  	}
		else{
			
			$('#NZ_Map').show('slide');			
			$('#NZ_NoListings').show();
		}
	  
	  }
	  
	  
	function GetNZData(){
	
		var extraParams = {                
			timestamp: +new Date()
		};
        RequestURL = "/FindAPharmacy.asmx/LocateNZ";
        Requestdata = extraParams;
    	$.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: RequestURL,
            data: $.toJSON(Requestdata),
            beforeSend: function() {
                $("#PharmacyAccordion").mask("");
            },
            complete: function() {
                $("#PharmacyAccordion").unmask();
            },

            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $("#PharmacyAccordion").unmask();
                alert('An error has occured! Please try again.');

            },

            success: function(results) {
                data = $.evalJSON(results).d;
                DataArr = jQuery.makeArray(data);                
                LoadNZmap(DataArr);
            }
        });
	
	}

	
	function AddGoogleMarkersNZ(DataArr){
	
		markersNZ = new Array();
		mapNZ.clearOverlays(); 	
   		for (i = 0; i < DataArr.length; i++) {
				markersNZ = FormatMarkerNZ(DataArr[i], i);			
				mapNZ.addOverlay(marker);			
	    } 
	}