﻿var output;
var map;
var minlat;
var maxlat;
var minlng;
var maxlng;
var cenlat;
var cenlng;
var myHtml;
var check = '<input type="checkbox" checked="true">';
var  uncheck = '<input type="checkbox" disabled="disabled">';
var isUIDefaultSet = false;

function showvillagedetails(village_id,tambon_name){
    $("#yearselect").unbind('change');
    $("#yearselect").change(function(){
    $("#villagedetails span").empty();
    $("#villagedetails div").empty();
    //getJSON getVillagedetails.php
    $.getJSON('getVillagedetails.php?vid=' + village_id + '&tambonname=' + tambon_name + '&year='+ $(this).val() ,
        function(data){ 
            
            $("#villagedetails span").empty();
            $("#villagedetails div").empty();
            
            //Checkbox region type
            if(data.region == 1){
                $("#append_region1").append(check);
                $("#append_region2").append(uncheck);
            }else if(data.region == 2){
                $("#append_region1").append(uncheck);
                $("#append_region2").append(check);	
            }else{
                $("#append_region1").append(uncheck);
                $("#append_region2").append(uncheck);
            }
                
            //Fill village data
            var questionair_id = ["villagename", "moo", "tambon",
                                "numofhouse", "population", "osmcount",
                                "ksccount"];
            var questionair_value = [data.village_name,data.moo,data.tambon_name,
                                     data.num_of_house,data.population,data.osm_count,
                                    data.ksc_count];
            for(var i = 0; i < questionair_id.length; i++){
                $("#append_"+questionair_id[i]).append(questionair_value[i]);
            }
            
            //questionair check
            var checked_M1 = ["M1_1_1","M1_1","M1_7",
                                "M1_8","M1_9","M1_3","M1_2",
                                "M1_6","M1_5","M1_4","M1_11",
                                "M1_10","M1_12"];
            for(i = 0; i < checked_M1.length; i++){
                var is_check = data.activity_group[checked_M1[i]];
                if(is_check == 0){
                    $("#append_"+checked_M1[i]).append(uncheck);
                }else if(is_check == 1){
                    $("#append_"+checked_M1[i]).append(check);
                }else{
                    $("#append_"+checked_M1[i]).append(uncheck);
                }
            }
            
            //rule check
            var checked_rule= ["villagerule","tambonrule"];
            for(i =0; i < checked_rule.length; i++){
                var is_check = data.rules[checked_rule[i]];
                if(is_check == 0){
                    $("#append_"+checked_rule[i]).append(uncheck);
                }else if(is_check == 1){
                    $("#append_"+checked_rule[i]).append(check);
                }else{
                    $("#append_"+checked_rule[i]).append(uncheck);
                }
            }
            
            //budget check
            var checked_budget = ["under","equal","greater"];
            for(i = 0; i < checked_budget.length; i++){
                var is_check = data.budget[checked_budget[i]];
                if(is_check == 0){
                        $("#append_"+checked_budget[i]).append(uncheck);
                }else if(is_check == 1){
                        $("#append_"+checked_budget[i]).append(check);
                }else{
                        $("#append_"+checked_budget[i]).append(uncheck);
                }
            }
        });
    });
}


function initialize() {
    $('#append_osmlist').dialog({
        autoOpen: false,
        width: 400,
        height: 400
    });

    $('#osm_link').click(function(){
        //osm list
        $.getJSON('getOsmName.php?vid='+ $('#osm_link').data('village_id') ,
        function(data){ 
            var osmtableString = "<table id='osmNameTable'> ";
            for(var i = 0; i < data.length; i++){
                var count = i+1;
                osmtableString += '<tr><td>&nbsp;&nbsp;'+count+'.&nbsp;&nbsp;'+data[i].name+'  '+data[i].lastname+'</td></tr>';
            }
            osmtableString += "</table>";
            $("#append_osmlist").empty();
            $("#append_osmlist").append(osmtableString);
            $('#append_osmlist').dialog('open');
            return false;
        });
    });
    
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        if(minlat === undefined){
            map.setCenter(new GLatLng(13.45000, 101.9999), 10);
            if(!isUIDefaultSet){
                map.setUIToDefault();
                isUIDefaultSet = true;
            }
        }else{
            centerMapZoomBoundary();
        }
    }
}

function loadMark(village_id){
    $('#osm_link').data('village_id', village_id);
    $(".selectbox").empty();
    $(".selectbox").append(uncheck);
    $("#append_osmlist").empty();
    $("#append_villagename").empty();
    $("#append_moo").empty();
    $("#append_tambon").empty();
    $("#append_numofhouse").empty();
    $("#append_population").empty();
    $("#append_osmcount").empty();
    $("#append_ksccount").empty();

    $.getJSON('getMark.php?village_id=' + village_id ,
        function(data){
            $("#yearselect").empty();
            if (GBrowserIsCompatible()) {
                var vid = village_id;
                var point = new GLatLng(data.lat, data.lng);
                var tambonname = data.tambon_name;
                var village_name = data.name;
                var village_url = data.url;
                addyrselect = '<option value="" selected="selected"></option><option value="2551">2551</option><option value="2552">2552</option>';
                $("#yearselect").append(addyrselect);
                map.panTo(point);
                if (village_url == null) {
                    var myhtml = "<b>"+village_name+"</b>";
                } else {
                    var myhtml = "<a href='"+village_url+"' target='_blank'><b>"+village_name+"</b></a>";
                }
                map.openInfoWindowHtml(point,myhtml);
                showvillagedetails(vid,tambonname);
            }
        }
    );
}

$(document).ready(function(){
    $("#villagetable").hide();
    loadProvinceCombo();
    //event province
    $("#province-select").change( function() {
                            $("#yearselect").empty();
                            $(".selectbox").empty();
                            $(".selectbox").append(uncheck);
                            $("#append_osmlist").empty();
                            $("#append_villagename").empty();
                            $("#append_moo").empty();
                            $("#append_tambon").empty();
                            $("#append_numofhouse").empty();
                            $("#append_population").empty();
                            $("#append_osmcount").empty();
                            $("#append_ksccount").empty();
    
            $("#villagetable").hide();
            loadAmphoeCombo($(this).val());
    });
    //event ampur
    $("#amphoe-select").change( function() {
                    $("#yearselect").empty();
                            $(".selectbox").empty();
                            $(".selectbox").append(uncheck);
                            $("#append_osmlist").empty();
                            $("#append_villagename").empty();
                            $("#append_moo").empty();
                            $("#append_tambon").empty();
                            $("#append_numofhouse").empty();
                            $("#append_population").empty();
                            $("#append_osmcount").empty();
                            $("#append_ksccount").empty();
    
            $("#villagetable").hide();
            loadTambonCombo($(this).val());
			$("#villagetable").show();
    });		
    //event tambon
    $("#tambon-select").change( function() {
            $("#yearselect").empty();
                            $(".selectbox").empty();
                            $(".selectbox").append(uncheck);
                            $("#append_osmlist").empty();
                            $("#append_villagename").empty();
                            $("#append_moo").empty();
                            $("#append_tambon").empty();
                            $("#append_numofhouse").empty();
                            $("#append_population").empty();
                            $("#append_osmcount").empty();
                            $("#append_ksccount").empty();
    
            loadVillageTable($(this).val());
            $("#villagetable").show();

    });
    
});

//display province combo
function loadProvinceCombo(){
        $.getJSON('getProvince.php' , function(data){ 
                $('#province-select').append('<option value="not-selected">   </option>');	
                for(var i = 0; i < data.province.length; i++){
                    var optionstring = '<option value="' +data.province[i].id+ '">' + data.province[i].name+ '</option>';
                    $('#province-select').append(optionstring);
                }
                
                zoomToBoundary(data.bound[0]);
        });
}

function centerMapZoomBoundary(){
    if(map === undefined) { return ; }
    cenlat = (minlat + maxlat) /2.0;
    cenlng = (minlng + maxlng) /2.0;	
    map.setCenter(new GLatLng(cenlat, cenlng));
    if(!isUIDefaultSet){
        map.setUIToDefault();
        isUIDefaultSet = true;
    }
    var zm = map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(minlat, minlng), new GLatLng(maxlat, maxlng)));
    map.setZoom(zm);
}

function zoomToBoundary(bound){
    minlat = parseFloat(bound.minlat);
    maxlat = parseFloat(bound.maxlat);
    minlng = parseFloat(bound.minlng);
    maxlng = parseFloat(bound.maxlng);
    centerMapZoomBoundary();
}
function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}


//display amphoe combo
function loadAmphoeCombo(province_id){
        $('#amphoe-select').empty();
        $('#tambon-select').empty();
        $('#villagetable').empty();
        if(province_id === "not-selected") return;
        
        $.getJSON('getAmphoe.php?province_id='+ province_id, function(data){
                $('#amphoe-select').empty();
                $('#amphoe-select').append('<option value="">   </option>');	
                
                for(var i = 0; i < data.amphur.length; i++){
                    var optionstring = '<option value="' +data.amphur[i].id+ '">' + data.amphur[i].name+ '</option>';
                    $('#amphoe-select').append(optionstring);
                }
                //ZOOM MAP
            
                if (GBrowserIsCompatible()) {
                        map.clearOverlays();
                        zoomToBoundary(data.bound[0]);
                        var latlng = new GLatLng(cenlat,cenlng);
                        var name = data.pname;
                        var numvill = addCommas(data.count.village_count);
                        var numhouse = addCommas(data.count.house_count);
                        var myHtml = ("<b>" + name + "</b><br>"+
                            data.count.amphur_text+" "+data.count.amphur_count+"<br>"+
                            data.count.tambon_text+data.count.tambon_count+"<br>"+
                            data.count.village_text+" "+numvill+"<br>"+
                            data.count.com_text+data.count.com_count+"<br>"+
                            data.count.house_text+" "+numhouse)+"<br>"+
							data.count.rpst_text+" "+data.count.rpst_count+"<br>"+
							data.count.manage_text+" "+data.count.manage_count;
                        colorurl = data.markercolor;
                        var markIcon = createColorMarker(colorurl);
                        var marker = new GMarker(latlng,{icon:markIcon});
                        map.openInfoWindowHtml(latlng, myHtml);
                        map.addOverlay(marker);
                        GEvent.addListener(marker,"click", function() {
                        map.openInfoWindowHtml(latlng, myHtml);
                        });
                    
                }
        });
        
        
}
//if do action with amphur then show tambon name and mark all village in one amphur
function loadTambonCombo(ampur_id){
    output += " ampur_id : "+ampur_id+"<br>";
        $('#tambon-select').empty();
        if(ampur_id === "not-selected") return;
        
        $.getJSON('getTambon.php?ampur_id='+ampur_id, function(data){
                $('#tambon-select').empty();
                $('#tambon-select').append('<option value="not-selected">   </option>');	
                for(var i = 0; i < data.tambon.length; i++){
                    var optionstring = '<option value="' +data.tambon[i].id+ '">' + data.tambon[i].name+ '</option>';
                    $('#tambon-select').append(optionstring);
                }
                //ZOOM MAP
                if (GBrowserIsCompatible()) {
                        map.clearOverlays();
                        zoomToBoundary(data.bound[0]);
                        var latlng = new GLatLng(cenlat,cenlng);
                        
                        var name = data.aname;
                        myHtml = "<b>" + name + "</b><br>";
						myHtml += "จำนวน รพสต. " + data.count.rpst + " แห่ง<br>";
						myHtml += "จำนวน ตำบลจัดการสุขภาพ " + data.count.manage + " แห่ง<br>";
                        colorurl = data.markercolor;
                        var markIcon = createColorMarker(colorurl);
                        var marker = new GMarker(latlng,{icon:markIcon});
                        map.openInfoWindowHtml(latlng, myHtml);
                        map.addOverlay(marker);
                        GEvent.addListener(marker,"click", function() {
                        map.openInfoWindowHtml(latlng, myHtml);
                        });
                }
				
				//--------------------------
				$('#villagetable').empty();
				var stringTable = "<table id='table'>";
				stringTable += '<tr><td><img src="' + data.color.rpst + '" width="10"> รพสต.</td></tr>';
				stringTable += '<tr><td><img src="' + data.color.manage + '"width="10"> ตำบลจัดการสุขภาพ</td></tr>';
				stringTable += '<tr><td><img src="' + data.color.rm + '"width="10"> ทั้งคู่</td></tr>';
				for(var i = 0; i < data.tambon.length; i++){
					var color;
					if(data.tambon[i].is_rpst == 1 && data.tambon[i].is_manage == 1){
						color = 'green';	
					}else if (data.tambon[i].is_rpst == 1) {
						color = 'blue';	
					}else if (data.tambon[i].is_manage == 1) {
						color = 'red';	
					} else {
						continue;
					}
				
					stringTable += "<tr bgcolor='"+color+
					"' align='center'><td align='center'><a href='javascript:loadMark("+data.tambon[i].id+
					");' style='color:#000000;height:20px;'>"+data.tambon[i].name+ "</a></td></tr>";
				}
				stringTable += "</table>";
			
				$('#villagetable').append(stringTable);
					
				if (GBrowserIsCompatible()) {
					//map.clearOverlays();
					//zoomToBoundary(data.bound[0]);
					for (i = 0; i < data.tambon.length; i++) {
						if(data.tambon[i].is_rpst == 1 && data.tambon[i].is_manage == 1){
							colorurl = data.color.rm;	
						}else if (data.tambon[i].is_rpst == 1) {
							colorurl = data.color.rpst;	
						}else if (data.tambon[i].is_manage == 1) {
							colorurl = data.color.manage;	
						} else {
							continue;
						}
						var tid = data.tambon[i].id;
						var name = data.tambon[i].name;
						var tname = '<b>'+name+'</b>';
						var tlatlng = new GLatLng(data.tambon[i].lat, data.tambon[i].lng);
						map.addOverlay(createMarker(tlatlng,tname,tid,colorurl));
					}
				}



        });
}

function createMarker(latlng,text,villageid,color_url, width, height) {
    var marker = new GMarker(latlng);
    var markIcon = createColorMarker(color_url, width, height);
    var marker = new GMarker(latlng,{icon:markIcon});
    map.addOverlay(marker);
    GEvent.addListener(marker,"click", function() {
            map.openInfoWindowHtml(latlng, text);
    });
    return marker;
}

function createColorMarker(url, width, height){
    var Icon = new GIcon();
    Icon.image = url;
    //Icon.iconSize = new GSize(20, 34);
	if (width && height) {
		Icon.iconSize = new GSize(width, height);
		Icon.iconAnchor = new GPoint(width / 2, height);
	} else {
		Icon.iconSize = new GSize(20, 34);
		Icon.iconAnchor = new GPoint(9, 34);
	}
    
    return Icon;
}


//if do action with tambon then show village name and mark all village in one tambon
function loadVillageTable(tambon_id){
      output += "tambon id : "+tambon_id+"<br>";
        $('#villagetable').empty();
        $('#output_desc').empty();
        if(tambon_id === "not-selected") return;
        
        $.getJSON('getVillage.php?tambon_id='+tambon_id, function(data){
                
            $('#villagetable').empty();
            var stringTable = "<table id='table'>";
            for(var i = 0; i < data.village.length; i++){
                var color;
                if((i%2)==0){
                    color = '#BAF46E';
                }else{
                    color = '#FFFFF9';
                }
            
                stringTable += "<tr bgcolor='"+color+
                "' align='center'><td align='center'><a href='javascript:loadMark("+data.village[i].id+
                ");' style='color:#000000;height:20px;'>"+data.village[i].name+ "</a></td></tr>";
            }
            stringTable += "</table>";
        
            $('#villagetable').append(stringTable);
            
                
            if (GBrowserIsCompatible()) {
                map.clearOverlays();
                zoomToBoundary(data.bound[0]);
                for (i = 0; i < data.village.length; i++) {
                    /*if(i%2 == 0){
                        colorurl = data.markercolor[0];	
                    }else{
                        colorurl = data.markercolor[1];	
                    }*/
					var colorurl = data.marker['url'][data.village[i].level -1];
					var vil_id = data.village[i].id;
                    var name = data.village[i].name;
                    vil_name = '<b>'+name+'</b>';
                    var vlatlng = new GLatLng(data.village[i].lat, data.village[i].lng);
                    map.addOverlay(createMarker(vlatlng,vil_name,vil_id,colorurl, data.marker['width'][data.village[i].level - 1] ,data.marker['height'][data.village[i].level - 1]));
                }
            }

        });
        
}