var original_title	= document.title;
var supports_ei		= false;	// Is true if browser supports External Interface
var separator		= '#/';
var state_separator	= '?';
var title_separator	= ' / ';

/**
 * Borrowed from SWFAddress to detect browsers
 */
var agent		= navigator.userAgent;
var is_ie		= false;
var is_gecko	= false;
var is_safari	= false;
var is_opera 	= false;
var is_version	= -1;
if (/MSIE/.test(agent)) {
	is_ie = true;
	is_version = parseFloat(agent.substring(agent.indexOf('MSIE') + 4));
	supports_ei = is_version >= 5;
} else if (/AppleWebKit/.test(agent)) {
	is_safari = true;
	is_version = parseFloat(agent.substring(agent.indexOf('Safari') + 7));
	supports_ei = is_version >= 312;
} else if (/Opera/.test(agent)) {
	is_opera = true;
	is_version = parseFloat(navigator.appVersion);
	supports_ei = is_version >= 9.02;
} else if (/Firefox/.test(agent)) {
	is_gecko = true;
	is_version = parseFloat(agent.substring(agent.indexOf('Firefox') + 8));
	supports_ei = is_version >= 1;
} else if (/Camino/.test(agent)) {
	is_gecko = true;
	is_version = parseFloat(agent.substring(agent.indexOf('Camino') + 7));
	supports_ei = is_version >= 1;
} else if (/Netscape/.test(agent)) {
	is_gecko = true;
	is_version = parseFloat(agent.substring(agent.indexOf('Netscape') + 9));
	supports_ei = is_version >= 8;
} else if (/Mozilla/.test(agent) && /rv:/.test(agent)) {
	is_gecko = true;
	is_version = parseFloat(agent.substring(agent.indexOf('rv:') + 3));
	supports_ei = is_version >= 1.8;
}

function reset(){
	document.location=getLocation()+separator;
	document.title = original_title;
}

function setTitle( title, separator ){
	separator = !separator ? title_separator : separator;
	document.title = original_title+separator+title;
}

function setPage( page ){
	state = ( getState()!='' ) ? state_separator+getState() : '';
	document.location=getLocation()+separator+page+state;
}

function setState( state ){
	state = !state ? '' : state_separator+state;
	document.location=getLocation()+separator+getPage()+state;
}

function getLocation(){
	var hash	= new String( document.location );
	var split	= hash.split( separator );
	return split[0];
}

function getHash(){
	var hash 	= '';
	if( is_ie ){
		var index	= document.location.href.indexOf( '#' )+2;
       	if( index != -1 ){
           	hash = top.location.href.substring( index );
		}
	}else{
		hash = document.location.hash;
		hash = hash.substring( 2 );
	}
	return( hash );
}

function getPage(){
	var hash	= new String( getHash() );
	var split	= hash.split( '?' );
	if( split.length >= 1 ){
		return split[0];
	} else {
		return '';
	}
}

function getState(){
	var hash	= new String( getHash() ).substring( 1 );
	var split	= hash.split( '?' );
	if( split.length > 1 ){
		return split[1];
	} else {
		return '';
	}
}