// must be first line
load_hashtrick();

// initialize
hashtrick({ root:"/",target: "#hashtrick", startpage:'page-welcome.php' });

// load function
function load_hashtrick() {
	
	if (typeof hashtrick!="undefined") return;
	
	hashtrick = function(vars) {
		// properties
		hashtrick.vars = vars;
		// methods
		hashtrick.enable = function() {
			if (hashtrick.enabled) return;
			//alert('enable');
			hashtrick.enabled = true;
			hashtrick.root = hashtrick.vars.root;
			hashtrick.startpage = hashtrick.vars.startpage;
			hashtrick.loadedpage = null;
			// catch redirect if needed
			hashtrick.catchpage = window.location.pathname != hashtrick.root && window.location.hash=='' ? window.location.pathname.substr( window.location.pathname.lastIndexOf('/')+1 ) : false;
			if (hashtrick.catchpage) hashtrick.redirect_if_needed();
			// load hashpage via ajax if needed
			hashtrick.hashpage = window.location.hash ? window.location.hash.substr(1) : false;
			hashtrick.lasthashpage = "";
			//alert(hashtrick.hashpage+" : "+ hashtrick.catchpage);
			if (hashtrick.hashpage) $( hashtrick.loadhash_if_needed );
			if (!hashtrick.hashpage && !hashtrick.catchpage) $( hashtrick.loadstartpage );
			// browser button support
			hashtrick.browser_button_support();
			//alert('done');
		}
		hashtrick.redirect_if_needed = function() {
			if (hashtrick.catchpage) window.location = hashtrick.root + '#' + hashtrick.catchpage;
		}
		hashtrick.loadhash_if_needed = function() {
			if (hashtrick.hashpage) if (hashtrick.hashpage != hashtrick.loadedpage) {
				hashtrick.loadedpage = hashtrick.hashpage;
				//$('body').load(hashtrick.root + hashtrick.hashpage); 	
				$(hashtrick.vars.target).load(hashtrick.root + hashtrick.hashpage); 	
			
				//$(hashtrick.vars.target).load(hashtrick.root + hashtrick.hashpage + " " + hashtrick.vars.target); 	
			}
		}
		hashtrick.loadstartpage = function() {
				window.location = hashtrick.root + '#' + hashtrick.startpage;
				hashtrick.loadhash_if_needed();				
		}
		hashtrick.apply = function(anchor) {
			hashtrick.lasthashpage = hashtrick.hashpage;
			hashtrick.hashpage = anchor.href.substr( anchor.href.lastIndexOf('/')+1 );		
			window.location = hashtrick.root + '#' + hashtrick.hashpage;
			hashtrick.loadhash_if_needed();
			return false;
		}
		hashtrick.browser_button_support = function() {
			hashtrick.interval(function() {
				hashtrick.hashpage = window.location.hash ? window.location.hash.substr(1) : false; 
				hashtrick.loadhash_if_needed()
			},1000);
		}
		hashtrick.interval = function(func,delay) 
		{
			if (typeof(func)=='string') { return setInterval(func, delay); }
			var now = new Date();
			var unique = "i"+now.getMinutes()+""+now.getSeconds()+""+now.getMilliseconds();
			if (!hashtrick.interval_funcs) { hashtrick.interval_funcs = new Array(); }
			hashtrick.interval_funcs[unique] = func;
			return setInterval("hashtrick.interval_funcs['"+unique+"']();", delay);
		}
		// enable
		hashtrick.enable();
	}


}

