/** * SWFAddress 2.3: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/> * * SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> * */if(typeof asual=="undefined"){	var asual={}}if(typeof asual.util=="undefined"){	asual.util={}}asual.util.Browser=new function(){	var b=navigator.userAgent.toLowerCase(),		a=/webkit/.test(b),		e=/opera/.test(b),		c=/msie/.test(b)&&!/opera/.test(b),		d=/mozilla/.test(b)&&!/(compatible|webkit)/.test(b),		f=parseFloat(c?b.substr(b.indexOf("msie")+4):(b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1])		;				this.toString=function()		{			return"[class Browser]"		};				this.getVersion=function()		{			return f		};				this.isMSIE=function()		{			return c		};				this.isSafari=function()		{			return a		};				this.isOpera=function()		{			return e		};				this.isMozilla=function()		{			return d		}	};		asual.util.Events=new function()	{		var c="DOMContentLoaded",		j="onstop",		k=window,		h=document,		b=[],		a=asual.util,		e=a.Browser,		d=e.isMSIE(),		g=e.isSafari()		;				this.toString=function()		{			return"[class Events]"		};				this.addListener=function(n,l,m)		{			b.push({o:n,t:l,l:m});			if(!(l==c&&(d||g)))			{				if(n.addEventListener)				{					n.addEventListener(l,m,false)				}				else				{					if(n.attachEvent)					{						n.attachEvent("on"+l,m)					}				}			}		};				this.removeListener=function(p,m,n)		{			for(var l=0,o;o=b[l];l++)			{				if(o.o==p&&o.t==m&&o.l==n)				{					b.splice(l,1);					break				}			}			if(!(m==c&&(d||g)))			{				if(p.removeEventListener)				{					p.removeEventListener(m,n,false)				}				else				{					if(p.detachEvent)					{						p.detachEvent("on"+m,n)					}				}			}		};				var i=function()		{			for(var m=0,l;l=b[m];m++)			{				if(l.t!=c)				{					a.Events.removeListener(l.o,l.t,l.l)				}			}		};				var f=function()		{			if(h.readyState=="interactive")			{				function l()				{					h.detachEvent(j,l);					i()				}				h.attachEvent(j,l);				k.setTimeout(function()				{					h.detachEvent(j,l)				},0)			}		};				if(d||g)		{			(function()			{				try				{					if((d&&h.body)||!/loaded|complete/.test(h.readyState))					{						h.documentElement.doScroll("left")					}				}				catch(m)				{					return setTimeout(arguments.callee,0)				}				for(var l=0,m;m=b[l];l++)				{					if(m.t==c)					{						m.l.call(null)					}				}			})()		}				if(d)		{			k.attachEvent("onbeforeunload",f)		}				this.addListener(k,"unload",i)	};		asual.util.Functions=new function()	{		this.toString=function()		{			return"[class Functions]"};			this.bind=function(f,b,e)			{				for(var c=2,d,a=[];d=arguments[c];c++)				{					a.push(d)				}								return function()				{					return f.apply(b,a)				}			}		};				var SWFAddressEvent=function(d)		{			this.toString=function()			{				return"[object SWFAddressEvent]"			};			this.type=d;			this.target=[SWFAddress][0];			this.value=SWFAddress.getValue();			this.path=SWFAddress.getPath();			this.pathNames=SWFAddress.getPathNames();			this.parameters={};			var c=SWFAddress.getParameterNames();			for(var b=0,a=c.length;b<a;b++)			{				this.parameters[c[b]]=SWFAddress.getParameter(c[b])			}			this.parameterNames=c		};				SWFAddressEvent.INIT="init";		SWFAddressEvent.CHANGE="change";				var SWFAddress=new function()		{			var _getHash=function()			{				var index=_l.href.indexOf("#");				return index!=-1?_ec(_dc(_l.href.substr(index+1))):""};				var _getWindow=function()				{					try					{						top.document;return top					}					catch(e)					{						return window					}				};								var _strictCheck=function(value,force)				{					if(_opts.strict)					{						value=force?(value.substr(0,1)!="/"?"/"+value:value):(value==""?"/":value)					}					return value				};								var _ieLocal=function(value,direction)				{					return(_msie&&_l.protocol=="file:")?(direction?_value.replace(/\?/,"%3F"):_value.replace(/%253F/,"?")):value				};								var _searchScript=function(el)				{					for(var i=0,l=el.childNodes.length,s;i<l;i++)					{						if(el.childNodes[i].src)						{							_url=String(el.childNodes[i].src)						}						if(s=_searchScript(el.childNodes[i]))						{							return s						}					}				};								var _titleCheck=function()				{					if(_d.title!=_title&&_d.title.indexOf("#")!=-1)					{						_d.title=_title					}				};								var _listen=function()				{					if(!_silent)					{						var hash=_getHash();						var diff=!(_value==hash);						if(_safari&&_version<523)						{							if(_length!=_h.length)							{								_length=_h.length;								if(typeof _stack[_length-1]!=UNDEFINED)								{									_value=_stack[_length-1]								}																_update.call(this)							}						}						else						{							if(_msie&&diff)							{								if(_version<7)								{									_l.reload()								}								else								{									this.setValue(hash)								}							}							else							{								if(diff)								{									_value=hash;									_update.call(this)								}							}						}						if(_msie)						{							_titleCheck.call(this)						}					}				};								var _bodyClick=function(e)				{					if(_popup.length>0)					{						var popup=window.open(_popup[0],_popup[1],eval(_popup[2]));						if(typeof _popup[3]!=UNDEFINED)						{							eval(_popup[3])						}					}_popup=[]				};								var _swfChange=function()				{					for(var i=0,id,obj,value=SWFAddress.getValue(),setter="setSWFAddressValue";id=_ids[i];i++)					{						obj=document.getElementById(id);						if(obj)						{							if(obj.parentNode&&typeof obj.parentNode.so!=UNDEFINED)							{								obj.parentNode.so.call(setter,value)							}							else							{								if(!(obj&&typeof obj[setter]!=UNDEFINED))								{									var objects=obj.getElementsByTagName("object");									var embeds=obj.getElementsByTagName("embed");									obj=((objects[0]&&typeof objects[0][setter]!=UNDEFINED)?objects[0]:((embeds[0]&&typeof embeds[0][setter]!=UNDEFINED)?embeds[0]:null))								}								if(obj)								{									obj[setter](value)								}							}						}						else						{							if(obj=document[id])							{								if(typeof obj[setter]!=UNDEFINED)								{									obj[setter](value)								}							}						}					}				};								var _jsDispatch=function(type)				{					this.dispatchEvent(new SWFAddressEvent(type));					type=type.substr(0,1).toUpperCase()+type.substr(1);					if(typeof this["on"+type]==FUNCTION)					{						this["on"+type]()					}				};								var _jsInit=function()				{					if(_util.Browser.isSafari())					{						_d.body.addEventListener("click",_bodyClick)					}					_jsDispatch.call(this,"init")};					var _jsChange=function()					{						_swfChange();						_jsDispatch.call(this,"change")};						var _update=function()						{							_jsChange.call(this);							_st(_functions.bind(_track,this),10)						};												var _track=function()						{							var value=(_l.pathname+(/\/$/.test(_l.pathname)?"":"/")+this.getValue()).replace(/\/\//,"/").replace(/^\/$/,"");							var fn=window[_opts.tracker];							if(typeof fn==FUNCTION)							{								fn(value)							}							else							{								if(typeof pageTracker!=UNDEFINED&&typeof pageTracker._trackPageview==FUNCTION){pageTracker._trackPageview(value)							}							else							{								if(typeof urchinTracker==FUNCTION)								{									urchinTracker(value)								}							}						}					};										var _htmlWrite=function(){var doc=_iframe.contentWindow.document;doc.open();doc.write("<html><head><title>"+_d.title+"</title><script>var "+ID+' = "'+_getHash()+'";<\/script></head></html>');doc.close()};var _htmlLoad=function(){var win=_iframe.contentWindow;var src=win.location.href;_value=(typeof win[ID]!=UNDEFINED?win[ID]:"");if(_value!=_getHash()){_update.call(SWFAddress);_l.hash=_ieLocal(_value,true)}};var _load=function(){if(!_loaded){_loaded=true;if(_msie&&_version<8){var iframe='<iframe id="'+ID+'" src="javascript:false;" width="0" height="0"></iframe>';_d.body.innerHTML=iframe+_d.body.innerHTML;_iframe=_d.getElementById(ID);_st(function(){_events.addListener(_iframe,"load",_htmlLoad);if(typeof _iframe.contentWindow[ID]==UNDEFINED){_htmlWrite()}},50)}else{if(_safari){if(_version<418){_d.body.innerHTML+='<form id="'+ID+'" style="position:absolute;top:-9999px;" method="get"></form>';_form=_d.getElementById(ID)}if(typeof _l[ID]==UNDEFINED){_l[ID]={}}if(typeof _l[ID][_l.pathname]!=UNDEFINED){_stack=_l[ID][_l.pathname].split(",")}}}_st(_functions.bind(function(){_jsInit.call(this);_jsChange.call(this);_track.call(this)},this),1);if(_msie&&_version>=8){_d.body.onhashchange=_functions.bind(_listen,this);_si(_functions.bind(_titleCheck,this),50)}else{_si(_functions.bind(_listen,this),50)}}};var ID="swfaddress",FUNCTION="function",UNDEFINED="undefined",_util=asual.util,_browser=_util.Browser,_events=_util.Events,_functions=_util.Functions,_version=_browser.getVersion(),_msie=_browser.isMSIE(),_mozilla=_browser.isMozilla(),_opera=_browser.isOpera(),_safari=_browser.isSafari(),_supported=false,_t=_getWindow(),_d=_t.document,_h=_t.history,_l=_t.location,_si=setInterval,_st=setTimeout,_dc=decodeURI,_ec=encodeURI,_iframe,_form,_url,_title=_d.title,_length=_h.length,_silent=false,_loaded=false,_justset=true,_juststart=true,_ref=this,_stack=[],_ids=[],_popup=[],_listeners={},_value=_getHash(),_opts={history:true,strict:true};_supported=(_mozilla&&_version>=1)||(_msie&&_version>=6)||(_opera&&_version>=9.5)||(_safari&&_version>=312);if(_supported){for(var i=1;i<_length;i++){_stack.push("")}_stack.push(_getHash());if(_msie&&_l.hash!=_getHash()){_l.hash="#"+_ieLocal(_getHash(),true)}if(_opera){history.navigationMode="compatible"}_searchScript(document);var _qi=_url.indexOf("?");if(_url&&_qi>-1){var param,params=_url.substr(_qi+1).split("&");for(var i=0,p;p=params[i];i++){param=p.split("=");if(/^(history|strict)$/.test(param[0])){_opts[param[0]]=(isNaN(param[1])?/^(true|yes)$/i.test(param[1]):(parseInt(param[1])!=0))}if(/^tracker$/.test(param[0])){_opts[param[0]]=param[1]}}}if(_msie){_titleCheck.call(this)}if(window==_t){_events.addListener(document,"DOMContentLoaded",_functions.bind(_load,this))}_events.addListener(_t,"load",_functions.bind(_load,this))}else{if((!_supported&&_l.href.indexOf("#")!=-1)||(_safari&&_version<418&&_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()}else{_track()}}this.toString=function(){return"[class SWFAddress]"};this.back=function(){_h.back()};this.forward=function(){_h.forward()};this.up=function(){var path=this.getPath();this.setValue(path.substr(0,path.lastIndexOf("/",path.length-2)+(path.substr(path.length-1)=="/"?1:0)))};this.go=function(delta){_h.go(delta)};this.href=function(url,target){target=typeof target!=UNDEFINED?target:"_self";if(target=="_self"){self.location.href=url}else{if(target=="_top"){_l.href=url}else{if(target=="_blank"){window.open(url)}else{_t.frames[target].location.href=url}}}};this.popup=function(url,name,options,handler){try{var popup=window.open(url,name,eval(options));if(typeof handler!=UNDEFINED){eval(handler)}}catch(ex){}_popup=arguments};this.getIds=function(){return _ids};this.getId=function(index){return _ids[0]};this.setId=function(id){_ids[0]=id};this.addId=function(id){this.removeId(id);_ids.push(id)};this.removeId=function(id){for(var i=0;i<_ids.length;i++){if(id==_ids[i]){_ids.splice(i,1);break}}};this.addEventListener=function(type,listener){if(typeof _listeners[type]==UNDEFINED){_listeners[type]=[]}_listeners[type].push(listener)};this.removeEventListener=function(type,listener){if(typeof _listeners[type]!=UNDEFINED){for(var i=0,l;l=_listeners[type][i];i++){if(l==listener){break}}_listeners[type].splice(i,1)}};this.dispatchEvent=function(event){if(this.hasEventListener(event.type)){event.target=this;for(var i=0,l;l=_listeners[event.type][i];i++){l(event)}return true}return false};this.hasEventListener=function(type){return(typeof _listeners[type]!=UNDEFINED&&_listeners[type].length>0)};this.getBaseURL=function(){var url=_l.href;if(url.indexOf("#")!=-1){url=url.substr(0,url.indexOf("#"))}if(url.substr(url.length-1)=="/"){url=url.substr(0,url.length-1)}return url};this.getStrict=function(){return _opts.strict};this.setStrict=function(strict){_opts.strict=strict};this.getHistory=function(){return _opts.history};this.setHistory=function(history){_opts.history=history};this.getTracker=function(){return _opts.tracker};this.setTracker=function(tracker){_opts.tracker=tracker};this.getTitle=function(){return _d.title};this.setTitle=function(title){if(!_supported){return null}if(typeof title==UNDEFINED){return}if(title=="null"){title=""}title=_dc(title);_st(function(){_title=_d.title=title;if(_juststart&&_iframe&&_iframe.contentWindow&&_iframe.contentWindow.document){_iframe.contentWindow.document.title=title;_juststart=false}if(!_justset&&_mozilla){_l.replace(_l.href.indexOf("#")!=-1?_l.href:_l.href+"#")}_justset=false},50)};this.getStatus=function(){return _t.status};this.setStatus=function(status){if(!_supported){return null}if(typeof status==UNDEFINED){return}if(status=="null"){status=""}status=_dc(status);if(!_safari){status=_strictCheck((status!="null")?status:"",true);if(status=="/"){status=""}if(!(/http(s)?:\/\//.test(status))){var index=_l.href.indexOf("#");status=(index==-1?_l.href:_l.href.substr(0,index))+"#"+status}_t.status=status}};this.resetStatus=function(){_t.status=""};this.getValue=function(){if(!_supported){return null}return _dc(_strictCheck(_ieLocal(_value,false),false))};this.setValue=function(value){if(!_supported){return null}if(typeof value==UNDEFINED){return}if(value=="null"){value=""}value=_ec(_dc(_strictCheck(value,true)));if(value=="/"){value=""}if(_value==value){return}_justset=true;_value=value;_silent=true;_update.call(SWFAddress);_stack[_h.length]=_value;if(_safari){if(_opts.history){_l[ID][_l.pathname]=_stack.toString();_length=_h.length+1;if(_version<418){if(_l.search==""){_form.action="#"+_value;_form.submit()}}else{if(_version<523||_value==""){var evt=_d.createEvent("MouseEvents");evt.initEvent("click",true,true);var anchor=_d.createElement("a");anchor.href="#"+_value;anchor.dispatchEvent(evt)}else{_l.hash="#"+_value}}}else{_l.replace("#"+_value)}}else{if(_value!=_getHash()){if(_opts.history){_l.hash="#"+_ieLocal(_value,true)}else{_l.replace("#"+_value)}}}if((_msie&&_version<8)&&_opts.history){_st(_htmlWrite,50)}if(_safari){_st(function(){_silent=false},1)}else{_silent=false}};this.getPath=function(){var value=this.getValue();var value=SWFAddress.getValue();if(value.indexOf("?")!=-1){return value.split("?")[0]}else{if(value.indexOf("#")!=-1){return value.split("#")[0]}else{return value}}};this.getPathNames=function(){var path=this.getPath();var names=path.split("/");if(path.substr(0,1)=="/"||path.length==0){names.splice(0,1)}if(path.substr(path.length-1,1)=="/"){names.splice(names.length-1,1)}return names};this.getQueryString=function(){var value=this.getValue();var index=value.indexOf("?");return(index!=-1&&index<value.length)?value.substr(index+1):""};this.getParameter=function(param){var value=this.getValue();var index=value.indexOf("?");if(index!=-1){value=value.substr(index+1);var params=value.split("&");var p,i=params.length;while(i--){p=params[i].split("=");if(p[0]==param){return p[1]}}}};this.getParameterNames=function(){var value=this.getValue();var index=value.indexOf("?");var names=[];if(index!=-1){value=value.substr(index+1);if(value!=""&&value.indexOf("=")!=-1){var params=value.split("&");var i=0;while(i<params.length){names.push(params[i].split("=")[0]);i++}}}return names};this.onInit=null;this.onChange=null;(function(){var _args;if(typeof FlashObject!=UNDEFINED){SWFObject=FlashObject}if(typeof SWFObject!=UNDEFINED&&SWFObject.prototype&&SWFObject.prototype.write){var _s1=SWFObject.prototype.write;SWFObject.prototype.write=function(){_args=arguments;if(this.getAttribute("version").major<8){this.addVariable("$swfaddress",SWFAddress.getValue());((typeof _args[0]=="string")?document.getElementById(_args[0]):_args[0]).so=this}var success;if(success=_s1.apply(this,_args)){_ref.addId(this.getAttribute("id"))}return success}}if(typeof swfobject!=UNDEFINED){var _s2r=swfobject.registerObject;swfobject.registerObject=function(){_args=arguments;_s2r.apply(this,_args);_ref.addId(_args[0])};var _s2c=swfobject.createSWF;swfobject.createSWF=function(){_args=arguments;_s2c.apply(this,_args);_ref.addId(_args[0].id)};var _s2e=swfobject.embedSWF;swfobject.embedSWF=function(){_args=arguments;if(typeof _args[8]==UNDEFINED){_args[8]={}}if(typeof _args[8].id==UNDEFINED){_args[8].id=_args[1]}_s2e.apply(this,_args);_ref.addId(_args[8].id)}}if(typeof UFO!=UNDEFINED){var _u=UFO.create;UFO.create=function(){_args=arguments;_u.apply(this,_args);_ref.addId(_args[0].id)}}if(typeof AC_FL_RunContent!=UNDEFINED){var _a=AC_FL_RunContent;AC_FL_RunContent=function(){_args=arguments;_a.apply(this,_args);for(var i=0,l=_args.length;i<l;i++){if(_args[i]=="id"){_ref.addId(_args[i+1])}}}}})()};