$(document).ready(function() {
    $("#menuicon_1_div").click(function() {
        if ($("#changearea_wrapper").hide()) {
            $("#changearea_wrapper").show();
            $("#layer_tree_wrapper").hide();
            $("#transpoint_tree_wrapper").hide();
            $("#controlline_tree_wrapper").hide();
            $("#transline_tree_wrapper").hide();
        }
    });

    $("#menuicon_2_div").click(function() {
        if ($("#layer_tree_wrapper").hide()) {
            $("#changearea_wrapper").hide();
            $("#layer_tree_wrapper").show();
            $("#transpoint_tree_wrapper").hide();
            $("#controlline_tree_wrapper").hide();
            $("#transline_tree_wrapper").hide();
        }
    });
    
    $("#menuicon_3_div").click(function() {
        if ($("#transpoint_tree_wrapper").hide()) {
            $("#changearea_wrapper").hide();
            $("#layer_tree_wrapper").hide();
            $("#transpoint_tree_wrapper").show();
            $("#controlline_tree_wrapper").hide();
            $("#transline_tree_wrapper").hide();
        }
    });
    
    $("#menuicon_4_div").click(function() {
        if ($("#transpoint_tree_wrapper").hide()) {
            $("#changearea_wrapper").hide();
            $("#layer_tree_wrapper").hide();
            $("#transpoint_tree_wrapper").hide();
            $("#controlline_tree_wrapper").show();
            $("#transline_tree_wrapper").hide();
        }
    });
    $("#menuicon_5_div").click(function() {
        if ($("#transline_tree_wrapper").hide()) {
            $("#changearea_wrapper").hide();
            $("#layer_tree_wrapper").hide();
            $("#transpoint_tree_wrapper").hide();
            $("#controlline_tree_wrapper").hide();
            $("#transline_tree_wrapper").show();
        }
    });    
});


function  process(url, parameters, mode) {
    
    var divElement;
    
    if (mode == 'changeregion') {
        divElement = 'div_changeregion';
    }
    else if (mode=='changeprov') {
        divElement = 'div_changeprov';
    }
    else if (mode=='changedist') {
        divElement = 'div_changedist';
    }
    else if (mode=='changeloc') {
        divElement = 'div_changeloc';
    }
    else if (mode=='layertree') {
        divElement = 'layer_tree_wrapper';
    }
    else if (mode=='transpointtree') {
        divElement = 'transpoint_tree_wrapper';
    }
    else if (mode=='controllinetree') {
        divElement = 'controlline_tree_wrapper';
    }
    else if (mode=='translinetree') {
        divElement = 'transline_tree_wrapper';
    }
    else if (mode == 'mainmap') {
        divElement = 'div_mainmap';
    }

    var xmlHttp = createXHRObj();
    if(xmlHttp) {
        try {
            xmlHttp.open('GET', url+parameters, true);
            xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf8");
            xmlHttp.setRequestHeader("Content-length", parameters.length);
            xmlHttp.setRequestHeader("Connection", "close");
            xmlHttp.onreadystatechange = function() {
              myDiv = document.getElementById(divElement);
              if (xmlHttp.readyState == 4) {
                  if (xmlHttp.status == 200) {
                      try {
                          response = xmlHttp.responseText;
                          myDiv.innerHTML = "Request status: 4 (complete). Server said: <br/>";
                          myDiv.innerHTML = response;
                      }
                      catch(e) {
                          window.alert("Error reading the response: " + e.toString());
                      }
                  }
                  else {
                      window.alert("There was a problem retrieving the data:\n" + xmlHttp.statusText);
                  }
                }
            }
            xmlHttp.send(null);
        }
        catch(e) {
            window.alert("Can't connect to server:\n" + e.toString());
        }
    }
}

function mouseOver(mode, args) {
    if(mode == 'zoomin') {
        args.src="images/zoomin_click.png";
    }
    else if (mode == 'zoomout') {
        args.src="images/zoomout_click.png";
    }
    else if (mode == 'zoomextent') {
        args.src="images/zoomextent_click.png";    
    }
    else if (mode == 'pan') {
        args.src="images/pan_click.png";    
    }
    else if (mode == 'overviewmap') {
        args.src="images/overviewmap_click.png";    
    }
    else if (mode == 'showinfo') {
        args.src="images/info_click.png";    
    }
    else if (mode == 'showlabel') {
        args.src="images/label_click.png";    
    }
    else if (mode == 'showdistance') {
        args.src="images/distance_click.png";    
    }
    else if (mode == 'print') {
        args.src="images/print_click.png";    
    }
    else {
        winodw.alert("Please check function argument.");
    }
}

function mouseOut(mode, args) {
    if(mode == 'zoomin') {
        if (document.getElementById('zoomin_status').checked == true) {
            args.src="images/zoomin_click.png";
        }
        else {
            args.src="images/zoomin.png";
        }
    }
    else if(mode == 'zoomout') {
        if (document.getElementById('zoomout_status').checked == true) {
            args.src="images/zoomout_click.png";
        }
        else {
            args.src="images/zoomout.png";
        }
    }
    else if(mode == 'zoomextent') {
        if (document.getElementById('zoomextent_status').checked == true) {
            args.src="images/zoomextent_click.png";
        }
        else {
            args.src="images/zoomextent.png";
        }
    }
    else if(mode == 'pan') {
        if (document.getElementById('pan_status').checked == true) {
            args.src="images/pan_click.png";
        }
        else {
            args.src="images/pan.png";
        }
    }
    else if(mode == 'overviewmap') {
        if (document.getElementById('overviewmap_status').checked == true) {
            args.src="images/overviewmap_click.png";
        }
        else {
            args.src="images/overviewmap.png";
        }
    } 
    else if(mode == 'showinfo') {
        if (document.getElementById('info_status').checked == true) {
            args.src="images/info_click.png";
        }
        else {
            args.src="images/info.png";
        }
    }
    else if(mode == 'showlabel') {
        if (document.getElementById('label_status').checked == true) {
            args.src="images/label_click.png";
        }
        else {
            args.src="images/label.png";
        }
    }
    else if(mode == 'showdistance') {
        if (document.getElementById('distance_status').checked == true) {
            args.src="images/distance_click.png";
        }
        else {
            args.src="images/distance.png";
        }
    }
    else if(mode == 'print') {
        args.src="images/print.png";
    }
    else {
        winodw.alert("Please check function argument.");
    }
}

function mouseClick(mode, args) {
    if(mode == 'zoomin') {
        args.src="images/zoomin_click.png";
        document.getElementById('zoomin_status').checked = "checked";
        $('#zoomout_icon'). attr('src', 'images/zoomout.png');
        $('#zoomextent_icon'). attr('src', 'images/zoomextent.png');
        $('#pan_icon'). attr('src', 'images/pan.png');
        $('#info_icon'). attr('src', 'images/info.png');
        $('#distance_icon'). attr('src', 'images/distance.png');
        $('#div_cursor').hide();
        clearDistanceMap();
        $('#div_mainmap').show();
        $('#div_identifymap').hide();
        $('#div_distancemap').hide();
    }    
    else if(mode == 'zoomout') {
        args.src="images/zoomout_click.png";
        document.getElementById('zoomout_status').checked = "checked";
        $('#zoomin_icon'). attr('src', 'images/zoomin.png');
        $('#zoomextent_icon'). attr('src', 'images/zoomextent.png');
        $('#pan_icon'). attr('src', 'images/pan.png');
        $('#info_icon'). attr('src', 'images/info.png');
        $('#distance_icon'). attr('src', 'images/distance.png');
        $('#div_cursor').hide();
        clearDistanceMap();
        $('#div_mainmap').show();
        $('#div_identifymap').hide();
        $('#div_distancemap').hide();
    }
    else if(mode == 'zoomextent') {
        args.src="images/zoomextent_click.png";
        document.getElementById('zoomextent_status').checked = "checked";
        process('system/core/processMainMap.sys.php', '?mode=6', 'mainmap');
        $('#zoomin_icon'). attr('src', 'images/zoomin.png');
        $('#zoomout_icon'). attr('src', 'images/zoomout.png');
        $('#pan_icon'). attr('src', 'images/pan.png');
        $('#info_icon'). attr('src', 'images/info.png');
        $('#distance_icon'). attr('src', 'images/distance.png');
        $('#div_cursor').hide();
        clearDistanceMap();
        $('#div_mainmap').show();
        $('#div_identifymap').hide();
        $('#div_distancemap').hide();
    }
    else if(mode == 'pan') {
        args.src="images/pan_click.png";
        document.getElementById('pan_status').checked = "checked";
        $('#zoomin_icon'). attr('src', 'images/zoomin.png');
        $('#zoomout_icon'). attr('src', 'images/zoomout.png');
        $('#zoomextent_icon'). attr('src', 'images/zoomextent.png');
        $('#info_icon'). attr('src', 'images/info.png');
        $('#distance_icon'). attr('src', 'images/distance.png');
        $('#div_cursor').hide();
        clearDistanceMap();
        $('#div_mainmap').show();
        $('#div_identifymap').hide();
        $('#div_distancemap').hide();
    }
    else if(mode == 'overviewmap') {
        if (document.getElementById('overviewmap_status').checked == true) {
            $('#overviewmap_icon'). attr('src', 'images/overviewmap.png');
            $('#overviewmap_status').attr('checked',  false);
            $('#div_refmap').hide();
        }
        else {
            $('#overviewmap_icon'). attr('src', 'images/overviewmap_click.png');
            $('#overviewmap_status').attr('checked',  true);
            // $('#div_mainmap').offset().left , $('#div_mainmap').offset().top
            document.getElementById('div_refmap').style.position = "absolute";
            document.getElementById('div_refmap').style.top = "0px";
            document.getElementById('div_refmap').style.left = "0px";
            $('#div_refmap').show();
        }
    }
    else if (mode == 'showinfo') {
        args.src = 'images/info_click.png';
        document.getElementById('info_status').checked = "checked";
        $('#zoomin_icon'). attr('src', 'images/zoomin.png');
        $('#zoomout_icon'). attr('src', 'images/zoomout.png');
        $('#zoomextent_icon'). attr('src', 'images/zoomextent.png');
        $('#pan_icon'). attr('src', 'images/pan.png');
        $('#distance_icon'). attr('src', 'images/distance.png');
        
        $('#div_cursor').hide();
        clearDistanceMap();
        $('#div_mainmap').hide();
        $('#div_identifymap').show();
        $('#div_distancemap').hide();
        
    }
    else if(mode == "showlabel") {
        if($('#label_status').is(':checked') == true) {
            $('#label_icon').attr('src', 'images/label.png');
            $('#label_status').attr('checked', false);
            extent = document.getElementById('extent').value;
            process('system/core/processMainMap.sys.php', '?mode=4&showlabel=true&extent='+extent, 'mainmap');
        }
        else {
            $('#label_icon').attr('src', 'images/label_click.png');
            $('#label_status').attr('checked', true);
            extent = document.getElementById('extent').value;
            process('system/core/processMainMap.sys.php', '?mode=4&showlabel=false&extent='+extent, 'mainmap');
        }
    }
    else if(mode == "showdistance") {
        args.src="images/distance_click.png";
        document.getElementById('distance_status').checked = "checked";
        $('#zoomin_icon'). attr('src', 'images/zoomin.png');
        $('#zoomout_icon'). attr('src', 'images/zoomout.png');
        $('#zoomextent_icon'). attr('src', 'images/zoomextent.png');
        $('#pan_icon'). attr('src', 'images/pan.png');
        $('#info_icon'). attr('src', 'images/info.png');
        $('#div_cursor').show();
        $('#div_mainmap').hide();
        $('#div_identifymap').hide();
        $('#div_distancemap').show();
    }
    else if(mode == "print") {
         window.open("print.php?extent="+document.getElementById('extent').value);
    }
    else {
        alert("Invalid action.");
    }
}

function getPOSTMainform(obj) {
	    var getstr = "";
	    //alert(obj.tagName);
		
	    for (i=0; i<obj.length; i++) {
			if (obj[i].tagName == "INPUT") {
                                    //alert(obj[i].tagName+" "+obj[i].getAttribute('name')+" "+obj[i].getAttribute('type')+" "+obj[i].value);
                                    if (obj[i].getAttribute('type') == "checkbox"){
                                                if (obj[i].checked == true) {
                                                            getstr += obj[i].getAttribute('name') + "=" + obj[i].value + "&";
                                                            //getstr += "\n";
                                                }
                                                /*
                                                else {
                                                            getstr += obj[i].getAttribute('name') + "=&";
                                                            getstr += "\n";
                                                }
                                                */
                                    }
                                    else if (obj[i].getAttribute('type') == "radio"){
                                                if (obj[i].checked == true) {
                                                            getstr += obj[i].getAttribute('name') + "=" + obj[i].value + "&";
                                                            //getstr += "\n";
                                                }				
                                                /*
                                                else {
                                                            getstr += obj[i].getAttribute('name') + "=&";
                                                            getstr += "\n";
                                                }
                                                */
                                    }
                                    else {
                                                getstr += obj[i].getAttribute('name') + "=" + obj[i].value + "&";
                                                //getstr += "\n";
                                    }
			}
			
			else if (obj[i].tagName == "SELECT"){
                                    //alert(obj[i].tagName+" "+obj[i].getAttribute('name')+" "+obj[i].value);
                                    getstr += obj[i].getAttribute('name') + "=" + obj[i].value + "&";
                                    //getstr += "\n";
			}
			
			else if (obj[i].tagName == "TEXTAREA"){
                                    //alert(obj[i].tagName+" "+obj[i].getAttribute('name')+" "+obj[i].value);
                                    getstr += obj[i].getAttribute('name') + "=" + obj[i].value + "&";
                                    //getstr += "\n";
			} 
	    }
	    //alert(getstr);
	    makePOSTRequest("system/core/processMainMap.sys.php", getstr, 'mainmap');
	    //document.getElementById('myDivElement').innerHTML = getstr;
            //document.getElementById('extent').value = 
}

function makePOSTRequest(url, parameters, mode) {
    var divElement;
    if(mode == 'mainmap') {
        divElement = 'div_mainmap';
    }
    else if(mode == 'searchtranspoint') {
        divElement = 'div_search_transpoint_result';
    }
    else if (mode == 'search_controlline_result') {
        divElement = 'div_search_controlline_result';
    }
    else if(mode == 'searchtransline') {
        divElement = 'div_search_transline_result';
    }
    
    xmlHttp = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        xmlHttp = new XMLHttpRequest();
        if (xmlHttp.overrideMimeType) {
                xmlHttp.overrideMimeType('text/html');
        }
    } 
    else if (window.ActiveXObject) { // IE
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                
            }
        }
    }
    if (!xmlHttp) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
                //alert(xmlHttp.responseText);
                result = xmlHttp.responseText;
                document.getElementById(divElement).innerHTML = result;
            }
            else {
                alert('There was a problem with the request.');
            }
        }
    }
    xmlHttp.open('POST', url, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", parameters.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(parameters);
}

function getMapCoords(event) {
    pos_x = event.layerX ? event.layerX : event.offsetX ? event.offsetX : 0;
    pos_y = event.layerY ? event.layerY : event.offsetY ? event.offsetY : 0;
    posImageX = pos_x;
    posImageY = pos_y;
    
    extent = document.getElementById('extent').value;
    extent = extent.split(' ');
    extMinX = parseFloat(extent[0]);
    extMinY = parseFloat(extent[1]);
    extMaxX = parseFloat(extent[2]);
    extMaxY = parseFloat(extent[3]);
    
    posImageX = extMinX + ((extMaxX-extMinX) * ( posImageX/700 ));
    posImageY = extMinY + ((extMaxY-extMinY) * (1- (posImageY/700 )));
    
    if (!isNaN(posImageX)) {
        document.getElementById('utmx').value = posImageX.toFixed(2);
        document.getElementById('mapx').value = pos_x;
    }
    if (!isNaN(posImageY)) {
        document.getElementById('utmy').value = posImageY.toFixed(2);
        document.getElementById('mapy').value = pos_y;
    }
    window.status="";
}

var clickMapX1, clickMapY1, clickMapX2, clickMapY2;
var iClick=null;

function getMapXY(e) {
    if (!e)
        e = window.event;
    
    if (iClick == null) {
        iClick = 1;
        clickMapX1 = document.getElementById('utmx').value; //e.layerX ? e.layerX : e.offsetX ? e.offsetX : 0;
        clickMapY1 = document.getElementById('utmy').value; //e.layerY ? e.layerY : e.offsetY ? e.offsetY : 0;
    }
    else if (iClick == 1) {
        iClick = 2;
        clickMapX2 = document.getElementById('utmx').value; //e.layerX ? e.layerX : e.offsetX ? e.offsetX : 0;
        clickMapY2 = document.getElementById('utmy').value; //e.layerY ? e.layerY : e.offsetY ? e.offsetY : 0;
    }
    else {
        iClick = null;
    }
}

function getMapDistance(e) {
    if (!e)
        e = window.event;
    
    var utmx = document.getElementById('utmx').value;
    var utmy = document.getElementById('utmy').value;
    
    document.getElementById('div_cursor').style.position = "absolute";
    document.getElementById('div_cursor').style.top = (e.layerY ? e.layerY+20 : e.offsetY ? e.offsetY+20 : 0) + 'px';
    document.getElementById('div_cursor').style.left = (e.layerX ? e.layerX+20 : e.offsetY ? e.offsetX+20 : 0) + 'px';
    
    document.getElementById('div_cursor').innerHTML = "<input type='text' id='show_map_distance' name='show_map_distance' style='border:1px;width:190px;font-family:tahoma;font-size:12px;border-color:#CCCCCC;background-color:#305BB7;color:#FFFFFF' />";
    
    if (!iClick) {
        document.getElementById('show_map_distance').value = "เลือกจุดเริ่มต้นวัดระยะ ";
    }
    else if (iClick == 1) {
        distanceNow = Math.sqrt((Math.pow((clickMapX1 - utmx), 2)) + (Math.pow((clickMapY1 - utmy), 2))) / 1000;
        document.getElementById('show_map_distance').value = "ระยะทาง "+  distanceNow.toFixed(2) + ' ก.ม.';
    }
    else if (iClick == 2) {
        distanceNow = Math.sqrt((Math.pow((clickMapX1 - clickMapX2), 2)) + (Math.pow((clickMapY1 - clickMapY2), 2))) / 1000;
        document.getElementById('show_map_distance').value = "เป็นระยะทางจากจุดเริ่ม " + distanceNow.toFixed(2) + ' ก.ม.';
    }
}

function clearDistanceMap() {
     iClick = null;
     clickMapX1 = null;
     clickMapY1 = null;
     clickMapX2 = null;
     clickMapY2 = null;
}

function setMapEnv() {
    document.getElementById('show_scale').value = document.getElementById('get_scale').value;
    document.getElementById('div_refmap').innerHTML = document.getElementById('get_refmap').value;
    document.getElementById('div_identifymap').innerHTML = "<img src='"+document.getElementById('mainmap').src+"' id='identifymap' onmousemove='getMapCoords(event);' onclick='identifyMap();' />";
    document.getElementById('div_distancemap').innerHTML = "<img src='"+document.getElementById('mainmap').src+"' id='distancemap' onmousemove='getMapCoords(event); getMapDistance(event);' onclick='getMapXY(event);' />";
    document.getElementById('div_showsymbol').innerHTML = document.getElementById('legend_display').innerHTML;
    
}

function identifyMap() {
    mapx = document.getElementById('mapx').value;
    mapy = document.getElementById('mapy').value;
    utmx = document.getElementById('utmx').value;
    utmy = document.getElementById('utmy').value;
    scale = document.getElementById('show_scale').value;
    mapExtent = document.getElementById('extent').value;
    querymapUrl = urlPrefix + querymapFile + '?mapx=' + mapx + '&mapy=' + mapy + '&utmx=' + utmx + '&utmy=' + utmy + '&scale=' + scale + '&extent=' + mapExtent ;
    window.open(querymapUrl,'window',"height=700,width=800,status=no,toolbar=no,menubar=no,location=yes,resizable=no,titlebar=no,scrollbars=yes");
}

function searchTranspoint(name, province, type) {    
    var parameter = 'nodename_text='+name+'&province_select='+province+'&nodetype_select='+type;
    makePOSTRequest('system/core/searchTranspoint.sys.php', parameter, 'searchtranspoint');
}

function checkControllineInput() {
    if (document.getElementById('trucksize').value == '') {
        alert("กรุณาเลือกขนาดของรถบรรทุก");
    }
    else {
            parameters = "?mode=8";
            parameters += "&roadname="+document.getElementById('roadname').value;
            parameters += "&province="+document.getElementById('province').value;
            parameters += "&trucksize="+document.getElementById('trucksize').value;
            parameters += "&begintime1="+document.getElementById('begin_time1').value;
            parameters += "&endtime1="+document.getElementById('end_time1').value;
            parameters += "&begintime2="+document.getElementById('begin_time2').value;
            parameters += "&endtime2="+document.getElementById('end_time2').value;
            //alert(parameters);
            makePOSTRequest('system/core/searchControlline.sys.php', parameters, 'search_controlline_result');
    }
}

function searchTransline() {
    var parameters = 'transline_type='+document.getElementById('transline_type').value+'&transline_name='+document.getElementById('transline_name').value;
    makePOSTRequest('system/core/searchTransline.sys.php', parameters, 'searchtransline');
}