// +------------------------------------------------------------+
// |                   Popup Calendar(Window)                   |
// +------------------------------------------------------------+
// | Last Modified:                  15-Oct-2002                |
// | Web Site:                       http://www.yxscripts.com   |
// | EMail:                          m_yangxin@hotmail.com      |
// +------------------------------------------------------------+
// |       Copyright 2002  Xin Yang   All Rights Reserved.
// |       This version featured on Dynamic Drive (http://www.dynamicdrive.com)
// | Modified by Marc Rosewarne (http://www.spacejunk.co.nz) 08/01/03
// | for pop up air travel distance calculator (km)
// +------------------------------------------------------------+


// codes
var calWidth=500, calHeight=500, calOffsetX=300, calOffsetY=-100;
var calWin=null;
var winX=0, winY=0;
var cal="cal";
var cals=new Array();
var currentCal=null;


var isOpera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false;
var isOpera5=(navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 5")!=-1)?true:false;
var isOpera6=(navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 6")!=-1)?true:false;
var isN6=(navigator.userAgent.indexOf("Gecko")!=-1);
var isN4=(document.layers)?true:false;
var isMac=(navigator.userAgent.indexOf("Mac")!=-1);
var isIE=(document.all && !isOpera && (!isMac || navigator.appVersion.indexOf("MSIE 4")==-1))?true:false;

function calOBJ(name, title, field, form) {
  this.name = name;
  this.title = title;
  this.field = field;
  this.formName = form;
  this.form = null
}

function setWidth(tWidth, tMode, dWidth, dDigits) {
  if (tWidth > 0) {
    titleWidth=tWidth;
  }
  if (tMode == 1 || tMode == 2) {
    titleMode=tMode;
  }
  if (dWidth > 0) {
    dayWidth=dWidth;
  }
  if (dDigits > 0) {
    dayDigits=dDigits;
  }
}

function addCalendar(name, title, field, form) {
  cals[cals.length] = new calOBJ(name, title, field, form);
}

function findCalendar(name) {
  for (var i = 0; i < cals.length; i++) {
    if (cals[i].name == name) {
      if (cals[i].form == null) {
        if (cals[i].formName == "") {
          if (document.forms[0]) {
            cals[i].form = document.forms[0];
          }
        }
        else if (document.forms[cals[i].formName]) {
          cals[i].form = document.forms[cals[i].formName];
        }
      }

      return cals[i];
    }
  }

  return null;
}

function hideCal() {
  calWin.close();
  calWin = null;
  window.status = "";
}

function getLeftIE(x,m) {
  var dx=0;
  if (x.tagName=="TD"){
    dx=x.offsetLeft;
  }
  else if (x.tagName=="TABLE") {
    dx=x.offsetLeft;
    if (m) { dx+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
  }
  return dx+(x.parentElement.tagName=="BODY"?0:getLeftIE(x.parentElement,m));
}
function getTopIE(x,m) {
  var dy=0;
  if (x.tagName=="TR"){
    dy=x.offsetTop;
  }
  else if (x.tagName=="TABLE") {
    dy=x.offsetTop;
    if (m) { dy+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
  }
  return dy+(x.parentElement.tagName=="BODY"?0:getTopIE(x.parentElement,m));
}

function getLeftN4(l) { return l.pageX; }
function getTopN4(l) { return l.pageY; }

function getLeftN6(l) { return l.offsetLeft; }
function getTopN6(l) { return l.offsetTop; }

function markClick(e) {
  if (isIE || isOpera6) {
    winX=event.screenX;
    winY=event.screenY;
  }
  else if (isN4 || isN6) {
    winX=e.screenX;
    winY=e.screenY;

    document.routeEvent(e);
  }

  return true;
}

function showCal(name) {
  var lastCal=currentCal;
  var d=new Date(), hasCal=false;

  currentCal = findCalendar(name);
  
  if (name == "Domestic_Air" || name == "International_Air" || name == "Domestic_Air2" || name == "International_Air2"){
	var calWidth=400, calHeight=210, calOffsetX=300, calOffsetY=-100; //SIZE 4 AIR DISTANCES
  } else {
	var calWidth=500, calHeight=250, calOffsetX=265, calOffsetY=-100; //SIZE 4 ROAD DISTANCES
  }

  if (currentCal != null && currentCal.form != null && currentCal.form[currentCal.field]) {

    if (calWin != null && !calWin.closed) {
      hasCal=true;
      calWin.moveTo(winX+calOffsetX,winY+calOffsetY);
    }

    if (!hasCal) {
      if (isIE || isOpera6) {
        calWin=window.open("","cal","toolbar=0,width="+calWidth+",height="+calHeight+",left="+(winX+calOffsetX)+",top="+(winY+calOffsetY));
	  }
      else {
        calWin=window.open("","cal","toolbar=0,width="+calWidth+",height="+calHeight+",screenx="+(winX+calOffsetX)+",screeny="+(winY+calOffsetY));
      }
    }
	//HERE IS THE DOMISTIC AIR DISPLAY
	if (name == "Domestic_Air" || name == "Domestic_Air2"){
		var calendar = ""
		// START HTML
		calendar = "<html><head><title>Domestic Air</title><LINK REL='stylesheet' TYPE='text/css' HREF='/stylesheets/carbon_zero_screen.css'></head><body topmargin='0' bottommargin='0' leftmargin='0' rightmargin='0'>"
		//START FORM
		calendar = calendar + "<form name='domair'><table align='center' width='400' height='200' cellspacing='0' cellpadding='2' border='0' id='table5' bgcolor='#ffffff'>"
		calendar = calendar + "<tr bgcolor='#8ba051'><td colspan='2'><b>Domestic Air Distance Calculator</b></td></tr><tr><td width='110' align='right'><b>Departure :</b>&nbsp;</td><td width='290'>"
		calendar = calendar + "<select name='departure' size='1' onChange='redirect(this.options.selectedIndex)'>"
		// FIRST COMBO BOX
		calendar = calendar + "<option>Auckland</option><option>Bay of Islands</option><option>Blenhiem</option><option>Christchurch</option><option>Dunedin</option><option>Gisborne</option><option>Hamilton</option><option>Invercargill</option><option>Kaitaia</option><option>Mt Cook</option><option>Napier</option><option>Nelson</option><option>New Plymouth</option><option>Palmerston North</option><option>Queenstown</option><option>Rotorua</option><option>Taupo</option><option>Tauranga</option><option>Timaru</option><option>Wanganui</option><option>Wellington</option><option>Westport</option></select>"
		calendar = calendar + "</td></tr><tr><td width='110' align='right'><b>Arrival :</b>&nbsp;</td><td width='290'>"
		// SECOND COMBO BOX
		calendar = calendar + "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript' src='/calculators/includes/domestic.js'></SCRIPT>"
		calendar = calendar + "<select name='arrival' size='1' onChange='Javascript:setTotal();'><option value='0'>Select Arrival</option><option value='428'>Bay of Islands</option><option value='1014'>Blenhiem</option><option value='1488'>Christchurch</option><option value='2124'>Dunedin</option>"
		calendar = calendar + "<option value='672'>Gisborne</option><option value='212'>Hamilton</option><option value='2348'>Invercargill</option><option value='510'>Kaitaia</option><option value='656'>Napier</option><option value='990'>Nelson</option><option value='456'>New Plymouth</option><option value='748'>Palmerston North</option><option value='2046'>Queenstown</option><option value='364'>Rotorua</option><option value='444'>Toupo</option><option value='290'>Tauranga</option><option value='658'>Wanganui</option><option value='960'>Wellington</option><option value='426'>Whakatane</option><option value='288'>Whangarei</option></select>"
		calendar = calendar + "</td></tr><tr><td>&nbsp;</td><td width='290'>"
		// RADIO BUTTONS
		calendar = calendar + "Return<input type='radio' name='return' value='0' checked onclick='doubleIt();'>"
		calendar = calendar + "One way<input type='radio' name='return' value='1' onclick='halfIt();'>"
		calendar = calendar + "</td></tr><tr><td width='110' align='right'><b>Total Distance :</b>&nbsp;</td><td width='290'>"
		// KM DISPLAY
		calendar = calendar + "<input type='text' name='total_kms' size='8' value='0'>Km"
		calendar = calendar + "</td></tr><tr><td>&nbsp;</td><td width='290'>"
		// SUBMIT BUTTON
		calendar = calendar + "<input type='submit' name='dogtail' value='Submit Distance' onclick='javascript: if (window.opener && !window.opener.closed && window.opener.pickDate) window.opener.pickDate(domair.total_kms.value)'>"
		calendar = calendar + "</td></tr><tr bgcolor='#adbf85'><td colspan='2'>Choose the airport closest to your point of departure.<br>If entering several trips, use this distance calculator to calculate the individual distances, and enter the total manually in the offset calculator.</td></tr></table>"
		//CLOSE UP HTML
		calendar = calendar + "</form></body></html>"
	}
	//HERE IS THE INTERNATIONAL AIR DISPLAY
	if (name == "International_Air" || name == "International_Air2"){
		var calendar = ""
		// START HTML
		calendar = "<html><head><title>International Air</title><LINK REL='stylesheet' TYPE='text/css' HREF='/stylesheets/carbon_zero_screen.css'></head><body topmargin='0' bottommargin='0' leftmargin='0' rightmargin='0'>"
		//START FORM
		calendar = calendar + "<form name='intair'><table align='center' width='400' height='200' cellspacing='0' cellpadding='2' border='0' id='table5' bgcolor='#ffffff'>"
		calendar = calendar + "<tr bgcolor='#8ba051'><td colspan='2'><b>International Air Distance Calculator</b></td></tr><tr><td width='110' align='right'><b>Departure :</b>&nbsp;</td><td width='290'>"
		calendar = calendar + "<select name='departure' size='1' onChange='redirect(this.options.selectedIndex)'>"
		// FIRST COMBO BOX
		calendar = calendar + "<option>Australia (Melbourne)</option><option>Australia (Perth)</option><option>Brazil (Brasilia)</option><option>Canada (Toronto)</option><option>China, PR (Beijing)</option><option>Cook Islands (Rarotonga)</option><option>Denmark (Copenhagen)</option><option>Fiji (Suva)</option><option>France (Paris)</option><option>French Polynesia (Papeete)</option>"
		calendar = calendar + "<option>Germany (Berlin)</option><option>Hong Kong (Hong Kong)</option><option>India (New Delhi)</option><option>Indonesia (Jakarta)</option><option>Ireland (Dublin)</option><option>Israel (Jerusalem)</option><option>Italy (Rome)</option><option>Japan (Tokyo)</option><option>Korea, Republic of (Seoul)</option><option>Malaysia (Kuala Lumpar)</option><option>Netherlands (Amsterdam)</option><option>New Caledonia (Ouvea)</option>"
		calendar = calendar + "<option>Samoa (Apia)</option><option>Singapore (Singapore)</option><option>South Africa (Pretoria)</option><option>Spain (Madrid)</option><option>Sweden (Stockholm)</option><option>Switzerland (Bern)</option><option>Taiwan (Taipei)</option><option>Thailand (Bangkok)</option><option>Tonga (Nuku''Alofa)</option><option>United Kingdom (London)</option><option>USA (New York)</option><option>USA (Los Angeles)</option></select>"
		calendar = calendar + "</td></tr><tr><td width='110' align='right'><b>Arrival :</b>&nbsp;</td><td width='290'>"
		// SECOND COMBO BOX
		calendar = calendar + "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript' src='/calculators/includes/international.js'></SCRIPT>"
		calendar = calendar + "<select name='arrival' size='1' onChange='Javascript:setTotal();'>"
		calendar = calendar + "<option value=''>Select Arrival</option><option value='5263'>Auckland</option><option value='4810'>Christchurch</option><option value='5161'>Wellington</option></select>"
		calendar = calendar + "</td></tr><tr><td>&nbsp;</td><td width='290'>"
		// RADIO BUTTONS
		calendar = calendar + "Return<input type='radio' name='return' value='0' checked onclick='doubleIt();'>"
		calendar = calendar + "One way<input type='radio' name='return' value='1' onclick='halfIt();'>"
		calendar = calendar + "</td></tr><tr><td width='110' align='right'><b>Total Distance :</b>&nbsp;</td><td width='290'>"
		// KM DISPLAY
		calendar = calendar + "<input type='text' name='total_kms' size='8' value='0'>Km"
		calendar = calendar + "</td></tr><tr><td>&nbsp;</td><td width='290'>"
		// SUBMIT BUTTON
		calendar = calendar + "<input type='submit' name='dogtail' value='Submit Distance' onclick='javascript: if (window.opener && !window.opener.closed && window.opener.pickDate) window.opener.pickDate(intair.total_kms.value)'>"

		calendar = calendar + "</td></tr><tr bgcolor='#adbf85'><td colspan='2'>Choose the airport closest to your point of departure.<br>If entering several trips, use this distance calculator to calculate the individual distances, and enter the total manually in the offset calculator.</td></tr></table>"
		//CLOSE UP HTML
		calendar = calendar + "</form></body></html>"
	}
	// HERE IS ROAD (not air) DISTANCE CALCULATOR HTML
	if (name != "Domestic_Air" && name != "Domestic_Air2" && name != "International_Air" && name != "International_Air2" ){
		var calendar = ""
		// START HTML 
		calendar = "<html><head><title>Road Distance Calculator</title><LINK REL='stylesheet' TYPE='text/css' HREF='/stylesheets/carbon_zero_screen.css'></head><body topmargin='0' bottommargin='0' leftmargin='0' rightmargin='0'>"
		//START FORM
		calendar = calendar + "<form name='landist'><table align='center' width='500' height='250' cellspacing='0' cellpadding='2' border='0' background='images/land_pop_up.jpg' id='table5' bgcolor='#ffffff'>"
		calendar = calendar + "<tr bgcolor='#8ba051'><td colspan='4'><b>Land Transport Distance Calculator</b></td></tr><tr><td colspan='4' bgcolor='#c8cdad'>&nbsp;<i><b>North Island</b></i></td></tr><tr><td width='100'>Step 1:&gt;</td><td align='right'>"
		// FIRST COMBO BOX
		calendar = calendar + "<b>Start :</b><select name='north_dep' size='1' onChange='Javascript:redirect(this.options.selectedIndex)'><option>Auckland</option><option>Cape Reinga</option><option>Chateau Tongariro</option><option>Dargaville</option>"
		calendar = calendar + "<option>Gisborne</option><option>Hamilton</option><option>Hicks Bay</option><option>Kaitaia</option><option>Masterton</option><option>Napier</option><option>New Plymouth</option>"
		calendar = calendar + "<option>Paihia</option><option>Palmerston North</option><option>Rotorua</option><option>Taupo</option><option>Taumarunui</option><option>Tauranga</option><option>Thames</option>"
		calendar = calendar + "<option>Waikaremoana</option><option>Waitomo</option><option>Wanganui</option><option>Wellington</option><option>Whakatane</option><option>Whangarei</option></select></td><td align='right'>"
		// SECOND COMBO BOX	
		calendar = calendar + "<b>Finish :</b><select name='north_arr' size='1' onChange='Javascript:setTotal();'>"
		calendar = calendar + "<option value='0'>Select Arrival</option><option value='0'>Auckland</option><option value='440'>Cape Reinga</option><option value='345'>Chateau Tongariro</option><option value='184'>Dargaville</option>"
		calendar = calendar + "<option value='499'>Gisborne</option><option value='126'>Hamilton</option><option value='503'>Hicks Bay</option><option value='324'>Kaitaia</option><option value='646'>Masterton</option><option value='421'>Napier</option><option value='357'>New Plymouth</option>"
		calendar = calendar + "<option value='240'>Paihia</option><option value='537'>Palmerston North</option><option value='234'>Rotorua</option><option value='278'>Taupo</option><option value='286'>Taumarunui</option><option value='205'>Tauranga</option><option value='114'>Thames</option>"
		calendar = calendar + "<option value='390'>Waikaremoana</option><option value='200'>Waitomo</option><option value='457'>Wanganui</option><option value='658'>Wellington</option><option value='298'>Whakatane</option><option value='169'>Whangarei</option></select>"
		// RADIO BUTTONS
		calendar = calendar + "</td><td>&nbsp;</td></tr><tr><td>Step 2:&gt;</td><td colspan='2' align='right'>"
		calendar = calendar + "Return<input type='radio' name='return' value='0' checked onclick='doubleIt();'>One way<input type='radio' name='return' value='1' onclick='halfIt();'>&nbsp;<input type='text' name='north_kms' size='8' value='0'></td><td>Km"
		calendar = calendar + "</td></tr><tr><td colspan='4' bgcolor='#c8cdad'>&nbsp;<i><b>South Island</b></i></td></tr><tr><td>Step 3:&gt;</td><td align='right'><b>Start :</b>"
		// THIRD COMBO BOX
		calendar = calendar + "<select name='south_dep' size='1' onChange='Javascript:redirect2(this.options.selectedIndex)'><option>Alexandra</option><option>Blenheim</option><option>Christchurch</option><option>Collingwood</option>"
		calendar = calendar + "<option>Cromwell</option><option>Dunedin</option><option>Franz Josef</option><option>Geraldine</option><option>Gore</option><option>Greymouth</option><option>Haast</option>"
		calendar = calendar + "<option>Invercargill</option><option>Kaikoura</option><option>Milford Sound</option><option>Mount Cook</option><option>Murchison</option><option>Nelson</option><option>Oamaru</option><option>Picton</option>"
		calendar = calendar + "<option>Queenstown</option><option>Te Anau</option><option>Tekapo</option><option>Timaru</option><option>Twizel</option><option>Wanaka</option><option>Westport</option></select></td><td align='right'>"
		// FORTH COMBO BOX
		calendar = calendar + "<b>Finish :</b><select name='south_arr' size='1' onChange='Javascript:setTotal();'>"
		calendar = calendar + "<option value='0'>Select Arrival</option><option value='0'>Alexandra</option><option value='786'>Blenheim</option><option value='455'>Christchurch</option><option value='964'>Collingwood</option><option value='31'>Cromwell</option>"
		calendar = calendar + "<option value='190'>Dunedin</option><option value='373'>Franz Josef</option><option value='315'>Geraldine</option><option value='136'>Gore</option><option value='661'>Greymouth</option><option value='231'>Haast</option><option value='202'>Invercargill</option>"
		calendar = calendar + "<option value='657'>Kaikoura</option><option value='370'>Milford Sound</option><option value='242'>Mount Cook</option><option value='734'>Murchison</option><option value='865'>Nelson</option><option value='223'>Oamaru</option><option value='791'>Picton</option>"
		calendar = calendar + "<option value='93'>Queenstown</option><option value='249'>Te Anau</option><option value='227'>Tekapo</option><option value='307'>Timaru</option><option value='169'>Twizel</option><option value='86'>Wanaka</option><option value='761'>Westport</option></select>"
		// SECOND RADIO BUTTONS
		calendar = calendar + "</td><td>&nbsp;</td></tr><tr><td>Step 4:&gt;</td><td align='right' colspan='2'>Return<input type='radio' name='return2' value='0' checked onclick='doubleIt2();'>One way<input type='radio' name='return2' value='1' onclick='halfIt2();'>&nbsp;<input type='text' name='south_kms' size='8' value='0'></td><td>Km"
		// INC SCRIPT HERE
		calendar = calendar + "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript' src='/calculators/includes/landtravel.js'></SCRIPT></td></tr><tr><td bgcolor='#c8cdad' colspan='4'><b><i>Total New Zealand Distance Traveled</i></b></td></tr>"
		// SUBMIT BUTTON		
		calendar = calendar + "<tr><td>Step 5:&gt;</td><td align='right'><input type='submit' name='submit_distance' value='Submit Distance' onclick='javascript: if (window.opener && !window.opener.closed && window.opener.pickDate) window.opener.pickDate(landist.total_kms.value)'></td><td align='right''>"
		// TOTAL DISTANCE
		calendar = calendar + "<b>Total Distance:</b><input type='text' name='total_kms' size='8' value='0'></td><td>Km</td></tr><tr bgcolor='#adbf85'><td colspan='4'>If entering several trips, use this distance calculator to calculate the individual distances, and enter the total manually in the offset calculator.</td></tr></table>"
		//CLOSE UP HTML
		calendar = calendar + "</form></body></html>"
	}
	
	
    calWin.document.open();
    calWin.document.write(calendar);
    calWin.document.close();


    calWin.focus();
  }
  else {
    if (currentCal == null) {
      window.status = "Calendar ["+name+"] not found.";
    }
    else if (!currentCal.form) {
      window.status = "Form ["+currentCal.formName+"] not found.";
    }
    else if (!currentCal.form[currentCal.field]) {
      window.status = "Form Field ["+currentCal.formName+"."+currentCal.field+"] not found.";
    }

    if (lastCal != null) {
      currentCal = lastCal;
    }
  }
}

function clearDate() {
  currentCal.form[currentCal.field].value="";
  hideCal();
}

function pickDate(d) {
  hideCal();
  window.focus();

  var date
  date = d;

  currentCal.form[currentCal.field].value=date;
  // IE5/Mac needs focus to show the value, weird.
  currentCal.form[currentCal.field].focus();
}
// ------

if (isN4 || isN6) {
  document.captureEvents(Event.CLICK);
}
document.onclick=markClick;
