





/**************************************************************************************************************
 ajaxload.1.0.js 
***************************************************************************************************************/
/*
* jQuery history plugin
* 
* sample page: http://www.serpere.info/jquery-history-plugin/samples/
*
* Copyright (c) 2006-2009 Taku Sano (Mikage Sawatari)
* Copyright (c) 2010 Takayuki Miwa
* Licensed under the MIT License:
*   http://www.opensource.org/licenses/mit-license.php
*
* Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
* for msie when no initial hash supplied.
*
* further Modified by Markus Timtner <me@mtness.net> on 2010-06-23 for cross-browser compatibility
* works now on Windows in IE6+, FF1.0+, Opera 8.53+, Safari 3+
* works now Mac in Safari 3+, FF3+ [older untested], Opera 10+ [older untested]
*/

(function($) {


	/* ajax magic starts here: */

	var locationWrapper = {
		put: function(hash, win) {
			// we want beautiful urls!
			// (win || window).location.hash = encodeURIComponent(hash);
			(win || window).location.hash = hash;
		},
		get: function(win) {
			var hash = ((win || window).location.hash).replace(/^#/, '');
			// we want beautiful urls!
			// return $.browser.fx ? hash : decodeURIComponent(hash);
			return $.browser.fx ? hash : hash;
		}
	};

	var iframeWrapper = {
		id: "__jQuery_history",
		init: function() {
			var html = '<iframe id="'+ this.id +'" style="display:none" src="javascript:false;" />';
			$("body").prepend(html);
			return this;
		},
		_document: function() {
			return $("#"+ this.id)[0].contentWindow.document;
		},
		put: function(hash) {
			var doc = this._document();
			doc.open();
			doc.close();
			locationWrapper.put(hash, doc);
		},
		get: function() {
			return locationWrapper.get(this._document());
		}
	};

	// public base interface
	var _ = {
		appState: undefined,
		callback: undefined,
		init:  function(callback) {},
		check: function() {},
		load:  function(hash) {}
	};
	$.history = _;

	var SimpleImpl = {
		init: function(callback) {
			// console.log('simpleImpl init ');
			_.callback = callback;
			var current_hash = locationWrapper.get();
			_.appState = current_hash;
			_.callback(current_hash);
			setInterval(_.check, 100);
		},
		check: function() {
			var current_hash = locationWrapper.get();
			if(current_hash != _.appState) {
				_.appState = current_hash;
				// ...................................... page transition effects goes here! 
				// fade out background
				_.callback(current_hash);
			}
		},
		load: function(hash) {
			// console.log('simpleImpl load ');
			if(hash != _.appState) {
				// ...................................... page transition effects goes here!
				// fade out background
				locationWrapper.put(hash);
				_.appState = hash;
// mod mtness
//				_.callback(hash);
			}
		}
	};

	var IframeImpl = {
		init: function(callback) {
			_.callback = callback;
			var current_hash = locationWrapper.get();
			_.appState = current_hash;
			iframeWrapper.init().put(current_hash);
				_.callback(current_hash);
			setInterval(_.check, 100);
		},
		check: function() {
			var current_hash = iframeWrapper.get();
			if(current_hash != _.appState) {
				$('#layoutBody').fadeOut(300, function() {
					locationWrapper.put(current_hash);
					_.appState = current_hash;
					// ...................................... page transition effects goes here! 
					// fade out background
					_.callback(current_hash);
				});
			}
		},
		load: function(hash) {
			if(hash != _.appState) {
				// ...................................... page transition effects goes here! 
				// fade out background
				$('#layoutBody').fadeOut(300, function() {
					locationWrapper.put(hash);
					iframeWrapper.put(hash);
					_.appState = hash;
	// mod mtness
	//				_.callback(hash);
				});
			}
		}
	};

	if($.browser.msie && ($.browser.version < 8 || document.documentMode < 8)) {
		$.extend(_, IframeImpl);
	} else {
		$.extend(_, SimpleImpl);
	}
})(jQuery);

