/*debugger*/
var mousex, mousey;
var timeoutID;
var dodebug = true;
var istooltip = false;

//function htmlDecode(str) {return str.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&amp;/g, "&");}
function jsdecode(str) {return str.replace(/&#34;/g, '"').replace(/&#39;/g, "'");}
function makejsparam(str) {return str.replace(/'/g, "\'").replace(/\n\r/g, "").replace(/\r/g, "").replace(/\n/g, "").replace(/'/g, "\\\'");}

function showMoreInfoTitle(divid, divinfoid, info, divtitle, title, cssclass) {
       clearTimeout(timeoutID);
       document.getElementById(divid).innerHTML = info;
       JQ('#'+divid).data('title.dialog', title); 
       if (JQ('#'+divid).dialog('isOpen')) {
             JQ('#'+divid).dialog('close');
        } 
       JQ('#'+divid).dialog('open');
}

function showTooltip(divid, divinfoid, info, divtitle, title, cssclass) {
              clearTimeout(timeoutID);
       if (document.getElementById(divid)) {
       document.getElementById(divid).innerHTML = info;
       JQ('#'+divid).data('title.dialog', title); 
       if (JQ('#'+divid).dialog('isOpen')) {
                    JQ('#'+divid).dialog('close');
        } 
       JQ('#'+divid).dialog('open');
       } else {}
}



function hideMoreInfoafter(divid, milisecs) {
         clearTimeout(timeoutID);
         time = 0 + parseInt(milisecs);
         timeoutID = setTimeout("hideMoreInfo('"+divid+"')", time);
}

function closeMoreInfo(divid) {
                 JQ('#'+divid).dialog('close');
}

function hideMoreInfo(divid) {
         if (istooltip) {
           closeMoreInfo(divid);
         }
}

function mapquery(test) {}

function updateflash(flashid, lang, what, code) {
    closeMoreInfo('moreinfo'+flashid);
    eval("ShowMap"+flashid+"('"+lang+"','"+ what+"','"+ code+"')");
}

function decimaltodegree(dcoord) {
      var signlat = 1;
      dcoord = parseFloat(dcoord); 
      if(dcoord < 0)  { signlat = -1; }
      latAbs = Math.abs( Math.round(dcoord * 1000000.));
     return ((Math.floor(latAbs / 1000000) * signlat) + '&deg; ' 
     + Math.floor(  ((latAbs/1000000) - Math.floor(latAbs/1000000)) * 60)  
     + '\' ' +  ( Math.floor(((((latAbs/1000000) - Math.floor(latAbs/1000000)) * 60) - Math.floor(((latAbs/1000000) - Math.floor(latAbs/1000000)) * 60)) * 100000) *60/100000 ) + '&quot;'  );
}

function showCoordinates(x, y) {
    return "<table class=\"coordstable\" cellspacing=\"0\" border=\"0\"><tr><td class=\"col1\">Long:</td><td class=\"col2\">"+x+"</td><td class=\"col3\">Lat:</td><td class=\"col4\">"+y+"</td></tr>"
    +"<tr><td class=\"col1\"></td><td class=\"col2\">"+decimaltodegree(x)+"</td><td class=\"col3\"></td><td class=\"col4\">"+decimaltodegree(y)+"</td></tr></table>";
}

function openGoogleMap(dx, dy, text) {
    debugger;
    if (text == undefined || text == "undefined") 
    { text = "";}
    text = ""+text;
    if (text.length <= 0) {
        text = " ";
    } else {
        text = "+("+text+")";
    }
   // var url = "http://maps.google.com/maps?f=q&hl=en&q=" + dy + "," + dx + "&om=1&z=14&t=k&iwloc=addr";
    var url = "http://maps.google.com/maps?f=q&hl=en&q=" + dy + "," + dx +text+"&iwloc=A&hl=en&ll="+ dy + "," + dx +"&z=14&t=k";
    var t = window.open(url,"googlemap","location=no,resizable=yes,menubar=no,directories=no,status=1,scrollbars=1,width=800,height=600");
                
}

function flashEvent(event, args) {
  //window.status = "event = "+event +" args="+args;
  if (event=="Map loadxml" && document.getElementById("loading")) {
        document.getElementById("loading").style.display = "block";
   }
   if (event=="Symbol load" && document.getElementById("loading")) {
        document.getElementById("loading").style.display = "none";
   }
     if (event=="Map click") {
        doMapClick(args);
   }
   if (event=="Map mousemove") {
     var coords = args.split(",");
     //window.status = args;
     document.getElementById("coords").innerHTML = showCoordinates(coords[0], coords[1]);
     if (coords[2])
        doMapMouseOver(coords[2]);
  }

  if (event=="Map custom") {
    var coords = args.split(",");
    openGoogleMap(coords[0], coords[1]);
  }
  var mycommands = "";
  if (args && args["_FSCommand"] && args["_FSCommand"].length > 0 ) {
       mycommands = args["_FSCommand"].split(";;;");
  } else if (args && args.indexOf(event) > -1) {
       mycommands = args.split(";;;");
  }
  var i = 0;
  for(i=0; i < mycommands.length; i++) {
        var aa = mycommands[i].split("|||");
        if (aa.length > 0 && aa[0].indexOf(event) > -1) {
               var funct = aa[1]+"(";
               for (j=2; j< aa.length; j++) {
                    if (j>2) funct += ",";
                    funct += "'"+ makejsparam(aa[j])+"'";
               }
               funct += ")";
//mydebug(funct);
               eval(funct);
               break;
        }
  }
}

function doMapClick(argstr) {
 var args = argstr.split("&");
    var hashr = new Array();
    for(var j= 0; j < args.length; j++) {
        var temp = args[j].split("=");
        if (temp.length > 1) {
            hashr[temp[0]] = temp[1];
        }
    }
    if (hashr['featurelayer'].indexOf('Marina') >= 0 ) {
        marinacode = hashr['featureid'];
        //alert('lang='+langg.substr(0,2));
        MapService.GetMarinaInfo(langg.substr(0,2), marinacode, showmarinainfo)
    }
    if (hashr['featurelayer'].indexOf('Operator') >= 0 ) {
       
        alert('click on Operator!');
      
    }
}

function doMapMouseOver(argstr) {
/*window.status ='stopmove '+stopmove; 
*/
}

function showmarinainfo(info) {
     stopmove = true;
     istooltip=false;
    var args =info.split("|||");
   
    showMoreInfoTitle('moreinfo'+flashid, 'moreinfotext'+flashid, args[1], 'moreinfotitle'+flashid, args[0], 'mypopupdivo');

}


// toolbar functions (calling flash functions)
function flashzoomin(movieName) {
    var flash = flashMovie(movieName);
    flash.DoZoomIn();
}
function flashzoomout(movieName) {
    flashMovie(movieName).DoZoomOut();
}
function flashpan(movieName) {
    var flash = flashMovie(movieName);
    flash.DoPan();
}
function flashcustom(movieName) {
    var flash = flashMovie(movieName);
    var res = flash.DoCustom();
}

function flashlegend(movieName, divid){
   eval('islegend'+movieName+'=!islegend'+movieName);
   var mli = document.getElementById("legend"+movieName);

   if (mli ) {
       if (eval('islegend'+movieName)) {
            var flash = flashMovie(movieName);
            var t = flash.ShowLegend();
            t = t.replace(/image\/swf/gi, "image/gif");
           //alert(divid);
            mli.src = t;
            if (JQ('#'+divid).dialog('isOpen')) {
                JQ('#'+divid).dialog('close');
            }
          //  debugger;
            JQ('#'+divid).dialog('open');
           // alert('here');
            JQ('#'+divid).dialog('option', 'height', JQ('#'+divid).dialog('option', 'height'));
            } else {if (JQ('#'+divid).dialog('isOpen')) {
                JQ('#'+divid).dialog('close');
            }
        }

   }
   
}

function selectlayer(movieName) {
    var flash = flashMovie(movieName);
    var flag = "";
    var cn = eval("document.forms[0].layers"+movieName);
    for (i = 0; i < cn.length; i++) {
        flag = flag + "," + cn[i].checked;
    }
    flag = flag.substr(1);
    flash.DoSetLayers(flag);
}

function flashlayers(movieName, containerdiv, textdiv){
   eval('layersOn'+movieName+'=!layersOn'+movieName);
   var info = document.getElementById(containerdiv);
   if (info) {
   if (eval('layersOn'+movieName)) {
    var flash = flashMovie(movieName);
    var t = flash.GetLayers();
    var html = "";
    var layers = t.split(",");
    for (j=0; j< layers.length; j++) {
        var tmp = layers[j].split("_");
        html += "<label class=\"layerlabel\"><input type=\"checkbox\" name=\"layers"+movieName+"\" onclick=\"selectlayer('"+movieName+"', '"+tmp[0]+"', this.checked)\" value=\"1\" "+(tmp[1]=="true"? "checked" : "")+" >"+tmp[0]+"</label><br/>";  
    }
   if (JQ('#'+containerdiv).dialog('isOpen')) {
        JQ('#'+containerdiv).dialog('close');
    }
    JQ('#'+containerdiv).dialog('open');
    JQ('#'+containerdiv).html(html);
    JQ('#'+containerdiv).dialog('option', 'height', JQ('#'+containerdiv).dialog('option', 'height'));
   } else {if (JQ('#'+containerdiv).dialog('isOpen')) {
        JQ('#'+containerdiv).dialog('close');
    }}
   }

}

var ruler = false;
function flashruler(movieName){
   ruler = !ruler;
   var flash = flashMovie(movieName);
   var t = flash.DoDistance();
  
}
function pageredirect(url) {

    if (url.length > 0) window.location = url;
}

function refreshpage() {
    window.location.reload(true);
}
// use this to access the flash movie so you can call it's external functions
function flashMovie(movieName) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
}



// cms related functions (sync cms with map)
function updatepage(region, subregion, location, flashid, lang, what, code) {
 // alert('update page '+region+' '+subregion+' '+location+'  flashid='+ flashid+" lang="+lang+" "+what+" "+ code);
 //  mydebug("updatepage!!");
    try { 
    if (what == "region") {
        MapService.GetRegionPageUrl(code, lang, urlprefix, wildcardname, pageredirect)
    } else if (what == "subregion") {
        MapService.GetSubRegionPageUrl(code, lang,urlprefix, wildcardname,  pageredirect)
    } else if (what == "location") {
        MapService.GetLocationPageUrl(code, lang,urlprefix, wildcardname, pageredirect)
    } else if (what == "operator") {
        MapService.GetOperatorsPageUrl(code, lang,urlprefix, wildcardname, pageredirect)
    } else if (what == "country") {
        MapService.GetCountryPageUrl(code, lang,urlprefix, wildcardname, pageredirect)
    }
    } catch(err) {mydebug('error: '+err.description);}    

 }
function noaction(region, subregion, location, flashid, lang, what, code) {
}

 // debug functions
function mydebug(str) {
    if (document.getElementById('debug') && dodebug) {
    document.getElementById('debug').innerHTML = str;
    }
}

function debugobject(source) 
{
    var property, propCollection = "";
    for(property in source){propCollection += (property + ": " + source[property] + "<br/>");}    
    mydebug(propCollection);
}

// draw map
function drawMap(mapid) {
        try {
            // insert movie using swfobject
            var map = $get("Map"+mapid).value;
            var mapindex = $get("MapIndexPosition"+mapid).value;
            var layers = $get("Layers"+mapid).value;
            var mapindexlayers = $get("MapIndexLayers"+mapid).value;
            var mapindexxmllayers = $get("MapIndexXmlLayers"+mapid).value;
            var MaxZoomOut = $get("MaxZoomOut"+mapid).value;
            var MinZoomOut = $get("MinZoomOut"+mapid).value;
            var CustomButton = $get("CustomButton"+mapid).value;
            var swfobj = fpath+ "MapServerFlash/MapSymbols.swf?WMS="+map+"&Dynamic="+$get("Dynamic"+mapid).value;
            swfobj += "&Server="+$get("MapServerUrl"+mapid).value+"&GML="+$get("XmlLayers"+mapid).value;
            swfobj += "&Query="+$get("Query"+mapid).value+"&BBox="+$get("BBox"+mapid).value;
            swfobj += "&BGColor="+$get("BGColor"+mapid).value;
            if (mapindex && mapindex.length > 0) {swfobj += "&MapIndex="+mapindex;}
            if (layers && layers.length > 0) {swfobj += "&Layers="+layers;}
            if (mapindexlayers && mapindexlayers.length > 0) {swfobj += "&MapIndexLayers="+mapindexlayers;}
            if (mapindexxmllayers && mapindexxmllayers.length > 0) {swfobj += "&MapIndexXmlLayers="+mapindexxmllayers;}
            if (MinZoomOut && MinZoomOut.length > 0) {swfobj += "&MaxZoomIn="+MinZoomOut;}
            if (MaxZoomOut && MaxZoomOut.length > 0) {swfobj += "&MaxZoomOut="+MaxZoomOut;}
            if (CustomButton && CustomButton.length > 0) {swfobj += "&CustomButton="+CustomButton;}     
            swfobj += "&MapIndexHeight="+$get("MapIndexHeight"+mapid).value+"&MapIndexWidth="+$get("MapIndexWidth"+mapid).value;
            swfobj += "&WrapDateline="+$get("WrapDateline"+mapid).value+"&Equidistant="+$get("Equidistant"+mapid).value;
            swfobj += "&Progressive"+$get("Progressive"+mapid).value + "&Feature_Custom="+$get("Feature_Custom"+mapid).value;
            swfobj += "&MouseAction="+$get("DefaultMouseAction"+mapid).value+"&TextSize="+$get("TextSize"+mapid).value+"&TextColor="+$get("TextColor"+mapid).value+"";
            swfobj += "&ToolBarXY="+$get("ToolBarXY"+mapid).value+"&ToolBarAlpha="+$get("ToolBarAlpha"+mapid).value+"";          
           // alert('swfobj: '+swfobj);
            var mdiv = document.getElementById('dMapClient'+mapid);
            var w = mdiv.style.width;
            var h = mdiv.style.height;
            var so = new SWFObject(swfobj, "MapClient"+mapid, "100%", "100%", $get("FlashVersion"+mapid).value, $get("FlashBgColor"+mapid).value, true);
            so.addParam("quality", "low");
            so.addParam("Dynamic", "true");
            so.addParam("wmode", "transparent");
            var res = so.write("dMapClient"+mapid);
           //alert(res);
            if (!res) {
                document.getElementById("dMapClient"+mapid).innerHTML = "<a target=\"_new\" href=\"http:\/\/www.adobe.com\/shockwave\/download\/download.cgi?P1_Prod_Version=ShockwaveFlash\">Get the Flash Plugin<\/a> to see this.";
            } 
            delete so;
            eval('window.MapClient'+mapid+' = document.forms[0].MapClient'+mapid);
     } catch(err){window.status = 'error'+err.description;} 
}

function resetmap(what, code, mapid) {
    if (what.length <= 0 || code.length <= 0) {
            $get("BBox"+mapid).value = $get("defaultBBox"+mapid).value;
            $get("XmlLayers"+mapid).value = $get("defaultXmlLayers"+mapid).value;
    }
 }

function pdisplayMessageCallback(mapid, result) {

            var p = result.split("|||");
          
            if (p.length > 1) {
                var flashargs = p[1];
                var commands = flashargs.split("&&&");
                for(var obj in commands){
                    var tt = ""+commands[obj];var aa = tt.split("===");
                    if (document.getElementById(aa[0]+mapid) && document.getElementById(aa[0]+mapid).value) {
                        document.getElementById(aa[0]+mapid).value = aa[1];
                       
                    }
            }}
           // alert('draw map');
            drawMap(mapid); 
            if ($get("mapnav"+mapid))
            { if (p[0]!= '') $get("mapnav"+mapid).innerHTML = p[0];}
                       
 }
 
function blockError(){return true;}
window.onerror = blockError;
//window.alert=function(s){}
if (Sys.WebForms != null) Sys.WebForms.PageRequestManager.getInstance().add_endRequest( endRequest );
function endRequest( sender, e ) {
    if( e.get_error() ){
          
          // refreshpage();
            e.set_errorHandled( true );
    }
}