var popWin = null;
var language;
var regionFinder;
var regionSet = 0;
var intervalId;
var tripformclicked = false;
var cStyle = (document.all) ? "hand" : "pointer";

window.onload = init;

function init() {
  language = document.getElementsByTagName("html")[0].getAttribute("xml:lang");
  regionFinder = (document.getElementsByTagName("body")[0].getAttribute("id") == "trips") ? false : true;

	logoPNG();
	slideOut();
  targetLinks();
  selectOnChange();
  applyRegionsMapEvents();
	travellingTimes();
}

// Get element
function getElem(id) {
  var obj = (typeof id == 'string') ? document.getElementById(id) : id;
  return obj;
}

// Set event attribute
function setAttr(obj, handler, theFunction) {
  if (document.all) {
    obj[handler] = new Function(theFunction);
  } else {
    obj.setAttribute(handler, theFunction);
  }
}

// Cursor change
function cursorChange(obj) {
	getElem(obj).style.cursor = cStyle;
}

// Logo home link
function goHome() {
	location.href= "index.aspx?language=" + language;
}

// Logo PNG
function logoPNG() {
	var obj = getElem('gofishlogo');
	if (obj) {
		if (document.all) {
			obj.childNodes[0].childNodes[0].src = "images/spacer.gif";
			obj.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/" + language + "/logo.png', sizingMethod='scale')";
		}
		obj.style.visibility = "visible";
		obj.style.cursor = cStyle;
		setAttr(obj, "onclick", "goHome()");
	}
}

// Slide out
function slideOut() {
	var obj1 = getElem('slideout');
	var obj2 = getElem('submitbutton');

	if (obj1) {
		setAttr(obj1, "onclick", "startMove(this.id)");
		setAttr(obj1, "onmouseover", "cursorChange(this.id)");
		setAttr(obj2, "onmouseover", "cursorChange(this.id)");
	}
}

// Travelling Times
function travellingTimes() {
	var tablelink1 = getElem("tablelink1");
	var tablelink2 = getElem("tablelink2");
	var tablelink3 = getElem("tablelink3");

	if (tablelink1) {
		setAttr(tablelink1, "onclick", "showTimes('torontotimes')")
		setAttr(tablelink2, "onclick", "showTimes('ottawatimes')")
		setAttr(tablelink3, "onclick", "showTimes('drivingtimes')")
	}
}

// Travelling Times
function showTimes(id) {
	var i, obj;
	var tables = ["torontotimes", "ottawatimes", "drivingtimes"];

	for (i = 0; i < 3; i++) {
		getElem(tables[i]).style.display = (id == tables[i]) ? "block" : "none";
		getElem("tablelink" + (i + 1)).style.fontWeight = (id == tables[i]) ? "bold" : "normal";
	}
}

// Trip finder animation
function moveForward(id) {
  var obj = document.getElementById(id);
  obj.style.left = parseInt(obj.offsetLeft) + 50 + 'px';

  if (parseInt(obj.offsetLeft) >= 0) {
    obj.style.left = '0';
    clearInterval(intervalId);
  }
}

function moveBack(id) {
  var obj = document.getElementById(id);
  obj.style.left = parseInt(obj.offsetLeft) - 50 + 'px';

  if (parseInt(obj.offsetLeft) <= -406) {
    clearInterval(intervalId);
    obj.style.left = '-406px';
    intervalId = null;
  }
}

function startMove(id) {
	var obj = getElem(id);

  if (!intervalId) {
    intervalId = setInterval('moveForward(\'' + id + '\')' , 1);
  } else if (tripformclicked == false) {
    intervalId = setInterval('moveBack(\'' + id + '\')', 1);
  }
  tripformclicked = false;
}

function reverseMove(id) {
  if (intervalId)
    intervalId = setInterval('moveBack(\'' + id + '\')', 1);
}

function tripFormClicked() {
  tripformclicked = true;
}

// Trip finder image map events
function applyRegionsMapEvents() {
  var i, j, imap;
  var obj = new Array();

  if (getElem("regionsimagemap")) obj[0] = getElem("regionsimagemap");
  if (getElem("imapimagemap")) obj[1] = getElem("imapimagemap");

  for (j = 0; j < obj.length; j++) {
    for (i = 0; i < obj[j].childNodes.length; i++) {
      setAttr(obj[j].childNodes[i], "onmouseover", "regionOver('" + obj[j].childNodes[i].getAttribute("id") + "', " + j + ")");
      setAttr(obj[j].childNodes[i], "onmouseout", "regionOut(" + j + ")");
      if (!j) {
        setAttr(obj[j].childNodes[i], "onclick", "regionOn('" + obj[j].childNodes[i].getAttribute("id") + "')");
      } else {
        setAttr(obj[j].childNodes[i], "onclick", "openWin('map.aspx?rid=" + (i+1) + "&language=" + language + "', 606, 682, 0)");
      }
    }
    if (j == 0) setAttr(getElem("tripfinder"), "onclick", "tripFormClicked()");
  }
}

imagemaps = ['imageregion', 'imageimap'];

// Region map over
function regionOver(id, imgId) {
  id = id.split("_")[1];
  id = (regionFinder && imgId != 1) ? id + '_finder' : id;
  var oRegion = getElem(imagemaps[imgId]);
  oRegion.src = 'images/' + language + '/region_' + id + '_on.gif';
}

// Region map out
function regionOut(imgId) {
	var id;
  var oRegion = getElem(imagemaps[imgId]);

	if (oRegion.id.indexOf("imageimap") != -1) {
		id = 0;
	} else {
		id = (regionSet) ? regionSet + '_on' : (regionFinder && imgId != 1) ? '0_finder' : 0;
	}
	oRegion.src = 'images/' + language + '/region_' + id + '.gif';
}


// Region map on
function regionOn(id) {
  id = id.split("_")[1];
  id = (regionFinder) ? id + '_finder' : id;
  var oRegion = getElem('imageregion');
  oRegion.src = 'images/' + language + '/region_' + id + '_on.gif';
  regionSet = id;
  getElem("regionid").setAttribute('value', parseInt(id));
  tripformclicked = true;
}

// Popup map over
function popupMapOver(id, language) {
  var oRegion = getElem('region_map');
  oRegion.src = 'images/' + language + '/visuals/map_' + id + '_on.jpg';
}

// Popup map out
function popupMapOut(language) {
  var oRegion = getElem('region_map');
  oRegion.src = 'images/' + language + '/visuals/map_0.jpg';
}

// External links targetting and tracking
function targetLinks() {
  var i, trackingId;
  var print = getElem("print");
  var links = document.getElementsByTagName("a");

  for (i = 0; i < links.length; i++) {
    if (getHost(document.location.href) != getHost(links[i].href)) {
      if (links[i].getAttribute("id")) {
        trackingId = links[i].getAttribute("id").replace(/\./g, "/");
        setAttr(links[i], 'onclick', "urchinTracker('/" + trackingId + "');");
      }
      links[i].setAttribute("target", "_blank");
    } else if (links[i].href.indexOf("stf.aspx") >= 0) {
      //links[i].href += (links[i].href.indexOf('?') >= 0) ? '&link=' + document.location.href : '?link=' + document.location.href
      setAttr(links[i], 'onclick', "openWin('" + links[i].href + "', 390, 465);return false;");
    } else if (links[i].href.indexOf("/map.aspx") >= 0) {
      //setAttr(links[i], 'onclick', "openWin('" + links[i].href + "', 606, 682);return false;");
    }
  }

  if (print) {
    print = print.getElementsByTagName("a")[0];
    print.setAttribute("target", "_blank");
  }
}

// Return hostname and port as host string
function getHost(url) {
  var host = url.toLowerCase();

  if (host.indexOf("http://") >= 0) {
    host = host.substring(7, host.length);
  }
  host = host.substring(0, host.indexOf("/"));

  return host;
}

// Events onchange
function selectOnChange() {
  var oSelect;

  if (document.getElementsByTagName("body")[0].getAttribute("id") == "events" ||
    document.getElementsByTagName("body")[0].getAttribute("id") == "where") {
    oSelect = document.getElementById("regions");
  } else if (document.getElementsByTagName("body")[0].getAttribute("id") == "celebrity") {
    oSelect = document.getElementById("tips");
  } else if (document.getElementsByTagName("body")[0].getAttribute("id") == "fish") {
    oSelect = document.getElementById("species");
  }
  if (oSelect) {
    setAttr(oSelect, 'onchange', "goPage(this)");
  }
}

function goPage(obj) {
	oValue = obj[obj.selectedIndex].value;
	if (oValue) location.href = oValue;
}

// Open window
function openWin(filename, width, height, show) {
  var attr = '';

  // close window if already open
  if (popWin && !popWin.closed) {
    popWin.close();
  }

  // open window
  attr += 'width=' + width + ',';
  attr += 'height=' + height + ',';
  attr += (show) ?
    'resizable=yes,location=no,menubar=yes,scrollbars=yes' :
    'resizable=no,location=no,menubar=no,scrollbars=no';
  popWin = window.open(filename, '', attr);
  popWin.focus();
}

// Sites Dropdown in Footer
function footerSites( obj ) {
	if ( obj[ obj.selectedIndex ].value ) {
		window.open( obj[ obj.selectedIndex ].value );
	}
}
