userAgent = window.navigator.userAgent;
browserVers = parseInt(userAgent.charAt(userAgent.indexOf("/")+1),10);
var max = 30;
var maploaded = false; 
var ycf = 0; //check from (some regions respond to several tick boxes)
var ycu = 0; // check until (some regions respond to several tick boxes)
var yai = 0; // actual name of image (some regions share an image)
var ytk = 0; // whether the region is ticked...
var yft = 0; //from tick (rather than from mouse-over (should always turn-off)
var ymt = 0; //just came from a multiple tick 
var ywi = 0; //whole island
var yor = 0; //originating function
var rslt = new Array();
// 0 = from mouse over effect (A, B)
// 1 = loadims = load images
// 2 = P = click from the map
// 3 = x = tick in the box (or untick)

// main functions


function exc(r) {//other tickboxes that should be checked
 ywi = 0;
 //if(r == 32) {ycf = 27; ycu = 39; yai = 99; ywi = 1; return true;} // south island
 //if(r == 31) {ycf = 2; ycu = 25; yai = 99; ywi = 1; return true;} // north island
 //if(r == 0) {ycf = 2; ycu = 39; yai = 99; ywi = 1; return true;} // NZ wide
 if(r > 0 && r < (max+1) && fe(r)) {ycf = r; ycu = r; yai = r; return true} //all other situations
 return false;
}

function loadims() {
 yor = 1;
 var img = document.getElementById('i0');
 if (img) {
  img.src = 'm/i0.gif';
  if (document.getElementById) {
   for(i=1; i<(max+1); i++) {
    if(fe(i)){
     rslt[i] = new Image();
     rslt[i].src = 'm/i' + yai +'.gif';
    }
   }
   maploaded = true;
  }  
 }
 else {
  //alert("could not load base image for map");
 }
 yor = 0;
}


function P(r) {
 yor = 2;
 if (S(r)) {
  if(ytk == 1) { 
   yft = 1;
   ymt = 0;
   B(yai);
  }
  else {
   if(ycf != ycu) {
    ymt = 1;
   }
   A(yai);
  }
  for(i = ycf; i < (ycu+1); i++) {
   if(document.getElementById('r'+i)) {
    document.getElementById('r'+i).checked = !document.getElementById('r'+i).checked;
   }
  }
 }
 yor = 0;
 return true;
}

function X(r) {
 yor = 3;
 if (S(r)) {
  if(ywi != 1) {
   ycf = yai; 
   ycu = yai;
  }
  for (i = ycf; i < (ycu+1); i++){
   if(ytk == 0) {
    yft = 1;
    B(i)
   } 
   else {
    A(i)
   }
  }
 }
 yor = 0; 
}


// actual highlighers

function A(r) {//do
 if (maploaded == true && fe(r)  == true) {
  var img = document.getElementById('i'+r,0);
  if (img) {
   //img.src = 'm/i' + r + '.gif';
   img.className  = "v";
  }
  else {
   //alert("currently selected");
  }
  if(yor == 0) {
   exc(r); 
  }
  if(ycf >0){
   for(x=ycf; x< (ycu+1); x++) {
    if(document.getElementById('l'+x)) {
     document.getElementById('l'+x).style.backgroundColor = "#D0D0D0";
    }
   }
   if(yor == 0) {
    resetvariables();
   }
  }
 } 
 else {
  //alert("please wait a second until the map is loaded");
 }
}

function B(r) {//undo
 if(maploaded == true && fe(r) == true) {
  var ga;
  ga = 0;
  if (yft == 1) { //only reload situation if not already done
   ga = 1;
  } 
  else {
   if(S(r)) {
    ga = 1;
   }
  } 
  if (ga == 1) {
   if ((ytk == 0 || yft == 1) && ymt == 0) { //only un-highlight if the box is NOT ticked and did not come from multiple tick
    var img = document.getElementById('i'+ r );
    if (img) {
     //img.src = 'm/i99.gif';
     img.className  = "n";			
    }
    if(yor == 0) {
     exc(r); 
    }
    if(ycf > 0 ){
     for(x=ycf; x< (ycu+1); x++) {
      if(document.getElementById('l'+x)) {
       document.getElementById('l'+x).style.backgroundColor = "#F0F0F0";
      }
     }
     if(yor == 0) {
      resetvariables();
     }
    }
   }
  }
  yft = 0;//reset
  ymt = 0;//reset
 }
}

//assisting functions

function S(r) {
 ytk = 0;
 if(exc(r)){
  for(i = ycf; i < (ycu+1); i++) {
   if(document.getElementById('r'+i)){
    if(document.getElementById('r'+i).checked) {
     ytk = 1
    } 
   } 
  }
  if (ywi == 1) {
   if (ytk == 1) {ytk = 0} else {ytk = 1} //switch for whole island
  }  
  return true;
 }
 else {
  return false;
 }
}


function resetvariables() {
 ycf = 0; 
 ycu = 0; 
 yai = 0; 
 ytk = 0; 
 yft = 0; 
 ymt = 0; 
 ywi = 0;
 yrs = 0;
}

function fe(r) {//image file exists
 if(r == 0 || r == 2|| r == 14 || r == 18 || r == 21 || r == 23 || r == 27) {
   return false;
 }
 else	{
   return true;
 }
}



function BACKUPfindElement(n,ly) {
 if (browserVers < 4)		return document[n];
 var curDoc = ly ? ly.document : document;
 var elem = curDoc[n];
 if (!elem){
  for (var i=0;i<curDoc.layers.length;i++) {
   elem = findElement(n,curDoc.layers[i]);
   if (elem) return elem;
  }
 }
 return elem;
}
