// BROWSER VARS
var browser = null;
var BROWSER_FIREFOX = 0, BROWSER_IE = 1, BROWSER_CHROME = 2, BROWSER_SAFARI = 3, BROWSER_OPERA = 4;

function SetBrowser() {
  if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
    browser = BROWSER_CHROME;
  }
  else if (navigator.userAgent.toLowerCase().indexOf("safari") > -1) {
    browser = BROWSER_SAFARI;
  }
  else if (navigator.userAgent.toLowerCase().indexOf("opera") > -1) {
    browser = BROWSER_OPERA;
  }
  else if (document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1) {
    browser = BROWSER_IE;
    var ua = navigator.userAgent;
    var MSIEOffset = ua.indexOf("MSIE ");
    if (MSIEOffset != -1) {
      if (parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset))) < 8) {
        alert("This website may not work in this version of Internet Explorer.\nPlease use IE 8 or Firefox 3.x.");
      }
    }
  }
  else {
    browser = BROWSER_FIREFOX;
  }
}

function IsIE() {
  return browser == BROWSER_IE;
}

function IsSafari() {
  return browser == BROWSER_SAFARI;
}

function IsChrome() {
  return browser == BROWSER_CHROME;
}


function GetRadioValue(groupname) {  // groupname = group name assigned to radio group
  var group = document.getElementById(groupname)[groupname];
  for (var i = 0; i < group.length; i++) {
    if (group[i].checked) {
      return group[i].value;
    }
  }
  return "NULL";
}

function SetDisabled(groupname, disvalue) { // set all radio buttons to disabled/not disabled
  document.getElementById("tr_" + groupname).className = disvalue ? "disabled" : "";
  var group = document.getElementById(groupname)[groupname];
  for (var i = 0; i < group.length; i++) {
    group[i].disabled = disvalue;
  }
}
  
function CheckForPopupBlocker() {
  var popUpTest = window.open("","","width=1,height=1,left=0,top=0,scrollbars=no");
  if (popUpTest) {
    popUpTest.close();
  }
  else {
    alert("We have detected that you are using popup blocking software.\nPlease disable the popup blocker for this site to avoid errors.");
  }
}

// True if string is valid email address, False otherwise
function ValidateEmailAddress(email) {
  return email.search(/^.*\@.*\..*$/) == 0;
}

// Insert text at cursor position in textarea
function InsertAtCursor(textarea, value) {
  if (document.selection) {   // IE
    textarea.focus();
    var sel = document.selection.createRange();
    sel.text = value;
  }
  else if (textarea.selectionStart || textarea.selectionStart == 0) {  // Mozilla
    var startPos = textarea.selectionStart;
    var endPos = textarea.selectionEnd;
    textarea.value = textarea.value.substring(0, startPos) + value + textarea.value.substring(endPos, textarea.value.length);
  }
  else {
    textarea.value += value;    // support doesn't exist
  }
}

// Create a new AJAX XMLHttpRequest
function GetNewXMLHttpRequest() {
  if (window.XMLHttpRequest) {  // Mozilla and IE7
    return new XMLHttpRequest();
  }
  else {  // IE5 and IE6
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
}

// NOTE: This function only works in Mapbuilder 1.5 Alpha 2 or later
function ChangeOpacity(layer, incr) {
  // note that opacity may not be pre-defined
  var opacity = config.objects.mainMap.getOpacity(layer) ? Number(config.objects.mainMap.getOpacity(layer)) : 1.0;
  if (incr) {
    config.objects.mainMap.setOpacity(layer, (opacity > 0.95) ? 1.0 : opacity + 0.2);
  }
  else {
    config.objects.mainMap.setOpacity(layer, (opacity < 0.05) ? 0.0 : opacity - 0.2);
  }
}

// Create a Sarissa XMLDocument from an XML file
function LoadXMLFrom(xmlfile) {
  var xml = Sarissa.getDomDocument();
  xml.async = false;
  xml.validateOnParse = false;
  xml.load(xmlfile);
  return xml;
}

// Transform XML using an XSL stylesheet (Note that Sarissa must be loaded for this to work)
function TransformXML(xmlnode, xslname) {
  var processor = new XSLTProcessor();
  processor.importStylesheet(LoadXMLFrom(xslname));
  return processor.transformToDocument(xmlnode);
}

// Class constructor for a class to create a defined viewport
function OpenLayersView(cenx, ceny, zoom) {
  this.cenx = cenx;
  this.ceny = ceny;
  this.zoom = zoom;
}

// zoom to original extent
function ZoomDefault() {
  var proj = new OpenLayers.Projection("EPSG:4326");
  var point = new OpenLayers.LonLat(startlon, startlat);
  map.setCenter(point.transform(proj, map.getProjectionObject()), startzoom);
}

// small, Medium, LARGE
function SetMapSize(width, height) {
  YAHOO.util.Dom.setStyle("map", "width", width + "px");
  YAHOO.util.Dom.setStyle("map", "height", height + "px");
  YAHOO.util.Dom.setStyle("leftcolumn", "width", width + "px");
  YAHOO.util.Dom.setStyle("contentcolumn", "margin-left", (width + 10) + "px");
}


