/**
* ty_v10_core.js
* version 3.2
* 2011-12-08
* fix multiple animation timers
*/

var J=(function(){
var hasRun,D=document,W=window,T=true,F=false;

function $(a){return D.getElementById(a)}
function $$(a,b){return a.getElementsByTagName(b)}
function set(a,b){for(var o in b)a[o]=b[o];return a}
function time(){return new Date().getTime()}
function fn(a){return(0.5-Math.cos(a*Math.PI)/2)}
function stop(a){if(a){clearTimeout(a);a=null}}
function create(a,b,c,d){try{var o=(d||D).createElement(a);set(o,b);set(o.style,c);return o}
catch(e){alert(e+': '+a)}}

function setCss(o,a,v){
	switch(a){
		case'opacity':opacity(o,v);break;
		case'left':case'top':case'width':case'height':o.style[a]=v+'px';break;
		default:o.style[a]=v}
}

function opacity(o,v){set(o.style,{opacity:v,filter:'alpha(opacity='+v*100+')'})}
function getOpacity(a){if(a.style.opacity)return a.style.opacity*1;if(a.filters)return(a.filters.alpha)?(a.filters.alpha.opacity/100):1;return 1}
function wDim(){var d=D.documentElement;return{w:W.innerWidth||d.clientWidth,h:W.innerHeight||d.clientHeight,ox:W.pageXOffset||d.scrollLeft,oy:W.pageYOffset||d.scrollTop}}
function json(a){try{eval('var q=('+a+')');return q}
catch(e){return null}}
function text2xml(a){if(J.gecko)return new DOMParser().parseFromString(a,'text/xml');var o=new ActiveXObject('Microsoft.XMLDOM');o.loadXML(a);return o}
function xml2string(a){return(J.gecko)?new XMLSerializer().serializeToString(a):a.xml}
function addEvent(a,b,c){if(a.addEventListener)a.addEventListener(b,c,F)
else if(a.attachEvent)a.attachEvent('on'+b,c)}
function eventObj(e){return(e.target)?e.target:W.event.srcElement}
function stopEvent(e){if(e.preventDefault)e.preventDefault();return F}
function mid(o,a,b){o=o.split(a);return(o.length<2)?'':o[1].split(b)[0]}
function getCookie(a){return unescape(mid(D.cookie,a+'=',';'))}
function setCookie(a,b,c){var d=new Date(),v=a+'='+escape(b)+'; path=/;'
if(c){d.setDate(d.getDate()+c);v+='expires='+d.toUTCString()}
D.cookie=v}
function rmCookie(a){D.cookie=a+'=;path=/;expires=Thu, 01-Jan-70 00:00:01 GMT;'}
function validEmail(a){return/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(a)}
function isSet(a){return!(a===null||typeof a=='undefined')}
function ieVer(){{var a=/MSIE (\d+\.\d+);/.test(navigator.userAgent);return(a)?+RegExp.$1:null}}

function Arr(a){this.arr=a||[]}
set(Arr.prototype,{
push:function(){var a=arguments,n=a.length,i;for(i=0;i<n;i++)this.arr.push(a[i]);return this},
join:function(a){return this.arr.join(a)},
each:function(f,c){var o=this.arr,n=o.length,i;for(i=0;i<n;i++)f(c,o[i],i,o);return this},
filter:function(f,c){var o=this.arr,n=o.length,v=[],i;for(i=0;i<n;i++)if(f(c,o[i],i,o))v.push(o[i]);this.arr=v;return this},
map:function(f,c){var o=this.arr,n=o.length,i,v=[];for(i=0;i<n;i++)v.push(f(c,o[i],i,o));return v},indexOf:function(v,s){var o=this.arr,i;for(i=(s||0);i<o.length;i++){if(o[i]==v)return i}return-1}})

function Node(a){this.obj=a}
set(Node.prototype,{
set:function(a){set(this.obj,a);return this},
fill:function(a){return this.set({innerHTML:a})},
click:function(a){return this.set({onclick:a})},
hover:function(a,b){return this.set({onmouseover:a,onmouseout:b})},
css:function(a){set(this.obj.style,a);return this},
opacity:function(a){opacity(this.obj,a);return this},
expand:function(){return this.css({display:'block'})},
collapse:function(){return this.css({display:'none'})},
show:function(){return this.css({visibility:'visible'})},
hide:function(){return this.css({visibility:'hidden'})},
isEmpty:function(){return this.obj.innerHTML==''},
hasClass:function(a){return this.obj.className.indexOf(a)>-1},
setClass:function(a){return this.set({className:a})},
getStyle:function(){var o=this.obj;return o.currentStyle||D.defaultView.getComputedStyle(o,null)},
attr:function(a){return this.obj.getAttribute(a)},
data:function(a){var o=this.obj,v={},q;if(a)return o.getAttribute('data-'+a);J.array(o.attributes).each(function(c,a){if(a.nodeName.indexOf('data-')==0)c[a.nodeName.slice(5)]=a.nodeValue},v)
return v},
setData:function(a){for(var o in a)this.obj.setAttribute('data-'+o,a[o]);return this},
tags:function(a){var o=$$(this.obj,a);return(!!o)?new NodeList(o):null},
first:function(a){var o=$$(this.obj,a);return(!!o)?new Node(o[0]):null},
animate:function(a,tm,f){
	var o=this.obj,s1={left:o.offsetLeft,top:o.offsetTop,width:o.offsetWidth,height:o.offsetHeight,opacity:getOpacity(o)};
	stop(o.timer);
	set(o,{startTime:time(),end:tm||500,s1:s1,s2:a,step:function(){
		var t=time()-o.startTime,q,p;
		if(t>=o.end){for(p in o.s2)setCss(o,p,o.s2[p]);stop(o.timer);if(f)f()}
		else{q=fn(t/o.end);for(p in o.s2)setCss(o,p,o.s1[p]+(o.s2[p]-o.s1[p])*q)}}
	})
	o.timer=setInterval(o.step,10)
},
animClip:function(a,b,tm,f){
	var o=this.obj;
	set(o,{startTime:time(),end:tm||500,s1:a,s2:b,step:function(){
		var t=time()-o.startTime,q,p,n;
		if(t>=o.end){
			p=o.s2;
			setCss(o,'clip','rect('+p[0]+'px '+p[1]+'px '+p[2]+'px '+p[3]+'px)');
			stop(o.timer);
			if(f)f()
		}
		else{
			q=fn(t/o.end),n=[];
			for(p in o.s2)n[p]=o.s1[p]+(o.s2[p]-o.s1[p])*q;
			setCss(o,'clip','rect('+n[0]+'px '+n[1]+'px '+n[2]+'px '+n[3]+'px)')
		}
	}
	});
	o.timer=setInterval(o.step,10)
},
center:function(){var w=wDim(),o=this.obj,x,y;x=(w.w-o.offsetWidth)/2+w.ox;y=(w.h-o.offsetHeight)/2+w.oy;this.css({left:x+'px',top:y+'px'});return this},
content:function(a){return this.obj.innerHTML},
append:function(a,b,c){var o=a.obj?a.obj:create(a,b,c);this.obj.appendChild(o);return new Node(o)},
insertBefore:function(a,b,c){var o=create(a,b,c);this.obj.parentNode.insertBefore(o,this.obj);return new Node(o)},
insertAfter:function(a,b,c){var o=create(a,b,c);this.obj.parentNode.insertBefore(o,this.obj.nextSibling);return new Node(o)},
pos:function(){var x=0,y=0,a=this.obj;if(a.y)return{x:a.x,y:a.y};while(a!=null){x+=a.offsetLeft;y+=a.offsetTop;a=a.offsetParent};return{x:x,y:y}},
dim:function(){var o=this.obj,q;if(o.getBoundingClientRect){q=o.getBoundingClientRect();return{x:q.left,y:q.top,w:q.right,h:q.bottom}}
else return{x:o.offsetLeft,y:o.offsetTop,w:o.offsetWidth,h:o.offsetHeight}},
drop:function(){var h=this.obj.offsetHeight;return this.css({height:0}).show().animate({height:h})}
})

function NodeList(a){var v=this.arr=[];new Arr(a).each(function(c,a,i,o){c.push(new Node(a))},v)}
set(NodeList.prototype,{
each:function(f,c){new Arr(this.arr).each(f,c);return this},
filter:function(f,c){var o=this.arr,n=o.length,v=[];for(i=0;i<n;i++)if(f(c,o[i],i,o))v.push(o[i]);this.arr=v;return this},
first:function(){return this.arr[0]},item:function(a){return this.arr[a]},
last:function(){return this.arr[this.len-1]},
map:function(f){return new Arr(this.arr).map(f)}
})

function Form(a){this.obj=a.nodeName?a:a.obj?a.obj:$(a)}
set(Form.prototype,{
validate:function(a){
	var m=this,o;
	if(a)return m.test(this,m.obj.elements[a])
	o=new Arr(m.obj.elements);
	m.valid=T;
	o.each(m.test,m)
	return m.valid
},
test:function(c,a){
	var m=c,o=a,v,p=o.parentNode,q=a.getAttribute('type');
	if(o.required && o.value=='')v=F;
	else switch(q){
	case'email':v=m.validEmail(o.value);break;
	case'phone':v=m.validPhone(o.value);break;
	default:v=T
	}
	p.className=v?'':'error'
	c.valid=c.valid && v
	return v
},
reset:function(){
	var m=this;
	o=J(m.obj).tags('li').each(function(c,a){
		if(a.hasClass('error'))a.setClass('')
		var o=a.obj.childNodes[0];
		if(o.className=='error')o.className=('')
	})
},
data:function(){
	var m=this,o=new Arr(m.obj.elements),v={};
	o.each(function(c,a){
		var o=a,q=a.getAttribute('type');
		switch(q){
		case'checkbox':if(o.checked)c[o.name]=o.value;break;
		default:c[o.name]=o.value
		}
	},v);
	return v
},
val:function(a){
	var m=this,o=m.obj[a],i;
	if(o.length){
		switch(o[0].type){
		case'radio':
			for(i=0;i<o.length;i++){
				if(o[i].checked)return o[i].value
			}
			return ''
		default:return 'Error: no rule for '+o[0].type
		}
	}
	else return o.value
},
validEmail:function(a){return /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(a)},
validPhone:function(a){var o=a.match(/\d+/g),v=!!o&&o.join('').length>8;return v}
})

function Ajax(url){var m=this;m.url=url}
set(Ajax.prototype,{send:function(f,c){var m=this;return m.request('GET',m.url,null,f,c)},post:function(o,f,c){var m=this,v=[],p;for(p in o)v.push(p+'='+encodeURIComponent(o[p]));return m.request('POST',m.url,v.join('&'),f,c)},request:function(meth,url,data,func,arg){
	var isP=meth=='POST',async=!!func,r;
	r=W.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
	r.open(meth,url,async);
	r.setRequestHeader('X-REQUEST-METHOD','Ajax');
	if(isP)r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	if(async)r.onreadystatechange=function(){if(r.readyState==4){if(r.status==200||r.status==0){func(new AjaxResponse(r,arg))}}};r.send(data);return new AjaxResponse(r)}})
	
function AjaxResponse(o){set(this,{obj:o,text:o.responseText})}
set(AjaxResponse.prototype,{json:function(){return json(this.text)},xml:function(){return new XmlDoc(this.obj.responseXML)}})

function XmlDoc(o){
	var x=this.obj=(typeof o=='string')?text2xml(o):o;
	if(W.ActiveXObject)x.setProperty('SelectionLanguage','XPath')
}
set(XmlDoc.prototype,{
text:function(){return xml2string(this.obj)},
select:function(a){
	var x=W.XPathEvaluator,v=[],p;
	if(x){
		o=new x().evaluate(a,this.obj,null,0,null);
		p=o.iterateNext();
		while(p){v.push(p);p=o.iterateNext()}
	}
	else v=this.obj.selectNodes(a);
	switch(v.length){case 0:return null;case 1:return new XmlNode(v[0])}
	return new XmlNodeList(v)
}
})

function XmlNode(a){this.obj=a}
set(XmlNode.prototype,{
text:function(){return xml2string(this.obj)},
value:function(){return xml2string(this.obj.childNodes[0])},
select:function(a){return a}
})

function XmlNodeList(a){
	var v=this.arr=[];
	new Arr(a).each(function(c,a,i,o){c.push(new XmlNode(a))},v)
}
set(XmlNodeList.prototype,{
each:function(f,c){new Arr(this.arr).each(f,c);return this},
filter:function(f,c){var o=this.arr,n=o.length,v=[];for(i=0;i<n;i++)if(f(c,o[i],i,o))v.push(o[i]);this.arr=v;return this},
first:function(){return this.arr[0]},item:function(a){return this.arr[a]},
last:function(){return this.arr[this.len-1]},
map:function(f){return new Arr(this.arr).map(f)}
})

function J(a){var o=a.tagName?a:$(a);return o?new Node(o):null}
set(J,{
ie6:!!(ieVer()&&ieVer()<7),
gecko:navigator.product=='Gecko',
body:new Node($$(D,'body')[0]),
array:function(a){return new Arr(a)},
tags:function(a){var o=$$(D,a);return(o.length>0)?new NodeList(o):null},
ajax:function(url){return new Ajax(url)},
form:function(a){return new Form(a)},
json:function(a){return json(a)},
xml:function(a){return new XmlDoc(a)},
set:set,
create:function(a,b,c,d){return new Node(create(a,b,c,d))},
append:function(a,b,c,d){var o=b.tagName?b:create(b,c,d,a.ownerDocument);a.appendChild(o);return new Node(o)},
viewport:wDim,
between:function(a,b,c){return(a<b)?b:(a>c)?c:a},
stop:function(a){stop(a)},stopEvent:stopEvent,eventObj:eventObj,
mid:mid,
$:$,
$$:function(a,b){return $$(b||D,a)},
getCookie:getCookie,
setCookie:setCookie,
rmCookie:rmCookie,
timeStamp:time,
isSet:isSet,
query:function(a){
	var o=location.search.slice(1).split('&'),q={},v;
	for(i=0;i<o.length;i++){
		v=(o[i]+'=').split('=')[0];
		q[v]=decodeURIComponent(o[i].slice(v.length+1))
	};
	return a?q[a]:q
}
})

function initAll(){
	if(!hasRun){
		hasRun=T;
		try{D.execCommand('BackgroundImageCache',F,T)}catch(err){};
		for(var n in J)if(J[n].init)J[n].init();	
	}
}
if(D.addEventListener)D.addEventListener('DOMContentLoaded',initAll,F);
W.onload=initAll;
return J})();

function var_dump(a){var v=[],p;for(p in a)v.push(p+': '+a[p]);return v.join('\n')}
function doDebug(a){try{var o=J('debug').obj;o.value=a+'\n'+o.value}catch(err){}}

