var initLoad = true;
var editRegionId = -1;
var errorTag = "errorMsg";
var responseTag = "highlight-response";
var informationTag = "message";
var regionTableId = "userDefinedRegionTable";
var userRegionNum = 0;
var tabSelected = 1;
var editRegionNameID  = "editRegionName";
var editInProcess = false;
var savedRegionInfo="";
var savedRegionInfo_area1="";
var savedRegionInfo_area2="";
var mapSourceType = "unknown";
var username="";

var requestpath ;
function startedit(editDivId, regionName, regionId){
        editInProcess  = true;
        // show edit tools;
        toggleWindowHTML("taskTool");
        toggleWindowHTML("taskTool2");
       
        map1.createCurrentToolItem('SpatialSelectionTask_tool_searchByPoint', 'button_SpatialSelectionTask_tool_searchByPoint', 'EsriMapPoint', true, true, '#FF0000', 2,   '/gis/images/pointSelect.gif', '/gis/images/pointSelect.gif', '/gis/images/pointSelect.gif', '/gis/images/pointSelect.gif'); 
    
        var emptydiv = document.getElementById("emptyregion");
        if (emptydiv){  
            removeNode(emptydiv);
        }
                                
        // show edit results on a window
        if (regionId != -1){
            var siteNoStr = document.getElementById("siteno" + regionId).innerHTML;
            var siteAreaStr = document.getElementById("sitearea" + regionId).innerHTML;
        }
        else{
            siteNoStr = "0 ABMI Site";
            siteAreaStr = "0 km<sup>2</sup>";
        }
        
        var area1, area2;
        var editDiv = document.getElementById(editDivId);
        var rowIndex = -1;

        if (regionId != -1){
            toggleWindowHTML("regionArea1" + regionId);
            toggleWindowHTML("regionArea2" + regionId);
            toggleWindowHTML(editDivId);
            var areatr2 =  document.getElementById("regionArea2" + regionId);
            var rowIndex = areatr2.rowIndex;
        }

        var tbody =  document.getElementById("regionArea");
        if (rowIndex != -1){
            rowIndex ++;
        }
        
        var editDiv = tbody.insertRow(rowIndex);
        editDiv.id = "editRegion";
        editDiv.style.display="";
        editDiv.style.backgroundColor="#eeeeee";
      

        var pItem = editDiv.appendChild(document.createElement("td"));
        pItem.colSpan = 7;
        pItem.className = "mysavedmaps";
        pItem.appendChild(document.createTextNode("Region Name:"));
    
        if (rowIndex != -1){
            rowIndex ++;
        }
            
        editDiv = tbody.insertRow(rowIndex);
        editDiv.id = "editRegionInput";
        editDiv.appendChild(document.createElement("td"));
        editDiv.appendChild(document.createElement("td"));
        editDiv.appendChild(document.createElement("td"));
        pItem = editDiv.appendChild(document.createElement("td"));
        pItem.colSpan = 6;

        var input = pItem.appendChild(document.createElement("input"));
        input.id = editRegionNameID;
        input.value = regionName;

        if (rowIndex != -1)
            rowIndex ++;
        
        var infoDiv = tbody.insertRow(rowIndex);
        infoDiv.id= "editRegion1";
        infoDiv.appendChild(document.createElement("td"));
        infoDiv.appendChild(document.createElement("td"));
        
        pItem = infoDiv.appendChild(document.createElement("td"));
        pItem.colSpan = 5;
        pItem.className = "inset";
        
        var siteNoDiv =  pItem.appendChild(document.createElement("p"));
        siteNoDiv.className = "mysavedmaps";
        siteNoDiv.id = "siteNoCurrent";
        siteNoDiv.innerHTML = siteNoStr;
        
        if (rowIndex != -1)
            rowIndex ++;
        
        var infoDiv2 = tbody.insertRow(rowIndex);
        infoDiv2.id= "editRegion2";
        infoDiv2.appendChild(document.createElement("td"));
        infoDiv2.appendChild(document.createElement("td"));
        
        pItem = infoDiv2.appendChild(document.createElement("td"));
        pItem.colSpan = 5;
        
        var siteAreaDiv =  pItem.appendChild(document.createElement("span"));
        siteAreaDiv.className = "mysavedmaps";
        siteAreaDiv.id = "siteAreaCurrent";
        siteAreaDiv.innerHTML = siteAreaStr;
        
        var tbody = editDiv.parentNode;
        if (rowIndex != -1)
            rowIndex ++;
            
        var buttontr = tbody.insertRow(rowIndex);
        buttontr.id = "tempTR";
        buttontr.appendChild(document.createElement("td"));
        var td = buttontr.appendChild(document.createElement("td"));
        td.colSpan = 6;
        
        var savelink = td.appendChild(document.createElement("span"));
        var cancellink = td.appendChild(document.createElement("span"));
  
        if (regionId == -1){
            savelink.innerHTML = "<input type=button value='Save New' onclick='javascript:saveNewArea();'>";
            cancellink.innerHTML = "<input  type=button value='Reset' onclick=\"javascript:finishedit('newregion0');showUserRegions(-1);\">";
        }
        else{
            savelink.innerHTML = "<input type=button value='Save' onclick='javascript:updateArea()'>";
            cancellink.innerHTML = "<input type=button value='Reset' onClick='javascript:resetEdit()'> ";
        }
    
}

function resetEdit(){
        editDivId = "regionRow" + editRegionId;
        finishedit("");
        toggleWindowHTML("regionArea1" + editRegionId);
        toggleWindowHTML("regionArea2" + editRegionId);
        toggleWindowHTML(editDivId);
        map1.setCurrentToolItem(userRegionIdentifyTool); 
        showUserRegions(-1);
}
function finishedit(editDivId){
    //hide edit tools
        editInProcess = false;
        toggleWindowHTML("taskTool");
        toggleWindowHTML("taskTool2");
        
        var Tr= document.getElementById("editRegion");
        removeNode(Tr);
 
        Tr= document.getElementById("editRegionInput");
        removeNode(Tr);
        
        Tr= document.getElementById("editRegion1");
        removeNode(Tr);
        
        Tr= document.getElementById("editRegion2");
        removeNode(Tr);
        
        var buttontr= document.getElementById("tempTR");
        removeNode(buttontr);
    // hide edit information
 
}

function deleteRegion(regionid){
    var bDelete =  confirm("You choose to delete a region. Do you want to Conitue?");
    if (bDelete){
        map1.showLoading();
        
        var params = "userdefinedarea=userdefinedarea&action=delete&formId=" + map1.formId + "&mapId=" + map1.id;
        params += "&regionid=" + regionid;
        params +="&" + EsriUtils.buildRequestParams(map1.formId);
        var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {postDeleteRegion(xh);} ); 
    }                                                    
}
function zoomToUserRegion(regionid) {
    map1.showLoading();

    var params = "userdefinedarea=userdefinedarea&action=zoom&formId=" + map1.formId + "&mapId=" + map1.id;
    params += "&regionid=" + regionid;
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {generalProcessPostBack(xh, 'zoom'); }  );
}

function showUserRegions(regionid) {
     if (!username || username=="") // if username is empty do nothing
        return;
    
    map1.showLoading();
    editInProcess = false;
    var params = "userdefinedarea=userdefinedarea&action=highlight&formId=" + map1.formId + "&mapId=" + map1.id;
    if (regionid != -1) {
        params += "&regionid=" + regionid;
    }
   
    if (initLoad){
        params += "&load=load"; // initially load
    }
    
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
   
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {displayRegions(xh);} );
 }

function editRegion(regionid){
    if (editInProcess){
        alert("another edit is in process, please save or cancel it first");
        return;
    }
    editInProcess  = true;
    map1.showLoading();
    editRegionId  = regionid;

    var regionnameDiv = document.getElementById("regionname"+regionid);
    regionname = regionnameDiv.innerHTML;
    
    var params = "userdefinedarea=userdefinedarea&action=initedit&formId=" + map1.formId + "&mapId=" + map1.id;
    params += "&regionid=" + regionid + "&regionname=" + regionname;
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
   
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {startEditprocessPostBack(xh, regionname, regionid);} );
}

function generalProcessPostBack(xh, type){
     if (xh != null && xh.readyState == 4 && xh.status == 200) {
            var xml = EsriUtils.getXmlDocument(xh);
            if (testExpire(xh))
                return;
            var errorTags = xml.getElementsByTagName(errorTag);
          
            if (errorTags.length > 0){
                alert(errorTags.item(0).firstChild.nodeValue);
                return;
            }
                
            var responseTags = xml.getElementsByTagName(responseTag);
            if (responseTags.length == 0){
                alert("Please refresh the web page as your session may expired!");
            }
                
            var redrawTags = xml.getElementsByTagName("redraw");
            if (  type == "zoom" ){
                redrawMap(map1); 
            }
            else if (redrawTags.length > 0 ){
                refreshMap(map1);
            }
            else if (  type == "refresh" ){
                refreshMap(map1); 
            }
    }   // end of xh == 200
 }
 
function startEditprocessPostBack(xh, regionname, regionId){
 if (xh != null && xh.readyState == 4 && xh.status == 200) {
        var xml = EsriUtils.getXmlDocument(xh);
        if (testExpire(xh))
            return;
        
        var errorTags = xml.getElementsByTagName(errorTag);
        
        refreshMap(map1);
        if (errorTags.length > 0){
            alert(errorTags.item(0).firstChild.nodeValue);
            return;
        }
        if (regionId == -1) {
            startedit("newregion0" , "new region", -1);
        }
        else
          startedit("regionRow" + regionId, regionname, regionId);
    }   // end of xh == 200
 }
 
// save user edited regions
function updateArea(){

    var regionnameInput = document.getElementById(editRegionNameID);
    var regionname =regionnameInput.value;
    finishedit(editRegionNameID);
    map1.showLoading();
    
    var params = "userdefinedarea=userdefinedarea&action=saveedit&formId=" + map1.formId + "&mapId=" + map1.id;
    params += "&regionid=" + editRegionId + "&regionname=" + regionname;
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () { updateRegionInfo(xh);} );
}

function startNewArea(){
     if (editInProcess){
            alert("another edit is in process, please save or cancel it first");
            return;
        }
    map1.showLoading();
    editInProcess = true;

    var params = "userdefinedarea=userdefinedarea&action=new&formId=" + map1.formId + "&mapId=" + map1.id;
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {startEditprocessPostBack(xh, "New Region", -1);} );

}

function clearMap(refresh){
    
    map1.showLoading();
    
    var params = "userdefinedarea=userdefinedarea&action=clear&formId=" + map1.formId + "&mapId=" + map1.id;        
    params +="&" + EsriUtils.buildRequestParams(map1.formId);
    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {generalProcessPostBack(xh, refresh);} );
}

function saveNewArea(){
        map1.showLoading();
        var areaNameInput = document.getElementById(editRegionNameID);
        var params = "userdefinedarea=userdefinedarea&action=savenew&formId=" + map1.formId + "&mapId=" + map1.id;                        
        params += "&regionname=" +  areaNameInput.value;
        params +="&" + EsriUtils.buildRequestParams(map1.formId);
        var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function () {postNewRegion(xh);} );
}
/*
<p class="mysavedmaps" id="">
                                <input name="AreaNameXYZ" type="checkbox" class="checkbox">
                                <img src="images/minusPlus.gif" class="plusminus" alt="" />
                                <label>Area Name XYZ</label>
                                <a href="void">Edit</a>
                                <img src="images/close.gif" alt="" class="mysavedmapsclose" />
                                </p>
*/          

function togglePlusMinusImg(img, divName){
    toggleWindowHTML("regionArea1" + divName);
    toggleWindowHTML("regionArea2" + divName);
    
    if (img.src.indexOf("/gis/images/minusPlus.gif") != -1){
        img.src = "/gis/images/plusMinus.gif"
    }
    else{
        img.src = "/gis/images/minusPlus.gif";
    }
   
}
function insertOneRegionToTable(regionItem, resultTag, j, rowIndex){
//    tb = regionItem.appendChild(document.createElement("table"));
//    tbody = tb.appendChild(document.createElement("tbody"));
        var id = resultTag.getAttribute("id");
        if (rowIndex == -1){
            pItem = regionItem.appendChild(document.createElement("tr"));   // rows end of the table
            rowIndex = pItem.rowIndex;
        }
        else    {
            pItem = regionItem.insertRow(rowIndex);
        }
        
        
        var cellClassName = (rowIndex%2 == 0? 'evenRecord': 'oddRecord');
        pItem.id = "regionRow" + id;   
       
        var pItemtd_1 = pItem.appendChild(document.createElement("td"));
        pItemtd_1.className ="mysavedmaps";
        pItemtd_1.id = "regionRow" + id;
        EsriUtils.setElementStyle( pItemtd_1, "border-bottom:1px solid #bfbcb9;padding:0 0 5px 0px;");
        var htmStr = "<input type=checkbox  class='myareacheckbox' name='"+id + "'" +
              " id ='userregion" + j + "'>";
  
        pItemtd_1.innerHTML = htmStr;
        pItemtd_1.className = cellClassName;
        var pItemtd_2 = pItem.appendChild(document.createElement("td"));
        var imgHTML = '<img class="myareacheckbox" src= "/gis/images/minusPlus.gif" class="plusminus" onClick ="togglePlusMinusImg(this,\'' + id + '\');" >';  
        pItemtd_2.innerHTML =imgHTML;
    
        pItemtd_2.className = cellClassName;
        //    <span class="colourBlock orange">&nbsp;&nbsp;&nbsp;</span>
        var pItemtd_3 = pItem.appendChild(document.createElement("td"));
        pItemtd_3.className = cellClassName;
        
        var colorbox = pItemtd_3.appendChild(document.createElement("span"));
        colorbox.className = "colourBlock";
        colorbox.style.backgroundColor = "#" + resultTag.getAttribute("color");
        colorbox.innerHTML = "&nbsp;&nbsp;&nbsp;";

        
        
        
        var name  =resultTag.getAttribute("name");
        name = name.replace("'" , "&#39;");
        name = name.replace('"' , '&quot;');
        
        var label = document.createElement("label");
        label.id = "regionname" + id;
        label.appendChild(document.createTextNode(resultTag.getAttribute("name")));
        
        var pItemtd_4 = pItem.appendChild(document.createElement("td"));
        pItemtd_4.appendChild(label);
        pItemtd_4.className = cellClassName;
    
        var pItemtd_5 = pItem.appendChild(document.createElement("td"));   
        pItemtd_5.className = cellClassName;        
        var deleteInnerHtm = '<a href="javascript:deleteRegion(' + id + ');"><img src="/gis/images/close.gif" title="remove this region" class="mysavedmapsclose"/></a>';
        var editInnerHtm = "<a href='javascript:editRegion(" + id + ");'><img src='/gis/images/edit.gif' alt='edit' title='edit this region (name, points)!' class='mysavedmapsedit' /></a>";
        var zoomInnerHtm = '<a href="javascript:zoomToUserRegion(' + id + ');"><img src="/gis/images/zoom.gif" alt="zoom" title="zoom to this region!" class="mysavedmapszoom" /></a>';
        
        pItemtd_5.innerHTML = zoomInnerHtm + editInnerHtm + deleteInnerHtm;
        
        var areaDivTr;
        if (rowIndex == -1)
            areaDivTr = regionItem.appendChild(document.createElement("tr"));
        else
            areaDivTr = regionItem.insertRow(rowIndex+1);
        
        areaDivTr.appendChild(document.createElement("td"));
        areaDivTr.appendChild(document.createElement("td"));
        areaDivTr.appendChild(document.createElement("td"));
        var areaDiv = areaDivTr.appendChild(document.createElement("td"));
        //       areaDiv = document.createElement("div");
        areaDiv.colSpan = 2;
        areaDivTr.className = cellClassName;
        areaDivTr.id  ="regionArea1" + id;
        areaDiv.className = "inset ";
        
        var pNumber = document.createElement("p");
        pNumber.id = "siteno" + id;
        pNumber.className ="mysavedmaps ";
        var strongFont2 = document.createElement("strong");
        strongFont2.appendChild(document.createTextNode(resultTag.getAttribute("siteno")));
        pNumber.appendChild(strongFont2);
        pNumber.appendChild(document.createTextNode(" ABMI Test Sites"));
        areaDiv.appendChild(pNumber);
        
        if (rowIndex == -1)
            areaDivTr = regionItem.appendChild(document.createElement("tr"));
        else
            areaDivTr = regionItem.insertRow(rowIndex+2);
        
        areaDivTr.appendChild(document.createElement("td"));
        areaDivTr.appendChild(document.createElement("td"));
        areaDivTr.appendChild(document.createElement("td"));
        areaDiv = areaDivTr.appendChild(document.createElement("td"));
        areaDiv.colSpan = 2;
        areaDivTr.id  ="regionArea2" + id;
        areaDivTr.className = cellClassName;
          
        var pArea = document.createElement("p");
        pArea.className = "mysavedmaps " ;
        pArea.id = "sitearea" + id;
        var strongFont = document.createElement("strong");
        strongFont.appendChild(document.createTextNode(resultTag.getAttribute("area") + " km"));
        var sup = strongFont.appendChild(document.createElement("sup"));
        sup.appendChild(document.createTextNode("2"));
        pArea.appendChild(strongFont);
        
        areaDiv.appendChild(pArea);
        EsriUtils.setElementStyle( areaDiv, "padding:0 0 15px 2px; ");     
       

}


function displayRegions(xh){
    if (xh != null && xh.readyState == 4 && xh.status == 200) {
            var xml = EsriUtils.getXmlDocument(xh);
            
            if (testExpire(xh))
                return;
            
            var errorTags = xml.getElementsByTagName(errorTag);
            refreshMap(map1);
            if (errorTags.length > 0){
                alert(errorTags.item(0).firstChild.nodeValue);
                return;
            }
   
            if (initLoad){
                initLoad = false;
                var tbdiv = document.getElementById("regionArea");     
                var noresultTags = xml.getElementsByTagName("noregion");
                removeNodeContent(tbdiv);
                if (noresultTags.length > 0){
                    var emptyTr = tbdiv.appendChild(document.createElement("tr"));
                    emptyTr.id = "emptyregion";
                    var emptyTd = emptyTr.appendChild(document.createElement("td"));
                    emptyTd.colspan = 10;
                    
                    emptyTd.innerHTML = noresultTags.item(0).firstChild.nodeValue;   
                    
                    return;        
                }   // end of no results
                  
                // if noregion message can't be found
                var resultTags = xml.getElementsByTagName("region");    
                
                userRegionNum =  resultTags.length;
                for(var j=0; j <resultTags.length; j++) {
                    //if results found, display 1st result
                        var resultTag = resultTags.item(j);
                        var id = resultTag.getAttribute("id");
                        var regionItem = tbdiv;//.appendChild(document.createElement("tr"));
                        //regionItem.id = "region" + id;
                        insertOneRegionToTable(regionItem, resultTag, j, -1);
                }// end of j
    
                
                if (resultTags.length == 0){
                    var emptydiv = tbdiv.appendChild(document.createElement("div"));
                    emptydiv.id = "emptyregion";
                    emptydiv.innerHTML = "Please refresh the web page as your session may expired!";   
                    return;        
                }
    
        }// end of initial load
 
    }   // end of xh 
}

function updateRegionInfo(xh){
    if (xh != null && xh.readyState == 4 && xh.status == 200) {
            var xml = EsriUtils.getXmlDocument(xh);
            if (testExpire(xh))
                return;
            refreshMap(map1);
            
            var errorTags = xml.getElementsByTagName(errorTag);
            if (errorTags.length > 0){
                alert(errorTags.item(0).firstChild.nodeValue);
                return;
            }
       
            var resultTags = xml.getElementsByTagName("region");
            if (resultTags.length >0){
                var resultTagDetail = resultTags.item(0);
                var id = resultTagDetail.getAttribute("id");
            
                var row  = document.getElementById("regionRow" + id);
                var rowIndex = row.rowIndex;
                removeNode(row);
                row  = document.getElementById("regionArea1" + id);
                removeNode(row);
                
                row  = document.getElementById("regionArea2" + id);
                removeNode(row);
                
                userRegionNum ++;
                
                var regionItem = document.getElementById("regionArea");     
                insertOneRegionToTable(regionItem, resultTagDetail, userRegionNum -1, rowIndex);  
         
            }
     
    } // end of xh == 200
}

/*create a new region*/
function postNewRegion(xh){
    if (xh != null && xh.readyState == 4 && xh.status == 200) {
            var xml = EsriUtils.getXmlDocument(xh);
            
            if (testExpire(xh))
                return;
            redrawMap(map1);
           
            var errorTags = xml.getElementsByTagName(errorTag);
            if (errorTags.length > 0){
                alert(errorTags.item(0).firstChild.nodeValue);
                return;
            }
            finishedit("newregion0");
            // add in a new region information
            var resultTags = xml.getElementsByTagName("region");
            var tbdiv = document.getElementById("regionArea");
            
            var emptydiv = document.getElementById("emptyregion");
            if (emptydiv){  
                removeNode(emptydiv);
            }
            
            if (resultTags.length >0){
                var resultTagDetail = resultTags.item(0);
                var id = resultTagDetail.getAttribute("id");
                userRegionNum ++;
                insertOneRegionToTable(tbdiv, resultTagDetail, userRegionNum -1, -1);
                
            }
    }
}

function removeNode(node){
        if (!node)
            return;
        node.parentNode.removeChild(node);
}

function removeNodeContent(tbdiv){
        if (!tbdiv)
            return;
        
        for (var i=tbdiv.childNodes.length-1;i>=0;i--)
            tbdiv.removeChild(tbdiv.lastChild);
}
function postDeleteRegion(xh){
     if (xh != null && xh.readyState == 4 && xh.status == 200) {
            var xml = EsriUtils.getXmlDocument(xh);
            
            if (testExpire(xh))
                return;
            redrawMap(map1);
            var errorTags = xml.getElementsByTagName(errorTag);
            
            if (errorTags.length > 0){
                alert(errorTags.item(0).firstChild.nodeValue);
                return;
            }
            
            var infoTags = xml.getElementsByTagName(informationTag);
            info = infoTags.item(0).firstChild.nodeValue;
            
            // remove 
            var resultTags = xml.getElementsByTagName("region");
       
            if (resultTags.length >0){
                    var resultTagDetail = resultTags.item(0);
                    var id  = resultTagDetail.getAttribute("id");
                    
                    var row  = document.getElementById("regionRow" + id);
                    removeNode(row);
                    row  = document.getElementById("regionArea1" + id);
                    removeNode(row);
                    row  = document.getElementById("regionArea2" + id);
                    removeNode(row);
            }
        }
}

function sendBioIndexQueryBySingleCustomArea(regionid){
        if (userRegionNum == 0){
            return;
        }
        map1.showLoading();
        var params = "formId=" + map1.formId + "&mapId=" + map1.id +
            "&queryBioIndex=queryBioIndex&action=userdefined&";
        // get selected regions
        params += "regionId=" + regionid + "&";
        params += EsriUtils.buildRequestParams(map1.formId);
        var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function() {redirect (xh);  });
}
function sendBioIndexQueryBySites(){
        if (userRegionNum == 0){
            return;
        }
        if (editInProcess){
        alert("you have an unsaved edit, please save or cancel it before proceed.");
        return;
        }
        map1.showLoading();
        var params = "formId=" + map1.formId + "&mapId=" + map1.id +
            "&queryBioIndex=queryBioIndex&action=userdefined&";
    // get selected regions
   
        for (var i=0; i <userRegionNum; i++){
            var  userregionElement = document.getElementById("userregion" + i);
        
            if (userregionElement){
                if (userregionElement.checked){
                    params += "regionId=" + userregionElement.name + "&";
        
                }
            }
        }   // end of if
   
       params += EsriUtils.buildRequestParams(map1.formId);
       var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map1.formId), params, false, function() {redirect (xh);  });
}

function redirect (xh){
    if (xh != null && xh.readyState == 4 && xh.status == 200) {
        
        map1.hideLoading();

       
            if (requestpath == "sp"){
                window.location= "/abmi/biodiversitybrowser/species.jsp";
            }
            else if (requestpath == "hf"){
                window.location= "/abmi/humanfootprint/hfsummary.jsp";
            }
            else if (requestpath == "raw"){
                window.location= "/abmi/rawdata/rawdataselection.jsp";
            }
            else if (requestpath.indexOf("jsp") > 0){
                url = "/abmi" + requestpath;
                url.replace(/^\s+|\s+$/g, '') ;
           
                window.location= url;
            }
        
            else{
                window.location= "/abmi/rawdata/rawdataselection.jsp";
            }
    }
}
    
  
function switchTab(tabOrder){
    if (tabOrder == tabSelected)
        return;
    
    if (tabOrder == 1){
        if (editInProcess){
            alert("A region edit is in process, please save or cancel it first");
            return;
        }
       
       tabSelected = 1;
       var submitButton = document.getElementById('regionSubmitButton');     
       removeNode(submitButton);
       
       var container  = document.getElementById("submitButton");
       if (mapSourceType == 'raw'){
            container.innerHTML = ' <p>  <input name="getDetail" type="button" '+ 
                           ' id="regionSubmitButton" '+ 
                            ' onclick ="sendBioIndexQuery(' + predefinedRegionLen + ');" ' + 
                           ' value="Get detailed raw data" '+ 
                           ' class="getDetailedBioInfo"/> '+
                  '</p>';
        }
       else{
            container.innerHTML = ' <p>  <input name="getDetail" type="button" '+ 
                           ' id="regionSubmitButton" '+ 
                            ' onclick ="sendBioIndexQuery(' + predefinedRegionLen + ');" ' + 
                           ' value="Get detailed biodiversity information" '+ 
                           ' class="getDetailedBioInfo"/> '+
                  '</p>';
        }
        
        toggleBox("myselectionRegion", false);
        toggleBox("selectionRegion", true);
        var userdefinedArea = document.getElementById("userdefinedArea");
        userdefinedArea.className = "";
        var predefinedArea = document.getElementById("predefinedArea");
        predefinedArea.className = "selected";
        var taskTool = document.getElementById("taskTool");
        taskTool.style.display="none";
        clearMap();
     
        toggleBox("identify1",true);
        toggleBox("identify2",false);
        toggleBox("clearmap",true);
        setDefaultTool();
      
    }   //   enf of tab order == 1
    else  if (tabOrder == 2){
      
        tabSelected = 2;   
        var submitButton = document.getElementById('regionSubmitButton');     
        removeNode(submitButton);
        
        var container  = document.getElementById("submitButton");
        if (mapSourceType == 'raw') {
            container.innerHTML = ' <p>   <input name="getDetail" type="button"   id="regionSubmitButton" '+ 
                            ' onclick ="sendBioIndexQueryBySites();"  value="Get detailed raw data" ' +
                           ' class="getDetailedBioInfo"/>       </p>';
        }
        else {
             container.innerHTML = ' <p>   <input name="getDetail" type="button"   id="regionSubmitButton" '+ 
                            ' onclick ="sendBioIndexQueryBySites();"  value="Get detailed biodiversity information" ' +
                           ' class="getDetailedBioInfo"/>       </p>';
        }
        toggleBox("selectionRegion",false);
        toggleBox("myselectionRegion", true);
        
        var userdefinedArea = document.getElementById("userdefinedArea");
        userdefinedArea.className = "selected";
        var predefinedArea = document.getElementById("predefinedArea");
        predefinedArea.className = "";
        
        initLoad = true;
        showUserRegions(-1);
        setDefaultTool();
        $("#identify1").hide();
        $("#identify2").show();
        $("#clearmap").hide();
     }
}


// when predefined region, use identify as default tool, otherwise use custom identify 

function setDefaultTool(){
    if ( tabSelected == 2){
        map1.setCurrentToolItem(userRegionIdentifyTool); 
    }
    if (tabSelected == 1){
        map1.setCurrentToolItem(regionIdentifyTool);
    }

}
