/** * SWFAddress 2.0: Deep linking for Flash and Ajax - http://www.asual.com/swfaddress/ * * SWFAddress is (c) 2006-2007 Rostislav Hristov and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */if(typeof com=="undefined") {	var com={};}if(typeof com.asual=="undefined") {	com.asual={};}if(typeof com.asual.util=="undefined") {	com.asual.util={};}com.asual.util.Browser = new function() {	var _1=false;	var _2=-1;	var _3=navigator.userAgent;	var _4=false;	var _5=false;	var _6=false;	var _7=false;	var _8=false;	if(/MSIE/.test(_3)) {		_4=true;		_2=parseFloat(_3.substring(_3.indexOf("MSIE")+4));		_1=_2>=6;	}	else {		if(/AppleWebKit/.test(_3)) {			_6=true;			_2=parseFloat(_3.substring(_3.indexOf("Safari")+7));			_1 = _2 >= 312;		}		else {			if(/Opera/.test(_3)) {				_7=true;				_2=parseFloat(navigator.appVersion);				_1=_2>=9.02;			}			else {				if(/Camino/.test(_3)) {					_5=true;					_2=parseFloat(_3.substring(_3.indexOf("Camino")+7));					_1=_2>=1;				}				else {					if(/Firefox/.test(_3)) {						_8=true;						_2=parseFloat(_3.substring(_3.indexOf("Firefox")+8));						_1=_2>=1;					}					else {						if(/Netscape/.test(_3)) {							_8=true;							_2=parseFloat(_3.substring(_3.indexOf("Netscape")+9));							_1=_2>=8;						}						else {							if(/Mozilla/.test(_3)&&/rv:/.test(_3)) {								_8=true;								_2=parseFloat(_3.substring(_3.indexOf("rv:")+3));								_1=_2>=1.8;							}						}					}				}			}		}	}	this.isSupported=function() {		return _1;	};	this.getVersion = function() {		return _2;	};	this.isIE=function() {		return _4;	};	this.isSafari=function() {		return _6;	};	this.isOpera=function() {		return _7;	};	this.isCamino=function() {		return _5;	};	this.isMozilla=function() {		return _8;	};};com.asual.util.Events = new function() {	var _9=[];	var _a=com.asual.util.Browser;	var _b="DOMContentLoaded";	if(_a.isIE()||_a.isSafari()) { (		function() {			try {				if(_a.isIE()||!/loaded|complete/.test(document.readyState)) {					document.documentElement.doScroll("left");				}			}			catch(e) { 				return setTimeout(arguments.callee,0);			}			for(var i=0,e;e=_9[i];i++) {				if(e.t==_b) {					e.l.call(null);				}			}		}		)();	}	this.addListener = function(_e,_f,_10) {		_9.push({o:_e,t:_f,l:_10});		if(_f==_b&&(_a.isIE()||_a.isSafari())) {			return;		}		if(_e.addEventListener) {			_e.addEventListener(_f,_10,false);		}		else {			if(_e.attachEvent) {				_e.attachEvent("on"+_f,_10);			}		}	};	this.removeListener = function(obj,_12,_13) {		for(var i=0,e;e=_9[i];i++) {			if(e.o==obj&&e.t==_12&&e.l==_13) {				_9.splice(i,1);				break;			}		}		if(_12==_b&&(_a.isIE()||_a.isSafari())) {			return;		}		if(obj.removeEventListener) {			obj.removeEventListener(_12,_13,false);		}		else {			if(obj.detachEvent) {				obj.detachEvent("on"+_12,_13);			}		}	};	var _16=function() {		for(var i=0,evt;evt=_9[i];i++) {			if(evt.t!=_b) {				com.asual.util.Events.removeListener(evt.o,evt.t,evt.l);			}		}	};	this.addListener(window,"unload",_16);};SWFAddressEvent = function(_19) {	this.toString=function() {		return "[object SWFAddressEvent]";	};	this.type=_19;	this.target=[SWFAddress][0];	this.value=SWFAddress.getValue();	this.path=SWFAddress.getPath();	this.parameters={};	var _1a=SWFAddress.getParameterNames();	for(var i=0,n;n=_1a[i];i++) {		this.parameters[n]=SWFAddress.getParameter(n);	}};SWFAddressEvent.INIT = "init";SWFAddressEvent.CHANGE="change";SWFAddress=new function() {	var _cur="";	var _1d=com.asual.util.Browser;	var _1e=_1d.isSupported();	var _d=top.document;	var _h=top.history;	var _l=top.location;	var _22,_23,_24,_js="swfaddress.js";	var _26=_d.title;	var _27=_h.length;	var _28=false;	var _29={};	var _2a=[];	var _2b=[];	var _2c=[];	_2c["history"]=true;	_2c["html"]=true;	_2c["strict"]=true;	_2c["tracker"]="urchinTracker";	if((!_1e&&_l.href.indexOf("#")!=-1)||(_1d.isSafari()&&_1d.getVersion()<412&&_l.href.indexOf("#")!=-1&&_l.search!="")) {		_d.open();		_d.write("<html><head><meta http-equiv=\"refresh\" content=\"0;url="+_l.href.substr(0,_l.href.indexOf("#"))+"\" /></head></html>");		_d.close();	}	var _2d=function() {		var _2e=_l.href.indexOf("#");		if(_2e!=-1) {			return _l.href.substring(_2e).replace(/^#/g,"");		}		return "";	};	var _2f=_2d();	var _30=function(_31,_32) {		if(_2c["strict"]) {			if(_32) {				if(_31.substr(0,1)!="/"){					_31="/"+_31;				}				_31=_31.replace(/^([^\?.]*[^\/])(\?|$)/,"$1/$2").replace(/\/\//,"/");			}			else {				if(_31=="") {					_31="/";				}			}		}		return _31;	};	var _33=function() {		if(_1d.isIE()&&_d.title!=_26) {			SWFAddress.setTitle(_26);		}	};	var _34 = function() {		if(!_28) {			if(_1d.isIE()) {				if(_2f!=_2d()) {					if(_1d.getVersion()<7) {						_l.reload();					}					else {						SWFAddress.setValue(_2d());					}				}			}			else {				if(_1d.isSafari()) {					if(_27!=_h.length) {						_27=_h.length;						if(typeof _2a[_27-1]!="undefined") {							_2f=_2a[_27-1];						}						_35();					}				}				else {					if(_2f!=_2d()) {						_2f=_2d();						_35();					}				}			}			_33();		}	};	var _36 = function(_37) {		if(SWFAddress.hasEventListener(_37)) {			SWFAddress.dispatchEvent(new SWFAddressEvent(_37));		}		_37=_37.substr(0,1).toUpperCase()+_37.substring(1);		if(typeof SWFAddress["on"+_37]=="function") {			SWFAddress["on"+_37]();		}	};	var _38 = function() {		_36("init");	};	var _39 = function() {		_36("change");	};	var _3a = function() {		for(var i=0,id;id=_2b[i];i++) {			var obj=document.getElementById(id);			if(obj) {				if(obj.parentNode&&typeof obj.parentNode.so!="undefined") {					obj.parentNode.so.call("setSWFAddressValue",SWFAddress.getValue());				}				else {					obj=(obj&&typeof obj.setSWFAddressValue!="undefined") ? obj : ((obj.getElementsByTagName("object")[0]&&typeof obj.getElementsByTagName("object")[0].setSWFAddressValue!="undefined") ? obj.getElementsByTagName("object")[0] : ((obj.getElementsByTagName("embed")[0]&&typeof obj.getElementsByTagName("embed")[0].setSWFAddressValue!="undefined") ? obj.getElementsByTagName("embed")[0] : null));					if(obj) {						obj.setSWFAddressValue(SWFAddress.getValue());					}				}			}		}	};	var _35 = function() {		_3a();_39();	};	var _3e = function() {		if(typeof _2c["tracker"]!="undefined"&&eval("typeof "+_2c["tracker"]+" != \"undefined\"")) {			var fn=eval(_2c["tracker"]);			if(typeof fn=="function") {				fn((_l.pathname+SWFAddress.getValue()).replace(/\/\//,"/").replace(/^\/$/,""));			}		}	};	var _40 = function() {		var doc=_22.contentWindow.document;		doc.open();		doc.write("<script>var swfaddress = \""+_2d()+"\";</script>");		doc.close();	};	var _42 = function() {		if(_2c["html"]) {			var src=_22.contentWindow.location.href;			_2f=(src.indexOf("?")>-1) ? src.substring(src.indexOf("?")+1):"";		}		else {			_2f=(typeof _22.contentWindow.swfaddress!="undefined") ? _22.contentWindow.swfaddress : "";		}		if(_2f!=_2d()) {			_35();			_l.hash=_2f;		}	};	var _44 = function() {		var _45="id=\"swfaddress\" style=\"position:absolute;top:-9999px;\"";		if(_1d.isIE()) {			document.body.appendChild(document.createElement("div")).innerHTML="<iframe "+_45+" src=\""+(_2c["html"] ? _24.replace(/\.js(\?.*)?$/,".html")+"?"+_2d() : "javascript:false;")+"\"></iframe>";			_22 = document.getElementById("swfaddress");			setTimeout(function() {				if(!_2c["html"] && typeof _22.contentWindow.swfaddress=="undefined") {					_40();				}				com.asual.util.Events.addListener(_22,"load",_42);			},10);		}		else {			if(_1d.isSafari()) {				if(_1d.getVersion()<412) {					document.body.innerHTML+="<form "+_45+" method=\"get\"></form>";					_23=document.getElementById("swfaddress");				}				if(typeof _l.swfaddress=="undefined") {					_l.swfaddress={};				}				if(typeof _l.swfaddress[_l.pathname]!="undefined") {					_2a=_l.swfaddress[_l.pathname].split(",");				}			}			else {				if(_1d.isOpera()&&_2b.length==0) {					document.body.innerHTML+="<embed "+_45+" src=\""+_24.replace(/\.js(\?.*)?$/,".swf")+"\" type=\"application/x-shockwave-flash\" />";				}			}		}		setTimeout(_38,1);		setTimeout(_39,2);		setTimeout(_3e,10);		setInterval(_34,50);	};	this.onInit 	= null;	this.onChange	= null;	this.toString	= function() {		return "[class SWFAddress]";	};	this.back = function() {		_h.back();	};	this.forward=function() {		_h.forward();	};	this.go=function(_46) {		_h.go(_46);	};	this.href = function(url,_48) {		_48=typeof _48!="undefined" ? _48 : "_self";		switch(_48) {			case "_self":				self.location.href=url;				break;			case "_top":				_l.href=url;				break;			case "_blank":				window.open(url);				break;			default:				top.frames[_48].location.href=url;				break;		}	};	this.popup = function(url,_4a,_4b,_4c) {		var _4d=window.open(url,_4a,eval(_4b));		eval(_4c);	};	this.addEventListener = function(_4e,_4f) {		if(typeof _29[_4e]=="undefined") {			_29[_4e]=[];		}		_29[_4e].push(_4f);	};	this.removeEventListener = function(_50,_51) {		if(typeof _29[_50]!="undefined") {			for(var i=0,l;l=_29[_50][i];i++) {				if(l==_51) {					break;				}			}			_29[_50].splice(i,1);		}	};	this.dispatchEvent = function(_54) {		if(typeof _29[_54.type]!="undefined"&&_29[_54.type].length) {			_54.target=this;			for(var i=0,l;l=_29[_54.type][i];i++) {				l(_54);			}			return true;		}		return false;	};	this.hasEventListener = function(_57) {		return (typeof _29[_57]!="undefined"&&_29[_57].length>0);	};	this.getStrict = function() {		return _2c["strict"];	};	this.setStrict = function(_58) {		_2c["strict"] = enabled;	};	this.getHistory=function() {		return _2c["history"];	};	this.setHistory = function(_59) {		_2c["history"]=_59;	};	this.getTracker = function() {		return _2c["tracker"];	};	this.setTracker = function(_5a) {		_2c["tracker"]=_5a;	};	this.getIds = function() {		return _2b;	};	this.getId = function(_5b) {		return _2b[0];	};	this.setId = function(id) {		_2b[0]=id;	};	this.addId = function(id) {		this.removeId(id);		_2b.push(id);	};	this.removeId = function(id) {		for(var i=0,_60;_60=_2b[i];i++) {			if(id==_60) {				_2b.splice(i,1);				break;			}		}	};	this.getTitle = function() {		return _d.title;	};	this.setTitle = function(_61) {		if(!_1e) {			return null;		}		if(typeof _61=="undefined") {			return;		}		if(_61=="null") {			_61="";		}		_26=_d.title=_61;		if(_22&&_22.contentWindow) {			_22.contentWindow.document.title=_61;		}	};	this.getStatus = function() {		return top.status;	};	this.setStatus = function(_62) {		if(!_1e) {			return null;		}		if(typeof _62=="undefined") {			return;		}		if(!_1d.isSafari()) {			if(_62=="null") {				_62="";			}			_62=_30(_62,true);			if(_62=="/") {				_62="";			}			if(!(/http(s)?:\/\//.test(_62))) {				var _63=_l.href.indexOf("#");				_62=(_63==-1 ? _l.href : _l.href.substr(0,_63))+"#"+_62;			}			top.status=_62;		}	};	this.resetStatus = function() {		top.status="";	};	this.getValue = function() {		return _cur;		if(!_1e) {			return null;		}		return _30(_2f,false);	};	this.setValue = function(_64) {		_cur		= _64;		return null;		if(!_1e) {			return null;		}		if(typeof _64=="undefined") {			return;		}		if(_64=="null") {			_64="";		}		_64 = _30(_64,true);		if(_64=="/") {			_64="";		}		if(_2f==_64) {			return;		}		_2f=_64;		_28=true;		_35();		_2a[_h.length]=_2f;		if(_1d.isSafari()) {			if(_2c["history"]) {				_l.swfaddress[_l.pathname] = _2a.toString();				_27=_h.length+1;				if(_1d.getVersion()<412) {					if(_l.search=="") {						_23.action="#"+_2f;						_23.submit();					}				}				else {					var evt=document.createEvent("MouseEvents");					evt.initEvent("click",true,true);					var _66=document.createElement("a");					_66.href="#"+_2f;					_66.dispatchEvent(evt);				}			}			else {				_l.replace("#"+_2f);			}		}		else {			if(_2f!=_2d()) {				if(_2c["history"]) {					_l.hash="#"+_2f;				}				else {					_l.replace("#"+_2f);				}			}		}		if(_1d.isIE()&&_2c["history"]) {			if(_2c["html"]) {				_22.contentWindow.location.assign(_22.contentWindow.location.pathname+"?"+_2d());			}			else {				_40();			}		}		setTimeout(_3e,10);		_28=false;	};	this.getPath = function() {		var _67 = this.getValue();		if(_67.indexOf("?")!=-1) {			return _67.split("?")[0];		}		else {			return _67;		}	};	this.getQueryString = function() {		var _68 = this.getValue();		var _69=_68.indexOf("?");		if(_69!=-1&&_69<_68.length) {			return _68.substr(_69+1);		}		return "";	};	this.getParameter = function(_6a) {		var _6b=this.getValue();		var _6c=_6b.indexOf("?");		if(_6c!=-1) {			_6b=_6b.substr(_6c+1);			var _6d=_6b.split("&");			var p,i=_6d.length;			while(i--) {				p=_6d[i].split("=");				if(p[0]==_6a) {					return p[1];				}			}		}		return "";	};	this.getParameterNames = function() {		var _70=this.getValue();		var _71=_70.indexOf("?");		var _72=[];		if(_71!=-1) {			_70=_70.substr(_71+1);			if(_70!=""&&_70.indexOf("=")!=-1) {				var _73=_70.split("&");				var i=0;				while(i<_73.length) {					_72.push(_73[i].split("=")[0]);i++;				}			}		}		return _72;	};	if(!_1e) {		return;	}	for(var i=1;i<_27;i++) {		_2a.push("");	}	_2a.push(_l.hash.replace(/^#/g,""));	if(_1d.isIE()&&_l.hash!=_2d()) {		_l.hash="#"+_2d();	}	var _76=document.getElementsByTagName("script");	for(var i=0,s;s=_76[i];i++) {		if(s.src.indexOf(_js)>-1) {			_24=String(s.src);			break;		}	}	if((qi=_24.indexOf("?"))>-1) {		var _78,_79=_24.substr(qi+1).split("&");		for(var j=0,p;p=_79[j];j++) {			_78=p.split("=");			if(/^(history|html|strict)$/.test(_78[0])) {				_2c[_78[0]] = (isNaN(_78[1]) ? eval(_78[1]) : (parseFloat(_78[1])>0));			}			if(/^tracker$/.test(_78[0])) {				_2c[_78[0]] = _78[1];			}		}	}	if(/file:\/\//.test(_l.href)) {		_2c["html"]=false;	}	_33();	com.asual.util.Events.addListener(document,"DOMContentLoaded",_44);};if(typeof swfobject!="undefined") {	SWFObject=swfobject;}if(typeof FlashObject!="undefined") {	SWFObject=FlashObject;}if(typeof SWFObject!="undefined") {	if(SWFObject.prototype&&SWFObject.prototype.write) {		com.asual.SWFObjectWrite=SWFObject.prototype.write;		SWFObject.prototype.write=function() {			if(this.getAttribute("version").major<8) {				this.addVariable("$swfaddress",SWFAddress.getValue());				((typeof arguments[0]=="string")?document.getElementById(arguments[0]):arguments[0]).so=this;			}			if(success=com.asual.SWFObjectWrite.apply(this,arguments)) {				SWFAddress.addId(this.getAttribute("id"));			}			return success;		};	}	else {		com.asual.SWFObjectRegisterObject=SWFObject.registerObject;		SWFObject.registerObject = function() {			com.asual.SWFObjectRegisterObject.apply(this,arguments);			SWFAddress.addId(arguments[0]);		};		com.asual.SWFObjectCreateSWF = SWFObject.createSWF;		SWFObject.createSWF = function() {			com.asual.SWFObjectCreateSWF.apply(this,arguments);			SWFAddress.addId(arguments[0].id);		};		com.asual.SWFObjectEmbedSWF = SWFObject.embedSWF;		SWFObject.embedSWF = function() {			com.asual.SWFObjectEmbedSWF.apply(this,arguments);			SWFAddress.addId(arguments[8].id);		};	}}if(typeof UFO!="undefined") {	com.asual.UFOCreate=UFO.create;	UFO.create = function() {		com.asual.UFOCreate.apply(this,arguments);		SWFAddress.addId(arguments[0].id);	};}if(typeof AC_FL_RunContent!="undefined") {	com.asual.AC_FL_RunContent = AC_FL_RunContent;	AC_FL_RunContent = function() {		com.asual.AC_FL_RunContent.apply(this,arguments);		for(var i=0,a;a=arguments[i];i++) {			if(a=="id") {				SWFAddress.addId(arguments[i+1]);				break;			}		}	};}