/**
 * Backpack float code.
 */

var	kPageWidth				= 780;	// Page width (px).
var kBackpackFloatWidth		= 251;	// Float width (px).
var kBackpackMarginTop		= 7;	// Float top margin (px).
var kBackpackMarginRight	= 10;	// Float right margin (px).
//var kBackpackBaseTop		= 107;	// Top (px).

function hexVal( v, N ) {
	var hex = '0123456789ABCDEF';
	var res = '';
	
	do {
		res = hex.charAt( v % 16 ) + res;
		v = parseInt( v / 16 );
		N--;
		} while( N || v );
	
	return res;
	}

function backpackFlash( ) {
	
	var N = document.getElementById( 'uvTravelBackpack_N' );
	var nT = [ 0, 0, 0 ];
	
	for( var ii = 0; ii < 3; ii++ ) {
		nT[ii] = N._colorTarg[ii] - N._color[ii];
		if( nT[ii] ) {
			var m = Math.abs( nT[ii] );
			var v = nT[ii] / m;
			
			m = Math.min( 10, m );
			nT[ii] = v * m;
			}
		nT[ii] = nT[ii] + N._color[ii];
		}
	
	if( nT.join() == N._color.join() ) {
		nT = N._colorTarg;
		}
	
	N._color = nT;
	
	var f = document.getElementById( 'uvTravelBackpack_N' );
	if( f ) {
		f.style.color =
		'#' + hexVal( nT[0], 2 ) + hexVal( nT[1], 2 ) + hexVal( nT[2], 2 );
		}
	
	if( N._colorTarg.join() != N._color.join() ) {
		setTimeout( backpackFlash, 25 );
		}
		
	}

function backpackChangeCount( Z ) {

	var N = document.getElementById( 'uvTravelBackpack_N' );
	var T = document.getElementById( 'uvTravelBackpack_T' );
	
	if( N && T ) {
		var m;
		var item_count;
		
		item_count = parseInt( N.innerHTML );
		if( isNaN( item_count ) )
			item_count = 0;
		
		N.innerHTML = m = ( item_count + Z );
		
		if( m == 1 ) {
			T.innerHTML = 'item';
			}
		else {
			T.innerHTML = 'items';
			}
		
		//N._colorTarg	= [ 0, 238, 119 ];
		N._colorTarg	= [ 127, 0, 0 ];

		if( Z > 0 ) 
			N._color 		= [ 255, 255, 0 ];
//			else
//				N._color		= [ 255,   0,   0 ];

		backpackFlash( );
		}
	
	}

var _resizeEvent = 0;
function travelBackpackOnResize( ) {
	_resizeEvent++;
	var r = _resizeEvent;
	setTimeout( function( ) { travelBackpackDoResize( r ); }, 25 );
}



// Default to "Follow"
var backpackIsFollowing = getCookie('_vmbpfollow') ? getCookie( '_vmbpfollow' ) : 1;

function travelBackpackDoResize( n ) {
	if( n != _resizeEvent ) return;
	var floatNode	= getObj( 'uvTravelBackpack_Floating' );
	
	if( floatNode ) {		
		var dy = kBackpackMarginTop;
		var dx = kBackpackMarginRight;
		
		if ( backpackIsFollowing == 1 ) {
			dy = getScrollOffsetY( ) + kBackpackMarginTop;
			dx = kBackpackMarginRight; // Redundant, but we may eventually not fix it to the browser window...
		}
		floatNode.style.position	= 'absolute';
		floatNode.style.top			= dy + 'px';
		floatNode.style.right		= dx + 'px';
		
		// CSS defaults to 'none' so it doesn't "flash" upon initial load...
		//	After loading is complete, make it visible.
		floatNode.style.display = 'block';
	}
}

function backpackToggle( e ) {
	if (hasFlash == true && !(isIE( ) && isAtMostVersion( 6 ))) { return; }
	var contents = getObj( 'uvTravelBackpack_Contents' );
	if (contents.style.display == 'none') {
		contents.style.display = 'block';
		return abortEventAndPreventDefault( e );
	}
	contents.style.display = 'none';
	return abortEventAndPreventDefault( e );
}

function backpackToggleHideFollow( e ) {
	var bp = getObj( 'uvTravelBackpack_Floating' );
	var bt = getObj( 'uvTravelBackpack_Toggle' );
	
	if (backpackIsFollowing == 1) {
		backpackIsFollowing = 0;
		if ( isIE( ) && isAtMostVersion( 6 ) ) {
			travelBackpackOnResize( );
		} else {
			// STANDARDS
			bp.style.position = 'absolute';
		}
		bt.style.backgroundImage = 'url("'+AURI+'resource/visitmaine/image/backpack/follow.gif")';
	} else {
		backpackIsFollowing = 1;
		if ( isIE( ) && isAtMostVersion( 6 ) ) {
			travelBackpackOnResize( );
		} else {
			// STANDARDS
			bp.style.position = 'fixed';
		}
		bt.style.backgroundImage = 'url("'+AURI+'resource/visitmaine/image/backpack/hide.gif")';
	}
	// Persist
	setCookie( '_vmbpfollow', backpackIsFollowing );
	return abortEventAndPreventDefault( e );
}

function displayHideFollowIcon( ) {
	if (hasFlash == true && !(isIE( ) && isAtMostVersion( 6 ))) { return; }
	
	var bphb = getObj( 'uvTravelBackpack_Toggle' );
	if (backpackIsFollowing == 1) {
		if (getScrollOffsetY( ) !== 0) {
			bphb.style.display = 'block';
			bphb.style.backgroundImage = 
				'url("'+AURI+'resource/visitmaine/image/backpack/hide.gif")';
		} else {
			bphb.style.display = 'none';
		}
		for (var i = 0; i< 10000; i++) {
			i = i - 1 +1;
		}
		return;
	}
	bphb.style.display = 'block';
	bphb.style.backgroundImage = 
				'url("'+AURI+'resource/visitmaine/image/backpack/follow.gif")';
	return;
}


// Initialize all things-backpack...
attachHandler( window, 'onload', function() {
   // Make sure these properties are availble for JS to read later...
	getObj( 'uvTravelBackpack_Contents' ).style.display = 'none';
   // Initialize the backpack's css properties.
	var bpf = getObj( 'uvTravelBackpack_Floating' );
	bpf.style.display = 'block';
	bpf.style.position = (backpackIsFollowing == 1 && hasFlash != true) ? 'fixed' : 'absolute';
   // the toggle event for the backpack's handle.
	attachHandler( getObj( 'uvTravelBackpack_Handle' ), 'onclick', backpackToggle, false );
   // the toggle event for hide/follow functionality
	attachHandler( getObj( 'uvTravelBackpack_Toggle' ), 'onclick', backpackToggleHideFollow, false );
   // display the right hid/follow icon - onscroll because we don't want to display "hide" if at top of page
	attachHandler( window , 'onscroll', displayHideFollowIcon );
	displayHideFollowIcon( );
});

if ( isIE( ) && isAtMostVersion( 6 ) ) {
	attachHandler( window , 'onscroll', travelBackpackOnResize );
	attachHandler( window , 'onresize', travelBackpackOnResize );
}
