/*
 *
 * Copyright (c) 2004-2005 by Zapatec, Inc.
 * http://www.zapatec.com
 * 1700 MLK Way, Berkeley, California,
 * 94709, U.S.A.
 * All rights reserved.
 *
 *
 */


if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.version='07-01';if(typeof Zapatec.zapatecPath=='undefined'){
	Zapatec.zapatecPath=function(){
		if(document.documentElement){
			var aTokens=document.documentElement.innerHTML.match(/<script[^>]+src="([^"]*zapatec(-core|-src)?.js[^"]*)"/i);if(aTokens&&aTokens.length>=2){
				aTokens=aTokens[1].split('?');aTokens=aTokens[0].split('/');if(Array.prototype.pop){
					aTokens.pop();
				}else{
					aTokens.length-=1;
				}
				return aTokens.length?aTokens.join('/')+'/':'';
			}
			}
		return'';
	}();
}
if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.Utils={};Zapatec.Utils.getAbsolutePos=function(el,scrollOff){
	var SL=0,ST=0;if(!scrollOff){
		var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)
			SL=el.scrollLeft;if(is_div&&el.scrollTop)
			ST=el.scrollTop;
	}
	var r={
		x:el.offsetLeft-SL,
		y:el.offsetTop-ST
		};if(el.offsetParent){
		var tmp=this.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;
	}
	return r;
};Zapatec.Utils.getElementOffset=function(oEl){
	var iLeft=iTop=iWidth=iHeight=0;var sTag;if(oEl.getBoundingClientRect){
		var oRect=oEl.getBoundingClientRect();iLeft=oRect.left;iTop=oRect.top;iWidth=oRect.right-iLeft;iHeight=oRect.bottom-iTop;iLeft+=Zapatec.Utils.getPageScrollX()-2;iTop+=Zapatec.Utils.getPageScrollY()-2;
	}else{
		iWidth=oEl.offsetWidth;iHeight=oEl.offsetHeight;var sPos=Zapatec.Utils.getStyleProperty(oEl,'position');if(sPos=='fixed'){
			iLeft=oEl.offsetLeft+Zapatec.Utils.getPageScrollX();iTop=oEl.offsetTop+Zapatec.Utils.getPageScrollY();
		}else if(sPos=='absolute'){
			while(oEl){
				sTag=oEl.tagName;if(sTag){
					sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'){
						iLeft+=parseInt(oEl.offsetLeft,10)||0;iTop+=parseInt(oEl.offsetTop,10)||0;
					}
					}
				oEl=oEl.offsetParent;sTag=oEl?oEl.tagName:null;if(sTag){
					sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'){
						iLeft-=oEl.scrollLeft;iTop-=oEl.scrollTop;
					}
					}
				}
			}else{
			var bMoz=(Zapatec.is_gecko&&!Zapatec.is_khtml);var fStyle=Zapatec.Utils.getStyleProperty;var oP=oEl;while(oP){
				if(bMoz){
					sTag=oP.tagName;if(sTag){
						sTag=sTag.toLowerCase();if(sTag=='body'&&!(fStyle(oP,'-moz-box-sizing')=='border-box')){
							iLeft+=parseInt(fStyle(oP,'border-left-width'));iTop+=parseInt(fStyle(oP,'border-top-width'));
						}
						}
					}
				iLeft+=parseInt(oP.offsetLeft,10)||0;iTop+=parseInt(oP.offsetTop,10)||0;oP=oP.offsetParent;
			}
			oP=oEl;while(oP.parentNode){
				oP=oP.parentNode;sTag=oP.tagName;if(sTag){
					sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'&&sTag!='tr'){
						iLeft-=oP.scrollLeft;iTop-=oP.scrollTop;
					}
					}
				}
			}
		}
	return{
		left:iLeft,
		top:iTop,
		x:iLeft,
		y:iTop,
		width:iWidth,
		height:iHeight
	};
};Zapatec.Utils.getElementOffsetScrollable=function(oEl){
	var oPos=Zapatec.Utils.getElementOffset(oEl);if(oEl.scrollLeft){
		oPos.left-=oEl.scrollLeft;oPos.x=oPos.left;
	}
	if(oEl.scrollTop){
		oPos.top-=oEl.scrollTop;oPos.y=oPos.top;
	}
	return oPos;
};Zapatec.Utils.fixBoxPosition=function(box,leave){
	var screenX=Zapatec.Utils.getPageScrollX();var screenY=Zapatec.Utils.getPageScrollY();var sizes=Zapatec.Utils.getWindowSize();leave=parseInt(leave,10)||0;if(box.x<screenX){
		box.x=screenX+leave;
	}
	if(box.y<screenY){
		box.y=screenY+leave;
	}
	if(box.x+box.width>screenX+sizes.width){
		box.x=screenX+sizes.width-box.width-leave;
	}
	if(box.y+box.height>screenY+sizes.height){
		box.y=screenY+sizes.height-box.height-leave;
	}
	};Zapatec.Utils.isRelated=function(el,evt){
	evt||(evt=window.event);var related=evt.relatedTarget;if(!related){
		var type=evt.type;if(type=="mouseover"){
			related=evt.fromElement;
		}else if(type=="mouseout"){
			related=evt.toElement;
		}
		}
	try{
		while(related){
			if(related==el){
				return true;
			}
			related=related.parentNode;
		}
		}catch(e){};return false;
};Zapatec.Utils.removeClass=function(el,className){
	if(!(el&&el.className)){
		return;
	}
	var cls=el.className.split(" ");var ar=[];for(var i=cls.length;i>0;){
		if(cls[--i]!=className){
			ar[ar.length]=cls[i];
		}
		}
	el.className=ar.join(" ");
};Zapatec.Utils.addClass=function(el,className){
	Zapatec.Utils.removeClass(el,className);el.className+=" "+className;
};Zapatec.Utils.replaceClass=function(el,className,withClassName){
	if(!Zapatec.isHtmlElement(el)||!className){
		return false;
	}
	el.className.replace(className,withClassName);
};Zapatec.Utils.getElement=function(ev){
	if(Zapatec.is_ie){
		return window.event.srcElement;
	}else{
		return ev.currentTarget;
	}
	};Zapatec.Utils.getTargetElement=function(ev){
	if(Zapatec.is_ie){
		return window.event.srcElement;
	}else{
		return ev.target;
	}
	};Zapatec.Utils.getMousePos=function(oEv){
	oEv||(oEv=window.event);var oPos={
		pageX:0,
		pageY:0,
		clientX:0,
		clientY:0
	};if(oEv){
		var bIsPageX=(typeof oEv.pageX!='undefined');var bIsClientX=(typeof oEv.clientX!='undefined');if(bIsPageX||bIsClientX){
			if(bIsPageX){
				oPos.pageX=oEv.pageX;oPos.pageY=oEv.pageY;
			}else{
				oPos.pageX=oEv.clientX+Zapatec.Utils.getPageScrollX();oPos.pageY=oEv.clientY+Zapatec.Utils.getPageScrollY();
			}
			if(bIsClientX){
				oPos.clientX=oEv.clientX;oPos.clientY=oEv.clientY;
			}else{
				oPos.clientX=oEv.pageX-Zapatec.Utils.getPageScrollX();oPos.clientY=oEv.pageY-Zapatec.Utils.getPageScrollY();
			}
			}
		}
	return oPos;
};Zapatec.Utils.stopEvent=function(ev){
	ev||(ev=window.event);if(ev){
		if(Zapatec.is_ie){
			ev.cancelBubble=true;ev.returnValue=false;
		}else{
			ev.preventDefault();ev.stopPropagation();
		}
		}
	return false;
};Zapatec.Utils.removeOnUnload=[];Zapatec.Utils.addEvent=function(oElement,sEvent,fListener,bUseCapture){
	if(oElement.addEventListener){
		if(!bUseCapture){
			bUseCapture=false;
		}
		oElement.addEventListener(sEvent,fListener,bUseCapture);
	}else if(oElement.attachEvent){
		oElement.detachEvent('on'+sEvent,fListener);oElement.attachEvent('on'+sEvent,fListener);if(bUseCapture){
			oElement.setCapture(false);
		}
		}
	Zapatec.Utils.removeOnUnload.push({
		'element':oElement,
		'event':sEvent,
		'listener':fListener,
		'capture':bUseCapture
	});
};Zapatec.Utils.removeEvent=function(oElement,sEvent,fListener,bUseCapture){
	if(oElement.removeEventListener){
		oElement.removeEventListener(sEvent,fListener,bUseCapture);
	}else if(oElement.detachEvent){
		oElement.detachEvent('on'+sEvent,fListener);
	}
	for(var iLis=Zapatec.Utils.removeOnUnload.length-1;iLis>=0;iLis--){
		var oParams=Zapatec.Utils.removeOnUnload[iLis];if(!oParams){
			continue;
		}
		if(oElement==oParams['element']&&sEvent==oParams['event']&&fListener==oParams['listener']&&bUseCapture==oParams['capture']){
			Zapatec.Utils.removeOnUnload[iLis]=null;Zapatec.Utils.removeEvent(oParams['element'],oParams['event'],oParams['listener'],oParams['capture']);
		}
		}
	};Zapatec.Utils.createElement=function(type,parent,selectable){
	var el=null;if(document.createElementNS)
		el=document.createElementNS("http://www.w3.org/1999/xhtml",type);else
		el=document.createElement(type);if(typeof parent!="undefined"&&parent!=null)
		parent.appendChild(el);if(!selectable){
		if(Zapatec.is_ie)
			el.setAttribute("unselectable",true);if(Zapatec.is_gecko)
			el.style.setProperty("-moz-user-select","none","");
	}
	return el;
};Zapatec.Utils.writeCookie=function(name,value,domain,path,exp_days){
	value=escape(value);var ck=name+"="+value,exp;if(domain)
		ck+=";domain="+domain;if(path)
		ck+=";path="+path;if(exp_days){
		exp=new Date();exp.setTime(exp_days*86400000+exp.getTime());ck+=";expires="+exp.toGMTString();
	}
	document.cookie=ck;
};Zapatec.Utils.getCookie=function(name){
	var pattern=name+"=";var tokenPos=0;while(tokenPos<document.cookie.length){
		var valuePos=tokenPos+pattern.length;if(document.cookie.substring(tokenPos,valuePos)==pattern){
			var endValuePos=document.cookie.indexOf(";",valuePos);if(endValuePos==-1){
				endValuePos=document.cookie.length;
			}
			return unescape(document.cookie.substring(valuePos,endValuePos));
		}
		tokenPos=document.cookie.indexOf(" ",tokenPos)+1;if(tokenPos==0){
			break;
		}
		}
	return null;
};Zapatec.Utils.makePref=function(obj){
	function stringify(val){
		if(typeof val=="object"&&!val)
			return"null";else if(typeof val=="number"||typeof val=="boolean")
			return val;else if(typeof val=="string")
			return'"'+val.replace(/\x22/,"\\22")+'"';else return null;
	};var txt="",i;for(i in obj)
		txt+=(txt?",'":"'")+i+"':"+stringify(obj[i]);return txt;
};Zapatec.Utils.loadPref=function(txt){
	var obj=null;try{
		eval("obj={"+txt+"}");
	}catch(e){}
	return obj;
};Zapatec.Utils.mergeObjects=function(dest,src){
	for(var i in src)
		dest[i]=src[i];
	};Zapatec.Utils.__wch_id=0;Zapatec.Utils.createWCH=function(oEl){
	if(!Zapatec.is_ie||Zapatec.is_ie5||Zapatec.is_ie7){
		return null;
	}
	var sId='WCH'+(++Zapatec.Utils.__wch_id);var sIframe=['<iframe id="',sId,'" scrolling="no" frameborder="0" style="z-index:0;position:absolute;visibility:hidden;filter:progid:DXImageTransform.Microsoft.alpha(style=0,opacity=0);border:0;top:0;left:0;width:0;height:0" src="javascript:false"></iframe>'].join('')
	if(!oEl){
		oEl=document.body;
	}
	if(Zapatec.windowLoaded){
		oEl.insertAdjacentHTML('beforeEnd',sIframe);
	}else{
		Zapatec.Utils.addEvent(window,'load',function(){
			oEl.insertAdjacentHTML('beforeEnd',sIframe);oEl=null;
		});
	}
	return document.getElementById(sId);
};Zapatec.Utils.setupWCH_el=function(f,el,el2){
	if(f){
		var pos=Zapatec.Utils.getAbsolutePos(el),X1=pos.x,Y1=pos.y,X2=X1+el.offsetWidth,Y2=Y1+el.offsetHeight;if(el2){
			var p2=Zapatec.Utils.getAbsolutePos(el2),XX1=p2.x,YY1=p2.y,XX2=XX1+el2.offsetWidth,YY2=YY1+el2.offsetHeight;if(X1>XX1)
				X1=XX1;if(Y1>YY1)
				Y1=YY1;if(X2<XX2)
				X2=XX2;if(Y2<YY2)
				Y2=YY2;
		}
		Zapatec.Utils.setupWCH(f,X1,Y1,X2-X1,Y2-Y1);
	}
	};Zapatec.Utils.setupWCH=function(f,x,y,w,h){
	if(f){
		var s=f.style;(typeof x!="undefined")&&(s.left=x+"px");(typeof y!="undefined")&&(s.top=y+"px");(typeof w!="undefined")&&(s.width=w+"px");(typeof h!="undefined")&&(s.height=h+"px");s.visibility="inherit";
	}
	};Zapatec.Utils.hideWCH=function(f){
	if(f)
		f.style.visibility="hidden";
};Zapatec.Utils.getPageScrollY=function(){
	if(window.pageYOffset){
		return window.pageYOffset;
	}else if(document.body&&document.body.scrollTop){
		return document.body.scrollTop;
	}else if(document.documentElement&&document.documentElement.scrollTop){
		return document.documentElement.scrollTop;
	}
	return 0;
};Zapatec.Utils.getPageScrollX=function(){
	if(window.pageXOffset){
		return window.pageXOffset;
	}else if(document.body&&document.body.scrollLeft){
		return document.body.scrollLeft;
	}else if(document.documentElement&&document.documentElement.scrollLeft){
		return document.documentElement.scrollLeft;
	}
	return 0;
};Zapatec.ScrollWithWindow={};Zapatec.ScrollWithWindow.list=[];Zapatec.ScrollWithWindow.stickiness=0.25;Zapatec.ScrollWithWindow.register=function(oElement){
	var iTop=oElement.offsetTop||0;var iLeft=oElement.offsetLeft||0;Zapatec.ScrollWithWindow.list.push({
		node:oElement,
		origTop:iTop,
		origLeft:iLeft
	});if(!Zapatec.ScrollWithWindow.interval){
		Zapatec.ScrollWithWindow.on();
	}
	};Zapatec.ScrollWithWindow.unregister=function(oElement){
	for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){
		var oItem=Zapatec.ScrollWithWindow.list[iItem];if(oElement==oItem.node){
			Zapatec.ScrollWithWindow.list.splice(iItem,1);if(!Zapatec.ScrollWithWindow.list.length){
				Zapatec.ScrollWithWindow.off();
			}
			return;
		}
		}
	};Zapatec.ScrollWithWindow.moveTop=function(iTop){
	Zapatec.ScrollWithWindow.top+=(iTop-Zapatec.ScrollWithWindow.top)*Zapatec.ScrollWithWindow.stickiness;if(Math.abs(Zapatec.ScrollWithWindow.top-iTop)<=1){
		Zapatec.ScrollWithWindow.top=iTop;
	}
	for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){
		var oItem=Zapatec.ScrollWithWindow.list[iItem];var oElement=oItem.node;oElement.style.position='absolute';if(!oItem.origTop&&oItem.origTop!==0){
			oItem.origTop=parseInt(oElement.style.top)||0;
		}
		oElement.style.top=oItem.origTop+
		parseInt(Zapatec.ScrollWithWindow.top)+'px';
	}
	};Zapatec.ScrollWithWindow.moveLeft=function(iLeft){
	Zapatec.ScrollWithWindow.left+=(iLeft-Zapatec.ScrollWithWindow.left)*Zapatec.ScrollWithWindow.stickiness;if(Math.abs(Zapatec.ScrollWithWindow.left-iLeft)<=1){
		Zapatec.ScrollWithWindow.left=iLeft;
	}
	for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){
		var oItem=Zapatec.ScrollWithWindow.list[iItem];var oElement=oItem.node;oElement.style.position='absolute';if(!oItem.origLeft&&oItem.origLeft!==0){
			oItem.origLeft=parseInt(oElement.style.left)||0;
		}
		oElement.style.left=oItem.origLeft+
		parseInt(Zapatec.ScrollWithWindow.left)+'px';
	}
	};Zapatec.ScrollWithWindow.cycle=function(){
	var iTop=Zapatec.Utils.getPageScrollY();var iLeft=Zapatec.Utils.getPageScrollX();if(iTop!=Zapatec.ScrollWithWindow.top){
		Zapatec.ScrollWithWindow.moveTop(iTop);
	}
	if(iLeft!=Zapatec.ScrollWithWindow.left){
		Zapatec.ScrollWithWindow.moveLeft(iLeft);
	}
	};Zapatec.ScrollWithWindow.on=function(){
	if(Zapatec.ScrollWithWindow.interval){
		return;
	}
	Zapatec.ScrollWithWindow.top=Zapatec.Utils.getPageScrollY();Zapatec.ScrollWithWindow.left=Zapatec.Utils.getPageScrollX();Zapatec.ScrollWithWindow.interval=setInterval(Zapatec.ScrollWithWindow.cycle,50);
};Zapatec.ScrollWithWindow.off=function(){
	if(!Zapatec.ScrollWithWindow.interval){
		return;
	}
	clearInterval(Zapatec.ScrollWithWindow.interval);Zapatec.ScrollWithWindow.interval=null;
};Zapatec.FixateOnScreen={};Zapatec.FixateOnScreen.getExpression=function(coord,direction){
	return"Zapatec.Utils.getPageScroll"+direction.toUpperCase()+"() + "+coord;
};Zapatec.FixateOnScreen.parseCoordinates=function(element){
	if(!this.isRegistered(element)){
		return false;
	}
	var x=0;var y=0;var style=element.style;if(Zapatec.is_ie&&!Zapatec.is_ie7){
		x=style.getExpression("left").split(" ");x=parseInt(x[x.length-1],10);y=style.getExpression("top").split(" ");y=parseInt(y[y.length-1],10);
	}else{
		x=parseInt(style.left,10);y=parseInt(style.top,10);
	}
	x+=Zapatec.Utils.getPageScrollX();y+=Zapatec.Utils.getPageScrollY();return{
		x:x,
		y:y
	};
};Zapatec.FixateOnScreen.correctCoordinates=function(x,y){
	position={
		x:x,
		y:y
	};if(position.x||position.x===0){
		position.x-=Zapatec.Utils.getPageScrollX();if(Zapatec.is_ie&&!Zapatec.is_ie7){
			position.x=this.getExpression(position.x,"X");;
		}else{
			position.x+="px";
		}
		}
	if(position.y||position.y===0){
		position.y-=Zapatec.Utils.getPageScrollY();if(Zapatec.is_ie&&!Zapatec.is_ie7){
			position.y=this.getExpression(position.y,"Y");;
		}else{
			position.y+="px";
		}
		}
	return position;
};Zapatec.FixateOnScreen.register=function(element){
	if(!Zapatec.isHtmlElement(element)){
		return false;
	}
	if(this.isRegistered(element)){
		return true;
	}
	var pos=Zapatec.Utils.getElementOffset(element);pos={
		x:parseInt(element.style.left,10)||pos.x,
		y:parseInt(element.style.top,10)||pos.y
		}
	pos=this.correctCoordinates(pos.x,pos.y);if(!Zapatec.is_ie||Zapatec.is_ie7){
		var restorer=element.restorer;if(!restorer||!restorer.getObject||restorer.getObject()!=element){
			restorer=element.restorer=new Zapatec.SRProp(element);
		}
		restorer.saveProp("style.position");element.style.position="fixed";element.style.left=pos.x;element.style.top=pos.y;
	}else{
		element.style.setExpression("left",pos.x);element.style.setExpression("top",pos.y);
	}
	element.zpFixed=true;return true;
};Zapatec.FixateOnScreen.unregister=function(element){
	if(!Zapatec.isHtmlElement(element)){
		return false;
	}
	var pos=this.parseCoordinates(element);if(pos===false){
		return true;
	}
	if(Zapatec.is_ie&&!Zapatec.is_ie7){
		element.style.removeExpression("left");element.style.removeExpression("top");
	}
	element.style.left=pos.x+"px";element.style.top=pos.y+"px";if(!Zapatec.is_ie||Zapatec.is_ie7){
		element.restorer.restoreProp("style.position",true);
	}
	element.zpFixed=false;return true;
};Zapatec.FixateOnScreen.isRegistered=function(element){
	if(element.zpFixed){
		return true;
	}
	return false;
};Zapatec.Utils.destroy=function(el){
	if(el&&el.parentNode)
		el.parentNode.removeChild(el);
};Zapatec.Utils.newCenteredWindow=function(url,windowName,width,height,scrollbars){
	var leftPosition=0;var topPosition=0;if(screen.width)
		leftPosition=(screen.width-width)/2;if(screen.height)
		topPosition=(screen.height-height)/2;var winArgs='height='+height+',width='+width+',top='+topPosition+',left='+leftPosition+',scrollbars='+scrollbars+',resizable';var win=window.open(url,windowName,winArgs);return win;
};Zapatec.Utils.getWindowSize=function(){
	var iWidth=0;var iHeight=0;if(Zapatec.is_opera){
		iWidth=document.body.clientWidth||0;iHeight=document.body.clientHeight||0;
	}else if(Zapatec.is_khtml){
		iWidth=window.innerWidth||0;iHeight=window.innerHeight||0;
	}else if(document.compatMode&&document.compatMode=='CSS1Compat'){
		iWidth=document.documentElement.clientWidth||0;iHeight=document.documentElement.clientHeight||0;
	}else{
		iWidth=document.body.clientWidth||0;iHeight=document.body.clientHeight||0;
	}
	return{
		width:iWidth,
		height:iHeight
	};
};Zapatec.Utils.selectOption=function(sel,val,call_default){
	var a=sel.options,i,o;for(i=a.length;--i>=0;){
		o=a[i];o.selected=(o.value==val);
	}
	sel.value=val;if(call_default){
		if(typeof sel.onchange=="function")
			sel.onchange();else if(typeof sel.onchange=="string")
			eval(sel.onchange);
	}
	};Zapatec.Utils.getNextSibling=function(el,tag,alternateTag){
	el=el.nextSibling;if(!tag){
		return el;
	}
	tag=tag.toLowerCase();if(alternateTag)alternateTag=alternateTag.toLowerCase();while(el){
		if(el.nodeType==1&&(el.tagName.toLowerCase()==tag||(alternateTag&&el.tagName.toLowerCase()==alternateTag))){
			return el;
		}
		el=el.nextSibling;
	}
	return el;
};Zapatec.Utils.getPreviousSibling=function(el,tag,alternateTag){
	el=el.previousSibling;if(!tag){
		return el;
	}
	tag=tag.toLowerCase();if(alternateTag)alternateTag=alternateTag.toLowerCase();while(el){
		if(el.nodeType==1&&(el.tagName.toLowerCase()==tag||(alternateTag&&el.tagName.toLowerCase()==alternateTag))){
			return el;
		}
		el=el.previousSibling;
	}
	return el;
};Zapatec.Utils.getFirstChild=function(el,tag,alternateTag){
	if(!el){
		return null;
	}
	el=el.firstChild;if(!el){
		return null;
	}
	if(!tag){
		return el;
	}
	tag=tag.toLowerCase();if(el.nodeType==1){
		if(el.tagName.toLowerCase()==tag){
			return el;
		}else if(alternateTag){
			alternateTag=alternateTag.toLowerCase();if(el.tagName.toLowerCase()==alternateTag){
				return el;
			}
			}
		}
	return Zapatec.Utils.getNextSibling(el,tag,alternateTag);
};Zapatec.Utils.getLastChild=function(el,tag,alternateTag){
	if(!el){
		return null;
	}
	el=el.lastChild;if(!el){
		return null;
	}
	if(!tag){
		return el;
	}
	tag=tag.toLowerCase();if(el.nodeType==1){
		if(el.tagName.toLowerCase()==tag){
			return el;
		}else if(alternateTag){
			alternateTag=alternateTag.toLowerCase();if(el.tagName.toLowerCase()==alternateTag){
				return el;
			}
			}
		}
	return Zapatec.Utils.getPreviousSibling(el,tag,alternateTag);
};Zapatec.Utils.getChildText=function(objNode){
	if(objNode==null){
		return'';
	}
	var arrText=[];var objChild=objNode.firstChild;while(objChild!=null){
		if(objChild.nodeType==3){
			arrText.push(objChild.data);
		}
		objChild=objChild.nextSibling;
	}
	return arrText.join(' ');
};Zapatec.Utils.insertAfter=function(oldNode,newNode){
	if(oldNode.nextSibling){
		oldNode.parentNode.insertBefore(newNode,oldNode.nextSibling);
	}else{
		oldNode.parentNode.appendChild(newNode);
	}
	}
Zapatec.Utils._ids={};Zapatec.Utils.generateID=function(code,id){
	if(typeof id=="undefined"){
		if(typeof this._ids[code]=="undefined")
			this._ids[code]=0;id=++this._ids[code];
	}
	return"zapatec-"+code+"-"+id;
};Zapatec.Utils.addTooltip=function(target,tooltip){
	return new Zapatec.Tooltip({
		target:target,
		tooltip:tooltip
	});
};Zapatec.isLite=true;Zapatec.Utils.checkLinks=function(){
	var anchors=document.getElementsByTagName('A');for(var ii=0;ii<anchors.length;ii++){
		if(Zapatec.Utils.checkLink(anchors[ii])){
			return true;
		}
		}
	return false;
}
Zapatec.Utils.checkLink=function(lnk){
	if(!lnk){
		return false;
	}
	if(!/^https?:\/\/((dev|www)\.)?zapatec\.com/i.test(lnk.href)){
		return false;
	}
	var textContent=""
	for(var ii=0;ii<lnk.childNodes.length;ii++){
		if(lnk.childNodes[ii].nodeType==3){
			textContent+=lnk.childNodes[ii].nodeValue;
		}
		}
	if(textContent.length<4){
		return false;
	}
	var parent=lnk;while(parent&&parent.nodeName.toLowerCase()!="html"){
		if(Zapatec.Utils.getStyleProperty(parent,"display")=="none"||Zapatec.Utils.getStyleProperty(parent,"visibility")=="hidden"||Zapatec.Utils.getStyleProperty(parent,"opacity")=="0"||Zapatec.Utils.getStyleProperty(parent,"-moz-opacity")=="0"||/alpha\(opacity=0\)/i.test(Zapatec.Utils.getStyleProperty(parent,"filter"))){
			return false;
		}
		parent=parent.parentNode;
	}
	var coords=Zapatec.Utils.getElementOffset(lnk);if(coords.left<0||coords.top<0){
		return false;
	}
	return true;
}
Zapatec.Utils.checkActivation=function(){
	if(!Zapatec.isLite)return true;var arrProducts=[]
	add_product=function(script,webdir_in,name_in)
	{
		arrProducts[script]={
			webdir:webdir_in,
			name:name_in,
			bActive:false
		}
		}
	add_product('calendar.js','prod1','Calendar')
	add_product('zpmenu.js','menu','Menu')
	add_product('tree.js','prod3','Tree')
	add_product('form.js','forms','Forms')
	add_product('effects.js','effects','Effects')
	add_product('hoverer.js','effects','Effects - Hoverer')
	add_product('slideshow.js','effects','Effects - Slideshow')
	add_product('zpgrid.js','grid','Grid')
	add_product('slider.js','slider','Slider')
	add_product('zptabs.js','tabs','Tabs')
	add_product('zptime.js','time','Time')
	add_product('window.js','windows','Window')
	var strName,arrName,i
	var bProduct=false
	var scripts=document.getElementsByTagName('script');for(i=0;i<scripts.length;i++)
	{
		if(/wizard.js/i.test(scripts[i].src))
			return true
		arrName=scripts[i].src.split('/')
		if(arrName.length==0)
			strName=scripts[i]
		else
			strName=arrName[arrName.length-1]
		strName=strName.toLowerCase()
		if(typeof arrProducts[strName]!='undefined')
		{
			bProduct=true
			arrProducts[strName].bActive=true
			}
		}
	if(!bProduct||Zapatec.Utils.checkLinks()){
		return true;
	}
	var strMsg='You are using the Free version of the Zapatec Software.\n'+'While using the Free version, a link to www.zapatec.com in this page is required.'
	for(i in arrProducts)
		if(arrProducts[i].bActive==true)
			strMsg+='\nTo purchase the Zapatec '+arrProducts[i].name+' visit www.zapatec.com/website/main/products/'+arrProducts[i].webdir+'/'
	alert(strMsg)
	return false;
}
Zapatec.Utils.clone=function(oSrc){
	if(typeof oSrc=='object'&&oSrc){
		var oClone=new oSrc.constructor();var fClone=Zapatec.Utils.clone;for(var sProp in oSrc){
			oClone[sProp]=fClone(oSrc[sProp]);
		}
		return oClone;
	}
	return oSrc;
};Zapatec.is_opera=/opera/i.test(navigator.userAgent);Zapatec.is_ie=(/msie/i.test(navigator.userAgent)&&!Zapatec.is_opera);Zapatec.is_ie5=(Zapatec.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Zapatec.is_ie7=(Zapatec.is_ie&&/msie 7\.0/i.test(navigator.userAgent));Zapatec.is_mac_ie=(/msie.*mac/i.test(navigator.userAgent)&&!Zapatec.is_opera);Zapatec.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Zapatec.is_konqueror=/Konqueror/i.test(navigator.userAgent);Zapatec.is_gecko=/Gecko/i.test(navigator.userAgent);Zapatec.is_webkit=/WebKit/i.test(navigator.userAgent);Zapatec.webkitVersion=Zapatec.is_webkit?parseInt(navigator.userAgent.replace(/.+WebKit\/([0-9]+)\..+/,"$1")):-1;if(!Object.prototype.hasOwnProperty){
	Object.prototype.hasOwnProperty=function(strProperty){
		try{
			var objPrototype=this.constructor.prototype;while(objPrototype){
				if(objPrototype[strProperty]==this[strProperty]){
					return false;
				}
				objPrototype=objPrototype.prototype;
			}
			}catch(objException){}
		return true;
	};
}
if(!Function.prototype.call){
	Function.prototype.call=function(){
		var objThis=arguments[0];objThis._this_func=this;var arrArgs=[];for(var iArg=1;iArg<arguments.length;iArg++){
			arrArgs[arrArgs.length]='arguments['+iArg+']';
		}
		var ret=eval('objThis._this_func('+arrArgs.join(',')+')');objThis._this_func=null;return ret;
	};
}
if(!Function.prototype.apply){
	Function.prototype.apply=function(){
		var objThis=arguments[0];var objArgs=arguments[1];objThis._this_func=this;var arrArgs=[];if(objArgs){
			for(var iArg=0;iArg<objArgs.length;iArg++){
				arrArgs[arrArgs.length]='objArgs['+iArg+']';
			}
			}
		var ret=eval('objThis._this_func('+arrArgs.join(',')+')');objThis._this_func=null;return ret;
	};
}
if(!Array.prototype.pop){
	Array.prototype.pop=function(){
		var last;if(this.length){
			last=this[this.length-1];this.length-=1;
		}
		return last;
	};
}
if(!Array.prototype.push){
	Array.prototype.push=function(){
		for(var i=0;i<arguments.length;i++){
			this[this.length]=arguments[i];
		}
		return this.length;
	};
}
if(!Array.prototype.shift){
	Array.prototype.shift=function(){
		var first;if(this.length){
			first=this[0];for(var i=0;i<this.length-1;i++){
				this[i]=this[i+1];
			}
			this.length-=1;
		}
		return first;
	};
}
if(!Array.prototype.unshift){
	Array.prototype.unshift=function(){
		if(arguments.length){
			var i,len=arguments.length;for(i=this.length+len-1;i>=len;i--){
				this[i]=this[i-len];
			}
			for(i=0;i<len;i++){
				this[i]=arguments[i];
			}
			}
		return this.length;
	};
}
if(!Array.prototype.splice){
	Array.prototype.splice=function(index,howMany){
		var elements=[],removed=[],i;for(i=2;i<arguments.length;i++){
			elements.push(arguments[i]);
		}
		for(i=index;(i<index+howMany)&&(i<this.length);i++){
			removed.push(this[i]);
		}
		for(i=index+howMany;i<this.length;i++){
			this[i-howMany]=this[i];
		}
		this.length-=removed.length;for(i=this.length+elements.length-1;i>=index+elements.length;i--){
			this[i]=this[i-elements.length];
		}
		for(i=0;i<elements.length;i++){
			this[index+i]=elements[i];
		}
		return removed;
	};
}
Zapatec.Utils.arrIndexOf=function(aArr,vSearchEl,iFromInd){
	if(!(aArr instanceof Array)){
		return-1;
	}
	if(Array.prototype.indexOf){
		return aArr.indexOf(vSearchEl,iFromInd);
	}
	if(!iFromInd){
		iFromInd=0;
	}
	var iEls=aArr.length;for(var iEl=iFromInd;iEl<iEls;iEl++){
		if(aArr[iEl]==vSearchEl){
			return iEl;
		}
		}
	return-1;
};Zapatec.Log=function(objArgs){
	if(!objArgs){
		return;
	}
	var strMessage=objArgs.description;if(objArgs.severity){
		strMessage=objArgs.severity+':\n'+strMessage;
	}
	if(objArgs.type!="warning"){
		alert(strMessage);
	}
	};Zapatec.Utils.Array={};Zapatec.Utils.Array.insertBefore=function(arr,el,key,nextKey){
	var tmp=new Array();for(var i in arr){
		if(i==nextKey){
			if(key){
				tmp[key]=el;
			}else{
				tmp.push(el);
			}
			}
		tmp[i]=arr[i];
	}
	return tmp;
}
Zapatec.inherit=function(oSubClass,oSuperClass,oArg){
	var Inheritance=function(){};Inheritance.prototype=oSuperClass.prototype;oSubClass.prototype=new Inheritance();oSubClass.prototype.constructor=oSubClass;oSubClass.SUPERconstructor=oSuperClass;oSubClass.SUPERclass=oSuperClass.prototype;if(typeof oSuperClass.path!='undefined'){
		if(oArg&&oArg.keepPath){
			oSubClass.path=oSuperClass.path;
		}else{
			oSubClass.path=Zapatec.getPath(oSubClass.id);
		}
		}
	};Zapatec.getPath=function(sId){
	var sSrc;if(typeof sId=='string'){
		var oScript=document.getElementById(sId);if(oScript){
			sSrc=oScript.getAttribute('src');
		}
		}
	if(!sSrc){
		if(typeof Zapatec.lastLoadedModule=='string'){
			return Zapatec.lastLoadedModule;
		}
		if(document.documentElement){
			var sHtml=document.documentElement.innerHTML;var aMatch=sHtml.match(/<script[^>]+src=[^>]+>/gi);if(aMatch&&aMatch.length){
				sHtml=aMatch[aMatch.length-1];aMatch=sHtml.match(/src="([^"]+)/i);if(aMatch&&aMatch.length==2){
					sSrc=aMatch[1];
				}
				}
			}
		if(!sSrc){
			return'';
		}
		}
	sSrc=sSrc.replace(/\\/g,'/');var aTokens=sSrc.split('?');aTokens=aTokens[0].split('/');aTokens=aTokens.slice(0,-1);if(!aTokens.length){
		return'';
	}
	return aTokens.join('/')+'/';
};Zapatec.Utils.setWindowEvent=function(oEvent){
	if(oEvent){
		window.event=oEvent;
	}
	};Zapatec.Utils.emulateWindowEvent=function(aEvents){
	if(document.addEventListener){
		var iEvents=aEvents.length;var oUtils=Zapatec.Utils;var iEvent;for(iEvent=0;iEvent<iEvents;iEvent++){
			document.addEventListener(aEvents[iEvent],oUtils.setWindowEvent,true);
		}
		}
	};Zapatec.windowLoaded=typeof(document.readyState)!='undefined'?(document.readyState=='loaded'||document.readyState=='complete'):document.getElementsByTagName!=null&&typeof(document.getElementsByTagName('body')[0])!='undefined';Zapatec.Utils.addEvent(window,"load",function(){
	Zapatec.windowLoaded=true;
});Zapatec.Utils.warnUnload=function(msg,win){
	Zapatec.Utils.warnUnloadFlag=true;if(typeof(msg)!="string"){
		msg="All your changes will be lost.";
	}
	if(typeof(win)=='undefined'){
		win=window;
	}
	Zapatec.Utils.addEvent(win,'beforeunload',function(ev){
		if(Zapatec.Utils.warnUnloadFlag!=true){
			return true;
		}
		if(typeof(ev)=='undefined'){
			ev=window.event;
		}
		ev.returnValue=msg;return false;
	});
}
Zapatec.Utils.unwarnUnload=function(msg,win){
	Zapatec.Utils.warnUnloadFlag=false;
}
Zapatec.Utils.warnUnloadFlag=false;Zapatec.Utils.getMaxZindex=function(){
	if(window.opera||Zapatec.is_khtml){
		return 2147483583;
	}else if(Zapatec.is_ie){
		return 2147483647;
	}else{
		return 10737418239;
	}
	};Zapatec.Utils.correctCssLength=function(val){
	if(typeof val=='undefined'||(typeof val=='object'&&!val)){
		return'auto';
	}
	val+='';if(!val.length){
		return'auto';
	}
	if(/\d$/.test(val)){
		val+='px';
	}
	return val;
};Zapatec.Utils.destroyOnUnload=[];Zapatec.Utils.addDestroyOnUnload=function(objElement,strProperty){
	Zapatec.Utils.destroyOnUnload.push([objElement,strProperty]);
};Zapatec.Utils.createProperty=function(objElement,strProperty,val){
	objElement[strProperty]=val;Zapatec.Utils.addDestroyOnUnload(objElement,strProperty);
};Zapatec.Utils.addEvent(window,'unload',function(){
	for(var iObj=Zapatec.Utils.destroyOnUnload.length-1;iObj>=0;iObj--){
		var objDestroy=Zapatec.Utils.destroyOnUnload[iObj];objDestroy[0][objDestroy[1]]=null;objDestroy[0]=null;
	}
	for(var iLis=Zapatec.Utils.removeOnUnload.length-1;iLis>=0;iLis--){
		var oParams=Zapatec.Utils.removeOnUnload[iLis];if(!oParams){
			continue;
		}
		Zapatec.Utils.removeOnUnload[iLis]=null;Zapatec.Utils.removeEvent(oParams['element'],oParams['event'],oParams['listener'],oParams['capture']);
	}
	});Zapatec.Utils.htmlEncode=function(str){
	str=str.replace(/&/ig,"&amp;");str=str.replace(/</ig,"&lt;");str=str.replace(/>/ig,"&gt;");str=str.replace(/\x22/ig,"&quot;");return str;
};Zapatec.Utils.applyStyle=function(elRef,style){
	if(typeof(elRef)=='string'){
		elRef=document.getElementById(elRef);
	}
	if(elRef==null||style==null||elRef.style==null){
		return null;
	}
	if(Zapatec.is_opera){
		var pairs=style.split(";");for(var ii=0;ii<pairs.length;ii++){
			var kv=pairs[ii].split(":");if(!kv[1]){
				continue;
			}
			var value=kv[1].replace(/^\s*/,'').replace(/\s*$/,'');var key="";for(var jj=0;jj<kv[0].length;jj++){
				if(kv[0].charAt(jj)=="-"){
					jj++;if(jj<kv[0].length){
						key+=kv[0].charAt(jj).toUpperCase();
					}
					continue;
				}
				key+=kv[0].charAt(jj);
			}
			switch(key){
				case"float":key="cssFloat";break;
			}
			try{
				elRef.style[key]=value;
			}catch(e){}
			}
		}else{
		elRef.style.cssText=style;
	}
	return true;
}
Zapatec.Utils.getStyleProperty=function(oEl,sPr){
	var oDV=document.defaultView;if(oDV&&oDV.getComputedStyle){
		var oCS=oDV.getComputedStyle(oEl,'');if(oCS){
			sPr=sPr.replace(/([A-Z])/g,'-$1').toLowerCase();return oCS.getPropertyValue(sPr);
		}
		}else if(oEl.currentStyle){
		return oEl.currentStyle[sPr];
	}
	return oEl.style[sPr];
};Zapatec.Utils.getPrecision=function(dFloat){
	return(dFloat+'').replace(/^-?\d*\.*/,'').length;
};Zapatec.Utils.setPrecision=function(dFloat,iPrecision){
	dFloat*=1;if(dFloat.toFixed){
		return dFloat.toFixed(iPrecision)*1;
	}
	var iPow=Math.pow(10,iPrecision);return parseInt(dFloat*iPow,10)/iPow;
};Zapatec.Utils.setPrecisionString=function(dFloat,iPrecision){
	var sFloat=Zapatec.Utils.setPrecision(dFloat,iPrecision)+'';var iOldPrecision=Zapatec.Utils.getPrecision(sFloat);var iZeros=iPrecision-iOldPrecision;if(iZeros){
		if(!iOldPrecision){
			sFloat+='.';
		}
		for(var iZero=0;iZero<iZeros;iZero++){
			sFloat+='0';
		}
		}
	return sFloat;
};Zapatec.Utils.createNestedHash=function(parent,keys,value){
	if(parent==null||keys==null){
		return null;
	}
	var tmp=parent;for(var ii=0;ii<keys.length;ii++){
		if(typeof(tmp[keys[ii]])=='undefined'){
			tmp[keys[ii]]={};
		}
		if(ii==keys.length-1&&typeof(value)!='undefined'){
			tmp[keys[ii]]=value;
		}
		tmp=tmp[keys[ii]];
	}
	}
Zapatec.implement=function(classOrObject,interfaceStr){
	if(typeof interfaceStr!="string"){
		return false;
	}
	if(typeof classOrObject=="function"){
		classOrObject=classOrObject.prototype;
	}
	if(!classOrObject||typeof classOrObject!="object"){
		return false;
	}
	var interfaceObj=window;var objs=interfaceStr.split(".");try{
		for(var i=0;i<objs.length;++i){
			interfaceObj=interfaceObj[objs[i]];
		}
		}catch(e){
		return false;
	}
	if(typeof classOrObject.interfaces!="object"){
		classOrObject.interfaces={};classOrObject.interfaces[interfaceStr]=true;
	}else if(classOrObject.interfaces[interfaceStr]!==true){
		classOrObject.interfaces=Zapatec.Utils.clone(classOrObject.interfaces);classOrObject.interfaces[interfaceStr]=true;
	}else{
		return true;
	}
	for(var iProp in interfaceObj){
		classOrObject[iProp]=interfaceObj[iProp];
	}
	classOrObject.hasInterface=function(interfaceStr){
		if(this.interfaces[interfaceStr]===true){
			return true;
		}
		return false;
	};classOrObject.requireInterface=function(interfaceStr){
		if(!this.hasInterface(interfaceStr)){
			Zapatec.Log({
				description:"The object with ID '"+this.id+"' has no "+interfaceStr+" interface!"
				});return false;
		}
		return true;
	};interfaceObj.setNamedProperty=classOrObject.setNamedProperty=function(name,val){
		this[name]=val;
	};interfaceObj.getNamedProperty=classOrObject.getNamedProperty=function(name){
		return this[name];
	};return true;
};Zapatec.Utils.getCharFromEvent=function(evt){
	if(!evt){
		evt=window.event;
	}
	var response={};if(Zapatec.is_gecko&&!Zapatec.is_khtml&&evt.type!="keydown"&&evt.type!="keyup"){
		if(evt.charCode){
			response.chr=String.fromCharCode(evt.charCode);
		}else{
			response.charCode=evt.keyCode;
		}
		}else{
		response.charCode=evt.keyCode||evt.which;response.chr=String.fromCharCode(response.charCode);
	}
	if(Zapatec.is_opera&&response.charCode==0){
		response.charCode=null;response.chr=null;
	}
	if(Zapatec.is_khtml&&response.charCode==63272){
		response.charCode=46;response.chr=null;
	}
	return response;
}
Zapatec.Utils.convertHTML2DOM=function(txt){
	var el=document.createElement("div");el.innerHTML=txt;var currEl=el.firstChild;while(!currEl.nodeType||currEl.nodeType!=1){
		currEl=currEl.nextSibling;
	}
	Zapatec.Utils.destroy(currEl);return currEl;
};Zapatec.Utils.escapeRegExp=function(s){
	return s.replace(/([.*+?^${}()|[\]\/\\])/g,'\\$1');
};if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.EventDriven=function(){};Zapatec.EventDriven.prototype.init=function(){
	this.events={};
};Zapatec.EventDriven.prototype.addEventListener=function(sEv,fLsnr){
	if(typeof fLsnr!="function"){
		return false;
	}
	var oE=this.events;if(!oE[sEv]){
		oE[sEv]={
			listeners:[]
		};
	}else{
		this.removeEventListener(sEv,fLsnr);
	}
	oE[sEv].listeners.push(fLsnr);
};Zapatec.EventDriven.prototype.unshiftEventListener=function(sEv,fLsnr){
	if(typeof fLsnr!="function"){
		return false;
	}
	var oE=this.events;if(!oE[sEv]){
		oE[sEv]={
			listeners:[]
		};
	}else{
		this.removeEventListener(sEv,fLsnr);
	}
	oE[sEv].listeners.unshift(fLsnr);
};Zapatec.EventDriven.prototype.removeEventListener=function(sEv,fLsnr){
	var oE=this.events;if(!oE[sEv]){
		return 0;
	}
	var aL=oE[sEv].listeners;var iRemoved=0;for(var iL=aL.length-1;iL>=0;iL--){
		if(aL[iL]==fLsnr){
			aL.splice(iL,1);iRemoved++;
		}
		}
	return iRemoved;
};Zapatec.EventDriven.prototype.getEventListeners=function(sEv){
	var oE=this.events;if(!oE[sEv]){
		return[];
	}
	return oE[sEv].listeners;
};Zapatec.EventDriven.prototype.isEventListener=function(sEv,fLsnr){
	var oE=this.events;if(!oE[sEv]){
		return false;
	}
	var aL=oE[sEv].listeners;for(var iL=aL.length-1;iL>=0;iL--){
		if(aL[iL]==fLsnr){
			return true;
		}
		}
	return false;
};Zapatec.EventDriven.prototype.isEvent=function(sEv){
	if(this.events[sEv]){
		return true;
	}
	return false;
};Zapatec.EventDriven.prototype.removeEvent=function(sEv){
	var oE=this.events;if(oE[sEv]){
		var undef;oE[sEv]=undef;
	}
	};Zapatec.EventDriven.prototype.fireEvent=function(sEv){
	var oE=this.events;if(!oE[sEv]){
		return;
	}
	var aL=oE[sEv].listeners.slice();var iLs=aL.length;var aArgs;for(var iL=0;iLs--;iL++){
		aArgs=[].slice.call(arguments,1);aL[iL].apply(this,aArgs);
	}
	};Zapatec.EventDriven.events={};Zapatec.EventDriven.addEventListener=function(sEv,fLsnr){
	if(typeof fLsnr!="function"){
		return false;
	}
	var oED=Zapatec.EventDriven;var oE=oED.events;if(!oE[sEv]){
		oE[sEv]={
			listeners:[]
		};
	}else{
		oED.removeEventListener(sEv,fLsnr);
	}
	oE[sEv].listeners.push(fLsnr);
};Zapatec.EventDriven.unshiftEventListener=function(sEv,fLsnr){
	if(typeof fLsnr!="function"){
		return false;
	}
	var oED=Zapatec.EventDriven;var oE=oED.events;if(!oE[sEv]){
		oE[sEv]={
			listeners:[]
		};
	}else{
		oED.removeEventListener(sEv,fLsnr);
	}
	oE[sEv].listeners.unshift(fLsnr);
};Zapatec.EventDriven.removeEventListener=function(sEv,fLsnr){
	var oE=Zapatec.EventDriven.events;if(!oE[sEv]){
		return 0;
	}
	var aL=oE[sEv].listeners;var iRemoved=0;for(var iL=aL.length-1;iL>=0;iL--){
		if(aL[iL]==fLsnr){
			aL.splice(iL,1);iRemoved++;
		}
		}
	return iRemoved;
};Zapatec.EventDriven.getEventListeners=function(sEv){
	var oE=Zapatec.EventDriven.events;if(!oE[sEv]){
		return[];
	}
	return oE[sEv].listeners;
};Zapatec.EventDriven.isEventListener=function(sEv,fLsnr){
	var oE=Zapatec.EventDriven.events;if(!oE[sEv]){
		return false;
	}
	var aL=oE[sEv].listeners;for(var iL=aL.length-1;iL>=0;iL--){
		if(aL[iL]==fLsnr){
			return true;
		}
		}
	return false;
};Zapatec.EventDriven.isEvent=function(sEv){
	if(Zapatec.EventDriven.events[sEv]){
		return true;
	}
	return false;
};Zapatec.EventDriven.removeEvent=function(sEv){
	var oE=Zapatec.EventDriven.events;if(oE[sEv]){
		var undef;oE[sEv]=undef;
	}
	};Zapatec.EventDriven.fireEvent=function(sEv){
	var oE=Zapatec.EventDriven.events;if(!oE[sEv]){
		return;
	}
	var aL=oE[sEv].listeners.slice();var iLs=aL.length;var aArgs;for(var iL=0;iLs--;iL++){
		aArgs=[].slice.call(arguments,1);aL[iL].apply(aL[iL],aArgs);
	}
	};Zapatec.ImagePreloader=function(objArgs){
	this.job=null;this.image=null;if(arguments.length>0)this.init(objArgs);
};Zapatec.ImagePreloader.prototype.init=function(objArgs){
	if(!objArgs||!objArgs.job){
		return;
	}
	this.job=objArgs.job;this.image=new Image();this.job.images.push(this.image);var objPreloader=this;this.image.onload=function(){
		objPreloader.job.loadedUrls.push(objArgs.url);setTimeout(function(){
			objPreloader.onLoad();
		},0);
	};this.image.onerror=function(){
		objPreloader.job.invalidUrls.push(objArgs.url);objPreloader.onLoad();
	};this.image.onabort=function(){
		objPreloader.job.abortedUrls.push(objArgs.url);objPreloader.onLoad();
	};this.image.src=objArgs.url;if(typeof objArgs.timeout=='number'){
		setTimeout(function(){
			if(objPreloader.job){
				if(objPreloader.image.complete){
					objPreloader.job.loadedUrls.push(objArgs.url);
				}else{
					objPreloader.job.abortedUrls.push(objArgs.url);
				}
				objPreloader.onLoad();
			}
			},objArgs.timeout);
	}
	};Zapatec.ImagePreloader.prototype.onLoad=function(){
	if(!this.job){
		return;
	}
	this.image.onload=null;this.image.onerror=null;this.image.onabort=null;var objJob=this.job;this.job=null;objJob.leftToLoad--;if(objJob.leftToLoad==0&&typeof objJob.onLoad=='function'){
		var funcOnLoad=objJob.onLoad;objJob.onLoad=null;funcOnLoad(objJob);
	}
	};Zapatec.PreloadImages=function(objArgs){
	this.images=[];this.leftToLoad=0;this.loadedUrls=[];this.invalidUrls=[];this.abortedUrls=[];this.onLoad=null;if(arguments.length>0)this.init(objArgs);
};Zapatec.PreloadImages.prototype.init=function(objArgs){
	if(!objArgs){
		return;
	}
	if(!objArgs.urls||!objArgs.urls.length){
		if(typeof objArgs.onLoad=='function'){
			objArgs.onLoad(this);
		}
		return;
	}
	this.images=[];this.leftToLoad=objArgs.urls.length;this.loadedUrls=[];this.invalidUrls=[];this.abortedUrls=[];this.onLoad=objArgs.onLoad;for(var iUrl=0;iUrl<objArgs.urls.length;iUrl++){
		new Zapatec.ImagePreloader({
			job:this,
			url:objArgs.urls[iUrl],
			timeout:objArgs.timeout
			});
	}
	};if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.StyleSheet=function(bUseLast){
	if(bUseLast){
		if(document.createStyleSheet){
			if(document.styleSheets.length){
				this.styleSheet=document.styleSheets[document.styleSheets.length-1];
			}
			}else{
			var aStyleSheets=document.getElementsByTagName('style');if(aStyleSheets.length){
				this.styleSheet=aStyleSheets[aStyleSheets.length-1];
			}
			}
		}
	if(!this.styleSheet){
		if(document.createStyleSheet){
			try{
				this.styleSheet=document.createStyleSheet();
			}catch(oException){
				this.styleSheet=document.styleSheets[document.styleSheets.length-1];
			};
		}else{
			this.styleSheet=document.createElement('style');this.styleSheet.type='text/css';var oHead=document.getElementsByTagName('head')[0];if(!oHead){
				oHead=document.documentElement;
			}
			if(oHead){
				oHead.appendChild(this.styleSheet);
			}
			}
		}
	};Zapatec.StyleSheet.prototype.addRule=function(strSelector,strDeclarations){
	if(!this.styleSheet){
		return;
	}
	if(document.createStyleSheet){
		this.styleSheet.cssText+=strSelector+' { '+strDeclarations+' }';
	}else{
		this.styleSheet.appendChild(document.createTextNode(strSelector+' { '+strDeclarations+' }'));
	}
	};Zapatec.StyleSheet.prototype.removeRules=function(){
	if(!this.styleSheet){
		return;
	}
	if(document.createStyleSheet){
		var iRules=this.styleSheet.rules.length;for(var iRule=0;iRule<iRules;iRule++){
			this.styleSheet.removeRule();
		}
		}else{
		while(this.styleSheet.firstChild){
			this.styleSheet.removeChild(this.styleSheet.firstChild);
		}
		}
	};Zapatec.StyleSheet.prototype.addParse=function(strStyleSheet){
	var arrClean=[];var arrTokens=strStyleSheet.split('/*');for(var iTok=0;iTok<arrTokens.length;iTok++){
		var arrTails=arrTokens[iTok].split('*/');arrClean.push(arrTails[arrTails.length-1]);
	}
	strStyleSheet=arrClean.join('');strStyleSheet=strStyleSheet.replace(/@[^{]*;/g,'');var arrStyles=strStyleSheet.split('}');for(var iStl=0;iStl<arrStyles.length;iStl++){
		var arrRules=arrStyles[iStl].split('{');if(arrRules[0]&&arrRules[1]){
			var arrSelectors=arrRules[0].split(',');for(var iSel=0;iSel<arrSelectors.length;iSel++){
				this.addRule(arrSelectors[iSel],arrRules[1]);
			}
			}
		}
	};if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.Transport=function(){};if(typeof ActiveXObject!='undefined'){
	Zapatec.Transport.XMLDOM=null;Zapatec.Transport.XMLHTTP=null;Zapatec.Transport.pickActiveXVersion=function(aVersions){
		for(var iVn=0;iVn<aVersions.length;iVn++){
			try{
				var oDoc=new ActiveXObject(aVersions[iVn]);if(oDoc){
					return aVersions[iVn];
				}
				}catch(oExpn){};
		}
		return null;
	};Zapatec.Transport.XMLDOM=Zapatec.Transport.pickActiveXVersion(['Msxml2.DOMDocument.4.0','Msxml2.DOMDocument.3.0','MSXML2.DOMDocument','MSXML.DOMDocument','Microsoft.XMLDOM']);Zapatec.Transport.XMLHTTP=Zapatec.Transport.pickActiveXVersion(['Msxml2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP']);Zapatec.Transport.pickActiveXVersion=null;
}
Zapatec.Transport.createXmlHttpRequest=function(){
	if(typeof ActiveXObject!='undefined'){
		try{
			return new ActiveXObject(Zapatec.Transport.XMLHTTP);
		}catch(oExpn){};
	}
	if(typeof XMLHttpRequest!='undefined'){
		return new XMLHttpRequest();
	}
	return null;
};Zapatec.Transport.isBusy=function(oArg){
	var oContr=oArg.busyContainer;if(typeof oContr=='string'){
		oContr=document.getElementById(oContr);
	}
	if(!oContr){
		return;
	}
	var sImage=oArg.busyImage;if(typeof sImage!='string'){
		sImage='';
	}
	sImage=sImage.split('/').pop();if(!sImage.length){
		sImage='zpbusy.gif';
	}
	var oFC=oContr.firstChild;if(oFC){
		oFC=oFC.firstChild;if(oFC){
			oFC=oFC.firstChild;if(oFC&&oFC.tagName&&oFC.tagName.toLowerCase()=='img'){
				var sSrc=oFC.getAttribute('src');if(typeof sSrc=='string'&&sSrc.length){
					sSrc=sSrc.split('/').pop();if(sSrc==sImage){
						return true;
					}
					}
				}
			}
		}
	return false;
};Zapatec.Transport.showBusy=function(oArg){
	if(Zapatec.Transport.isBusy(oArg)){
		return;
	}
	var oContr=oArg.busyContainer;if(typeof oContr=='string'){
		oContr=document.getElementById(oContr);
	}
	if(!oContr){
		return;
	}
	var sImage=oArg.busyImage;var sImageWidth=oArg.busyImageWidth;var sImageHeight=oArg.busyImageHeight;if(typeof sImage!='string'||!sImage.length){
		sImage='zpbusy.gif';
	}else{
		if(typeof sImageWidth=='number'||(typeof sImageWidth=='string'&&/\d$/.test(sImageWidth))){
			sImageWidth+='px';
		}
		if(typeof sImageHeight=='number'||(typeof sImageHeight=='string'&&/\d$/.test(sImageHeight))){
			sImageHeight+='px';
		}
		}
	if(!sImageWidth){
		sImageWidth='65px';
	}
	if(!sImageHeight){
		sImageHeight='35px';
	}
	var sPath='';if(sImage.indexOf('/')<0){
		if(Zapatec.zapatecPath){
			sPath=Zapatec.zapatecPath;
		}else{
			sPath=Zapatec.Transport.getPath('transport.js');
		}
		}
	var aImg=[];aImg.push('<img src="');aImg.push(sPath);aImg.push(sImage);aImg.push('"');if(sImageWidth||sImageHeight){
		aImg.push(' style="');if(sImageWidth){
			aImg.push('width:');aImg.push(sImageWidth);aImg.push(';');
		}
		if(sImageHeight){
			aImg.push('height:');aImg.push(sImageHeight);
		}
		aImg.push('"');
	}
	aImg.push(' />');var iContainerWidth=oContr.offsetWidth;var iContainerHeight=oContr.offsetHeight;var oBusyContr=Zapatec.Utils.createElement('div');oBusyContr.style.position='relative';oBusyContr.style.zIndex=2147483583;var oBusy=Zapatec.Utils.createElement('div',oBusyContr);oBusy.style.position='absolute';oBusy.innerHTML=aImg.join('');oContr.insertBefore(oBusyContr,oContr.firstChild);var iBusyWidth=oBusy.offsetWidth;var iBusyHeight=oBusy.offsetHeight;if(iContainerWidth>iBusyWidth){
		oBusy.style.left=oContr.scrollLeft+
		(iContainerWidth-iBusyWidth)/2+'px';
	}
	if(iContainerHeight>iBusyHeight){
		oBusy.style.top=oContr.scrollTop+
		(iContainerHeight-iBusyHeight)/2+'px';
	}
	};Zapatec.Transport.removeBusy=function(oArg){
	var oContr=oArg.busyContainer;if(typeof oContr=='string'){
		oContr=document.getElementById(oContr);
	}
	if(!oContr){
		return;
	}
	if(Zapatec.Transport.isBusy(oArg)){
		oContr.removeChild(oContr.firstChild);
	}
	};Zapatec.Transport.fetch=function(oArg){
	if(oArg==null||typeof oArg!='object'){
		return null;
	}
	if(!oArg.url){
		return null;
	}
	if(!oArg.method){
		oArg.method='GET';
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	if(!oArg.contentType&&oArg.method.toUpperCase()=='POST'){
		oArg.contentType='application/x-www-form-urlencoded';
	}
	if(!oArg.content){
		oArg.content=null;
	}
	if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	var oRequest=Zapatec.Transport.createXmlHttpRequest();if(oRequest==null){
		return null;
	}
	Zapatec.Transport.showBusy(oArg);var bErrorDisplayed=false;var funcOnReady=function(){
		Zapatec.Transport.removeBusy(oArg);try{
			if(oRequest.status==200||oRequest.status==304||(location.protocol=='file:'&&!oRequest.status)){
				if(typeof oArg.onLoad=='function'){
					oArg.onLoad(oRequest);
				}
				}else if(!bErrorDisplayed){
				bErrorDisplayed=true;Zapatec.Transport.displayError(oRequest.status,"Error: Can't fetch "+oArg.url+'.\n'+
					(oRequest.statusText||''),oArg.onError);
			}
			}catch(oExpn){
			if(!bErrorDisplayed){
				bErrorDisplayed=true;if(oExpn.name&&oExpn.name=='NS_ERROR_NOT_AVAILABLE'){
					Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\nFile not found.',oArg.onError);
				}else{
					Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\n'+
						(oExpn.message||''),oArg.onError);
				}
				}
			};
	};try{
		if(typeof oArg.username!='undefined'&&typeof oArg.password!='undefined'){
			oRequest.open(oArg.method,oArg.url,oArg.async,oArg.username,oArg.password);
		}else{
			oRequest.open(oArg.method,oArg.url,oArg.async);
		}
		if(oArg.async){
			oRequest.onreadystatechange=function(){
				if(oRequest.readyState==4){
					funcOnReady();oRequest.onreadystatechange={};
				}
				};
		}
		if(oArg.contentType){
			oRequest.setRequestHeader('Content-Type',oArg.contentType);
		}
		oRequest.send(oArg.content);if(!oArg.async){
			funcOnReady();return oRequest;
		}
		}catch(oExpn){
		Zapatec.Transport.removeBusy(oArg);if(!bErrorDisplayed){
			bErrorDisplayed=true;if(oExpn.name&&oExpn.name=='NS_ERROR_FILE_NOT_FOUND'){
				Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\nFile not found.',oArg.onError);
			}else{
				Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\n'+
					(oExpn.message||''),oArg.onError);
			}
			}
		};return null;
};Zapatec.Transport.parseHtml=function(sHtml){
	sHtml+='';sHtml=sHtml.replace(/^\s+/g,'');var oTmpContr;if(document.createElementNS){
		oTmpContr=document.createElementNS('http://www.w3.org/1999/xhtml','div');
	}else{
		oTmpContr=document.createElement('div');
	}
	oTmpContr.innerHTML=sHtml;return oTmpContr;
};Zapatec.Transport.evalGlobalScope=function(sScript){
	if(typeof sScript!='string'||!sScript.match(/\S/)){
		return;
	}
	if(window.execScript){
		window.execScript(sScript,'javascript');
	}else if(window.eval){
		window.eval(sScript);
	}
	};Zapatec.Transport.setInnerHtml=function(oArg){
	if(!oArg||typeof oArg.html!='string'){
		return;
	}
	var sHtml=oArg.html;var oContr=null;if(typeof oArg.container=='string'){
		oContr=document.getElementById(oArg.container);
	}else if(typeof oArg.container=='object'){
		oContr=oArg.container;
	}
	var aScripts=[];if(sHtml.match(/<\s*\/\s*script\s*>/i)){
		var aTokens=sHtml.split(/<\s*\/\s*script\s*>/i);var aHtml=[];for(var iToken=aTokens.length-1;iToken>=0;iToken--){
			var sToken=aTokens[iToken];if(sToken.match(/\S/)){
				var aMatch=sToken.match(/<\s*script([^>]*)>/i);if(aMatch){
					var aCouple=sToken.split(/<\s*script[^>]*>/i);while(aCouple.length<2){
						if(sToken.match(/^<\s*script[^>]*>/i)){
							aCouple.unshift('');
						}else{
							aCouple.push('');
						}
						}
					aHtml.unshift(aCouple[0]);var sAttrs=aMatch[1];var srtScript=aCouple[1];if(sAttrs.match(/\s+src\s*=/i)){
						srtScript='';
					}else{
						srtScript=srtScript.replace(/function\s+([^(]+)/g,'$1=function');
					}
					aScripts.push([sAttrs,srtScript]);
				}else if(iToken<aTokens.length-1){
					aTokens[iToken-1]+='</script>'+sToken;
				}else{
					aHtml.unshift(sToken);
				}
				}else{
				aHtml.unshift(sToken);
			}
			}
		sHtml=aHtml.join('');
	}
	if(oContr){
		if(window.opera){
			oContr.innerHTML='<form></form>';
		}
		oContr.innerHTML=sHtml;
	}
	for(var iScript=0;iScript<aScripts.length;iScript++){
		if(aScripts[iScript][1].length){
			Zapatec.Transport.evalGlobalScope(aScripts[iScript][1]);
		}
		var sAttrs=aScripts[iScript][0];sAttrs=sAttrs.replace(/\s+/g,' ').replace(/^\s/,'').replace(/\s$/,'').replace(/ = /g,'=');if(sAttrs.indexOf('src=')>=0){
			var oContr=document.body;if(!oContr){
				oContr=document.getElementsByTagName('head')[0];if(!oContr){
					oContr=document;
				}
				}
			var aAttrs=sAttrs.split(' ');var oScript=Zapatec.Utils.createElement('script');for(var iAttr=0;iAttr<aAttrs.length;iAttr++){
				var aAttr=aAttrs[iAttr].split('=');if(aAttr.length>1){
					oScript.setAttribute(aAttr[0],aAttr[1].match(/^[\s|"|']*([\s|\S]*[^'|"])[\s|"|']*$/)[1]);
				}else{
					oScript.setAttribute(aAttr[0],aAttr[0]);
				}
				}
			oContr.appendChild(oScript);
		}
		}
	};Zapatec.Transport.fetchXmlDoc=function(oArg){
	if(oArg==null||typeof oArg!='object'){
		return null;
	}
	if(!oArg.url){
		return null;
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	if(!oArg.method&&typeof oArg.username=='undefined'&&typeof oArg.password=='undefined'){
		if(document.implementation&&document.implementation.createDocument){
			var oDoc=null;if(!oArg.reliable){
				oArg.reliable=false;
			}
			var oFetchArg={};for(var sKey in oArg){
				oFetchArg[sKey]=oArg[sKey];
			}
			if(oArg.async){
				oFetchArg.onLoad=function(oRequest){
					oFetchArg.onLoad=null;var parser=new DOMParser();oDoc=parser.parseFromString(oRequest.responseText,"text/xml");Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);
				};
			}else{
				oFetchArg.onLoad=null;
			}
			var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){
				var parser=new DOMParser();oDoc=parser.parseFromString(oRequest.responseText,"text/xml");Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;
			}
			return null;
		}
		if(typeof ActiveXObject!='undefined'){
			Zapatec.Transport.showBusy(oArg);try{
				var oDoc=new ActiveXObject(Zapatec.Transport.XMLDOM);oDoc.async=oArg.async;if(oArg.async){
					oDoc.onreadystatechange=function(){
						if(oDoc.readyState==4){
							Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);oDoc.onreadystatechange={};
						}
						};
				}
				oDoc.load(oArg.url);if(!oArg.async){
					Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;
				}
				return null;
			}catch(oExpn){
				Zapatec.Transport.removeBusy(oArg);
			};
		}
		}
	var oFetchArg={};for(var sKey in oArg){
		oFetchArg[sKey]=oArg[sKey];
	}
	if(oArg.async){
		oFetchArg.onLoad=function(oRequest){
			Zapatec.Transport.parseXml({
				strXml:oRequest.responseText,
				onLoad:oArg.onLoad,
				onError:oArg.onError
				});
		};
	}else{
		oFetchArg.onLoad=null;
	}
	var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){
		return Zapatec.Transport.parseXml({
			strXml:oRequest.responseText,
			onLoad:oArg.onLoad,
			onError:oArg.onError
			});
	}
	return null;
};Zapatec.Transport.parseXml=function(oArg){
	if(oArg==null||typeof oArg!='object'){
		return null;
	}
	if(!oArg.strXml){
		return null;
	}
	if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	if(window.DOMParser){
		try{
			var oDoc=(new DOMParser()).parseFromString(oArg.strXml,'text/xml');Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;
		}catch(oExpn){
			Zapatec.Transport.displayError(0,"Error: Can't parse.\n"+'String does not appear to be a valid XML fragment.',oArg.onError);
		};return null;
	}
	if(typeof ActiveXObject!='undefined'){
		try{
			var oDoc=new ActiveXObject(Zapatec.Transport.XMLDOM);oDoc.loadXML(oArg.strXml);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;
		}catch(oExpn){};
	}
	return null;
};Zapatec.Transport.onXmlDocLoad=function(oDoc,onLoad,onError){
	var sError=null;if(oDoc.parseError){
		sError=oDoc.parseError.reason;if(oDoc.parseError.srcText){
			sError+='Location: '+oDoc.parseError.url+'\nLine number '+oDoc.parseError.line+', column '+
			oDoc.parseError.linepos+':\n'+
			oDoc.parseError.srcText+'\n';
		}
		}else if(oDoc.documentElement&&oDoc.documentElement.tagName=='parsererror'){
		sError=oDoc.documentElement.firstChild.data+'\n'+
		oDoc.documentElement.firstChild.nextSibling.firstChild.data;
	}else if(!oDoc.documentElement){
		sError='String does not appear to be a valid XML fragment.';
	}
	if(sError){
		Zapatec.Transport.displayError(0,"Error: Can't parse.\n"+sError,onError);
	}else{
		if(typeof onLoad=='function'){
			onLoad(oDoc);
		}
		}
	};Zapatec.Transport.serializeXmlDoc=function(oDoc){
	if(window.XMLSerializer){
		return(new XMLSerializer).serializeToString(oDoc);
	}
	if(oDoc.xml){
		return oDoc.xml;
	}
	};Zapatec.Transport.fetchJsonObj=function(oArg){
	if(oArg==null||typeof oArg!='object'){
		return null;
	}
	if(!oArg.url){
		return null;
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	if(!oArg.reliable){
		oArg.reliable=false;
	}
	var oFetchArg={};for(var sKey in oArg){
		oFetchArg[sKey]=oArg[sKey];
	}
	if(oArg.async){
		oFetchArg.onLoad=function(oRequest){
			Zapatec.Transport.parseJson({
				strJson:oRequest.responseText,
				reliable:oArg.reliable,
				onLoad:oArg.onLoad,
				onError:oArg.onError
				});
		};
	}else{
		oFetchArg.onLoad=null;
	}
	var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){
		return Zapatec.Transport.parseJson({
			strJson:oRequest.responseText,
			reliable:oArg.reliable,
			onLoad:oArg.onLoad,
			onError:oArg.onError
			});
	}
	return null;
};Zapatec.Transport.parseJson=function(oArg){
	if(oArg==null||typeof oArg!='object'){
		return null;
	}
	if(!oArg.reliable){
		oArg.reliable=false;
	}
	if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	var oJson=null;try{
		if(oArg.reliable){
			if(oArg.strJson){
				oJson=eval('('+oArg.strJson+')');
			}
			}else{
			oJson=Zapatec.Transport.parseJsonStr(oArg.strJson);
		}
		}catch(oExpn){
		var sError="Error: Can't parse.\nString doesn't appear to be a valid JSON fragment: ";sError+=oExpn.message;if(typeof oExpn.text!='undefined'&&oExpn.text.length){
			sError+='\n'+oExpn.text;
		}
		sError+='\n'+oArg.strJson;Zapatec.Transport.displayError(0,sError,oArg.onError);return null;
	};if(typeof oArg.onLoad=='function'){
		oArg.onLoad(oJson);
	}
	return oJson;
};Zapatec.Transport.parseJsonStr=function(text){
	var p=/^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,token,operator;function error(m,t){
		throw{
			name:'JSONError',
			message:m,
			text:t||operator||token
			};
	}
	function next(b){
		if(b&&b!=operator){
			error("Expected '"+b+"'");
		}
		if(text){
			var t=p.exec(text);if(t){
				if(t[2]){
					token=null;operator=t[2];
				}else{
					operator=null;try{
						token=eval(t[1]);
					}catch(e){
						error("Bad token",t[1]);
					}
					}
				text=text.substring(t[0].length);
			}else{
				error("Unrecognized token",text);
			}
			}else{
			token=operator=null;
		}
		}
	function val(){
		var k,o;switch(operator){
			case'{':next('{');o={};if(operator!='}'){
				for(;;){
					if(operator||typeof token!='string'){
						error("Missing key");
					}
					k=token;next();next(':');o[k]=val();if(operator!=','){
						break;
					}
					next(',');
				}
				}
			next('}');return o;case'[':next('[');o=[];if(operator!=']'){
				for(;;){
					o.push(val());if(operator!=','){
						break;
					}
					next(',');
				}
				}
			next(']');return o;default:if(operator!==null){
				error("Missing value");
			}
			k=token;next();return k;
		}
		}
	next();return val();
};Zapatec.Transport.serializeJsonObj=function(v){
	var a=[];function e(s){
		a[a.length]=s;
	}
	function g(x){
		var c,i,l,v;switch(typeof x){
			case'object':if(x){
				if(x instanceof Array){
					e('[');l=a.length;for(i=0;i<x.length;i+=1){
						v=x[i];if(typeof v!='undefined'&&typeof v!='function'){
							if(l<a.length){
								e(',');
							}
							g(v);
						}
						}
					e(']');return;
				}else if(typeof x.toString!='undefined'){
					e('{');l=a.length;for(i in x){
						v=x[i];if(x.hasOwnProperty(i)&&typeof v!='undefined'&&typeof v!='function'){
							if(l<a.length){
								e(',');
							}
							g(i);e(':');g(v);
						}
						}
					return e('}');
				}
				}
			e('null');return;case'number':e(isFinite(x)?+x:'null');return;case'string':l=x.length;e('"');for(i=0;i<l;i+=1){
				c=x.charAt(i);if(c>=' '){
					if(c=='\\'||c=='"'){
						e('\\');
					}
					e(c);
				}else{
					switch(c){
						case'\b':e('\\b');break;case'\f':e('\\f');break;case'\n':e('\\n');break;case'\r':e('\\r');break;case'\t':e('\\t');break;default:c=c.charCodeAt();e('\\u00'+Math.floor(c/16).toString(16)+
							(c%16).toString(16));
					}
					}
				}
			e('"');return;case'boolean':e(String(x));return;default:e('null');return;
		}
		}
	g(v);return a.join('');
};Zapatec.Transport.displayError=function(iErrCode,sError,onError){
	if(typeof onError=='function'){
		onError({
			errorCode:iErrCode,
			errorDescription:sError
		});
	}else{
		alert(sError);
	}
	};Zapatec.Transport.translateUrl=function(oArg){
	if(!oArg||!oArg.url){
		return null;
	}
	var aFullUrl=oArg.url.split('?',2);var sUrl=aFullUrl[0];if(sUrl.indexOf(':')>=0){
		return oArg.url;
	}
	var oLocation=document.location;var sPort=oLocation.port;if(sPort){
		sPort=':'+sPort;
	}
	if(sUrl[0]=='/'){
		return[oLocation.protocol,'//',oLocation.hostname,sPort,sUrl].join('');
	}
	var sLocation;if(sPort){
		sLocation=[oLocation.protocol,'//',oLocation.hostname,sPort,oLocation.pathname].join('');
	}else{
		sLocation=oLocation.toString();
	}
	var sRelativeTo;if(typeof oArg.relativeTo!='string'){
		sRelativeTo=sLocation.split('?',2)[0];
	}else{
		sRelativeTo=oArg.relativeTo.split('?',2)[0];if(sRelativeTo.indexOf('/')<0){
			sRelativeTo=sLocation.split('?',2)[0];
		}else if(sRelativeTo.charAt(0)!='/'&&sRelativeTo.indexOf(':')<0){
			sRelativeTo=Zapatec.Transport.translateUrl({
				url:sRelativeTo
			});
		}
		}
	sRelativeTo=sRelativeTo.split('#')[0];var aUrl=sUrl.split('/');var aRelativeTo=sRelativeTo.split('/');aRelativeTo.pop();for(var iToken=0;iToken<aUrl.length;iToken++){
		var sToken=aUrl[iToken];if(sToken=='..'){
			aRelativeTo.pop();
		}else if(sToken!='.'){
			aRelativeTo.push(sToken);
		}
		}
	aFullUrl[0]=aRelativeTo.join('/');return aFullUrl.join('?');
};Zapatec.Transport.loading={};Zapatec.Transport.setupEvents=function(oArg){
	if(!oArg){
		return{};
	}
	if(oArg.force||!Zapatec.EventDriven||!oArg.url){
		return{
			onLoad:oArg.onLoad,
			onError:oArg.onError
			};
	}
	var sUrl=oArg.url;if(typeof oArg.onLoad=='function'){
		Zapatec.EventDriven.addEventListener('zpTransportOnLoad'+sUrl,oArg.onLoad);
	}
	if(typeof oArg.onError=='function'){
		Zapatec.EventDriven.addEventListener('zpTransportOnError'+sUrl,oArg.onError);
	}
	if(Zapatec.Transport.loading[sUrl]){
		return{
			loading:true
		};
	}else{
		Zapatec.Transport.loading[sUrl]=true;return{
			onLoad:new Function("Zapatec.EventDriven.fireEvent('zpTransportOnLoad"+
				sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnLoad"+
				sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnError"+
				sUrl+"');Zapatec.Transport.loading['"+sUrl+"'] = false;"),
			onError:new Function('oError',"Zapatec.EventDriven.fireEvent('zpTransportOnError"+
				sUrl+"',oError);Zapatec.EventDriven.removeEvent('zpTransportOnLoad"+
				sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnError"+
				sUrl+"');Zapatec.Transport.loading['"+sUrl+"'] = false;")
			};
	}
	};Zapatec.Transport.loadedJS={};Zapatec.Transport.isLoadedJS=function(sUrl,sAbsUrl){
	if(typeof sAbsUrl=='undefined'){
		sAbsUrl=Zapatec.Transport.translateUrl({
			url:sUrl
		});
	}
	if(Zapatec.Transport.loadedJS[sAbsUrl]){
		return true;
	}
	var aScripts=document.getElementsByTagName('script');for(var iScript=0;iScript<aScripts.length;iScript++){
		var sSrc=aScripts[iScript].getAttribute('src')||'';if(sSrc==sUrl){
			Zapatec.Transport.loadedJS[sAbsUrl]=true;return true;
		}
		}
	return false;
};Zapatec.Transport.getPath=function(sScriptFileName){
	var aScripts=document.getElementsByTagName('script');for(var iScript=aScripts.length-1;iScript>=0;iScript--){
		var sSrc=aScripts[iScript].getAttribute('src')||'';var aTokens=sSrc.split('/');var sLastToken=aTokens.pop();if(sLastToken==sScriptFileName){
			return aTokens.length?aTokens.join('/')+'/':'';
		}
		}
	for(var sSrc in Zapatec.Transport.loadedJS){
		var aTokens=sSrc.split('/');var sLastToken=aTokens.pop();if(sLastToken==sScriptFileName){
			return aTokens.length?aTokens.join('/')+'/':'';
		}
		}
	return'';
};Zapatec.Transport.include=function(sSrc,sId,bForce){
	if(Zapatec.doNotInclude){
		return;
	}
	var sAbsUrl=Zapatec.Transport.translateUrl({
		url:sSrc
	});if(!bForce&&Zapatec.Transport.isLoadedJS(sSrc,sAbsUrl)){
		return;
	}
	document.write('<script type="text/javascript" src="'+sSrc+
		(typeof sId=='string'?'" id="'+sId:'')+'"></script>');Zapatec.Transport.loadedJS[sAbsUrl]=true;
};Zapatec.include=Zapatec.Transport.include;Zapatec.Transport.includeJS=function(sSrc,sId){
	setTimeout(function(){
		var oContr=document.body;if(!oContr){
			oContr=document.getElementsByTagName('head')[0];if(!oContr){
				oContr=document;
			}
			}
		var oScript=document.createElement('script');oScript.type='text/javascript';oScript.src=sSrc;if(typeof sId=='string'){
			oScript.id=sId;
		}
		oContr.appendChild(oScript);
	},0);
};Zapatec.Transport.loadJS=function(oArg){
	if(!(oArg instanceof Object)){
		return;
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	var sUrl=null;if(oArg.url){
		sUrl=oArg.url;
	}else if(oArg.module){
		var sPath='';if(typeof oArg.path!='undefined'){
			sPath=oArg.path;
		}else if(typeof Zapatec.zapatecPath!='undefined'){
			sPath=Zapatec.zapatecPath;
		}
		sUrl=sPath+oArg.module+'.js';
	}else{
		return;
	}
	var sAbsUrl=Zapatec.Transport.translateUrl({
		url:sUrl
	});if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	if(Zapatec.doNotInclude||(!oArg.force&&Zapatec.Transport.isLoadedJS(sUrl,sAbsUrl))){
		if(typeof oArg.onLoad=='function'){
			oArg.onLoad();
		}
		return;
	}
	var oHandlers=Zapatec.Transport.setupEvents({
		url:sAbsUrl,
		force:oArg.force,
		onLoad:oArg.onLoad,
		onError:oArg.onError
		});if(oHandlers.loading){
		return;
	}
	Zapatec.Transport.fetch({
		url:sUrl,
		async:oArg.async,
		onLoad:function(oRequest){
			if(oArg.force||!Zapatec.Transport.loadedJS[sAbsUrl]){
				var aTokens=sUrl.split('/');var sLastToken=aTokens.pop();Zapatec.lastLoadedModule=aTokens.join('/')+'/';Zapatec.Transport.evalGlobalScope(oRequest.responseText);Zapatec.lastLoadedModule=null;Zapatec.Transport.loadedJS[sAbsUrl]=true;
			}
			if(typeof oHandlers.onLoad=='function'){
				oHandlers.onLoad();
			}
			},
		onError:oHandlers.onError
		});
};Zapatec.Transport.includeCSS=function(sHref){
	var oContr=document.getElementsByTagName('head')[0];if(!oContr){
		return;
	}
	var oLink=document.createElement('link');oLink.setAttribute('rel','stylesheet');oLink.setAttribute('type','text/css');oLink.setAttribute('href',sHref);oContr.appendChild(oLink);
};Zapatec.Transport.loadedCss={};Zapatec.Transport.loadCss=function(oArg){
	if(!(oArg instanceof Object)){
		return;
	}
	if(!oArg.url){
		return;
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	var sAbsUrl=Zapatec.Transport.translateUrl({
		url:oArg.url
		});if(!oArg.force){
		if(Zapatec.Transport.loadedCss[sAbsUrl]){
			if(typeof oArg.onLoad=='function'){
				oArg.onLoad();
			}
			return;
		}
		var aLinks=document.getElementsByTagName('link');for(var iLnk=0;iLnk<aLinks.length;iLnk++){
			var sHref=aLinks[iLnk].getAttribute('href')||'';sHref=Zapatec.Transport.translateUrl({
				url:sHref
			});if(sHref==sAbsUrl){
				Zapatec.Transport.loadedCss[sAbsUrl]=true;if(typeof oArg.onLoad=='function'){
					oArg.onLoad();
				}
				return;
			}
			}
		}
	var oHandlers=Zapatec.Transport.setupEvents({
		url:sAbsUrl,
		force:oArg.force,
		onLoad:oArg.onLoad,
		onError:oArg.onError
		});if(oHandlers.loading){
		return;
	}
	Zapatec.Transport.fetch({
		url:oArg.url,
		async:oArg.async,
		onLoad:function(oRequest){
			var sCss=oRequest.responseText;var aResultCss=[];var aImgUrls=[];var aCssUrls=[];var iPos=0;var iNextPos=sCss.indexOf('url(',iPos);while(iNextPos>=0){
				iNextPos+=4;var sToken=sCss.substring(iPos,iNextPos);var bIsImport=/@import\s+url\($/.test(sToken);aResultCss.push(sToken);iPos=iNextPos;iNextPos=sCss.indexOf(')',iPos);if(iNextPos>=0){
					var sImgUrl=sCss.substring(iPos,iNextPos);sImgUrl=sImgUrl.replace(/['"]/g,'');sImgUrl=Zapatec.Transport.translateUrl({
						url:sImgUrl,
						relativeTo:oArg.url
						});sImgUrl=Zapatec.Transport.translateUrl({
						url:sImgUrl
					});aResultCss.push(sImgUrl);if(bIsImport){
						aCssUrls.push(sImgUrl);
					}else{
						aImgUrls.push(sImgUrl);
					}
					iPos=iNextPos;iNextPos=sCss.indexOf('url(',iPos);
				}
				}
			aResultCss.push(sCss.substr(iPos));sCss=aResultCss.join('');Zapatec.Transport.loadCssList({
				urls:aCssUrls,
				async:oArg.async,
				onLoad:function(){
					(new Zapatec.StyleSheet()).addParse(sCss);if(typeof oHandlers.onLoad=='function'){
						oHandlers.onLoad();
					}
					}
				});Zapatec.Transport.loadedCss[sAbsUrl]=true;Zapatec.Transport.preloadImages({
				urls:aImgUrls,
				timeout:60000
			});
		},
		onError:oHandlers.onError
		});
};Zapatec.Transport.loadCssList=function(oArg){
	if(!(oArg instanceof Object)){
		return;
	}
	if(typeof oArg.async=='undefined'){
		oArg.async=true;
	}
	if(!oArg.onLoad){
		oArg.onLoad=null;
	}
	if(!oArg.onError){
		oArg.onError=null;
	}
	if(!oArg.urls||!oArg.urls.length){
		if(typeof oArg.onLoad=='function'){
			oArg.onLoad();
		}
		return;
	}
	var sUrl=oArg.urls.shift();var funcOnLoad=function(){
		Zapatec.Transport.loadCssList({
			urls:oArg.urls,
			async:oArg.async,
			force:oArg.force,
			onLoad:oArg.onLoad,
			onError:oArg.onError
			});
	};Zapatec.Transport.loadCss({
		url:sUrl,
		async:oArg.async,
		force:oArg.force,
		onLoad:funcOnLoad,
		onError:function(oError){
			Zapatec.Transport.displayError(oError.errorCode,oError.errorDescription,oArg.onError);funcOnLoad();
		}
		});
};Zapatec.Transport.imagePreloads=[];Zapatec.Transport.preloadImages=function(oArg){
	Zapatec.Transport.imagePreloads.push(new Zapatec.PreloadImages(oArg));
};Zapatec.Drag={};Zapatec.Utils.emulateWindowEvent(['mousedown','mousemove','mouseup']);Zapatec.Drag.currentId=null;Zapatec.Drag.start=function(oEv,sId,oArg){
	var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;if(oDrag.currentId){
		return true;
	}
	var oEl=Zapatec.Widget.getElementById(sId);if(!oEl||oEl.zpDrag){
		return true;
	}
	if(!oArg){
		oArg={};
	}
	var oPos=oUtils.getMousePos(oEv||window.event);Zapatec.EventDriven.fireEvent('dragStart',{
		el:oEl,
		event:oEv
	});oEl.zpDrag=true;if(oArg.resize){
		oEl.zpDragResize=true;
	}
	oEl.zpDragPageX=oPos.pageX;oEl.zpDragPageY=oPos.pageY;oEl.zpDragWidth=oEl.clientWidth;oEl.zpDragHeight=oEl.clientHeight;var sTag;var oOffsetParent=oEl.offsetParent;if(oOffsetParent){
		sTag=oOffsetParent.tagName.toLowerCase();
	}
	if(sTag&&sTag!='body'&&sTag!='html'){
		oPos=oUtils.getElementOffset(oEl);var oPosParent=oUtils.getElementOffset(oOffsetParent);oEl.zpDragLeft=oPos.left-oPosParent.left;oEl.zpDragTop=oPos.top-oPosParent.top;
	}else{
		oEl.zpDragLeft=oEl.offsetLeft;oEl.zpDragTop=oEl.offsetTop;
	}
	oEl.zpDragRight=oEl.zpDragLeft+oEl.zpDragWidth;oEl.zpDragBottom=oEl.zpDragTop+oEl.zpDragHeight;oEl.zpDragPrevLeft=oEl.zpDragPrevRealLeft=oEl.zpDragLeft;oEl.zpDragPrevTop=oEl.zpDragPrevRealTop=oEl.zpDragTop;oEl.zpDragV=oArg.vertical;oEl.zpDragH=oArg.horizontal;oEl.zpDragLimTop=typeof oArg.limitTop=='number'?oArg.limitTop:-Infinity;oEl.zpDragLimBot=typeof oArg.limitBottom=='number'?oArg.limitBottom:Infinity;oEl.zpDragLimLft=typeof oArg.limitLeft=='number'?oArg.limitLeft:-Infinity;oEl.zpDragLimRgh=typeof oArg.limitRight=='number'?oArg.limitRight:Infinity;if(typeof oArg.step=='number'){
		oEl.zpDragStepV=oEl.zpDragStepH=oArg.step;
	}
	if(typeof oArg.stepVertical=='number'){
		oEl.zpDragStepV=oArg.stepVertical;
	}
	if(typeof oArg.stepHorizontal=='number'){
		oEl.zpDragStepH=oArg.stepHorizontal;
	}
	oDrag.currentId=sId;oUtils.addEvent(document,'mousemove',oDrag.move);oUtils.addEvent(document,'mouseup',oDrag.end);return true;
};Zapatec.Drag.move=function(oEv){
	var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;oEv||(oEv=window.event);if(!oDrag.currentId){
		return oUtils.stopEvent(oEv);
	}
	var oEl=document.getElementById(oDrag.currentId);if(!(oEl&&oEl.zpDrag)){
		return oUtils.stopEvent(oEv);
	}
	var oSt=oEl.style;var oPos=oUtils.getMousePos(oEv);var oParam={
		el:oEl,
		startLeft:oEl.zpDragLeft,
		startTop:oEl.zpDragTop,
		prevLeft:oEl.zpDragPrevLeft,
		prevTop:oEl.zpDragPrevTop,
		left:oEl.zpDragLeft,
		top:oEl.zpDragTop,
		realLeft:oEl.zpDragLeft,
		realTop:oEl.zpDragTop,
		event:oEv
	};var iOffset,iPos,iStep,iSize;iOffset=oPos.pageX-oEl.zpDragPageX;iStep=oEl.zpDragStepH;if(iStep){
		iPos=oEl.zpDragLeft+Math.floor(iOffset/iStep)*iStep;oParam.realLeft=oEl.zpDragPrevRealLeft=oEl.zpDragLeft+iOffset;
	}else{
		oParam.realLeft=oEl.zpDragPrevRealLeft=iPos=oEl.zpDragLeft+iOffset;
	}
	if(!oEl.zpDragV){
		if(oEl.zpDragLimLft<=iPos&&oEl.zpDragLimRgh>=iPos){
			if(oSt.right){
				oSt.right='';
			}
			if(oEl.zpDragResize){
				if(iOffset>0){
					iSize=oEl.zpDragWidth+iOffset;if(iStep){
						iSize=Math.floor(iSize/iStep)*iStep;
					}
					oSt.left=oEl.zpDragLeft+'px';
				}else{
					iSize=oEl.zpDragWidth-iOffset;if(iStep){
						iSize=Math.ceil(iSize/iStep)*iStep;
					}
					oSt.left=oEl.zpDragLeft-iSize+'px';
				}
				oSt.width=iSize+'px';
			}else{
				oSt.left=iPos+'px';
			}
			oParam.left=iPos;oEl.zpDragPrevLeft=iPos;
		}else{
			oParam.left=oParam.prevLeft;
		}
		}
	iOffset=oPos.pageY-oEl.zpDragPageY;iStep=oEl.zpDragStepV;if(iStep){
		iPos=oEl.zpDragTop+Math.floor(iOffset/iStep)*iStep;oParam.realTop=oEl.zpDragPrevRealTop=oEl.zpDragTop+iOffset;
	}else{
		iPos=oParam.realTop=oEl.zpDragPrevRealTop=oEl.zpDragTop+iOffset;
	}
	if(!oEl.zpDragH){
		if(oEl.zpDragLimTop<=iPos&&oEl.zpDragLimBot>=iPos){
			if(oSt.bottom){
				oSt.bottom='';
			}
			if(oEl.zpDragResize){
				if(iOffset>0){
					iSize=oEl.zpDragHeight+iOffset;if(iStep){
						iSize=Math.floor(iSize/iStep)*iStep;
					}
					oSt.top=oEl.zpDragTop+'px';
				}else{
					iSize=oEl.zpDragHeight-iOffset;if(iStep){
						iSize=Math.ceil(iSize/iStep)*iStep;
					}
					oSt.top=oEl.zpDragBottom-iSize+'px';
				}
				oSt.height=iSize+'px';
			}else{
				oSt.top=iPos+'px';
			}
			oParam.top=iPos;oEl.zpDragPrevTop=iPos;
		}else{
			oParam.top=oParam.prevTop;
		}
		}
	Zapatec.EventDriven.fireEvent('dragMove',oParam);return oUtils.stopEvent(oEv);
};Zapatec.Drag.end=function(oEv){
	var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;oEv||(oEv=window.event);if(!oDrag.currentId){
		return oUtils.stopEvent(oEv);
	}
	var oEl=document.getElementById(oDrag.currentId);if(!(oEl&&oEl.zpDrag)){
		return oUtils.stopEvent(oEv);
	}
	oUtils.removeEvent(document,'mousemove',oDrag.move);oUtils.removeEvent(document,'mouseup',oDrag.end);var oParam={
		el:oEl,
		startLeft:oEl.zpDragLeft,
		startTop:oEl.zpDragTop,
		left:oEl.zpDragPrevLeft,
		top:oEl.zpDragPrevTop,
		realLeft:oEl.zpDragPrevRealLeft,
		realTop:oEl.zpDragPrevRealTop,
		event:oEv
	};oDrag.currentId=null;oEl.zpDrag=null;oEl.zpDragPageY=null;oEl.zpDragPageX=null;oEl.zpDragTop=null;oEl.zpDragLeft=null;oEl.zpDragPrevTop=null;oEl.zpDragPrevLeft=null;oEl.zpDragPrevRealTop=null;oEl.zpDragPrevRealLeft=null;oEl.zpDragV=null;oEl.zpDragH=null;oEl.zpDragLimTop=null;oEl.zpDragLimBot=null;oEl.zpDragLimLft=null;oEl.zpDragLimRgh=null;oEl.zpDragStepV=null;oEl.zpDragStepH=null;Zapatec.EventDriven.fireEvent('dragEnd',oParam);return oUtils.stopEvent(oEv);
};if(typeof Zapatec=='undefined'){
	Zapatec=function(){};
}
Zapatec.Widget=function(oArg){
	this.config={};Zapatec.Widget.SUPERconstructor.call(this);this.init(oArg);
};Zapatec.inherit(Zapatec.Widget,Zapatec.EventDriven);Zapatec.Widget.path=Zapatec.getPath('Zapatec.Widget');Zapatec.Widget.prototype.init=function(oArg){
	Zapatec.Widget.SUPERclass.init.call(this);if(typeof this.id=='undefined'){
		var iId=0;while(Zapatec.Widget.all[iId]){
			iId++;
		}
		this.id=iId;Zapatec.Widget.all[iId]=this;
	}
	this.configure(oArg);this.addUserEventListeners();this.addStandardEventListeners();this.initLang();this.loadTheme();
};Zapatec.Widget.prototype.reconfigure=function(oArg){
	this.configure(oArg);this.loadTheme();if(oArg.lang||oArg.langCountryCode||oArg.langEncoding){
		this.langStr=this.config.lang;if(this.config.langCountryCode&&this.config.langCountryCode.length>0){
			this.langStr+="_"+this.config.langCountryCode;
		}
		if(this.config.langEncoding&&this.config.langEncoding.length>0){
			this.langStr+="-"+this.config.langEncoding;
		}
		}
	if(this.config.lang&&this.config.lang.length>0&&!(Zapatec.Langs[this.config.langId]&&Zapatec.Langs[this.config.langId][this.langStr])){
		Zapatec.Log({
			description:this.config.lang+(this.config.langCountryCode?" and country code "+this.config.langCountryCode:"")+(this.config.langEncoding?" and encoding "+this.config.langEncoding:"")
			});this.config.lang=null;this.config.langEncoding=null;this.langStr=null;
	}
	};Zapatec.Widget.prototype.configure=function(oArg){
	this.defineConfigOption('theme','default');var sPath=this.constructor.path;if(typeof sPath!='undefined'){
		this.defineConfigOption('themePath',sPath+'../themes/');
	}else{
		this.defineConfigOption('themePath','../themes/');
	}
	this.defineConfigOption('asyncTheme',false);this.defineConfigOption('source');this.defineConfigOption('sourceType');this.defineConfigOption('callbackSource');this.defineConfigOption('asyncSource',true);this.defineConfigOption('reliableSource',true);this.defineConfigOption('callbackConvertSource');this.defineConfigOption('eventListeners',{});this.defineConfigOption('langId');this.defineConfigOption('lang');this.defineConfigOption('langCountryCode');this.defineConfigOption('langEncoding');if(oArg){
		var oConfig=this.config;for(var sOption in oArg){
			if(typeof oConfig[sOption]!='undefined'){
				oConfig[sOption]=oArg[sOption];
			}else{
				Zapatec.Log({
					description:"Unknown config option: "+sOption
					});
			}
			}
		}
	};Zapatec.Widget.prototype.getConfiguration=function(){
	return this.config;
};Zapatec.Widget.all=[];Zapatec.Widget.getWidgetById=function(iId){
	return Zapatec.Widget.all[iId];
};Zapatec.Widget.prototype.addCircularRef=function(oElement,sProperty){
	if(!this.widgetCircularRefs){
		this.widgetCircularRefs=[];
	}
	this.widgetCircularRefs.push([oElement,sProperty]);
};Zapatec.Widget.prototype.createProperty=function(oElement,sProperty,val){
	oElement[sProperty]=val;this.addCircularRef(oElement,sProperty);
};Zapatec.Widget.prototype.removeCircularRefs=function(){
	if(!this.widgetCircularRefs){
		return;
	}
	for(var iRef=this.widgetCircularRefs.length-1;iRef>=0;iRef--){
		var oRef=this.widgetCircularRefs[iRef];oRef[0][oRef[1]]=null;oRef[0]=null;
	}
	};Zapatec.Widget.prototype.discard=function(){
	Zapatec.Widget.all[this.id]=null;this.removeCircularRefs();
};Zapatec.Widget.removeCircularRefs=function(){
	for(var iWidget=Zapatec.Widget.all.length-1;iWidget>=0;iWidget--){
		var oWidget=Zapatec.Widget.all[iWidget];if(oWidget&&oWidget.removeCircularRefs){
			oWidget.removeCircularRefs();
		}
		}
	};Zapatec.Utils.addEvent(window,'unload',Zapatec.Widget.removeCircularRefs);Zapatec.Widget.prototype.defineConfigOption=function(sOption,val){
	if(typeof this.config[sOption]=='undefined'){
		if(typeof val=='undefined'){
			this.config[sOption]=null;
		}else{
			this.config[sOption]=val;
		}
		}
	};Zapatec.Widget.prototype.addUserEventListeners=function(){
	var oListeners=this.config.eventListeners;var fListener,iListeners,iListener;for(var sEvent in oListeners){
		if(oListeners.hasOwnProperty(sEvent)){
			vListener=oListeners[sEvent];if(vListener instanceof Array){
				iListeners=vListener.length;for(iListener=0;iListener<iListeners;iListener++){
					this.addEventListener(sEvent,vListener[iListener]);
				}
				}else{
				this.addEventListener(sEvent,vListener);
			}
			}
		}
	};Zapatec.Widget.prototype.addStandardEventListeners=function(){
	this.addEventListener('loadThemeError',Zapatec.Widget.loadThemeError);
};Zapatec.Widget.loadThemeError=function(oError){
	var sDescription="Can't load theme.";if(oError&&oError.errorDescription){
		sDescription+=' '+oError.errorDescription;
	}
	Zapatec.Log({
		description:sDescription
	});
};Zapatec.Widget.prototype.loadTheme=function(){
	var oConfig=this.config;if(typeof oConfig.theme=='string'&&oConfig.theme.length){
		var iPos=oConfig.theme.lastIndexOf('/');if(iPos>=0){
			iPos++;oConfig.themePath=oConfig.theme.substring(0,iPos);oConfig.theme=oConfig.theme.substring(iPos);
		}
		iPos=oConfig.theme.lastIndexOf('.');if(iPos>=0){
			oConfig.theme=oConfig.theme.substring(0,iPos);
		}
		oConfig.theme=oConfig.theme.toLowerCase();if(oConfig.theme=='auto'){
			var sUserAgent=navigator.userAgent;if(sUserAgent.indexOf('Windows NT 6')!=-1){
				oConfig.theme='winvista';
			}else if(sUserAgent.indexOf('Windows NT 5')!=-1){
				oConfig.theme='winxp';
			}else if(sUserAgent.indexOf('Win')!=-1){
				oConfig.theme='win2k';
			}else if(sUserAgent.indexOf('Mac')!=-1){
				oConfig.theme='macosx';
			}else{
				oConfig.theme='default';
			}
			}
		}else{
		oConfig.theme='';
	}
	if(oConfig.theme){
		this.fireEvent('loadThemeStart');this.themeLoaded=false;var oWidget=this;var sUrl=oConfig.themePath+oConfig.theme+'.css';Zapatec.Transport.loadCss({
			url:sUrl,
			async:oConfig.asyncTheme,
			onLoad:function(){
				oWidget.fireEvent('loadThemeEnd');oWidget.themeLoaded=true;
			},
			onError:function(oError){
				oWidget.fireEvent('loadThemeEnd');oWidget.fireEvent('loadThemeError',oError);oWidget.themeLoaded=true;
			}
			});
	}
	}
Zapatec.Widget.prototype.getClassName=function(oArg){
	var aClassName=[];if(oArg&&oArg.prefix){
		aClassName.push(oArg.prefix);
	}
	var sTheme=this.config.theme;if(sTheme!=''){
		aClassName.push(sTheme.charAt(0).toUpperCase());aClassName.push(sTheme.substr(1));
	}
	if(oArg&&oArg.suffix){
		aClassName.push(oArg.suffix);
	}
	return aClassName.join('');
};Zapatec.Widget.prototype.formElementId=function(oArg){
	var aId=[];if(oArg&&oArg.prefix){
		aId.push(oArg.prefix);
	}else{
		aId.push('zpWidget');
	}
	aId.push(this.id);if(oArg&&oArg.suffix){
		aId.push(oArg.suffix);
	}else{
		aId.push('-');
	}
	if(typeof this.widgetUniqueIdCounter=='undefined'){
		this.widgetUniqueIdCounter=0;
	}else{
		this.widgetUniqueIdCounter++;
	}
	aId.push(this.widgetUniqueIdCounter);return aId.join('');
};Zapatec.Widget.prototype.showContainer=function(effects,animSpeed,onFinish){
	return this.showHideContainer(effects,animSpeed,onFinish,true);
}
Zapatec.Widget.prototype.hideContainer=function(effects,animSpeed,onFinish){
	return this.showHideContainer(effects,animSpeed,onFinish,false);
}
Zapatec.Widget.prototype.showHideContainer=function(effects,animSpeed,onFinish,show){
	if(this.container==null){
		return null;
	}
	if(effects&&effects.length>0&&typeof(Zapatec.Effects)=='undefined'){
		var self=this;Zapatec.Transport.loadJS({
			url:Zapatec.zapatecPath+'../zpeffects/src/effects.js',
			onLoad:function(){
				self.showHideContainer(effects,animSpeed,onFinish,show);
			}
			});return false;
	}
	if(animSpeed==null&&isNaN(parseInt(animSpeed))){
		animSpeed=5;
	}
	if(!effects||effects.length==0){
		if(show){
			this.container.style.display=this.originalContainerDisplay;this.originalContainerDisplay=null;
		}else{
			this.originalContainerDisplay=this.container.style.display;this.container.style.display='none';
		}
		if(onFinish){
			onFinish();
		}
		}else{
		if(show){
			Zapatec.Effects.show(this.container,animSpeed,effects,onFinish);
		}else{
			Zapatec.Effects.hide(this.container,animSpeed,effects,onFinish);
		}
		}
	return true;
}
Zapatec.Widget.prototype.loadData=function(oArg){
	var oConfig=this.config;if(typeof oConfig.callbackSource=='function'){
		var oSource=oConfig.callbackSource(oArg);if(oSource){
			if(typeof oSource.source!='undefined'){
				oConfig.source=oSource.source;
			}
			if(typeof oSource.sourceType!='undefined'){
				oConfig.sourceType=oSource.sourceType;
			}
			}
		}
	var vSource=oConfig.source;if(typeof oConfig.callbackConvertSource=='function'){
		vSource=oConfig.callbackConvertSource(vSource);
	}
	var sSourceType=oConfig.sourceType;if(vSource!=null&&sSourceType!=null){
		sSourceType=sSourceType.toLowerCase();if(sSourceType=='html'){
			this.fireEvent('loadDataStart');this.loadDataHtml(Zapatec.Widget.getElementById(vSource));this.fireEvent('loadDataEnd');
		}else if(sSourceType=='html/text'){
			this.fireEvent('loadDataStart');this.loadDataHtmlText(vSource);this.fireEvent('loadDataEnd');
		}else if(sSourceType=='html/url'){
			this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetch({
				url:vSource,
				async:oConfig.asyncSource,
				onLoad:function(oRequest){
					oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataHtmlText(oRequest.responseText);oWidget.fireEvent('loadDataEnd');
				},
				onError:function(oError){
					oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');
				}
				});
		}else if(sSourceType=='json'){
			this.fireEvent('loadDataStart');if(typeof vSource=='object'){
				this.loadDataJson(vSource);
			}else if(oConfig.reliableSource){
				this.loadDataJson(eval(['(',vSource,')'].join('')));
			}else{
				this.loadDataJson(Zapatec.Transport.parseJson({
					strJson:vSource
				}));
			}
			this.fireEvent('loadDataEnd');
		}else if(sSourceType=='json/url'){
			this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetchJsonObj({
				url:vSource,
				async:oConfig.asyncSource,
				reliable:oConfig.reliableSource,
				onLoad:function(oResult){
					oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataJson(oResult);oWidget.fireEvent('loadDataEnd');
				},
				onError:function(oError){
					oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');
				}
				});
		}else if(sSourceType=='xml'){
			this.fireEvent('loadDataStart');if(typeof vSource=='object'){
				this.loadDataXml(vSource);
			}else{
				this.loadDataXml(Zapatec.Transport.parseXml({
					strXml:vSource
				}));
			}
			this.fireEvent('loadDataEnd');
		}else if(sSourceType=='xml/url'){
			this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetchXmlDoc({
				url:vSource,
				async:oConfig.asyncSource,
				onLoad:function(oResult){
					oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataXml(oResult);oWidget.fireEvent('loadDataEnd');
				},
				onError:function(oError){
					oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');
				}
				});
		}
		}else{
		this.fireEvent('loadDataStart');this.loadDataHtml(Zapatec.Widget.getElementById(vSource));this.fireEvent('loadDataEnd');
	}
	};Zapatec.Widget.prototype.loadDataHtml=function(oSource){};Zapatec.Widget.prototype.loadDataHtmlText=function(sSource){
	var oTempContainer=Zapatec.Transport.parseHtml(sSource);this.loadDataHtml(oTempContainer.firstChild);
};Zapatec.Widget.prototype.loadDataJson=function(oSource){};Zapatec.Widget.prototype.loadDataXml=function(oSource){};Zapatec.Widget.prototype.receiveData=function(oArg){
	if(!oArg){
		oArg={};
	}
	this.dataSender=oArg.widget;this.fireEvent('receiveData',oArg);
};Zapatec.Widget.prototype.replyData=function(){
	return null;
};Zapatec.Widget.prototype.replyDataCancel=function(){
	this.fireEvent('replyDataCancel');if(typeof this.hide=='function'){
		this.hide();
	}
	this.dataSender=null;
};Zapatec.Widget.prototype.replyDataReturn=function(oArg){
	if(!oArg){
		oArg={};
	}
	this.fireEvent('replyDataReturn',oArg);var oWidget=oArg.widget;if(!oWidget){
		oWidget=this.dataSender;
	}
	if(!oWidget||typeof oWidget.acceptData!='function'){
		return;
	}
	oWidget.acceptData({
		widget:this,
		data:this.replyData()
		});this.replyDataCancel();
};Zapatec.Widget.prototype.acceptData=function(oArg){
	this.fireEvent('acceptData',oArg);
};Zapatec.Widget.prototype.initLang=function(){
	this.langStr=this.config.lang;if(this.config.langCountryCode&&this.config.langCountryCode.length>0){
		this.langStr+="_"+this.config.langCountryCode;
	}
	if(this.config.langEncoding&&this.config.langEncoding.length>0){
		this.langStr+="-"+this.config.langEncoding;
	}
	if(this.config.lang&&this.config.lang.length>0&&!(Zapatec.Langs[this.config.langId]&&Zapatec.Langs[this.config.langId][this.langStr])){
		Zapatec.Log({
			description:"No language data found for language "+
			this.config.lang+(this.config.langCountryCode?" and country code "+this.config.langCountryCode:"")+(this.config.langEncoding?" and encoding "+this.config.langEncoding:"")
			});this.config.lang=null;this.config.langCountryCode=null;this.config.langEncoding=null;this.langStr=null;
	}
	};Zapatec.Widget.prototype.getMessage=function(key){
	if(arguments.length==0){
		return null;
	}
	if(!Zapatec.Langs[this.config.langId]||!Zapatec.Langs[this.config.langId][this.langStr]||!Zapatec.Langs[this.config.langId][this.langStr][key]){
		return key;
	}
	var res=Zapatec.Langs[this.config.langId][this.langStr][key];if(arguments.length>1&&typeof(res)=="string"){
		for(var ii=1;ii<arguments.length;ii++){
			var re=new RegExp("(^|([^\\\\]))\%"+ii);res=res.replace(re,"$2"+arguments[ii]);
		}
		}
	return res;
};Zapatec.Widget.callMethod=function(iWidgetId,sMethod){
	var oWidget=Zapatec.Widget.getWidgetById(iWidgetId);if(oWidget&&typeof oWidget[sMethod]=='function'){
		var aArgs=[].slice.call(arguments,2);return oWidget[sMethod].apply(oWidget,aArgs);
	}
	};Zapatec.Widget.getElementById=function(element){
	if(typeof element=='string'){
		return document.getElementById(element);
	}
	return element;
};Zapatec.Widget.getStyle=function(element){
	var style=element.getAttribute('style')||'';if(typeof style=='string'){
		return style;
	}
	return style.cssText;
};
