//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///TOOl TIP //////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

var ToolTips= new Array();

ToolTips['Boards']="Read reviews advice and more from people who have been there.";
ToolTips['Passport']="Don't leave without it. Weather, Currency converters, calendars and to dos.";
ToolTips['Shadow']="Curriculum Vitae, Profile, Personal Info, Rundown. Whatever it takes to get the point across.";
ToolTips['StorageBin']="Documents, pictures, travel info, whatever it is you feel like hanging onto.";
ToolTips['Peeps']="Friends, compadres and random hookups.";
ToolTips['Messages']="Keep track of all your communique here.";
ToolTips['Trek']="If you are leaving your home city, this will make sure people know you’re coming.";
ToolTips['Register']="Sign up to join the Jump Borders Community";
ToolTips['Home']="Worldwide Location – According to our records, you should be here";

function ToolTip(which,sender)
{  	
	if(!ToolTips[which])
	    return;
//	var x=0;
//	var y=0;
//	var p=sender;
//
//	while(p)
//	{
//	    x+=p.offsetLeft;
//		y+=p.offsetTop;
//		p=p.offsetParent;
//	}
//	if(document.body.scrollLeft>x)
//		x=document.body.scrollLeft;

//  	tooltip.style.display='inline';

    tooltip.innerHTML=ToolTips[which];

//	tooltip.style.top=y+20;
//	tooltip.style.left=x+30;
}

function KillToolTip()
{
  	tooltip.innerHTML='';
//    tooltip.style.display='none';
}


//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///POPUP WINDOWS / ETC ///////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

function OpenResource(url,params,name)
{
  	if(!name)
  		name='';
  	if(!params)
  		params='resizable=yes,scrollbars=yes,menubar=no,locationbar=no,toolbar=yes,help=no,width=600,height=400';
	var w=window.open(url,name,params);
	w.focus();
}

function ToggleVisibility(obj,disp_when_vis)
{
	if(!obj)  
		return;
	if(!obj.style)  
		return;

	if(!disp_when_vis)
		disp_when_vis='block';
  


	if(obj.style.display=='none')  
		obj.style.display=disp_when_vis;
	else
		obj.style.display='none';
}

function MoveTo(mobj,move_to_obj,plusx,plusy)
{
	if(!plusx)
		plusx=0;
	if(!plusy)
		plusy=0;

	var x=0;
	var y=0;
	while(move_to_obj)
	{
		x+=move_to_obj.offsetLeft;
		y+=move_to_obj.offsetTop;
		move_to_obj=move_to_obj.offsetParent;
	}

	if(document.body.scrollLeft>x)
		x=document.body.scrollLeft;



	mobj.style.top=y+plusy;
	mobj.style.left=x+plusx;

}



var calendarobj='';
var calendartimer='';

function ShowCalendarDetails(cobj,details)
{

	DisableCalendarClose();


	calendarobj=cobj;
	calendarobj.innerHTML=details;
	calendarobj.style.display='block';
}

function WaitAndHideCalendarDetails()
{
    calendartimer=setTimeout(HideCalendarDetails,2500);
}

function HideCalendarDetails()
{
  	if(calendarobj)
  	{
  		calendarobj.style.display='none';	
	  	DisableCalendarClose();
		calendartimer='';
		calendarobj='';
	}
}

function DisableCalendarClose()
{
	if(calendartimer)  
		clearTimeout(calendartimer);  
}

//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///CLOCK FUNCTINS ////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
var month_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var day_names = new Array ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var day_suffixes = new Array("th","st","nd","rd","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","st","nd","rd","th","th","th","th","th","th","th","st","nd","rd","th","th","th","th","th","th");//lazy


var clocks=new Array();
var clock_images_path='';

function SetClockImagePath(p)
{ 
	clock_images_path=p;  
}

function AddClock(tz,timeobj,dateobj,analoghourobj,analogminuteobj)
{
  	var len=clocks.length;
	clocks[len]=new Array();  
	clocks[len]['timezone']=tz;
	clocks[len]['timeobj']=timeobj;
	clocks[len]['dateobj']=dateobj;
	clocks[len]['analoghourobj']=analoghourobj;
	clocks[len]['analogminuteobj']=analogminuteobj;
	clocks[len]['updated_hour']='';
	clocks[len]['updated_minute']='';
}

function ChangeClockTimezone(index,tz)
{
  	if(index<clocks.length)
		clocks[index]['timezone']=tz; 
}

function UpdateClocks()
{
  // CLock stuff has been (heavily) adapted from:
  // Copyright 1999 - 2001 by Ray Stott
  // OK to use if this copyright is included
  // Script available at http://www.crays.com/jsc

  for(var i=0;i<clocks.length;i++)
  {
	  var TimezoneOffset = clocks[i]['timezone']  // adjust for time zone
	  var clockobj = clocks[i]['timeobj']  // adjust for time zone
	  var dateobj = clocks[i]['dateobj']  // adjust for time zone

	  //get the time
	  var localTime = new Date()
	  var ms = localTime.getTime() 
	             + (localTime.getTimezoneOffset() * 60000)
	             + TimezoneOffset * 3600000
	  var time =  new Date(ms) 
	  var hour = time.getHours() 
	  var minute = time.getMinutes()
	  var second = time.getSeconds()
	  var ampm = (hour >= 12) ? " PM" : " AM";	  

	  //	  
	  hour=(hour > 12) ? hour - 12 : hour;
	  hour=(hour==0)? 12 : hour;
	  minute=((minute < 10) ? "0" : "") + minute
	  second=((second < 10) ? "0" : "") + second

  	  UpdateAnalogClock(i,hour,minute);
	  clockobj.innerHTML = hour+':'+minute+':'+second+' '+ampm;
		
	  n_day=time.getDate();
	  dateobj.innerHTML = day_names[time.getDay()]+"<br>"+month_names[time.getMonth()]+' '+n_day+day_suffixes[n_day]+' '+time.getFullYear();
  }

  setTimeout("UpdateClocks()",1000)

}


function UpdateAnalogClock(which,hour,minute)
{
	//granulatiry for hour hand in minutes
  	var hour_gran=12;//minutes...

	//the html objects
    var minuteobj = clocks[which]['analogminuteobj'];
    var hourobj = clocks[which]['analoghourobj'];

	//do we need to update?
	if(clocks[which]['updated_hour']!=hour || clocks[which]['updated_minute']!=minute)
	{
	  	//last update
		clocks[which]['updated_hour']=hour;
		clocks[which]['updated_minute']=minute;
		
		
		
		//round the minutes to figure out which hour image to show
		var hour_min=Math.round((parseInt(minute))/hour_gran)*hour_gran;

		if(hour_min>=60)
			hour+=1;
		if(hour>12)
			hour=1;

	  	hour_min=((hour_min < 10) ? "0" : "") + hour_min;
	  	hour=((hour < 10) ? "0" : "") + hour;



		//get the image names
	    var hour_image='hour'+hour+'_'+hour_min+'.gif';
	    var minute_image='minute'+minute+'.gif';

		//update images
		hourobj.style.background='url("'+clock_images_path+hour_image+'") center center no-repeat';	  
		minuteobj.src=clock_images_path+minute_image;
	}
}


//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///UTILITY FUNCTINS ////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////



function addListener(element, event, listener, bubble) {
  if(element.addEventListener) {
    if(typeof(bubble) == "undefined") bubble = false;
    element.addEventListener(event, listener, bubble);
  } else if(this.attachEvent) {
    element.attachEvent("on" + event, listener);
  }
}


//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///CONTROLS FUNCTINS /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
function MoveOptions(from,to,of_interest,hidden)
{
	for (var i=0;i<from.options.length;i++)  
	{
		if(from.options[i].selected)  
		{
			to.options[to.options.length]=new Option(from.options[i].innerHTML,from.options[i].value);
			RemoveOption(from,i);
			i--;
		}
	}
	if(hidden)
	{
	  	hidden.value='';
	  	for (var i=0;i<of_interest.options.length;i++)  
			hidden.value+=of_interest.options[i].value+',';
	}  
}

function MoveAllOptions(from,to,of_interest,hidden)
{
	for (var i=0;i<from.options.length;i++)  
		from.options[i].selected=true;	  
	MoveOptions(from,to,of_interest,hidden);
}

function RemoveOption(from,index)
{ 
	for (var i=index;i<from.options.length-1;i++)  
	{
		from.options[i]=new Option(from.options[i+1].innerHTML,from.options[i+1].value);
		from.options[i].selected=from.options[i+1].selected;
	}
	from.options.length=from.options.length-1;
}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///GOOGLE MAPS FUNCTINS //////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
///DEBUGGING - UNCOMMENT TO DEBUG/////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
/*
window.onerror = HandleError

function HandleError(message, url, line) {
  var str = "An error has occurred in this dialog." + "\n\n"
  + "Error: " + line + "\n" + message;
  alert(str);
  window.close();
  return true;
}
*/