
var is=new BrowserCheck();
if(typeof utility=='undefined')
	utility={};
Object_weave_safe(utility,{math:{}});

utility.math.intbgr2hexrgb=function(a){
	d2h=utility.math.dec2hex;
	pad=utility.math.zeroPad;
	return "#"+pad(d2h(a%256),2)
		+pad(d2h((a/256)%256),2)
		+pad(d2h((a/65536)%256),2);
}

utility.math.mozcolor2rgb=function(color){
	return color;
}

utility.math.dec2hex=function(x){
	return Number(parseInt(x)).toString(16);
}

utility.math.hex2dec=function(x){
	return parseInt(x,16);
}

utility.math.zeroPad=function(str,length){
	if(!str) str="";
	str=str.toString();
	while(str.length<length){
		str="0"+str;
	}
	return str;
}

utility.math.rgb2hexcolor=function(color){
	var arr=[];
	if(arr=color.match(/^rgb\(([0-9]+),\s*([0-9]+),\s*([0-9]+)\)/i)){
		var ret='';
		for(var i=1;i<4;i++){
			var tmp=utility.math.dec2hex(arr[i]);
			while (tmp.length<2){
				tmp="0"+tmp;
			}
			ret+=tmp;
		}
		return"#"+ret;
	} else {
		return color;
	}
}

Object_weave_safe(utility,{js:{}});
utility.js.build=function(fun1,fun2){
	var me=function(){
		if(fun2){
			fun2();
		}
		if(fun1){
			fun1();
		}
	}
	return me;
}

utility.js.empty_func=function(){};
Object_weave_safe(utility,{debug:{}});
utility.debug.dump=function(obj,sep){
	if(sep==undefined){
		sep='';
	}
	tm="";
	if(typeof(obj)=="object"){
		for(i in obj){
			tm+=sep+i+":{\n"+utility.debug.dump(obj[i],sep+'  ')+"}\n";
		}
	return tm;
	}
	if(typeof(obj)=="function")
		return sep+typeof(obj)+"\n";return sep+obj+"\n";
}

function al(obj,rx){
	alert(utility.debug.dumpone(obj,rx));
}

utility.debug.dumpone=function(obj,rx,sep){
	if(rx==undefined){
		rx=new RegExp("","");
	}
	if(sep==undefined){
		sep='';
	}
	tm="";
	if(typeof(obj)=="object"&&obj!=null){
		if(typeof(obj.push)!="undefined"
			&&obj.push.toString().indexOf("[native code]")>0){
			
			tm=sep+"Array["+obj.length+"]\n";
		} else {
			for(i in obj){
				if(i.toUpperCase()==i){
					continue;
				}
				if(!rx.test(i)){
					continue;
				}
				try{
					if(typeof obj[i]!='function'){
						tm+=sep+i+":{"+obj[i]+"}\n";
					}else{}
				} catch(err){
					tm+=sep+i+":ERROR{"+err.message+"}\n";
				}
			}
		}
		return tm;
	}
	if(typeof(obj)=="function")
		return sep+typeof(obj)+"\n";return sep+obj+"\n";
}

utility.debug.breakpoint=function(evalFunc,msg,initialExprStr){
	if(evalFunc==null)
		evalFunc=function(e){
			return eval(e)
		};
	if(msg==null)
		msg="";
	
	var result=initialExprStr||"1+2";
	while(true){
		var expr=prompt("BREAKPOINT: "+msg+"\nEnter an expression to evaluate, or Cancel to continue.",result);
		if(expr==null||expr=="")
			return;
		try {
			result=evalFunc(expr);
		}catch(e){ 
			result=e;
		}
	}
}

Object_weave_safe(utility,{string:{}});
utility.string.htmlspecialchars=function(str){
	Array_each([['>','&gt;'],['<','&lt;'],['\xA0','&nbsp;'],['"','&quot;']],
		function(repl,idx){
			str=str.replace(new RegExp('['+repl[0]+']',"g"),repl[1]);
		}
		);
	return str;
}

utility.string.getInnerText=function(str){
	if(typeof getInnerText_tmpDiv=='undefined'){
		getInnerText_tmpDiv=document.createElement('div');
	}
	var oldstr=str;
	try {
		getInnerText_tmpDiv.innerHTML=str;
		if(is.safari){
			str=getInnerText_tmpDiv.innerHTML;
			getInnerText_tmpDiv.innerHTML="";
		} else {
			str=getInnerText_tmpDiv.innerText;
			getInnerText_tmpDiv.innerHTML="";
		}
	} catch(e){ 
		return oldstr;
	}
	if(typeof str=='undefined'){
		return oldstr;
	}
	return str;
}

utility.string.sprintf=function(){
	if(!arguments||arguments.length<1||!RegExp){
		return;
	}
	var str=arguments[0];
	var oldstr=arguments[0];
	var re=/([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a=b=[],numSubstitutions=0,numMatches=0;

	while(a=re.exec(str)){
		var leftpart=a[1],pPad=a[2],pJustify=a[3],pMinLength=a[4];
		var pPrecision=a[5],pType=a[6],rightPart=a[7];
		numMatches++;
		if(pType=='%'){
			subst='%';
		} else {
			numSubstitutions++;
			if (numSubstitutions>=arguments.length){
				return oldstr;
			}
			var param=arguments[numSubstitutions];
			var subst=param;
			if(pType=='c') 
				subst=String.fromCharCode(parseInt(param));
			else if(pType=='d')
				subst=parseInt(param)?parseInt(param):0;
			else if(pType=='s')subst=param;
		}
		str=leftpart+subst+rightPart;
	}
	return str;
}

Object_weave_safe(utility,{dom:{}});
utility.dom.setUnselectable=function(el){
	if(is.ie){
		for(var i=0;i<el.all.length;i++){
			if(el.all[i].tagName!="INPUT"&&el.all[i].tagName!="TEXTAREA"){
				var oldCurr=utility.dom.getStyleProperty(el.all[i],"cursor");
				el.all[i].unselectable="On";
				if(oldCurr=="auto"){
					el.all[i].style.cursor="default";
				}
			} else if(el.all[i].type=="text"||el.all[i].tagName=="TEXTAREA"){
				el.all[i].style.cursor="text";
			}
		}
	} else {
		var allChilds=utility.dom.getElementsByTagName(el,'*');
		Array_each(allChilds, 
			function(child){
				var oldCurr=utility.dom.getStyleProperty(child,"cursor");
				var isHtmlEl=(child.nodeType==1)?true:false;
				if(true){
					var isInput=((child.nodeName.toLowerCase()=="input")
						&&(child.getAttribute('type')
						&&child.getAttribute('type').toLowerCase()=='text')
						||(child.getAttribute('type')
						&&child.getAttribute('type').toLowerCase()=='password'))
							?true:false;
					var isTxtArea=(child.nodeName.toLowerCase()=="textarea")?true:false;
					if(!isInput&&!isTxtArea){
						if(oldCurr=="auto"){
							child.style.cursor="default";
						}
						var hasHTMLChilds=utility.dom.getElementsByTagName(child,'*').length?true:false;
						if(!hasHTMLChilds){
							child.style.MozUserSelect='none';
						}
					} else {
						child.style.cursor="text !important";
					}
				};
			}
		);
		
	}
};

utility.dom.getPixels=function(m,s){
	var v=utility.dom.getStyleProperty(m,s);
	if(v=="medium"){
		v=2;
	} else {
		v=parseInt(v,10);
	}
	v=isNaN(v)?0:v;return v;
};

utility.dom.getBorderBox=function(el,doc){
	doc=doc||document;if(typeof(el)=='string'){
		el=doc.getElementById(el);
	}
	if(!el){
		return false;
	}
	if(el.parentNode===null||utility.dom.getStyleProperty(el,'display')=='none'){
		return false;
	}
	var ret={
		x:0,
		y:0,
		width:0,
		height:0
	}
	;var parent=null;
	var box;
	if(el.getBoundingClientRect){
		box=el.getBoundingClientRect();
		var scrollTop=doc.documentElement.scrollTop||doc.body.scrollTop;
		var scrollLeft=doc.documentElement.scrollLeft||doc.body.scrollLeft;
		ret.x=box.left+scrollLeft;
		ret.y=box.top+scrollTop;
		ret.width=box.right-box.left;
		ret.height=box.bottom-box.top;
	} else if(doc.getBoxObjectFor){
		box=doc.getBoxObjectFor(el);
		ret.x=box.x;ret.y=box.y;
		ret.width=box.width;
		ret.height=box.height;
		var btw=utility.dom.getPixels(el,"border-top-width");
		var blw=utility.dom.getPixels(el,"border-left-width");
		ret.x-=blw;ret.y-=btw;
	} else { 
		ret.x=el.offsetLeft;
		ret.y=el.offsetTop;
		ret.width=el.offsetWidth;
		ret.height=el.offsetHeight;
		parent=el.offsetParent;
		if(parent!=el){
			while(parent){
				ret.x+=parent.offsetLeft;
				ret.y+=parent.offsetTop;
				parent=parent.offsetParent;
			}
		}
		var blw=utility.dom.getPixels(el,"border-left-width");
		var btw=utility.dom.getPixels(el,"border-top-width");
		ret.x-=blw;ret.y-=btw;
		var ua=navigator.userAgent.toLowerCase();
		if(is.opera||is.safari&&utility.dom.getStyleProperty(el,'position')=='absolute'){
			ret.y-=doc.body.offsetTop;
		}
	}
	if(el.parentNode){
		parent=el.parentNode;
	} else {
		parent=null;
	}
	while(parent&&parent.tagName!='BODY'&&parent.tagName!='HTML'){
		ret.x-=parent.scrollLeft;
		ret.y-=parent.scrollTop;
		if(parent.parentNode){
			parent=parent.parentNode;
		} else { 
			parent=null;
		}
	}
	return ret;
};

utility.dom.setBorderBox=function(el,box){
	var pos=utility.dom.getBorderBox(el,el.ownerDocument);
	if(pos===false){
		return false;
	}
	var delta={
		x:utility.dom.getPixels(el,'left'),
		y:utility.dom.getPixels(el,'top')
	};
	var new_pos={
		x:0,
		y:0
	};
	if(box.x!==null){
		new_pos.x=box.x-pos.x+delta.x;
	}
	if(box.y!==null){
		new_pos.y=box.y-pos.y+delta.y;
	}
	if(box.x!==null){
		el.style.left=new_pos.x+'px';
	}
	if(box.y!==null){
		el.style.top=new_pos.y+'px';
	}
	return true;
};

utility.dom.bringIntoView=function(source){
	var box=utility.dom.getBorderBox(source,source.ownerDocument);
	if(box===false){
		return false;
	}
	var current = {
		x:utility.dom.getPixels(source,'left'),
		y:utility.dom.getPixels(source,'top')
	};
	var delta={
		x:0,
		y:0
	};
	var offset_fix={
		x:0,
		y:0
	};
	var strictm=source.ownerDocument.compatMode=="CSS1Compat";
	var doc=(is.ie&&strictm||is.mozilla)
		? source.ownerDocument.documentElement
		: source.ownerDocument.body;
	offset_fix.x=utility.dom.getPixels(doc,'border-left-width');
	offset_fix.y=utility.dom.getPixels(doc,'border-top-width');
	var st=doc.scrollTop;
	var ch=doc.clientHeight;
	var t=box.y+(is.ie?-offset_fix.y:offset_fix.y);
	var b=box.y+box.height+(is.ie?-offset_fix.y:offset_fix.y);
	if(b-st>ch){
		delta.y=ch-(b-st);
		if(t+delta.y<st){
			delta.y=st-t;
		}
	} else if(t<st){
		delta.y=st-t;
	}
	if(delta.y!=0){
		source.style.top=(current.y+delta.y)+'px';
	}
	var sl=doc.scrollLeft;
	var cw=doc.clientWidth;
	var l=box.x+(is.ie?-offset_fix.x:offset_fix.x);
	var r=box.x+box.width+(is.ie?-offset_fix.x:offset_fix.x);
	if(r-sl>cw){
		delta.x=cw-(r-sl);
		if(l+delta.x<sl){
			delta.x=sl-l;
		}
	}
	else if(l<sl){
		delta.x=sl-l;
	}
	if(delta.x!=0){
		source.style.left=(current.x+delta.x)+'px';
	}
};

utility.dom.putElementAt=function(source,target,relative,offset,biv){
	offset=util_defaultValue(offset,{
		x:0,
		y:0
	});
	biv=util_defaultValue(biv,true);
	var si=parseInt(relative.charAt(0),10);
	var ti=parseInt(relative.charAt(1),10);
	var source_box=utility.dom.getBorderBox(source,source.ownerDocument);
	var target_box=utility.dom.getBorderBox(target,target.ownerDocument);
	var sx=['0',
		'-source_box.width',
		'-source_box.width',
		'0',
		'-source_box.width/2',
		'-source_box.width',
		'-source_box.width/2',
		'0',
		'-source_box.width/2'
	];
	var tx=[
		'target_box.x',
		'target_box.x+target_box.width',
		'target_box.x+target_box.width',
		'target_box.x',
		'target_box.x+target_box.width/2',
		'target_box.x+target_box.width',
		'target_box.x+target_box.width/2',
		'target_box.x',
		'target_box.x+target_box.width/2'
	];
	var sy=['0',
		'0',
		'-source_box.height',
		'-source_box.height',
		'0',
		'-source_box.height/2',
		'-source_box.height',
		'-source_box.height/2',
		'-source_box.height/2'
	];
	var ty=[
		'target_box.y',
		'target_box.y',
		'target_box.y+target_box.height',
		'target_box.y+target_box.height',
		'target_box.y',
		'target_box.y+target_box.height/2',
		'target_box.y+target_box.height',
		'target_box.y+target_box.height/2',
		'target_box.y+target_box.height/2'
	];
	var box={
		x:0,
		y:0
	};
	box.x=eval(
		sx[si]+' + '+tx[ti])+offset.x;
		box.y = eval(
				sy[si]+' + '+ty[ti]
	)+offset.y;
	utility.dom.setBorderBox(source,box);
	if(biv){
		utility.dom.bringIntoView(source);
	}
	return true;
};

utility.dom.put=function(el,left,top){
	el.style.left=left+'px';
	el.style.top=top+'px';
	}
utility.dom.resize=function(el,width,height){
	el.style.width=width+'px';
	el.style.height=height+'px';
}
utility.dom.focusElem=function(elem){
	var d;
	d=this.getElem(elem);
	if(!d)return;
	if(d.focus)d.focus();
}
utility.dom.hideElem=function(elem){
	this.setCssProperty(elem,"display","none");
}
utility.dom.showElem=function(elem,force){
	var tag_display={
		table:'table',
		tr:'table-row',
		td:'table-cell'
	}
	elem=utility.dom.getElem(elem);
	var tn=elem.tagName.toLowerCase();
	var t;
	if(!force){
		if(typeof tag_display[tn]!='undefined'){
			t=tag_display[tn];
		} else{ 
			t="block";
		}
	} else{
		t='force';
	}
	try {
		this.setCssProperty(elem,"display",t);
	}catch(e){
		this.setCssProperty(elem,"display","block");
	}
}
utility.dom.toggleElem=function(elem,force){elem=utility.dom.getElem(elem);try{if(!elem.style.display||elem.style.display=='none'){utility.dom.showElem(elem,force);}else{utility.dom.hideElem(elem);}}catch(e){}}
utility.dom.selectOption=function(sel,val){var i;if(!sel)return;for(i=0;i<sel.options.length;i++){sel.options[i].removeAttribute('selected');}
for(i=0;i<sel.options.length;i++){if(sel.options[i].value==val){sel.options[i].setAttribute('selected','selected');sel.options[i].selected=true;return;}else{sel.options[i].removeAttribute('selected');}}}
utility.dom.getSelected=function(sel){return sel.options[sel.selectedIndex].value;}
utility.dom.getPositionRelativeTo00=function(x,y,w,h){var bw,bh,sw,sh,d;if(is.mozilla){bw=document.width;bh=document.height;sw=window.pageXOffset;sh=window.pageYOffset;}else{var strictm=document.compatMode=="CSS1Compat";d=strictm?document.documentElement:document.body;bw=d.offsetWidth-20;bh=d.offsetHeight;sw=d.scrollLeft;sh=d.scrollTop;}
if(x+w>bw+sw){x=bw+sw-w;}
if(y+h>bh+sh){y=bh+sh-h;}
if(x<0)x=0;if(y<0)y=0;return{x:x,y:y};}
utility.dom.setCssProperty=function(elem,name,value){var d;if(!elem||!name||!value)return;d=this.getElem(elem);if(!d)return;d.style[name]=value;}
utility.dom.getElem=function(elem){var d;if(typeof(elem)=="string"){d=document.getElementById(elem);}else{d=elem;}
return d;}
utility.dom.getClassNames=function(o){o=utility.dom.getElem(o);if(!o)return false;var cn=String_trim(String_normalize_space(o.className));if(cn==''){return[];}
return cn.split(" ");}
utility.dom.classNameAdd=function(obj,toadd){var cls=utility.dom.getClassNames(obj);if(typeof toadd=='string'){toadd=toadd.split(',');}
Array_each(toadd,function(item,i){if(Array_indexOf(cls,item)==-1){Array_push(cls,item);}});cls=String_trim(cls.join(' '));if(String_trim(obj.className)!=cls){obj.className=cls;}}
utility.dom.classNameRemove=function(obj,toremove){var cls=utility.dom.getClassNames(obj);var result=[];if(typeof toremove=='string'){toremove=toremove.split(',');}
Array_each(cls,function(item,i){if(Array_indexOf(toremove,item)==-1){Array_push(result,item);}});cls=String_trim(result.join(' '));if(String_trim(obj.className)!=cls){obj.className=cls;}}
utility.dom.insertAfter=function(newElement,targetElement){var sibling=targetElement.nextSibling
var parent=targetElement.parentNode;if(sibling==null){var toret=parent.appendChild(newElement);}else{var toret=parent.insertBefore(newElement,sibling);}
return toret;}
utility.dom.getPreviousSiblingByTagName=function(t,siblingName,allowSameTag){if((t.nodeName.toLowerCase()==siblingName.toLowerCase())&&!allowSameTag){return t;}
while(t.previousSibling&&t.previousSibling.nodeName.toLowerCase()!=siblingName.toLowerCase()){t=t.previousSibling;}
if(t.previousSibling&&t.previousSibling.nodeName.toLowerCase()==siblingName.toLowerCase()){return t.previousSibling;}else{return null;}}
utility.dom.getNextSiblingByTagName=function(t,siblingName,allowSameTag){if((t.nodeName.toLowerCase()==siblingName.toLowerCase())&&!allowSameTag){return t;}
while(t.nextSibling&&t.nextSibling.nodeName.toLowerCase()!=siblingName.toLowerCase()){t=t.nextSibling;}
if(t.nextSibling&&t.nextSibling.nodeName.toLowerCase()==siblingName.toLowerCase()){return t.nextSibling;}else{return null;}}
utility.dom.getParentByTagName=function(t,parentName){if(t.nodeName.toLowerCase()==parentName.toLowerCase()){return t;}
while(t.parentNode&&t.parentNode.nodeName.toLowerCase()!=parentName.toLowerCase()&&t.parentNode.nodeName!='BODY'){t=t.parentNode;}
if(t.parentNode&&t.parentNode.nodeName.toLowerCase()==parentName.toLowerCase()){return t.parentNode;}else{return null;}}
utility.dom.getElementsByTagName=function(o,sTagName){var el;if(typeof o=='undefined'){o=document;}else{o=utility.dom.getElem(o);}
if(sTagName=='*'||typeof sTagName=='undefined'){el=utility.dom.getAllChildren(o);}else{el=o.getElementsByTagName(sTagName.toLowerCase());}
return el;}
utility.dom.getElementsByClassName=function(o,sClassName,sTagName){var elements=[];Array_each(utility.dom.getElementsByTagName(o,sTagName),function(elem,i){if(Array_indexOf(utility.dom.getClassNames(elem),sClassName)!=-1){Array_push(elements,elem);}});return elements;}
utility.dom.getElementById=function(o,sId,sTagName){var elements=[];Array_each(utility.dom.getElementsByTagName(o,sTagName),function(elem,i){if(typeof elem.id!="undefined"&&elem.id!=null&&elem.id.toString()==sId){Array_push(elements,elem);}});return elements;}
utility.dom.getElementsByProps=function(start,props_hash){var unfiltered,toret=[];if(typeof(start)=='undefined'){start=document;}else{start=utility.dom.getElem(o);}
if(o.all){unfiltered=o.all;}else{unfiltered=o.getElementsByTagName('*');}
Array_each(unfiltered,function(item){var cond=true;for(i in props_hash){try{var value=item[i];}catch(e){value=null;}
cond=cond&&(value==props_hash[i]);}
if(cond){Array_push(toret,item);}});return toret;}
utility.dom.getChildrenByTagName=function(elem,tag){var result=[];var x;if(typeof(tag)=='undefined')tag='*';tag=tag.toLowerCase();if(!elem.childNodes)return result;for(var i=0;i<elem.childNodes.length;i++){x=elem.childNodes[i];try{if((typeof(x)!='undefined'&&typeof(x.tagName)!='undefined'&&x.tagName.toLowerCase()==tag)||tag=='*'){Array_push(result,x);}}catch(e){}}
return result;}
utility.dom.getChildrenByClassName=function(elem,sClassName,sTagName){var result=[];result=Array_each(utility.dom.getChildrenByTagName(sTagName),function(elem,i){if(Array_indexOf(utility.dom.getClassNames(item),sClassName)!=-1){Array_push(result,elem);}});}
utility.dom.getAllChildren=function(e){return e.all?e.all:e.getElementsByTagName('*');}
utility.dom.getElementsBySelector=function(selector,startfrom){if(typeof startfrom=='undefined'){startfrom=document;}
if(!document.getElementsByTagName){return[];}
var tokens=selector.split(' ');var currentContext=new Array(startfrom);for(var i=0;i<tokens.length;i++){token=tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');if(token.indexOf('#')>-1){var bits=token.split('#');var tagName=bits[0];var id=bits[1];var element=document.getElementById(id);if(element&&tagName&&element.nodeName.toLowerCase()!=tagName){return[];}
currentContext=new Array(element);continue;}
if(token.indexOf('.')>-1){var bits=token.split('.');var tagName=bits[0];var className=bits[1];if(!tagName){tagName='*';}
var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){var elements;if(tagName=='*'){elements=utility.dom.getAllChildren(currentContext[h]);}else{elements=currentContext[h].getElementsByTagName(tagName);}
for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j];}}
currentContext=new Array;var currentContextIndex=0;for(var k=0;k<found.length;k++){if(found[k].className&&found[k].className.match(new RegExp('\\b'+className+'\\b'))){currentContext[currentContextIndex++]=found[k];}}
continue;}
if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)){var tagName=RegExp.$1;var attrName=RegExp.$2;var attrOperator=RegExp.$3;var attrValue=RegExp.$4;if(!tagName){tagName='*';}
var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){var elements;if(tagName=='*'){elements=utility.dom.getAllChildren(currentContext[h]);}else{elements=currentContext[h].getElementsByTagName(tagName);}
for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j];}}
currentContext=new Array;var currentContextIndex=0;var checkFunction;switch(attrOperator){case'=':checkFunction=function(e){try{return(e.getAttribute(attrName).toString()==attrValue);}catch(ex){}};break;case'~':checkFunction=function(e){try{return(e.getAttribute(attrName).toString().match(new RegExp(attrValue)));}catch(ex){return false;}};break;case'|':checkFunction=function(e){return(e.getAttribute(attrName).toString().match(new RegExp('^'+attrValue+'-?')));};break;case'^':checkFunction=function(e){return(e.getAttribute(attrName).toString().indexOf(attrValue)==0);};break;case'$':checkFunction=function(e){return(e.getAttribute(attrName).toString().lastIndexOf(attrValue)==e.getAttribute(attrName).length-attrValue.length);};break;case'*':checkFunction=function(e){return(e.getAttribute(attrName).toString().indexOf(attrValue)>-1);};break;default:checkFunction=function(e){return e.getAttribute(attrName);};}
currentContext=new Array;var currentContextIndex=0;for(var k=0;k<found.length;k++){if(checkFunction(found[k])){currentContext[currentContextIndex++]=found[k];}}
continue;}
tagName=token;var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){if(currentContext[h]!=null){var elements=currentContext[h].getElementsByTagName(tagName);for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j];}}}
currentContext=found;}
return currentContext;}
utility.dom.createForm=function(options,inputs,doc){if(typeof options=='undefined')options={};if(typeof inputs=='undefined')inputs=[];if(typeof doc=='undefined')doc=document;var default_options={name:'',id:'',action:'',method:'POST',target:''}
options=Object_weave_safe(options,default_options);var frm=utility.dom.createElement("FORM",{name:options.name,id:options.id,action:options.action,method:options.method,style:"display: none"});Array_each(inputs,function(input,i){frm.appendChild(utility.dom.createElement('INPUT',{'type':'hidden','id':input[0],'name':input[0],'value':input[1]}));});frm=doc.body.appendChild(frm);frm.target=options.target;return frm;}
utility.dom.createIframe=function(options,doc){if(typeof options=='undefined')options={};if(typeof doc=='undefined')doc=document;var default_options={name:'',id:'',src:options.src}
options=Object_weave_safe(options,default_options);if(is.mozilla){var ifr=utility.dom.createElement('iframe',{'id':options.id,'name':options.name,'style':'display: none;'});ifr.src=options.src;ifr=doc.body.appendChild(ifr);ifr.name=options.name;ifr.id=options.id;}else if(is.ie){var str='<iframe name="'+options.name+'" src="'+options.src+'" id="'+options.id+'" style="display: none;"></iframe>';var dv=doc.createElement('div');doc.body.appendChild(dv);dv.innerHTML=str;}
var ifr=doc.getElementById(options.id);return ifr;}
utility.dom.addIframeLoad=function(ifr,functor){if(is.mozilla){ifr.onload=function(){functor();}}else{ifr.onreadystatechange=function(){if(ifr.readyState=='complete'){functor();}}}}
utility.dom.removeIframeLoad=function(ifr){if(is.ie){ifr.onreadystatechange=function(){};}
if(is.mozilla){ifr.onload=function(){};}}
utility.dom.buildUrl=function(){}
utility.dom.stripAttributes=function(el,additional_arr){var cearElementProps=['onload','data','onmouseover','onmouseout','onmousedown','onmouseup','ondblclick','onclick','onselectstart','oncontextmenu','onkeydown','onkeypress','onkeyup','onblur','onfocus','onbeforedeactivate','onchange'];if(typeof el=='undefined'||el==null){return true;}
for(var c=cearElementProps.length;c--;){el[cearElementProps[c]]=null;}
if(typeof additional_arr!='undefined'){for(var c=additional_arr.length;c--;){el[additional_arr[c]]=null;}}}
utility.dom.attachEvent2=function(where,type,what,when){utility.dom.attachEvent_base(where,type,what,when,1);}
utility.dom.attachEvent=function(where,type,what,when){utility.dom.attachEvent_base(where,type,what,when,0);}
utility.dom.attachEvent_base=function(where,type,what,when,add_first){if(typeof(when)=='undefined')when=1;var doNotAdd=type.match(/unload$/i);var real_type=type.match(/^on/)?type:'on'+type;var logical_type=type.replace(/^on/,'');if(typeof where.__eventHandlers=='undefined'){where.__eventHandlers={};}
var place=null;if(typeof where.__eventHandlers[logical_type]=='undefined'){where.__eventHandlers[logical_type]=[];place=where.__eventHandlers[logical_type];var raiseEvent=function(e){if(!e&&window.event){e=window.event;}
for(var i=0;i<where.__eventHandlers[logical_type].length;i++){var f=where.__eventHandlers[logical_type][i];if(typeof f=='function'){f.apply(where,[e]);f=null;}}}
if(where.addEventListener){where.addEventListener(logical_type,raiseEvent,false);}
else if(where.attachEvent){where.attachEvent("on"+logical_type,raiseEvent);}
else{where["on"+logical_type]=raiseEvent;}
if((!(is.ie&&is.mac))&&!doNotAdd){EventCache.add(where,logical_type,raiseEvent,1);}}else{place=where.__eventHandlers[logical_type];}
for(var i=0;i<place.length;i++){if(place[i]==what){return;}}
place[place.length]=what;}
var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler,bCapture){Array_push(listEvents,arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(!item){continue;}
if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};var logical_type='';if(item[1].substring(0,2)!="on"){logical_type=item[1];item[1]="on"+item[1];}else{logical_type=item[1].substring(2,event_name_without_on.length);};if(typeof item[0].__eventHandlers!='undefined'&&typeof item[0].__eventHandlers[logical_type]!='undefined'){item[0].__eventHandlers[logical_type]=null;}
if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};listEvents=null;}};}();utility.dom.getStyleProperty=function(el,property){try{var value=el.style[property];}catch(e){return"";}
if(!value){if(el.ownerDocument.defaultView&&typeof(el.ownerDocument.defaultView.getComputedStyle)=="function"){value=el.ownerDocument.defaultView.getComputedStyle(el,"").getPropertyValue(property);}else if(el.currentStyle){var m=property.split(/-/);if(m.length>0){property=m[0];for(var i=1;i<m.length;i++){property+=m[i].charAt(0).toUpperCase()+m[i].substring(1);}}
value=el.currentStyle[property];}else if(el.style){value=el.style[property];}}
return value;}
utility.dom.getLink=function(link){if(!is.ie){href=link.getAttribute('href');}else{if(!is.mac){href=link.outerHTML.toString().replace(/.*href="([^"]*)".*/,"$1");}else{href=link.getAttribute('href');}}
return href;}
utility.dom.getDisplay=function(el){return utility.dom.getStyleProperty(el,'display');}
utility.dom.getVisibility=function(el){return utility.dom.getStyleProperty(el,'visibility');}
var first_getAbsolutePos_caller_element=null;utility.dom.getAbsolutePos=function(el){var scrollleft=0,scrolltop=0,tn=el.tagName.toUpperCase();if(utility.dom.getAbsolutePos.caller!=utility.dom.getAbsolutePos){first_getAbsolutePos_caller_element=el;}
if(Array_indexOf(['BODY','HTML'],tn)==-1&&first_getAbsolutePos_caller_element!=el){if(el.scrollLeft){scrollleft=el.scrollLeft;}
if(el.scrollTop){scrolltop=el.scrollTop;}}
var r={x:el.offsetLeft-scrollleft,y:el.offsetTop-scrolltop};if(el.offsetParent&&tn!='BODY'){var tmp=utility.dom.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}
return r;}
utility.dom.setEventVars=function(e){var targ;var relTarg;var posx=0;var posy=0;if(!e){e=window.event;}
if(!e){return{'e':null,'relTarg':null,'targ':null,'posx':0,'posy':0,'leftclick':false,'middleclick':false,'rightclick':false,'type':''};}
if(e.relatedTarget){relTarg=e.relatedTarget;}else if(e.fromElement){relTarg=e.fromElement;}
if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}
var st=utility.dom.getPageScroll();if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY;}else if(e.clientX||e.clientY){posx=e.clientX+st.x;posy=e.clientY+st.y;}
if(window.event){var leftclick=(e.button==1);var middleclick=(e.button==4);var rightclick=(e.button==2);}else{var leftclick=(e.button==0);var middleclick=(e.button==1);var rightclick=(e.button==2||e.button==0&&is.mac&&e.ctrlKey);}
var o={'e':e,'relTarg':relTarg,'targ':targ,'posx':posx,'posy':posy,'leftclick':leftclick,'middleclick':middleclick,'rightclick':rightclick}
try{o.type=e.type;}catch(err){o.type='';}
return o;}
utility.dom.stopEvent=function(e){if(typeof is=='undefined'){is=new BrowserCheck();}
if(typeof e!="undefined"&&e!=null){if(is.ie){e.cancelBubble=true;}
if(e.stopPropagation){e.stopPropagation();}
if(is.ie){e.returnValue=false;}
if(e.preventDefault){e.preventDefault();}}
return false;}
utility.dom.toggleSpecialTags=function(el,exclude,mode,documentObject,boxRecipient){var hide_tags=['select'];if(mode==1){var boxObject=utility.dom.getBox(el);}
for(var i=0;i<hide_tags.length;i++){var _document=null;if(documentObject&&documentObject.nodeType&&(documentObject.nodeType==9)){_document=documentObject;utility.dom.toggleSpecialTags._saved_DOC=documentObject;}else if(documentObject&&utility.dom.toggleSpecialTags._saved_DOC&&utility.dom.toggleSpecialTags._saved_DOC.nodeType&&(utility.dom.toggleSpecialTags._saved_DOC.nodeType==9)){_document=utility.dom.toggleSpecialTags._saved_DOC;}else{_document=document;};var arr=_document.getElementsByTagName(hide_tags[i]);for(var j=0;j<arr.length;j++){if(exclude==arr[j]){continue;}
if(mode==1){var cVisibility=utility.dom.getVisibility(arr[j]);var cDisplay=utility.dom.getDisplay(arr[j]);if(cDisplay=="none"||cVisibility=="hidden"){continue;}
var boxSelect=utility.dom.getBox(arr[j]);if(boxRecipient){var parentBox=utility.dom.getBox(boxRecipient);boxSelect.x+=parentBox.x;boxSelect.y+=parentBox.y;}
var overlap=utility.dom.boxOverlap(boxObject,boxSelect);if(overlap){if(documentObject&&boxRecipient){if(!arr[j].oldPosition){var cPosition=utility.dom.getStyleProperty(arr[j],"position");arr[j].oldPosition=cPosition;}
if(!arr[j].oldLeft){var cLeft=utility.dom.getStyleProperty(arr[j],"left");arr[j].oldLeft=cLeft;}
arr[j].style.position="relative";arr[j].style.left="-1000px";}
else{if(!arr[j].oldvisibility){arr[j].oldvisibility=cVisibility;}
arr[j].style.visibility='hidden';}}}else{if(documentObject&&boxRecipient){if(arr[j].oldPosition){arr[j].style.position=arr[j].oldPosition;arr[j].removeAttribute("oldPosition");}
if(arr[j].oldLeft){arr[j].style.left=arr[j].oldLeft;arr[j].removeAttribute("oldLeft");}}
else{if(arr[j].oldvisibility){arr[j].style.visibility=arr[j].oldvisibility;}}}}}}
utility.dom.boxOverlap=function(b1,b2){if((b1.x+b1.width)<b2.x||b1.x>(b2.x+b2.width)||(b1.y+b1.height)<b2.y||b1.y>(b2.y+b2.height)||false){return false;}
return true;}
utility.dom.getBox=function(el){var box={"x":0,"y":0,"width":0,"height":0,"scrollTop":0,"scrollLeft":0};var strictm=el.ownerDocument.compatMode=="CSS1Compat";if(el.ownerDocument.getBoxObjectFor){var rect=el.ownerDocument.getBoxObjectFor(el);box.x=rect.x-el.parentNode.scrollLeft;box.y=rect.y-el.parentNode.scrollTop;box.width=rect.width;box.height=rect.height;box.scrollLeft=(strictm?el.ownerDocument.documentElement:el.ownerDocument.body).scrollLeft;box.scrollTop=(strictm?el.ownerDocument.documentElement:el.ownerDocument.body).scrollTop;}else if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();box.x=rect.left;box.y=rect.top;box.width=rect.right-rect.left;box.height=rect.bottom-rect.top;box.scrollLeft=0;box.scrollTop=0;}else{var tmp=utility.dom.getAbsolutePos(el);box.x=tmp.x-el.parentNode.scrollLeft;box.y=tmp.y-el.parentNode.scrollTop;box.width=utility.dom.getStyleProperty(el,'width');box.height=utility.dom.getStyleProperty(el,'height');box.scrollLeft=el.ownerDocument.body.scrollLeft;box.scrollTop=el.ownerDocument.body.scrollTop;}
return box;}
utility.dom.getBBox=function(el){var box={"x":0,"y":0,"width":0,"height":0,"scrollTop":0,"scrollLeft":0};var strictm=el.ownerDocument.compatMode=="CSS1Compat";if(el.ownerDocument.getBoxObjectFor){var doc=strictm?el.ownerDocument.documentElement:document;var bt=parseInt(utility.dom.getStyleProperty(el,"border-top-width"));var bl=parseInt(utility.dom.getStyleProperty(el,"border-left-width"));var br=parseInt(utility.dom.getStyleProperty(el,"border-right-width"));var bb=parseInt(utility.dom.getStyleProperty(el,"border-bottom-width"));var rect=el.ownerDocument.getBoxObjectFor(el);var sl=0;var st=0;while(el.parentNode){if(el.scrollTop){st+=el.scrollTop;}
if(el.scrollLeft){sl+=el.scrollLeft;}
el=el.parentNode;}
box.scrollLeft=sl;box.scrollTop=st;box.x=rect.x-bl-sl;box.y=rect.y-bt-st;box.width=rect.width;box.height=rect.height;}else if(el.getBoundingClientRect){var pel=strictm?el.ownerDocument.documentElement:document.body;var bt=parseInt(utility.dom.getStyleProperty(el,"border-top-width"))||0;var bl=parseInt(utility.dom.getStyleProperty(el,"border-left-width"))||0;var rect=el.getBoundingClientRect();box.x=rect.left-bl;box.y=rect.top-bt;box.width=rect.right-rect.left;box.height=rect.bottom-rect.top;box.scrollLeft=0;box.scrollTop=0;}else{var pel=el.ownerDocument.documentElement;var mt=parseInt(utility.dom.getStyleProperty(pel,"margin-top"));var ml=parseInt(utility.dom.getStyleProperty(pel,"margin-left"));var bt=parseInt(utility.dom.getStyleProperty(pel,"border-top-width"));var bl=parseInt(utility.dom.getStyleProperty(pel,"border-left-width"));var pt=parseInt(utility.dom.getStyleProperty(pel,"padding-top"));var pl=parseInt(utility.dom.getStyleProperty(pel,"padding-left"));pel=el.offsetParent;var mt2=parseInt(utility.dom.getStyleProperty(pel,"margin-top"));var ml2=parseInt(utility.dom.getStyleProperty(pel,"margin-left"));var bt2=0;var bl2=0;var pt2=0;var pl2=0;var tmp=utility.dom.getAbsolutePos(el);box.x=tmp.x;box.y=tmp.y;box.width=parseInt(utility.dom.getStyleProperty(el,'width'));box.height=parseInt(utility.dom.getStyleProperty(el,'height'));box.scrollLeft=el.ownerDocument.body.scrollLeft;box.scrollTop=el.ownerDocument.body.scrollTop;if(is.opera){box.x-=(ml+bl+pl+ml2);box.y-=mt+bt+pt+mt2;}}
return box;}
utility.dom.getPageInnerSize=function(){var x,y;if(typeof self.innerHeight!="undefined"){x=self.innerWidth;y=self.innerHeight;}else if(typeof document.compatMode!='undefined'&&document.compatMode=='CSS1Compat'){x=document.documentElement.clientWidth;y=document.documentElement.clientHeight;}else if(document.body){x=document.body.clientWidth;y=document.body.clientHeight;}
return{x:x,y:y};}
utility.dom.getPageScroll=function(){var x,y;if(typeof self.pageYOffset!='undefined'){x=self.pageXOffset;y=self.pageYOffset;}else if(typeof document.compatMode!='undefined'&&document.compatMode=='CSS1Compat'){x=document.documentElement.scrollLeft;y=document.documentElement.scrollTop;}
else if(document.body){x=document.body.scrollLeft;y=document.body.scrollTop;}
return{x:x,y:y};}
utility.dom.createElement=function(type,attribs,wnd){if(typeof is=='undefined'){is=new BrowserCheck();}
if(typeof wnd!='undefined'){var elem=wnd.document.createElement(type);}else{var elem=document.createElement(type);}
if(typeof attribs!='undefined'){for(var i in attribs){switch(true){case(i=='text'):elem.appendChild(document.createTextNode(attribs[i]));break;case(i=='class'):elem.className=attribs[i];break;case(i=='id'):elem.id=attribs[i];break;case(i=='type'):if(type.toLowerCase()=="input"&&is.ie&&is.mac){var tspn=document.createElement("SPAN");document.body.appendChild(tspn);tspn.style.display="none";tspn.innerHTML=elem.outerHTML.replace(/<input/i,"<input type=\""+attribs[i]+"\"");elem=tspn.firstChild;document.body.removeChild(tspn);}else if(type.toLowerCase()=="input"&&is.mac&&is.safari){elem.setAttribute('type',attribs[i]);}else{elem.type=attribs[i];}
break;case(i=='style'):elem.style.cssText=attribs[i];break;default:try{elem.setAttribute(i,attribs[i]);elem[i]=attribs[i];}catch(e){}}}}
if(attribs['value']){elem.value=attribs['value'];}
return elem;};utility.dom.getImports=function(s){try{if(is.ie){return s.imports;}else{var toret=[];for(var i=0;i<s.cssRules.length;i++){if(is.safari){if(typeof s.cssRules[i].href!='undefined'){Array_push(toret,s.cssRules[i].styleSheet);}}else{if(s.cssRules[i].toString().match('CSSImportRule')){Array_push(toret,s.cssRules[i].styleSheet);}}}
return toret;}}catch(e){return[];}}
utility.dom.getRuleBySelector=function(s,rx){try{var koll=[];if(is.ie){koll=s.rules;}else{koll=s.cssRules;}
var toret=[];for(var i=0;i<koll.length;i++){var rule=koll[i];if(rule.selectorText.toString().match(rx)){Array_push(toret,rule);}}
return toret;}catch(e){return[];}}
utility.dom.createStyleSheet=function(doc,path){if(is.ie){return doc.createStyleSheet(path);}else if(is.mozilla){var theHeadNode=doc.getElementsByTagName("head")[0];var theStyleNode=doc.createElement('style');theStyleNode.type="text/css"
theStyleNode.rules=new Array();theHeadNode.appendChild(theStyleNode);if(path!=""){var xmlHttp=new XMLHttpRequest();try{xmlHttp.open("GET",path,false);xmlHttp.send(null);}
catch(e){alert('Cannot load a stylesheet from a server other than the current server.\r\nThe current server is "'+doc.location.hostname+'".\r\nThe requested stylesheet URL is "'+path+'".');return null;}
if(xmlHttp.status==404){prompt('Stylesheet was not found:',path);return null;}
var theTextNode=doc.createTextNode(xmlHttp.responseText);theStyleNode.appendChild(theTextNode);var re=/\s*\{([^\}]*)\}\s*/;nameList=xmlHttp.responseText.split(re);for(var i=0;i<nameList.length;i=i+2){var rul=new Object();rul.selectorText=nameList[i];rul.cssText=nameList[i+1]
theStyleNode.rules.push(rul);}}else{var theTextNode=doc.createTextNode('u');theStyleNode.appendChild(theTextNode);}
return theStyleNode;}}
Object_weave_safe(utility,{date:{}});$UNI_DATETIME_MASK_SEPARATORS=['-','/','[',']','(',')','*','+','.','\s',':'];$UNI_DATETIME_MASK_REGEXP='[';for(var i=0;i<$UNI_DATETIME_MASK_SEPARATORS.length;i++){$UNI_DATETIME_MASK_REGEXP+="\\"+$UNI_DATETIME_MASK_SEPARATORS[i]+'|';}
$UNI_DATETIME_MASK_REGEXP+=']';$UNI_DATETIME_MASK_REGEXP=new RegExp($UNI_DATETIME_MASK_REGEXP,"g");utility.date.date2regexp=function(txt){txt=txt.replace(/[\/\-\.]/g,'DATESEPARATOR');txt=txt.replace(/([-\/\[\]\(\)\*\+\.\:])/g,'\\$1');txt=txt.replace(/DATESEPARATOR/g,'[\\/\\-\\.]');txt=txt.replace(/(\\s)/g,'\s');txt=txt.replace(/yyyy/gi,'([0-9]{1,4})');txt=txt.replace(/yy/gi,'([0-9]{1,4})');txt=txt.replace(/y/gi,'([0-9]{1,4})');txt=txt.replace(/mm/g,'([0-9]{1,2})');txt=txt.replace(/m/g,'([0-9]{1,2})');txt=txt.replace(/dd/g,'([0-9]{1,2})');txt=txt.replace(/d/g,'([0-9]{1,2})');txt=txt.replace(/HH/g,'([0-9]{1,2})*');txt=txt.replace(/H/g,'([0-9]{1,2})*');txt=txt.replace(/hh/g,'([0-9]{1,2})*');txt=txt.replace(/h/g,'([0-9]{1,2})*');txt=txt.replace(/ii/g,'([0-9]{1,2})*');txt=txt.replace(/i/g,'([0-9]{1,2})*');txt=txt.replace(/ss/g,'([0-9]{1,2})*');txt=txt.replace(/s/g,'([0-9]{1,2})*');txt=txt.replace(/tt/g,'(AM|PM|am|pm|A|P|a|p)*');txt=txt.replace(/t/g,'(AM|PM|am|pm|A|P|a|p)*');txt=txt.replace(/ /g,' *');txt=txt.replace(/:/g,':*');var re=new RegExp('^'+txt+'$');return re;}
utility.date.parse_date=function(arr,dateMask){var vYear=vMonth=vDay=null;var vHour=vHour12h=vHour24H=vMinutes=vSeconds=vTimeMarker1C=vTimeMarker2C=null;var groups=dateMask.split($UNI_DATETIME_MASK_REGEXP);var groupIdx=0;var vTimeMarkerUpdate=0;for(var i=0;i<groups.length;i++){var currentGroupMask=groups[i];groupIdx++;var groupValue=arr[groupIdx];if(Array_indexOf('HH,H,ii,i,ss,s'.split(','),currentGroupMask)>=0){if(groupValue==''||typeof groupValue=='undefined'){groupValue='0';}}
if(Array_indexOf('hh,h'.split(','),currentGroupMask)>=0){var tmpValue=parseInt(groupValue,10);if(groupValue==''||typeof groupValue=='undefined'){groupValue='12';}else if(tmpValue>12&&tmpValue<24){var index=(Array_indexOf(groups,'t')>=0?Array_indexOf(groups,'t')+1:Array_indexOf(groups,'tt')+1);if(arr[index]==''){groupValue=tmpValue-12;vTimeMarkerUpdate=1;}}}
if(Array_indexOf('tt,t'.split(','),currentGroupMask)>=0){if(groupValue==''){groupValue=[['A','AM'],['P','PM']][vTimeMarkerUpdate][currentGroupMask.length-1];}}
switch(currentGroupMask){case'yyyy':case'YYYY':vYear=parseInt(groupValue,10);break;case'yy':case'YY':case'y':vYear=parseInt(groupValue,10);if(vYear<1000){if(vYear<10){vYear=2000+vYear;}else{if(vYear<70){vYear=2000+vYear;}else{vYear=1900+vYear;}}}
break;case'mm':case'm':vMonth=parseInt(groupValue,10);break;case'dd':case'd':vDay=parseInt(groupValue,10);break;case'HH':case'H':vHour24H=parseInt(groupValue,10);break;case'hh':case'h':vHour12h=parseInt(groupValue,10);break;case'ii':case'i':vMinutes=parseInt(groupValue,10);break;case'ss':case's':vSeconds=parseInt(groupValue,10);break;case't':vTimeMarker1C=groupValue;break;case'tt':vTimeMarker2C=groupValue;break;}}
vYear=vYear==null?1900:vYear;vMonth=vMonth==null?0:vMonth;vDay=vDay==null?1:vDay;vMinutes=vMinutes==null?0:vMinutes;vSeconds=vSeconds==null?0:vSeconds;var vHourOffset=0;if(vHour12h!=null){if(vHour12h>=1&&vHour12h<=12){vHour=vHour12h;if((vTimeMarker1C||vTimeMarker2C||"").charAt(0)=="P"){if(vHour12h<12){vHour=vHour12h+12;}}else{if(vHour12h==12){vHour=0;}}}else{vHour=-1000;}}else if(vHour24H!=null){vHour=vHour24H;}else{vHour=0;}
var o={'year':vYear,'month':vMonth,'day':vDay,'hour':vHour,'minutes':vMinutes,'seconds':vSeconds};if(dateMask.indexOf('y')<0&&dateMask.indexOf('m')<0&&dateMask.indexOf('d')<0){o['year']='1900';o['month']='1';o['day']=1;}
return o;}
Object_weave_safe(utility,{window:{}});utility.window.openWindow=function(target,url,width,height){var wndHandler;var left=(screen.width-width)/2;var top=(screen.height-height)/2;var winargs="width="+width+",height="+height+",resizable=No,scrollbars=No,status=Yes,modal=yes,dependent=yes,dialog=yes,left="+left+",top="+top;wndHandler=window.open(url,target,winargs);if(wndHandler){utility.window.reference=wndHandler;var ctrlModalBlocker=document.getElementById('modalBlocker');if(!ctrlModalBlocker){var ctrlModalBlocker=utility.dom.createElement("DIV",{'id':'modalBlocker','style':'display: block'});var pos=utility.dom.getPageInnerSize();ctrlModalBlocker.style.zIndex=999;ctrlModalBlocker.style.width=(pos.x)+'px';ctrlModalBlocker.style.height=(pos.y)+'px';prepfixieinsertnodescrollup();ctrlModalBlocker=document.body.insertBefore(ctrlModalBlocker,document.body.firstChild);utility.dom.attachEvent(ctrlModalBlocker,'onmousedown',function(){return utility.window.focusmodal();});utility.dom.attachEvent(ctrlModalBlocker,'ondblclick',function(){return utility.window.focusmodal();});utility.dom.attachEvent(ctrlModalBlocker,is.ie?'onbeforeactivate':'onfocus',function(){return utility.window.focusmodal();});utility.dom.attachEvent(is.mozilla?window.document.body:window,is.ie?'onbeforeactivate':'focus',function(){return utility.window.focusmodal();});fixieinsertnodescrollup();}else{ctrlModalBlocker.style.display='block';}
wndHandler.focus();}
if(!wndHandler){alert(translate('Cannot open dialog. Please allow site popups.'));}
return wndHandler;};function prepfixieinsertnodescrollup(){if(is.ie&&typeof(ktmls)!="undefined"){prepfixieinsertnodescrollup.scrolls=[];for(var i=0;i<ktmls.length;i++){prepfixieinsertnodescrollup.scrolls[i]=ktmls[i].edit.body.scrollTop;}}}
function fixieinsertnodescrollup(){window.setTimeout("fixieinsertnodescrollup_late()",1);};function fixieinsertnodescrollup_late(){if(is.ie&&typeof(ktmls)!="undefined"){for(var i=ktmls.length-1;i>=0;i--){ktmls[i].edit.body.scrollTop=prepfixieinsertnodescrollup.scrolls[i];}}};utility.window.focusmodal=function(){if(utility.window.reference&&!utility.window.reference.closed){utility.window.reference.focus();return;}
utility.window.hideModalBlocker();};utility.window.hideModalBlocker=function(wnd){if(!wnd){wnd=window;}
utility.window.reference=null;if(wnd.closed){return;}
var ctrlModalBlocker=wnd.document.getElementById('modalBlocker');if(ctrlModalBlocker){ctrlModalBlocker.style.display='none';}};utility.window.close=function(){window.close();};utility.popup={};utility.popup.stiva=[];utility.popup.makeModal=function(clickCallBack,elementOnTop,stopEvents){if(typeof(stopEvents)=="undefined"){stopEvents=true;}
utility.popup.stiva.push({'element':elementOnTop,'callback':clickCallBack,'stopEvents':stopEvents});};utility.popup.removeModal=function(e){if(utility.popup.stiva.length==0){return;}
if(utility.popup.force||e){var tmp=utility.popup.stiva[utility.popup.stiva.length-1];if(e){var o=utility.dom.setEventVars(e);var clickedElement=o.targ;while(clickedElement){if(tmp.element&&clickedElement==tmp.element){break;}
if(clickedElement.mi&&clickedElement.mi['action_event']!='mousedown'){break;}
clickedElement=clickedElement.parentNode;}
if(clickedElement){return;}}
if(tmp.callback){tmp.callback();}
utility.popup.stiva.pop();utility.popup.removeModal(e);}
utility.dom.toggleSpecialTags(null,false,0,true,true);};utility.popup.escapeModal=function(e){if(utility.popup.stiva.length>0){if(!utility.popup.stiva[utility.popup.stiva.length-1].stopEvents){return true;}
var o=utility.dom.setEventVars(e);if(e.keyCode==27){utility.popup.force=true;utility.popup.removeModal(o.e);utility.popup.force=false;}
if(is.ie&&!o.e.ctrlKey){try{o.e.keyCode=90909090;}catch(e){};}
utility.dom.stopEvent(o.e);return false;}
return true;}
utility.window.blockInterface=function(cursor,el,customId){if(typeof(cursor)=="undefined"){cursor="wait";}
var ctrlInterfaceBlocker=utility.dom.createElement('div',{});ctrlInterfaceBlocker.className='interfaceBlocker';ctrlInterfaceBlocker.id=customId||'interfaceBlocker';prepfixieinsertnodescrollup();ctrlInterfaceBlocker=document.body.appendChild(ctrlInterfaceBlocker);fixieinsertnodescrollup();ctrlInterfaceBlocker.style.cursor=cursor;var pos;if(!el){pos=utility.dom.getPageInnerSize();ctrlInterfaceBlocker.style.width=pos.x+'px';ctrlInterfaceBlocker.style.height=pos.y+'px';}
else{pos=utility.dom.getBox(el);ctrlInterfaceBlocker.style.top=pos.y+'px';ctrlInterfaceBlocker.style.left=pos.x+'px';ctrlInterfaceBlocker.style.width=pos.width+'px';ctrlInterfaceBlocker.style.height=pos.height+'px';}};utility.window.unblockInterface=function(){var ctrlInterfaceBlocker=document.getElementById('interfaceBlocker');if(ctrlInterfaceBlocker){document.body.removeChild(ctrlInterfaceBlocker);}};utility.window.setModal=function(set_unselectable){if(typeof set_unselectable=="undefined"){set_unselectable=true;}
window.isloading=false;window.focus();if(!window.dialogArguments){window.onbeforeunload=function(){if(!window.opener.closed){utility.window.hideModalBlocker(window.opener);}}
if(set_unselectable){utility.dom.setUnselectable(window.document.body);}}else{window.opener=dialogArguments;}
if(!window.opener){document.body.innerHTML="<center>Invalid context! No opener.</center>"+'<div style="display:none !important">'+document.body.innerHTML+'</div>';return;}
if(window.opener.topOpener){window.topOpener=window.opener.topOpener;}else{window.topOpener=window.opener;}
utility.dom.attachEvent(is.ie?window.document.body:window,'keydown',function(e){var ret=utility.popup.escapeModal(e);if(ret&&e.keyCode==27){utility.window.close();}});utility.dom.attachEvent2(window.document.body,'mousedown',utility.popup.removeModal);};Object_weave_safe(utility,{cookie:{}});utility.cookie.set=function(name,value,lifespan,access_path){var cookietext=name+"="+escape(value);if(lifespan!=null){var date=new Date();date.setTime(date.getTime()+(1000*60*60*24*lifespan));cookietext+="; expires="+date.toGMTString();}
if(access_path!=null){cookietext+="; path="+access_path;}
document.cookie=cookietext;return null;}
utility.cookie.get=function(name){var nameeq=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length);}
if(c.indexOf(nameeq)==0){return unescape(c.substring(nameeq.length,c.length));}}
return null;}
utility.cookie.del=function(name,path){utility.cookie.set(name,"",-1,path);}
UIDGenerator=function(name){if(typeof(name)=='undefined'){name='iaktuid_'+Math.random().toString().substring(2,6)+'_';}
this.name=name;this.counter=1;}
UIDGenerator.prototype.generate=function(detail){if(typeof(detail)=='undefined'){detail='';}
return(this.name+detail+this.counter+++'_');}
ObjectStorage=function(name){this.storage={};this.gen=new UIDGenerator(name+"_reference_by_id_");}
ObjectStorage.prototype.add=ObjectStorage.prototype.storeObject=function(obj){var type=obj.constructor.toString().match(/^\s*function\s*([^\s\(]*)\s*\(/i);if(!type){type="unknown_contructor";}else{type=type[1];}
var newId=this.gen.generate(type);obj.id=newId;this.storage[newId]=obj;}
ObjectStorage.prototype.get=ObjectStorage.prototype.getObject=function(id){return this.storage[id];}
ObjectStorage.prototype.deleteObject=function(id){delete this.storage[id];}

ObjectStorage.prototype.dispose=function(){
	this.storage=null;
}
QueryString = function(str){
	if(typeof str=='undefined'){
		var str=window.location.search.toString();
	}
	this.keys=new Array();
	this.values=new Array();
	var query=str;
	if(str.indexOf('?')==0){
		query=str.substring(1);
	}
	query=query.replace(/&amp;/g,'&');
	var pairs=query.split("&");
	for (var i=0;i<pairs.length;i++){
		var pos=pairs[i].indexOf('=');
		if(pos>=0){
			var argname=pairs[i].substring(0,pos);
			var value=pairs[i].substring(pos+1);
			this.keys[this.keys.length]=argname;
			this.values[this.values.length]=value;
		}
	}
}

QueryString.prototype.find = function(key){
	var value=null;
	for(var i=0;i<this.keys.length;i++){
		if(this.keys[i]==key){
			value=this.values[i];break;
		}
	}
	return value;
}

KT_Tooltips={
	cname:'kt_add_tooltips',
	worked:[],
	cancel:false,
	gen:new UIDGenerator(),
	show:function(id,x,y){
		var div=document.getElementById(id);
		if(!div){
			return;
		}
		div.style.left='-1000px';
		div.style.top='-1000px';
		div.style.display='block';
		var pos=utility.dom.getBBox(div);
		var pos2=utility.dom.getPositionRelativeTo00(x,y,pos.width+2,pos.height+2);
		div.style.left=pos2.x+'px';
		div.style.top=pos2.y+'px';
	},
	hide:function(id){
		var div=document.getElementById(id);
		if(!div){return;}
		div.style.display='none';
	},
	clear_timeout:function(id,mode){
		var to=id+mode+"timeout";
		if(typeof window[to]!='undefined'){
			clearTimeout(window[to]);
		}
	},
	clear_showtimeout:function(id){
		KT_Tooltips.clear_timeout(id,'show');
	},
	clear_hidetimeout:function(id){
		KT_Tooltips.clear_timeout(id,'hide');
	},
	set_timeout:function(id,mode,time){
		var params_str='',params_arr=[];
		if(arguments.length>3){
			for(var i=3;i<arguments.length;i++){
				Array_push(params_arr,arguments[i]);
			}
		}
		params_str=params_arr.join(', ');
		if(params_str!=''){
			params_str=', '+params_str;
		}
		var str="KT_Tooltips."+mode+"('"+id+"'"+params_str+")";
		var to=id+mode+"timeout";
		window[to]=setTimeout(str,time);
	},
	set_showtimeout:function(id,vars){
		KT_Tooltips.set_timeout(id,"show",1000,vars.x,vars.y);
	},
	set_hidetimeout:function(id){
		KT_Tooltips.set_timeout(id,"hide",250);
	},attach_single:function(link){
		if(is.ie||is.safari){
			return;
		}
		var title=link.title;
		var mytip=null;
		if(link.getAttribute('divid')){
			mytip=document.getElementById(link.getAttribute('divid'));
			if(mytip){
				document.body.removeChild(mytip);
			}
			link.removeAttribute('divid');
		}
		if(/[\r\n]/.test(title)){
			var divid=KT_Tooltips.gen.generate("tooltip");
			var div=utility.dom.createElement("div",{
					'class':'tooltip_div',
					'id':divid
				}
			);
			div.innerHTML=link.getAttribute("title").toString().replace(/\r\n/g,"<br />").replace(/[\r|\n]/g,"<br />");
			link.divid=divid;
			div=document.body.appendChild(div);
			link.removeAttribute("title");
			link.setAttribute("divid",divid);
			if(!mytip){
				utility.dom.attachEvent(link,'mouseover',
					function(e){
						var id=link.getAttribute("divid");
						var pos=utility.dom.getBBox(link);
						var vars=utility.dom.setEventVars(e);
						KT_Tooltips.clear_hidetimeout(id);
						var obj={
								x:pos.x+Math.round(pos.width/2),
								y:pos.y+Math.round(pos.height/2)+10
							};
						KT_Tooltips.set_showtimeout(id,obj);
						utility.dom.stopEvent(e);
					}
				);
				utility.dom.attachEvent(link,'mouseout',
					function(e){
						var id=link.getAttribute("divid");
						KT_Tooltips.clear_showtimeout(id);
						KT_Tooltips.set_hidetimeout(id);
						utility.dom.stopEvent(e);
					}
				);
			}
		}
	},
	attach:function(){
		KT_Tooltips.worked=[];
		if(is.ie||is.safari){
			return;
		}
		Array_each(
			utility.dom.getElementsByClassName(document.body,KT_Tooltips.cname),
			function(el){
				Array_each(el.getElementsByTagName('a'),
					KT_Tooltips.attach_single
				);
			}
		)
	}
};

utility.dom.attachEvent(window,'load',KT_Tooltips.attach);
function getDomDocumentPrefix(){
	if(getDomDocumentPrefix.prefix)
		return getDomDocumentPrefix.prefix;
	var prefixes=[
		"MSXML2",
		"Microsoft",
		"MSXML",
		"MSXML3"
	];
	var o;
	for(var i=0;i<prefixes.length;i++){
		try {
			o=new ActiveXObject(prefixes[i]+".DomDocument");
			return getDomDocumentPrefix.prefix=prefixes[i];
		} catch(ex){
		}
	}
	throw new Error("Could not find an installed XML parser");
}

function getXmlHttpPrefix(){
	if(getXmlHttpPrefix.prefix)
	return getXmlHttpPrefix.prefix;
	var prefixes=[
		"MSXML2",
		"Microsoft",
		"MSXML",
		"MSXML3"
	];
	var o;
	for(var i=0;i<prefixes.length;i++){
		try {
			o=new ActiveXObject(prefixes[i]+".XmlHttp");
			return getXmlHttpPrefix.prefix=prefixes[i];
		}catch(ex){}
	}
	throw new Error("Could not find an installed XML parser");
}

function XmlHttp(){}

XmlHttp.create=function(){
	try{
		if(window.XMLHttpRequest){
			var req=new XMLHttpRequest();
			if(req.readyState==null){
				req.readyState=1;
				req.addEventListener("load",
					function(){
						req.readyState=4;
						if(typeof req.onreadystatechange=="function")
							req.onreadystatechange();
					},false);
			}
		return req;
		}
		if(window.ActiveXObject){
			var ax=new ActiveXObject(getXmlHttpPrefix()+".XmlHttp");
			return ax;
		}
	} catch(ex){}
	throw new Error("Your browser does not support XmlHttp objects");
}

XmlHttp.post = function(rpc,url,postStr){
	try {
		rpc.open("POST",url,false);
		rpc.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		rpc.send(postStr);
	} catch(e){
		return false;
	}
	return rpc;
}

XmlHttp.get = function(rpc,url,getStr){
	try {
		rpc.open("GET",getStr,false);
		rpc.send(null);
	}catch(e){
		return false;
	}
	return rpc;
}

function XmlDocument(){}
XmlDocument.create = function(){
	try {
		if(document.implementation&&document.implementation.createDocument){
			var doc=document.implementation.createDocument("","",null);
			if(doc.readyState==null){
				doc.readyState=1;
				doc.addEventListener("load",
					function(){
						doc.readyState=4;
						if(typeof doc.onreadystatechange=="function")
							doc.onreadystatechange();
					},false);
			}
			return doc;
		}
		if(window.ActiveXObject)
		return new ActiveXObject(getDomDocumentPrefix()+".DomDocument");
	} catch(ex){}
	throw new Error("Your browser does not support XmlDocument objects");
};

if(window.DOMParser
	&&window.XMLSerializer
	&&window.Node&&Node.prototype
	&&Node.prototype.__defineGetter__){
	
	Document.prototype.loadXML=function(s){
		var doc2=(new DOMParser()).parseFromString(s,"text/xml");
		while(this.hasChildNodes())
			this.removeChild(this.lastChild);
		var ret=false;
		for(var i=0;i<doc2.childNodes.length;i++){
			this.appendChild(this.importNode(doc2.childNodes[i],true));
			ret=true;
		}
		return ret;
	};

	var documentProto=Document.prototype;
	var documentGrandProto=documentProto.__proto__= {
		__proto__:documentProto.__proto__
	};
	if(documentGrandProto){
		documentGrandProto.__defineGetter__('xml',
			function(){
				return(new XMLSerializer()).serializeToString(this);
			}
		);
	}
	
	var elementProto=Element.prototype;
	var elementGrandProto=elementProto.__proto__= {
		__proto__:elementProto.__proto__
	};

	if(elementGrandProto){
		elementGrandProto.__defineGetter__('text',
			function(){
				return (new XMLSerializer()).serializeToString(this).replace(/<[^>]*>/g,'');
			}
		);
		elementGrandProto.__defineGetter__('innerText',
			function(){
				return(new XMLSerializer()).serializeToString(this).replace(/<[^>]*>/g,'');
			}
		);
		elementGrandProto.__defineSetter__('innerText',
			function(new_value){
				var tn=this.ownerDocument.createTextNode(new_value);
				this.innerHTML="";
				this.appendChild(tn);
			}
		);
	}
}

function evaluateXPath(aNode,aExpr){
	var found=[];
	if(is.mozilla){
		if(typeof evaluateXPath.xpe=="undefined"){
			evaluateXPath.xpe=new XPathEvaluator();
		}
		var result=evaluateXPath.xpe.evaluate(aExpr,aNode,null,XPathResult.ANY_TYPE,null);
		while(res=result.iterateNext()){
			found.push(res);
		}
	} else if(is.ie){
		var result=aNode.selectNodes(aExpr);
		for(var i=0;i<result.length;i++){
			found.push(result[i]);
		}
	}
	if(found.length==0){
		found=false;
	}
	return found;
};

function BrowserCheck(){
	var b=navigator.appName.toString();
	var up=navigator.platform.toString();
	var ua=navigator.userAgent.toString();
	this.mozilla=this.ie=this.opera=r=false;
	var re_opera=/Opera.([0-9\.]*)/i;
	var re_msie=/MSIE.([0-9\.]*)/i;
	var re_gecko=/gecko/i;
	var re_safari=/safari\/([\d\.]*)/i;
	if(ua.match(re_opera)){
		r=ua.match(re_opera);
		this.opera=true;
		this.version=parseFloat(r[1]);
	} else if(ua.match(re_msie)){
		r=ua.match(re_msie);
		this.ie=true;
		this.version=parseFloat(r[1]);
	} else if(ua.match(re_safari)){
		this.mozilla=true;
		this.safari=true;
		this.version=1.4;
	} else if(ua.match(re_gecko)){
		var re_gecko_version=/rv:\s*([0-9\.]+)/i;
		r=ua.match(re_gecko_version);
		this.mozilla=true;
		this.version=parseFloat(r[1]);
	}
	this.windows=this.mac=this.linux=false;
	this.Platform=ua.match(/windows/i)
		? "windows"
		: (
			ua.match(/linux/i)
			? "linux"
			: (
				ua.match(/mac/i)
				? "mac"
				: ua.match(/unix/i) 
					? "unix"
					: "unknown"
				)
			);
	this[this.Platform]=true;
	this.v=this.version;
	this.valid=this.ie&&this.v>=6||this.mozilla&&this.v>=1.4;
	if(this.safari&&this.mac&&this.mozilla){
		this.mozilla=false;
	}
};

function sortFormHandlers(arr){
	for(var i=0;i<arr.length;i++){
		var fh1=arr[i];
		for(var j=i+1;j<arr.length;j++){
			var fh2=arr[j];
			if(fh2[0]<fh1[0]){
				var tmp=fh1;
				arr[i]=fh2;
				arr[j]=tmp;
			}
		}
	}
};
function GLOBAL_registerFormSubmitEventHandler(function_name,priority){
	var frms=document.getElementsByTagName('form');
	for(var i=0;i<frms.length;i++){
		var frm=frms[i];
		if(typeof frm.onsubmit!='undefined'&&frm.onsubmit!=null){
			var form_handlers=frm.form_handlers;
			if(form_handlers){
				form_handlers[form_handlers.length]=[priority,function_name];
				sortFormHandlers(form_handlers);
			} else { 
				frm.__kt_onsubmit=frm.onsubmit;
				frm.onsubmit=new Function('e',
						'if (!KT_formSubmittalHandler(e)) return false;'
					);
				
				form_handlers=[];
				form_handlers[form_handlers.length]=[priority,function_name];
			}
			frm.form_handlers=form_handlers;
		}else{
			frm.onsubmit=new Function('e',
					'return KT_formSubmittalHandler(e);'
				);
			var form_handlers=[];
			form_handlers[form_handlers.length]=[priority,function_name];
			frm.form_handlers=form_handlers;
		}
	}
};
			
var fire_starter=null;
var global_form_submit_lock=false;

function KT_formSubmittalHandler(e){
	var frm=null;
	var o=utility.dom.setEventVars(e);
	if(!o.e){
		return true;
	}
	try {
		if(global_form_submit_lock){
			utility.dom.stopEvent(o.e);
			return false;
		}
		frm=o.targ;
		if(!frm){
			return true;
		}
		if(!frm.tagName){
			return true;
			}
		if(frm.tagName.toLowerCase()!="form"){
			frm=frm.form;
		}
	} catch(err){}
	
	if(!frm){
		frm=fire_starter;
	}
	if(!frm){
		return true;
	}
	if(typeof(UNI_disableButtons)!='undefined'){
		UNI_disableButtons(frm,/.*/,true);
	}
	var ret=true;
	var form_handlers=frm.form_handlers;
	if(form_handlers){
		for(var i=0;i<form_handlers.length;i++){
			var fun=form_handlers[i];
			eval("ret = "+fun[1]+"(o.e);");
			if(!ret){
				break;
			}
		}
	}
	if(is.ie&&is.mac&&typeof(UNI_disableButtons)!='undefined'){
		UNI_disableButtons(frm,/.*/,false);
	}
	if(!ret){
		try{
			utility.dom.stopEvent(o.e);
		} catch(err){}
		if(!global_form_submit_lock&&typeof(UNI_disableButtons)!='undefined'){
			UNI_disableButtons(frm,/.*/,false);
		}
		return false;
	} else {
		if(frm.__kt_onsubmit){
			var ret=frm.__kt_onsubmit(o.e);
			if(typeof(ret)=='undefined'||ret){
				return true;
			}else{
				return false;
			}
		}
		return true;
	}
};

utility.dom.attachEvent(window,'unload',EventCache.flush);
