﻿//var mIDInvestmentBranches = 0;
//var mIDMinistry = 0;
//var mIDProvince = 0;
//var mIDSourcing = 0;
//var mIDStrategy = 0;
//var mIDDepartment = 0;

var map;
//var ge;

var mIsSearch = false;
var mSearchCriteria = "";
var allmarkers = [];
var mapMarkerManager;
var icons = {};
var mIsDragable = false;

var mDdlInvestmentBranches;
var mDdlMinistry;
var mDdlProvince;
var mDdlSourcing;
var mDdlStrategy;
var mDdlDepartment;
var mCurrentPageIndex = 0;


function EndRequestHandler(sender, args) {
    
    if (args.get_error() == undefined) {
        if (map) {
            map.clearOverlays();
            GenerateMapMarkers();
        }
    } else
        alert("There was an error" + args.get_error().message);
}

function initialize() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);


    if (GBrowserIsCompatible()) {
        NewMap();
	    //map.addControl(new GOverviewMapControl());

	//GEvent.addListener(map,"moveend", function(){alert('movend');});


        if (map) {
            GenerateMapMarkers();
        }

    }
}

function NewMap() {

    map = new GMap2(document.getElementById("mPFMSGoogleMap"));
    map.setCenter(new GLatLng(13.625, 100.179000854492), 12);
    //mgr = new MarkerManager(map, { trackMarkers: true });

    var mapui = map.getDefaultUI();
    mapui.maptypes.physical = true;
    map.setUI(mapui);
    // add 'Earth' as one of the map types
    map.addMapType(G_SATELLITE_3D_MAP);

    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    mapMarkerManager = new MarkerManager(map);

}


 
 function doStuffWithEarth(aTargetControlName) {
    document.getElementById(aTargetControlName).innerHTML = ge.getPluginVersion().toString();
}


     

function createMarker(aPoint, aImagePath, aInfo,aIsDragable) {

    
    // Create a lettered icon for this point using our icon class
     var letteredIcon = new GIcon(G_DEFAULT_ICON);
     

     letteredIcon.iconSize = new GSize(32, 37);

	letteredIcon.shadow="";
	  
	

    if (aImagePath != "") {
        letteredIcon.image = aImagePath;

    }

    // Set up our GMarkerOptions object
    if (aIsDragable) {
        markerOptions = { icon: letteredIcon, draggable: true };
    } else {
        markerOptions = { icon: letteredIcon};
    }
  
    //markerOptions
    var marker = new GMarker(aPoint, markerOptions);
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(aInfo)
    });

    return marker;
}

 

function MarkerChanged(map) {
    var center = map.getCenter();
    // center.lat().toFixed(5);
    // center.lng().toFixed(5);
    PageMethods.MarkerChanged(center.lat().toFixed(5), center.lng().toFixed(5), OnWSRequestComplete, OnWSRequestFailed);
}

function OnWSRequestComplete(results) {
    alert(results);
}
function OnWSRequestFailed(error) {
    alert("Stack Trace: " + error.get_stackTrace() + "\r\n" +
                    "Error: " + error.get_message() + "\r\n" +
                    "Status Code: " + error.get_statusCode() + "\r\n" +
                    "Exception Type: " + error.get_exceptionType() + "\r\n" +
                    "Timed Out: " + error.get_timedOut());
}

function GetControl(aName) {
    return document.getElementById(aName);
}

function GenerateMapMarkers() {
       
    var lIDSourcing = 0;
    var lIDStrategy = 0;
    var lIDInvestmentBranches = 0;
    var lIDMinistry = 0;
    var lIDDepartment = 0;
    var lIDProvince = 0;

    var lDdlSourcing = GetControl(mDdlSourcing);
    var lDdlStrategy = GetControl(mDdlStrategy);
    var lDdlInvestmentBranches = GetControl(mDdlInvestmentBranches);
    var lDdlMinistry = GetControl(mDdlMinistry);
    var lDdlDepartment = GetControl(mDdlDepartment);
    var lDdlProvince = GetControl(mDdlProvince);


    //alert(lDdlSourcing.length);
    if (lDdlSourcing) {
        if(lDdlSourcing.length >0)
            lIDSourcing = lDdlSourcing[lDdlSourcing.selectedIndex].value;
    }

    if (lDdlStrategy) {
        if(lDdlStrategy.length > 0)
            lIDStrategy = lDdlStrategy[lDdlStrategy.selectedIndex].value;
    }

    if (lDdlInvestmentBranches) {
        if(lDdlInvestmentBranches.length > 0)
            lIDInvestmentBranches = lDdlInvestmentBranches[lDdlInvestmentBranches.selectedIndex].value;
    }

    if (lDdlMinistry) {
        if(lDdlMinistry.length > 0)
            lIDMinistry = lDdlMinistry[lDdlMinistry.selectedIndex].value;
    }

    if (lDdlDepartment) {
        if(lDdlDepartment.length > 0)
            lIDDepartment = lDdlDepartment[lDdlDepartment.selectedIndex].value;
    }

    if (lDdlProvince) {
        if(lDdlProvince.length > 0)
            lIDProvince = lDdlProvince[lDdlProvince.selectedIndex].value;
    }

    if (mSearchCriteria == "")
        mSearchCriteria = "%";


    PageMethods.GetLatLngByCriterias(lIDSourcing, lIDStrategy, lIDInvestmentBranches,
        lIDMinistry, lIDDepartment, lIDProvince, mIsSearch, mSearchCriteria, mCurrentPageIndex,
        OnGetLatLngByProvinceSuccess, OnWSRequestFailed);
 
}




function OnGetLatLngByProvinceSuccess(results) {
    if (mIsSearch) {
        mIsSearch = false;
        mSearchCriteria = "";
    }
    //NewMap();
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

    xmlDoc.loadXML(results); // which loads the string

    var lProjects = xmlDoc.getElementsByTagName("Project");
    var lCenterPoint=null;
    var lZoomLevel = 13; //default zoom level


     map.clearOverlays();

     //alert(lProjects.length);
  
    allmarkers = [];
    if (lProjects.length > 0) {
        for (var i = 0; i < allmarkers.length; i++) {
            allmarkers[i] = null;
        }

        for (var i = 0; i < lProjects.length; i++) {
            var lName = lProjects[i].childNodes[0].text;
            var lDescription = lProjects[i].childNodes[1].text;
            //var lImage = lProjects[i].childNodes[2].text;
            var lMarkerIcon = lProjects[i].childNodes[4].text;
            
            if (lMarkerIcon !=null && lMarkerIcon != "") {
                if (lMarkerIcon.length > 0) {
                    var lMyLoc =  document.location.href;
                    lMyLoc = lMyLoc.replace("http://", "");
                    var lMyUrlParts = lMyLoc.split("/");
                    var lMyUrl = lMyUrlParts[0];
                    lMarkerIcon = lMarkerIcon.substring(1, lMarkerIcon.length);
                    lMarkerIcon = "http://" + lMyUrl + "/" + lMarkerIcon;
                }
            }


            var lPoint
            if (Trim(lProjects[i].childNodes[5].text) != "" &&  
                             Trim(lProjects[i].childNodes[6].text)!=""){
                    lPoint= new GLatLng(parseFloat(lProjects[i].childNodes[5].text), parseFloat(lProjects[i].childNodes[6].text));
            
                if (i == 0) {
                    // keep first record point
                    lCenterPoint = lPoint
                }
                var lInfo="<table width='100%' height='100%'><tr>"
                if (Trim(lProjects[i].childNodes[2].text) != "") {
                    lInfo += "<td width='200' valign='top'>"
                    lInfo += "<img width='300' height='300' src='" + lProjects[i].childNodes[2].text + "'  border='0' />";
                    lInfo += "&nbsp;</td>"
                  
                }else{
                    lInfo += "<td width='200' valign='top'>"
                    lInfo += "ยังไม่มีภาพแสดงสถานที่ดำเนินโครงการ";
                    lInfo += "&nbsp;</td>"
                }




                lInfo += "<td  valign='top'>"
                lInfo += "<b>ยุทธศาสตร์:</b> " + lProjects[i].childNodes[7].text + "<br />";
                lInfo += "<b>แผนงาน:</b> " + lProjects[i].childNodes[21].text + "<br />";
                lInfo += "<b>โครงการ:</b> " + lProjects[i].childNodes[0].text + "<br />" + lProjects[i].childNodes[1].text + "<br />";
                if (Trim(lProjects[i].childNodes[3].text) != "") {
                    lInfo += "<b>Website:</b> <a href='" + lProjects[i].childNodes[3].text + "' target='_blank'>" + lProjects[i].childNodes[3].text + "</a><br />"
                }
                lInfo += "<b>สาขาการลงทุน:</b> " + lProjects[i].childNodes[9].text + "<br />";
                lInfo += "<b>กระทรวง/รัฐวิสาหกิจ:</b> " + lProjects[i].childNodes[10].text + "<br />";
                lInfo += "<b>กรม:</b> " + lProjects[i].childNodes[11].text + "<br />";
                lInfo += "<b>วันที่เริ่มต้น:</b> " + lProjects[i].childNodes[12].text + "<br />";
                lInfo += "<b>วันที่สิ้นสุด:</b> " + lProjects[i].childNodes[13].text + "<br />";
                //lInfo += "<b>วันที่เริ่มต้น:</b> 1/1/2552<br />";
                //lInfo += "<b>วันที่สิ้นสุด:</b> 31/12/2555<br />";
                lInfo += "<b>งบประมาณ:</b> " + lProjects[i].childNodes[14].text + " บาท <br />";
                lInfo += "<b>เบิกจ่ายจนถึงปัจจุบัน:</b> " + lProjects[i].childNodes[15].text + " บาท <br />";
                lInfo += "</td></tr>";
                lInfo += "<tr><td colspan=2 align='center' valign='top'>";
                lInfo += "&nbsp;&nbsp;";

                //สำหรับปุ่ม กราฟ (Xcelsius) และ Flipbook ด้านล่าง
                //Projectsize เป็น M, L > แสดงปุ่ม Flipbook
                //Projectsize เป็น S, M, L > แสดงปุ่ม กราฟ (Xcelsius)
                var isShowFlipbook=false;
                var isShowGraph=false;
                if (Trim(lProjects[i].childNodes[18].text) == "M" || Trim(lProjects[i].childNodes[18].text) == "L") {
                    isShowFlipbook=true;
                }

                if (Trim(lProjects[i].childNodes[18].text) == "S" || Trim(lProjects[i].childNodes[18].text) == "M" || Trim(lProjects[i].childNodes[18].text) == "L") {
                    isShowGraph=true;
                }

                //Xcelsius (Graph)
                if(isShowGraph){
                    if (Trim(lProjects[i].childNodes[16].text) != "") {
                       // lInfo += "<img src='/images/line_chart.jpg' border=0 style='cursor:hand;' onclick=window.open('" + lProjects[i].childNodes[16].text + "');>"
                    } else {
                       // lInfo += "<img src='/images/line_chart.jpg' border=0>"
                    }

                    //TODO - always disabled (tempolary) 
                    //lInfo += "<img src='images/line_chart_disabled.gif' border=0>"

                }
                //Flipbook
                if(isShowFlipbook){
                    if(Trim(lProjects[i].childNodes[17].text) != "") {
                        lInfo += "<img src='\/images\/book.jpg' border=0 style='cursor:hand;' onclick=window.open('" + lProjects[i].childNodes[17].text + "');>"
                    } else {
                       lInfo += "<img src='\/images\/book.jpg' border=0>"
                    }
                }
                lInfo += "</td></tr></table>"

              
                var lMarker = createMarker(lPoint, lMarkerIcon, lInfo, false);
                //allmarkers.push(lMarker);
                map.addOverlay(lMarker);
/*
                lMarker = null;
                lInfo = null;
                lName = null;
                lDescription = null;
                lImage = null;
                lMarkerIcon = null;
                lPoint = null;
*/
           } 

        }// end for loop

    } else {
        lZoomLevel = 10;
        if (results != "") {
            var lpoints = results.split(",");
            if (lpoints.length = 2) {
                if(IsNumeric(lpoints[0]) && IsNumeric(lpoints[1]))
                    lCenterPoint = new GLatLng(parseFloat(lpoints[0]), parseFloat(lpoints[1]));
            }
        }
    }

       
    if (lCenterPoint) {
        if (allmarkers.length > 1) {
            lZoomLevel = 6;
        }
        map.setCenter(lCenterPoint, lZoomLevel);
    } else {
        if (lProjects.length > 0) {
            if (Trim(lProjects[0].childNodes[19].text) != "") {
                PageMethods.GetLatLngByProvince(lProjects[0].childNodes[19].text, SetCenterToProvince, OnWSRequestFailed);
            }
        }
    }
    
}


function SetCenterToProvince(results) {
    if (Trim(results) != "") {
       var lCenterPoint 
       var lpoints = results.split(",");
       if (lpoints.length = 2) {
           lCenterPoint = new GLatLng(parseFloat(lpoints[0]), parseFloat(lpoints[1]));
       }
       if (lCenterPoint) {
           map.setCenter(lCenterPoint, 10);
       }
    }
}
 
 function OnWSRequestFailed(error) {
    alert("Stack Trace: " + error.get_stackTrace() + "\r\n" +
                    "Error: " + error.get_message() + "\r\n" +
                    "Status Code: " + error.get_statusCode() + "\r\n" +
                    "Exception Type: " + error.get_exceptionType() + "\r\n" +
                    "Timed Out: " + error.get_timedOut());
}


//GridView ----------------------------------------------------------------------------------------------------------------------------
var mGridView;
var mGridView_lastCur;
var mGridView_isShift = false;
var mGridView_isCtrl = false;
var mGridView_isTab = false;


function mGridView_Selects(th, bgColor, foreColor) {
    if (th.isSelect == 1) {
        return;
    }

    if (th.oldStyle == null) return;
    if (th.oldStyle == '') {
        th.oldStyle = mGridView_clones(th.style);
    }

    // clear previous selected row
    if (mGridView_lastCur != null) {
        if (mGridView_lastCur.oldStyle != '' && mGridView_lastCur.oldStyle != null) {
            //alert(mGridView_lastCur.oldStyle.backgroundColor);
            mGridView_lastCur.style.backgroundColor = mGridView_lastCur.oldStyle.backgroundColor;
            mGridView_lastCur.style.color = mGridView_lastCur.oldStyle.color;
        }
        mGridView_lastCur.isSelect = 0;
    }
    //end  clear previous selected row
   
    //mGridView_ClearSelects();
    th.style.backgroundColor = bgColor;
    th.style.color = foreColor;
    th.isSelect = 1;
    mGridView_lastCur = th;
    th.focus();
}


function mGridView_ClearSelects() {
    var tr = mGridView.firstChild.firstChild.nextSibling;
    while (tr != null) {
        if (tr.oldStyle != '' && tr.oldStyle != null) {
            tr.style.backgroundColor = tr.oldStyle.backgroundColor;
            tr.style.color = tr.oldStyle.color;
        }
        tr.isSelect = 0;
        tr = tr.nextSibling;
    }
}

function mGridView_KeyDown(bgColor, foreColor) {
    var nCur;
    if (event.keyCode == 38 && mGridView_lastCur.previousSibling.previousSibling != null) {
        nCur = mGridView_lastCur.previousSibling;
        mGridView_Selects(nCur, bgColor, foreColor);
    }
    if (event.keyCode == 40 && mGridView_lastCur.nextSibling != null) {
        nCur = mGridView_lastCur.nextSibling;
        mGridView_Selects(nCur, bgColor, foreColor);
    }
    if (mGridView_isShift == false)
        if (event.keyCode == 9 && mGridView_lastCur.nextSibling != null) {
        nCur = mGridView_lastCur.nextSibling;
        mGridView_isTab = true;
        mGridView_Selects(nCur, bgColor, foreColor);
    }
    if (mGridView_isShift == true)
        if (event.keyCode == 9 && mGridView_lastCur.previousSibling.previousSibling != null) {
        nCur = mGridView_lastCur.previousSibling;
        mGridView_isTab = true;
        mGridView_Selects(nCur, bgColor, foreColor);
    }
    if (event.keyCode == 9 || event.keyCode == 38 || event.keyCode == 40)
        event.returnValue = false;
    if (event.keyCode == 16)
        mGridView_isShift = true;
    if (event.keyCode == 17)
        mGridView_isCtrl = true;
}

function mGridView_KeyUp() {
    if (event.keyCode == 16) { mGridView_isShift = false; }
    if (event.keyCode == 17) mGridView_isCtrl = false;
    if (event.keyCode == 9) mGridView_isTab = false;
    if (event.keyCode == 46) { event.returnValue = false; }
}


function mGridView_clones(deep) {

    var objectClone = new Object();

    objectClone['backgroundColor'] = deep['backgroundColor'];

    objectClone['color'] = deep['color'];

    return objectClone;

}

function LTrim(str) {
    if (str == null) { return null; }
    for (var i = 0; str.charAt(i) == " "; i++);
    return str.substring(i, str.length);
}
function RTrim(str) {
    if (str == null) { return null; }
    for (var i = str.length - 1; str.charAt(i) == " "; i--);
    return str.substring(0, i + 1);
}
function Trim(str) {
    return LTrim(RTrim(str));
}

//-->
