//-----------------
// browser sniffers
//-----------------
var uagent    = navigator.userAgent.toLowerCase();
var ua_vers   = parseInt( navigator.appVersion );
var is_safari = ( uagent.indexOf( 'safari' ) != -1 || uagent.indexOf( 'applewebkit' ) != -1 || navigator.vendor == 'Apple Computer, Inc.' );
var is_opera  = ( uagent.indexOf( 'opera' ) != -1 );
var is_webtv  = ( uagent.indexOf( 'webtv' ) != -1 );
var is_ie     = ( uagent.indexOf( 'msie' ) != -1 && ! is_opera && ! is_safari && ! is_webtv );
var is_ie4    = ( is_ie && uagent.indexOf( 'msie 4.' ) != -1 );
var is_moz    = ( navigator.product == 'Gecko' && ! is_safari );
var is_ns     = ( uagent.indexOf( 'compatible' ) == -1 && uagent.indexOf( 'mozilla' ) != -1 && ! is_opera && ! is_webtv && ! is_safari );
var is_ns4    = ( is_ns && ua_vers == 4 );
var is_kon    = ( uagent.indexOf( 'konqueror' ) != -1 );
var is_win    = ( uagent.indexOf( 'win' ) != -1 || uagent.indexOf( '16bit' ) != -1 );
var is_mac    = ( uagent.indexOf( 'mac' ) != -1 || navigator.vendor == 'Apple Computer, Inc.' );

var objectTrap = new Array();

var homeRotateImages = 1;
var homeAnimation = 1;
var homeAnimationDelay = 4000;
var homeAnimationLapse = 2000;
var homeAnimationSpeed = 50;
var homeAnimationStep = 10;
var animateRes = new Array();
var animateMax = new Array();
var lastFeatHighlight = '';

var homeImages = new Array();
homeImages['tl'] = new Array();
homeImages['tr'] = new Array();
homeImages['bl'] = new Array();
homeImages['br'] = new Array();
homeImages['tlD'] = 0;
homeImages['trD'] = 0;
homeImages['blD'] = 0;
homeImages['brD'] = 0;

addLoadEvent( prepareNavBar );
addLoadEvent( externalLinks );

function form_verify_contact( theForm )
	{
	var problems = 0;
	if ( theForm.fq_name.value == '' ) { problems++; getObj( 'fl_name' ).className = 'error'; getObj( 'fq_name' ).className = 'input-text inputError'; }
	else { getObj( 'fl_name' ).className = ''; getObj( 'fq_name' ).className = 'input-text'; }
	if ( theForm.fq_email.value == '' )  { problems++; getObj( 'fl_email' ).className = 'error'; getObj( 'fq_email' ).className = 'input-text inputError'; }
	else { getObj( 'fl_email' ).className = ''; getObj( 'fq_email' ).className = 'input-text'; }
	if ( theForm.fq_sub.value == '' ) { problems++; getObj( 'fl_sub' ).className = 'error'; getObj( 'fq_sub' ).className = 'input-text inputError'; }
	else { getObj( 'fl_sub' ).className = ''; getObj( 'fq_sub' ).className = 'input-text'; }
	if ( theForm.fq_text.value == '' ) { problems++; getObj( 'fl_text' ).className = 'error'; getObj( 'fq_text' ).className = 'input-text inputError'; }
	else { getObj( 'fl_text' ).className = ''; getObj( 'fq_text' ).className = 'input-text'; }
	if ( theForm.fq_code && theForm.fq_code.value == '' ) { problems++; getObj( 'fl_code' ).className = 'error'; getObj( 'fq_code' ).className = 'inputError'; }
	else { getObj( 'fl_code' ).className = ''; getObj( 'fq_code' ).className = ''; }
	if ( problems > 0 )
		{
		alert( 'All fields are required. Please fill them in.' );
		return false;
		}
	else
		{
		return true;
		}
	}


function getObj( id, manual )
	{
	if ( manual || typeof( objectTrap[id] ) == 'undefined' )
		{
		var item = null;
		if ( document.getElementById )
			{
			item = document.getElementById( id );
			}
		else if ( document.all )
			{
			item = document.all[id];
			}
		else if ( document.layers )
			{
			item = document.layers[id];
			}
		objectTrap[id] = ( item ) ? item : false;
		}
	return objectTrap[id];
	}


function toggleHelp( id )
	{
	return toggleVisibility( id );
	}


function toggleVisibility( id )
	{
	id = id.split(',');
	var item;
	for ( var i in id )
		{
		item = getObj( id[i] );
		if ( item.style )
		item.style.display = ( item.style.display == 'none' ) ? '' : 'none';
		}
	}


function prepareNavBar()
	{
	if ( document.getElementById && document.getElementsByTagName )
		{
		if ( getObj('nav') )
			{
			var nav = getObj('nav');
			var links = nav.getElementsByTagName('a');
			for ( var i=0; i < links.length; i++ )
				{
				if ( links[i].className != 'navOn' )
					{
					links[i].onmouseover = function(){navOver(this.id)};
					links[i].onmouseout = function(){navOver(this.id,1)};
					}
				}
			}
		}
	}

function navOver( id, reset )
	{
	if ( ( is_ie && is_mac ) || ( is_opera && ua_vers < 7 ) ) return;
	var obj = getObj( id );
	var diff = -30; // neg moves the image up in the frame
	var steps = 6; // total number of frames including starting frame
	switch( id )
		{
		case 'navSpan_1': var x = -30; var y = 0; break;
		case 'navSpan_2': var x = -178; var y = 0; break;
		case 'navSpan_3': var x = -355; var y = 0; break;
		case 'navSpan_4': var x = -557; var y = 0; break;
		case 'navSpan_5': var x = -736; var y = 0; break;
		}
	if ( reset )
		{
		for ( var c = 1; c < steps; c++ )
			{
			clearTimeout( animateRes[ id + c ] );
			}
		change_navBkg( id, x, y + ( animateMax[ id ] * diff), ( steps - animateMax[ id ] ), diff * -1, steps );
		animateMax[ id ] = 0;
		}
	else
		{
		animateMax[ id ] = 0;
		change_navBkg( id, x, y, 1, diff, steps );
		}
	}


function change_navBkg( id, x, y, i, diff, steps )
	{
	var timer = 30;
	if ( i < steps )
		{
		y = y + diff;
		var str = x.toString() + "px " + y.toString() + "px";
		getObj( id ).style.backgroundPosition = str;
		var evalStr = "change_navBkg( '" + id + "', " + x + ", " + y + ", " + ( i + 1 ) + ", " + diff + ", " + steps + " )";
		animateRes[ id + i ] = setTimeout( evalStr, timer );
		animateMax[ id ]++;
		}
	}


function alterTextareaHeight( id, pixels )
	{
	var textArea = getObj( id );
	var currentHeight = parseInt( textArea.style.height );
	currentHeight = ( currentHeight ) ? currentHeight : 200;
	var newHeight = currentHeight + pixels;
	if ( newHeight > 24 )
		{
		textArea.style.height = newHeight + 'px';
		window.scrollBy( 0, pixels );
		}
	return false;
	}


function initHomePageImages()
	{
	if ( homeRotateImages )
		{
		window.setTimeout( 'rotateHomePageImages("tl")', homeAnimationDelay );
		}
	}


function rotateHomePageImages( q )
	{
	var next_q = '';
	switch ( q )
		{
		case 'tl':	next_q = 'tr'; break;
		case 'tr':	next_q = 'bl'; break;
		case 'bl':	next_q = 'br'; break;
		case 'br':	next_q = 'tl'; break;
		}
	var id = ( parseInt( homeImages[ q + 'D'] ) + 1 == homeImages[q].length ) ? 0 : parseInt( homeImages[ q + 'D'] ) + 1;
	var text = getObj( 'feat_' + q );
	if ( lastFeatHighlight && lastFeatHighlight.className == 'on' ) lastFeatHighlight.className = 'off';
	text.className = 'on';
	lastFeatHighlight = text;
	if ( homeAnimation ) homePageFade( q, -1, 'switchAndFade', q, id );
	else switchAndFade( q, id );
	homeImages[ q + 'D'] = id;
	window.setTimeout( 'rotateHomePageImages("' + next_q + '")', ( homeAnimationLapse + ( homeAnimationSpeed * homeAnimationStep * 2 ) ) );
	}


function switchAndFade( str, n )
	{
	obj = getObj( 'feat_img_' + str );
	obj.src = homeImages[ str ][ n ].src;
	if ( homeAnimation ) homePageFade( str, 1, '', '', '' );
	}


function homePageFade( str, d, fn, p1, p2 )
	{
	fade( 'feat_img_' + str, d, null, null, homeAnimationStep, homeAnimationSpeed, fn, p1, p2 );
	}


function fade( id, d, startOpac, endOpac, step, speed, fn, param1, param2 )
	{
	step = ( step != null ) ? step : 10;
	speed = ( speed != null ) ? speed : 50;
	startOpac = ( startOpac != null ) ? startOpac : ( ( d < 0 ) ? 100 : 0);
	endOpac = ( endOpac != null ) ? endOpac : ( ( d < 0 ) ? 0 : 100);
	fn = ( fn != null ) ? fn : '';
	param1 = ( param1 != null ) ? param1 : 0;
	param2 = ( param2 != null ) ? param2 : 0;
	var q1 = ( typeof( param1 ) == "string" ) ? '"' : '';
	var q2 = ( typeof( param2 ) == "string" ) ? '"' : '';
	
	var imgobj = getObj( id );
	if ( ( d > 0 && startOpac <= endOpac ) || ( d < 0 && startOpac >= endOpac ) )
		{
		setOpacity( imgobj, startOpac );
		startOpac += ( d < 0 ) ? -1 * step : step;
		window.setTimeout( 'fade("' + id + '",' + d + ',' + startOpac + ',' + endOpac + ',' + step + ',' + speed + ',"' + fn + '",' + q1 + param1 + q1 + ',' + q2 + param2 + q2 + ')', speed );
		}
	else if ( typeof( eval( fn ) ) == 'function' )
		{
		self.eval(fn)( param1, param2 );
		}
	}


function setOpacity( obj, opac )
	{
//	opac = ( opac == 100 ) ? 99.999 : opac;
	if ( obj.style.opacity != null )
		{// Safari 1.2, newer Firefox and Mozilla, CSS3
		obj.style.opacity = opac/100;
		}
	else if ( obj.style.MozOpacity != null )
		{// Older Mozilla and Firefox
		obj.style.MozOpacity = opac/100;
		}
	else if ( obj.style.KHTMLOpacity != null )
		{// Safari<1.2, Konqueror
		obj.style.KHTMLOpacity = opac/100;
		}
	else if ( obj.style.filter != null )
		{// IE/Win
		obj.style.filter = 'alpha(opacity:'+opac+')';
		}
	}


function addLoadEvent( func )
	{
	var oldonload = window.onload;
	if ( typeof( window.onload ) != 'function' )
		{
		window.onload = func;
		}
	else
		{
		window.onload = function()
			{
			if ( oldonload ) oldonload();
			func();
			}
		}
	}


function externalLinks()
	{
	if ( ! document.getElementsByTagName ) return;
	var anchors = document.getElementsByTagName('a');
	for ( var i=0; i<anchors.length; i++ )
		{ 
		var anchor = anchors[i];
		if ( anchor.getAttribute('href') && anchor.getAttribute('rel') == 'external' )
		anchor.target = '_blank';
		}
	}


function getSize()
	{
	var W = 0;
	if( typeof( window.innerWidth ) == 'number' )
		{
		// Non-IE
		W = window.innerWidth;
		}
	else if( document.documentElement && document.documentElement.clientWidth )
		{
		// IE 6+ in 'standards compliant mode'
		W = document.documentElement.clientWidth;
		}
	else if( document.body && document.body.clientWidth )
		{
		// IE 4 compatible
		W = document.body.clientWidth;
		}
	document.cookie = 'cookie_windowWidth=' + W;
	}
getSize();


function pop_up( url, windowName, w, h )
	{
	opened = window.open(url,windowName,'width=' + w + ',height=' + h + ',resizable=yes,scrollbars=yes');
	opened.focus();
	}


function statusBox(arg1, arg2, key, defaultClass)
	{
	var boxitem = getObj( 'statusbox_' + key );
	var boxinput = getObj( 'status_' + key );
	if(arg1 != arg2)
		{
		boxitem.className = 'status_edited';
		boxinput.value = editedStatusValue;
		boxitem.title = titles['status_edited'];
		}
	else
		{
		boxitem.className = defaultClass;
		boxinput.value = boxinput.defaultValue;
		boxitem.title = titles[ boxitem.className ];
		}
	
	}


function sessionCountDown()
	{
	if ( seconds < 600 )
		{
		session_timer_label.className = 'timerLabelWarn';
		}
	else
		{
		session_timer_label.className = 'timerLabelSafe';
		}
	if ( seconds < 300 )
		{
		if ( sessionWarning == 0 ) window.alert( sessAboutToExpire );
		sessionWarning = 1;
		}
	else
		{
		sessionWarning = 0;
		}
	if ( seconds < 0 )
		{
		session_timer.innerHTML = '00:00:00';
		window.alert( sessHasExpired );
		}
	else
		{
		h = Math.floor( seconds / 3600 );
		if ( h <= 9 ) h = '0' + h;
		m = Math.floor( ( seconds - ( h * 3600 ) ) / 60 );
		if ( m <= 9 ) m = '0' + m;
		s = seconds - ( h * 3600 ) - ( m * 60 );
		if ( s <= 9 ) s = '0' + s;
		session_timer.innerHTML = h + ':' + m + ':' + s;
		
		var rightNow = new Date();
		seconds = ( Math.floor( pageLoadTime.getTime() / 1000 ) + 7200 ) - Math.floor( rightNow.getTime() / 1000 );
		
		downRes = setTimeout( "sessionCountDown()", 1000 );
		}
	}


function sessionCountReset()
	{
	pageLoadTime = new Date();
	}


