
if(!Function.prototype.apply){Function.prototype.apply=function(o,a){var r;if(!o){o={};}
o.___apply=this;switch((a&&a.length)||0){case 0:r=o.___apply();break;case 1:r=o.___apply(a[0]);break;case 2:r=o.___apply(a[0],a[1]);break;case 3:r=o.___apply(a[0],a[1],a[2]);break;case 4:r=o.___apply(a[0],a[1],a[2],a[3]);break;case 5:r=o.___apply(a[0],a[1],a[2],a[3],a[4]);break;case 6:r=o.___apply(a[0],a[1],a[2],a[3],a[4],a[5]);break;default:for(var i=0,s="";i<a.length;i++){if(i!=0){s+=",";}
s+="a["+i+"]";}
r=eval("o.___apply("+s+")");}
o.__apply=null;return r;}};if(!Function.prototype.call){Function.prototype.call=function(o){var args=new Array(arguments.length-1);for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i];}
return this.apply(o,args);}};Function_bind=function(_this,object){var __method=_this;return function(){__method.apply(object,arguments);}};Function_bindEventListener=function(_this,object){var __method=_this;return function(event){__method.call(object,event||window.event);}};if(!Array.prototype.push){Array_push=function(_this,obj){for(var i=1;i<arguments.length;i++){_this[_this.length]=arguments[i];}
return _this.length;}}else{Array_push=function(_this,obj){for(var i=1;i<arguments.length;i++){_this.push(arguments[i]);}
return _this.length;}};if(!Array.prototype.pop){Array_pop=function(_this){if(_this.length==0){try{return undefined;}catch(e){return null;}}
return _this[_this.length--];}}else{Array_pop=function(_this){return _this.pop();}};if(!Array.prototype.shift){Array_shift=function(_this){_this.reverse();var lastv=Array_pop(_this);_this.reverse();return lastv;};}else{Array_shift=function(_this){return _this.shift();};};if(!Array.prototype.splice){Array_splice=function(_this,start,deleteCount){var len=parseInt(_this.length);start=start?parseInt(start):0;start=(start<0)?Math.max(start+len,0):Math.min(len,start);deleteCount=deleteCount?parseInt(deleteCount):0;deleteCount=Math.min(Math.max(parseInt(deleteCount),0),len);var deleted=_this.slice(start,start+deleteCount);var insertCount=Math.max(arguments.length-1,1);var new_len=_this.length+insertCount-deleteCount;var start_slide=start+insertCount;var nslide=len-start_slide;for(var i=new_len-1;i>=start_slide;--i){_this[i]=_this[i-nslide];}
for(i=start;i<start+insertCount;++i){_this[i]=arguments[i-start+3];}
return deleted;};}else{Array_splice=function(_this,start,deleteCount){var args=[];var s='';for(var i=3;i<arguments.length;i++){args[i-3]=arguments[i];s+=', '+'args['+(i-3)+']';}
s='var ret = _this.splice(start, deleteCount'+s+')';eval(s);return ret;};};Object_toArray=function(_this,delim){var result;if(typeof(delim)=='undefined'){delim=',';}
switch(typeof(_this)){case'array':result=_this;break;case'string':if(_this.indexOf(delim)){result=_this.split(delim);}else{result.push(_this);}
break;default:result.push(_this);break;}};Object_weave=function(_this,source){for(property in source){_this[property]=source[property];}
return _this;};Object_weave_safe=function(_this,source){for(property in source){if(typeof _this[property]=='undefined'){_this[property]=source[property];}}
return _this;};Array_indexOf=function(_this,x){for(var i=0;i<_this.length;i++){if(_this[i]==x){return i;}}
return-1;};Array_lastIndexOf=function(_this,x){for(var i=_this.length-1;i>=0;i--){if(_this[i]==x){return i;}}
return-1;};Array_last=function(_this){if(_this.length>0){return _this[_this.length-1];}};String_trim=function(_this,str){if(!str)str=_this;return str.replace(/^\s*/,"").replace(/\s*$/,"");};String_normalize_space=function(_this,str){if(!str)str=_this;return String_trim(str).replace(/\s+/g," ");};String_htmlencode=function(_this,str){if(!str)str=_this;return str.replace(/\&/g,"&amp;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;").replace(/\"/g,"&quot;");};String_htmldecode=function(_this,str){if(!str)str=_this;return str.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,"\"").replace(/&amp;/g,"&");};Array_each=function(_this,block){for(var index=0;index<_this.length;++index){var item=_this[index];block(item,index)}
return _this;};Number_times=function(_this,block){for(var i=0;i<_this;i++)block(i)};Array_min=function(_this){if(_this.length==0)return false;if(_this.length==1)return _this[0];var min,me,val;min=0;me=_this;Array_each(me,function(val,i){if(val<me[min]){min=i;}});return _this[min];};String_min=function(_this){return Array_min(_this.split(','));};function min(){var a=[];Array_each(arguments,function(val,i){Array_push(a,val);});return Array_min(a);};Array_max=function(_this){if(_this.length==0)return false;if(_this.length==1)return _this[0];var max,me,val;max=0;me=_this;Array_each(me,function(val,i){if(val>me[max]){max=i;}});return _this[max];};String_max=function(_this){return Array_max(_this.split(','));};function max(){var a=[];Array_each(arguments,function(val,i){Array_push(a,val);});return Array_max(a);};
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(var 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 className=typeof(o.className)=='undefined'?'':o.className;var cn=String_trim(String_normalize_space(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(' '));var className=typeof(obj.className)=='undefined'?'':obj.className;if(String_trim(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(' '));var className=typeof(obj.className)=='undefined'?'':obj.className;if(String_trim(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++){var cclassName=typeof(found[k].className)=='undefined'?'':found[k].className;if(cclassName&&cclassName.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;}
try{if(place[i]&&what&&place[i].toString()==what.toString()){return;}}catch(err){}}
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 zi=0;zi<$UNI_DATETIME_MASK_SEPARATORS.length;zi++){$UNI_DATETIME_MASK_REGEXP+="\\"+$UNI_DATETIME_MASK_SEPARATORS[zi]+'|';}
$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++){if(ktmls[i].destroyed){continue;}
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--){if(ktmls[i].destroyed){continue;}
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 this.textContent;});elementGrandProto.__defineGetter__('innerText',function(){return this.textContent;});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);// JavaScript Document

function LoadPage(page,usediv) {

        // Set up request varible

        try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");}  catch (e) { alert("Error: Could not load page.");}

        //Show page is loading

        document.getElementById(usediv).innerHTML = '<div align="center"><img  src="/includes/skins/images/load.gif"/> &nbsp; <strong style=" color:#D1D8DA;">Loading Page...</strong>';

        //scroll to top

        scroll(0,0);

        //send data

        xmlhttp.onreadystatechange = function(){

                //Check page is completed and there were no problems.

                if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {

                       //Write data returned to page

                       document.getElementById(usediv).innerHTML = xmlhttp.responseText;

                }

        }

        xmlhttp.open("GET", page);

        xmlhttp.send(null);

        //Stop any link loading normaly

        return false;

}

/*
 * ADOBE SYSTEMS INCORPORATED
 * Copyright 2007 Adobe Systems Incorporated
 * All Rights Reserved
 * 
 * NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the 
 * terms of the Adobe license agreement accompanying it. If you have received this file from a 
 * source other than Adobe, then your use, modification, or distribution of it requires the prior 
 * written permission of Adobe.
 */

function show_as_buttons_func() {
	var toret = false;
	if (!(typeof $NXT_LIST_SETTINGS == 'undefined' || typeof $NXT_LIST_SETTINGS['show_as_buttons'] == 'undefined' || $NXT_LIST_SETTINGS['show_as_buttons'] == false)) {
		toret = true;
	}
 	if (!(typeof $NAV_SETTINGS == 'undefined' || typeof $NAV_SETTINGS['show_as_buttons'] == 'undefined' || $NAV_SETTINGS['show_as_buttons'] == false)) {
		toret = true;
	}
	return toret;
}
show_as_buttons = "show_as_buttons_func()";
not_show_as_buttons = "!" + show_as_buttons;
/*
 * transforms a link to a button, keeping the link inner text, and adding the onclick event
 */
function KT_style_replace_with_button(el, add_event) {
	if (typeof add_event == 'undefined') {
		add_event = false;
	}
	var elnou = utility.dom.createElement('input', {
		'type' : 'button', 
		'value': el.innerHTML
	});

	el.style.display = 'none';
	elnou = utility.dom.insertAfter(elnou, el);

	if (add_event) {
		var onclick = el.onclick;
		elnou.onclick = onclick;
	}

	elnou.style.visibility = el.style.visibility;
	if (el.innerHTML == '') {
		elnou.style.display = 'none';
	}

	return elnou;
}

function KT_style_modify_custom_links(el) {
    var classes = utility.dom.getClassNames(el);
    if (1
    &&  Array_indexOf(classes, 'KT_link') < 0
    ) {
        return;
    }

    var elnou = KT_style_replace_with_button(el);
    /*utility.dom.attachEvent(*/elnou.onclick = function(e) {
        var a = this.previousSibling;
        if (!a.onclick) {
            var act = utility.dom.getLink(a);
            var parts = act.toString().split('?');
            if (parts.length == 1) {
                parts[1] = '';
            }
            var qs = new QueryString(parts[1]); var action_url = parts[0], variables = [];
            Array_each(qs.keys, function(key, i) {
                Array_push(variables, [key, qs.values[i]]);
            });

            var frm = utility.dom.createElement(
                "FORM", 
                {'action': act, 'method': 'GET', 'style': "display: none"}
            );
            Array_each(variables, function(input, i){
                frm.appendChild(utility.dom.createElement('INPUT', {'type': 'hidden', 'id': input[0], 'name': input[0], 'value': input[1]}));
            });

            frm = document.body.appendChild(frm);
            frm.submit();
        } else {
            var to_exec = a.onclick;
            a.onclick();
        }
    };/*);*/
    //elnou.className = 'button_big';
}

//[mtm]_[detail_key_value]
var tng_mtm_detail_key_re = /^mtm_(\d+)$/;
function tng_form_enable_details (checkbox_name) {
	var cbx = document.getElementById(checkbox_name);
	var state = !cbx.checked;
	var parts = checkbox_name.match(tng_mtm_detail_key_re);
	var related_input_re = new RegExp("^mtm_(.+?)_" + parts[1] + "$", "");

	Array_each(cbx.form.elements, function(input) {
		var input_name = input.name;
		if (input_name && related_input_re.test(input_name)) {
			if (typeof(input.widget_id) == 'undefined') {
				if (input.disabled != state) {
					input.disabled = state;
				}
			} else {
				try {
					window[input.widget_type][input.widget_id].setEnabled(!state);
				} catch(err) {}
			}
		}
	});
}


/*
 * this array holds the transformations for the list / form elements
 * each array item is an object with tthe following properties:
 * 	* selector : the string passwd to utility.dom.getElementsBySelector
 * 	* transform : transformation function whichch has a single parameter : the element to handle
 * 	* eval : condition which tells if the transformation is executed
 */
$TRANSFORMATIONS = [
	{
		'selector': function() {
			//'div.KT_tnglist div.KT_bottombuttons a.KT_edit_op_link'
			//'div.KT_tnglist div.KT_bottombuttons a.KT_delete_op_link', 
			//'div.KT_tnglist div.KT_bottombuttons a.KT_additem_op_link', 
			//'div.KT_tnglist div.KT_opbuttons a.KT_edit_op_link'
			//'div.KT_tnglist div.KT_opbuttons a.KT_delete_op_link', 
			//'div.KT_tnglist div.KT_opbuttons a.KT_additem_op_link', 
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var as = $lists[i].bottombuttons.getElementsByTagName('a');
				for (var j = 0; j < as.length; j++) {
					if (/(KT_edit_op_link|KT_delete_op_link|KT_additem_op_link)/.test(as[j].className)) {
						toret.push(as[j]);
					}
				}
				if ($lists[i].topbuttons) {
					var as = $lists[i].topbuttons.getElementsByTagName('a');
					for (var j = 0; j < as.length; j++) {
						if (/(KT_edit_op_link|KT_delete_op_link|KT_additem_op_link)/.test(as[j].className)) {
							toret.push(as[j]);
						}
					}
				}
			}
			return toret;
		}, 
		'transform': function(el) { 
			var elnou = KT_style_replace_with_button(el, true);
		}, 
		'eval': show_as_buttons
	}, 
	{
		'selector': function() {
			//'div.KT_tnglist th.KT_sorter a.KT_move_op_link', 
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var ths = $lists[i].table.getElementsByTagName('th');
				for (var j = 0; j < ths.length; j++) {
					if (/KT_sorter/.test(ths[i].className)) {
						var as = ths[i].getElementsByTagName('a');
						for (var k = 0; k < as.length; k++) {
							if (/KT_move_op_link/.test(as[k].className)) {
								toret.push(as[k]);
								break;
							}
						}
					}
				}
			}
			return toret;
		}, 
		'transform': function(el) {
			var elnou = KT_style_replace_with_button(el, true);
			elnou.style.display = 'none';
		}, 
		'eval': show_as_buttons
	}, 
	{
		'selector' : function() {
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var as = $lists[i].table.getElementsByTagName('a');
				for (var j = 0; j < as.length; j++) {
					if (/(KT_edit_link|KT_moveup_link|KT_movedown_link|KT_delete_link|KT_link)/.test(as[j].className)) {
						toret.push(as[j]);
					}
				}
			}
			return toret;
		}, 
		'transform': function(el) {
			var elnou = KT_style_replace_with_button(el);
			elnou.onclick = function(e) {
				var a = this.previousSibling;
				if (/(KT_movedown_link|KT_moveup_link|KT_delete_link)/.test(a.className)) {
					var to_exec = a.onclick;
					try {
						a.onclick(e);
					} catch(e) { }
				} else if (/(KT_link)/.test(a.className)) {
					if (!a.onclick) {
						var act = utility.dom.getLink(a);
						var parts = act.toString().split('?');
						if (parts.length == 1) {
							parts[1] = '';
						}
						var qs = new QueryString(parts[1]); var action_url = parts[0], variables = [];
						Array_each(qs.keys, function(key, i) {
							Array_push(variables, [key, qs.values[i]]);
						});

						var frm = utility.dom.createElement(
							"FORM", 
							{'action': act, 'method': 'GET', 'style': "display: none"}
						);
						Array_each(variables, function(input, i){
							frm.appendChild(utility.dom.createElement('INPUT', {'type': 'hidden', 'id': input[0], 'name': input[0], 'value': input[1]}));
						});

						frm = document.body.appendChild(frm);
						if (typeof PanelForm_overrideSubmit == 'function') {
							frm.submit = PanelForm_overrideSubmit;
						}
						frm.submit();
					} else {
						var to_exec = a.onclick;
						a.onclick();
					}
				} else if (/(KT_edit_link)/.test(a.className)) {
					try {
						var o = utility.dom.setEventVars(e);
						var table = utility.dom.getParentByTagName(this, 'table');
						var row = utility.dom.getParentByTagName(this, 'tr');

						var tmp = utility.dom.getElementsByClassName(row, 'id_checkbox')[0];
						var myinput = null;
						if (tmp.type && tmp.type.toLowerCase() == 'checkbox' && tmp.name.toString().match(/^kt_pk/)) {
							myinput = tmp;
						}

						var inputs = utility.dom.getElementsByClassName(table, 'id_checkbox');
						Array_each(inputs, function(input) {
							if (input.type && input.type.toLowerCase() == 'checkbox' && 
								input.name.toString().match(/^kt_pk/)) {
								input.checked = (input == myinput);
							}
						});
						nxt_list_edit_link_form(this, myinput.previousSibling.href);
					} catch(e) {
						window.location.href = a.href;
					}					
				} else {
					window.location.href = a.href;
				}
			};/*);*/
			var move_up = /KT_moveup_link/.test(el.className);
			var move_down = /KT_movedown_link/.test(el.className);
			if (move_up || move_down) {
				if (move_up && typeof $nxt_move_up_background_image != 'undefined' || move_down && typeof $nxt_move_down_background_image != 'undefined') {
					elnou.value = "";
				}
				elnou.className = 'button_smallest KT_button_move_' + (move_up?'up':'down');
			} else {
				elnou.className = 'button_big';
			}

		}, 
		'eval': show_as_buttons
	},
	{
		/* ajaxify the back to master link*/
		'selector' : function() {
			var toret = [];
			if (typeof $ctrl != 'undefined') {
				for (var i = 0; i < $lists.length; i++) {
					if ($lists[i].kt_styles_attached) {
						continue;
					}
					var trs = utility.dom.getElementsByClassName($lists[i].inner, "KT_masterlink", "TR");
					for (var j=0; j<trs.length; j++) {
						var links = trs[j].getElementsByTagName("A");
						for (var k=0; k < links.length; k++) {
							if (links[k].href.indexOf('includes/nxt/back.php') != -1) {
								toret.push(links[k]);
							}
						}
					}
				}
			}
			return toret;
		},
		'transform': function(el) {
			el.onclick = function() {
				$ctrl.loadPanels(el.href);	
				return false;
			}
		},
		'eval': 1
	},
	{
		'selector' : function() {
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var as = $lists[i].bottombuttons.getElementsByTagName('a');
				for (var j = 0; j < as.length; j++) {
					if (/KT_link/.test(as[j].className)) {
						toret.push(as[j]);
					}
				}
				if ($lists[i].topbuttons) {
					var as = $lists[i].topbuttons.getElementsByTagName('a');
					for (var j = 0; j < as.length; j++) {
						if (/KT_link/.test(as[j].className)) {
							toret.push(as[j]);
						}
					}
				}
			}
			return toret;
		}, 
		'transform': KT_style_modify_custom_links, 
		'eval': show_as_buttons
	}, 
	{
		'selector' : function() {
			var toret = [];
			if ($lists.length > 0) {
				for (var i = 0; i < $lists.length; i++) {
					if ($lists[i].kt_styles_attached) {
						continue;
					}
					if ($lists[i].toptextnav) {
						var as = $lists[i].toptextnav.getElementsByTagName('a');
						for (var j = 0; j < as.length; j++) {
							if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
								toret.push(as[j]);
							}
						}
					}
					if ($lists[i].bottomtextnav.getAttribute("kt_styles_attached")) {
						continue;
					}
					$lists[i].bottomtextnav.setAttribute("kt_styles_attached", true);
					var as = $lists[i].bottomtextnav.getElementsByTagName('a');
					for (var j = 0; j < as.length; j++) {
						if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
							toret.push(as[j]);
						}
					}
				}
			} else {
				var divs = utility.dom.getElementsByClassName(document, 'KT_textnav', 'div');
				if (divs) {
					for (var i = 0; i < divs.length; i++) {
						if (divs[i].getAttribute("kt_styles_attached")) {
							continue;
						}
						divs[i].setAttribute("kt_styles_attached", true);
						var as = divs[i].getElementsByTagName('a');
						for (var j = 0; j < as.length; j++) {
							if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
								toret.push(as[j]);
							}
						}
					}
				}
			}
			return toret;		
		}, 
		'transform' : function(el) {
			var li = el.parentNode;
			var elnou = KT_style_replace_with_button(el);
			if (!el.href.match(/void\(0\)/)) {
				elnou.onclick = function(e) {
					if (typeof $ctrl != 'undefined') {
						$ctrl.loadPanels(el.href);
					} else {
						window.location.href = el.href;
					}
				};
			} else {
				//utility.dom.classNameAdd(el.parentNode, 'disabled');
				var inp = el.parentNode.getElementsByTagName('input');
				if (inp.length > 0) {
					inp[0].disabled = true;
				}
			}
			var values = {'first': '<<', 'prev': '<', 'next': '>', 'last': '>>'};
			elnou.value = values[li.className.toString().replace(/ disabled/, '')];
			elnou.className = 'button_smallest' + (el.href.match(/void\(0\)/) ? ' disabled' : '');
		}, 
		'eval': show_as_buttons
	}, 
	{
		'selector' : function() {
			var toret = [];
			if ($lists.length > 0) {
				for (var i = 0; i < $lists.length; i++) {
					if ($lists[i].kt_styles_attached) {
						continue;
					}
					if ($lists[i].toptextnav) {
						var as = $lists[i].toptextnav.getElementsByTagName('a');
						for (var j = 0; j < as.length; j++) {
							if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
								toret.push(as[j]);
							}
						}
					}
					var as = $lists[i].bottomtextnav.getElementsByTagName('a');
					for (var j = 0; j < as.length; j++) {
						if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
							toret.push(as[j]);
						}
					}
				}
			} else {
				var divs = utility.dom.getElementsByClassName(document, 'KT_textnav', 'div');
				if (divs) {
					for (var i = 0; i < divs.length; i++) {
						if (divs[i].getAttribute("kt_styles_attached")) {
							continue;
						}
						divs[i].setAttribute("kt_styles_attached", true);
						var as = divs[i].getElementsByTagName('a');
						for (var j = 0; j < as.length; j++) {
							if (/(first|prev|next|last)/.test(as[j].parentNode.className)) {
								toret.push(as[j]);
							}
						}
					}
				}
			}
			return toret;		
		}, 
		'transform' : function(el) {
			if (!el.href.match(/void\(0\)/)) {
			} else {
				utility.dom.classNameAdd(el, 'disabled');
			}
		}, 
		'eval': not_show_as_buttons
	}, 
	{
		'selector': function() { 
			var toret = [];
			var div = document.getElementById('KT_tngtrace');
			if (div && !div.getAttribute("kt_styles_attached")) {
				div.setAttribute("kt_styles_attached", true);
				var as = div.getElementsByTagName('a');
				for (var i = 0; i < as.length; i++) {
					toret.push(as[i]);
				}
			}
			return toret;
		}, 
		'transform': function(el) { 
			var elnou = KT_style_replace_with_button(el, true);
		}, 
		'eval': show_as_buttons
	}, 
	{
		'selector_text': 'div.KT_tnglist table.KT_tngtable tr.KT_row_filter input[type="submit"]', 
		'selector' : function() {
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var inps = $lists[i].table.getElementsByTagName('input');
				for (var j = 0; j < $lists[i].table.rows.length; j++) {
					var row = $lists[i].table.rows[i];
					if (/KT_row_filter/.test(row.className)) {
						var inps = row.getElementsByTagName('input');
						var type = '';
						for (var k = 0; k < inps.length; k++) {
							type = inps[k].getAttribute('type');
							if (type == null) {
								type = 'text';
							}
							if (type.toString().toLowerCase == 'submit') {
								toret.push(inps[k]);
							}
						}
					}
				}
			}
			return toret;
		}, 
		'transform': function(el) {
			el.className = 'KT_row_filter_submit_button';
		}, 
		'eval': "1"
	}, 
	{
		'selector' : function() {
			//'div.KT_tng input[type="text"]'
			//'div.KT_tng input[type="widget"]'
			//'div.KT_tng input[type="password"]'
			var toret = [];
			for (var i = 0; i < $lists.length; i++) {
				if ($lists[i].kt_styles_attached) {
					continue;
				}
				var inps = $lists[i].main.getElementsByTagName('input');
				var type = '';
				for (var j = 0; j < inps.length; j++) {
					type = inps[j].getAttribute('type');
					if (type == null) {
						type = 'text';
					}
					if (/(text|widget|password)/i.test(type.toString())) {
						toret.push(inps[j]);
					}
				}
			}
			return toret;
		}, 
		'transform': function(el) {
			utility.dom.classNameAdd(el, 'input_text');
		}, 
		'eval': "1"
	}, 
	{
		'selector' : 'table.KT_tngtable', 
		'transform' : function(el) {
			if (el.getAttribute("kt_checkboxes_attached")) {
				return;
			}
			el.setAttribute("kt_checkboxes_attached", true);
			var labels = utility.dom.getElementsByTagName(el, 'label');
			var visited_labels = [];
			//ZZZZ
			Array_each(labels, function(label) {
				var normal = label.htmlFor.toString().replace(/_\d+$/, '');
				var normal_re = new RegExp('^' + normal + "_\\d+$", 'g');
			
				var first = document.getElementById(normal+'_1');
				if (typeof first == 'undefined' || first == null || !first.tagName || first.tagName == 'undefined') {
					return;
				}
				if (first.tagName.toLowerCase() == 'input' && first.type && first.type.toLowerCase() == 'file') {
					return;
				}
			
				var inp = document.getElementById(label.htmlFor.toString());
			
				var show_cond = true;
				if (typeof inp == 'undefined' || inp == null) {
					show_cond = false;
				}
				if (show_cond && typeof inp.type != 'undefined' && inp.type != null) {
					if (inp.type.toString().toLowerCase() == 'radio') {
						show_cond = false;
					}
				}
				if (!show_cond) {
					return;
				}
			
				if (tng_mtm_detail_key_re.test(label.htmlFor)) {
					// this is a detail checkbox
					// attach the onclick disable/enable detail row behavior 
					inp.onclick = function(e) {
						tng_form_enable_details(inp.name);
					}
					if (!inp.checked) {
						tng_form_enable_details(inp.name);
					}
				}
			});
		},
		'eval': "1"
	},
	{
		'selector' : 'div.KT_tngform', 
		'transform' : function(el) {
			if (el.getAttribute("kt_styles_attached")) {
				return;
			}
			el.setAttribute("kt_styles_attached", true);
			if (is.mozilla) {
				utility.dom.classNameAdd(el, 'fix_content_enlarge');
			}

			if (typeof window['ktmls'] != 'undefined' && is.mozilla && typeof(ktml_isElementVisible) == 'undefined') {
				return;
			}

			multiple_edits = false;
			var tables = utility.dom.getElementsBySelector('div.KT_tngform table.KT_tngtable');
			if (tables.length && tables.length > 1) {
				multiple_edits = true;
			}
			var show_as_grid = !(typeof $NXT_FORM_SETTINGS == 'undefined' || typeof $NXT_FORM_SETTINGS['show_as_grid'] == 'undefined' || $NXT_FORM_SETTINGS['show_as_grid'] == false);
			if (tables.length == 1 || !show_as_grid) {
				return true;
			}
			multiple_edits = true;
			var num_of_columns = tables[0].rows.length;

			var tbl = document.createElement('table', {
				'className' : 'KT_tngtable'
			});
			tbl.className = 'KT_tngtable';
			
			//el.appendChild(tbl);
			//	STEP n-3 : create the header table
			var row_head = tbl.insertRow(-1);
			var cell_head = row_head.insertCell(-1);
			cell_head.innerHTML = NXT_Messages['Record_FH'];
			cell_head.className = 'KT_th';
			Array_each(tables[0].rows, function(row) {
				var label = row.getElementsByTagName('label')[0];

				var cell_head = row_head.insertCell(-1);
				cell_head.className = 'KT_th';
				if (label) {
					cell_head.appendChild(label);
				} else {
					cell_head.innerHTML = row.getElementsByTagName('td')[0].innerHTML;
				}
			})


			//	STEP n-2 : create the new table and hide it
			var hidden_ids = utility.dom.getElementsByClassName(el, 'id_field');
			var hidden_ids_index = 0;
			Array_each(tables, function(table_to_copy, index) {
				var row_content = tbl.insertRow(-1);
				
				var cell_record_no = row_content.insertCell(-1);
				cell_record_no.innerHTML = (index+1)+'';
				cell_record_no.noWrap = true;
				cell_record_no.style.verticalAlign = "top";

				Array_each(table_to_copy.rows, function(row) {
					//var cell_content = row_content.insertCell(-1);
					//cell_content.innerHTML = row.getElementsByTagName('td')[1].innerHTML;
					var td = row_content.appendChild(row.getElementsByTagName('td')[1]);//.cloneNode(true)
					td.style.verticalAlign = "top";
					var hint = utility.dom.getElementsByClassName(td, 'KT_field_hint', 'span');
					if (hint.length) {
						for (var i = 0; i < hint.length; i++) {
							hint[i].parentNode.removeChild(hint[i]);
						}
					}
				})

				var hidden = hidden_ids[hidden_ids_index++];
				/*
				while (hidden && (hidden.nodeType == 3 || hidden.tagName.toLowerCase() != 'input')) {
					hidden = hidden.nextSibling;
				}
				*/
				if (hidden) {
					cell_record_no.appendChild(hidden);
				} else {
					alert('could not find hidden !');
				}

			})

			// STEP n-1 : delete the old tables 
			Array_each(tables, function(table_to_copy, index) {
				//remove previous h2
				var heading = table_to_copy.previousSibling;
				try {
					while (heading.previousSibling && (heading.nodeType == 3 ||  heading.tagName.toLowerCase() != 'h2')) {
						heading = heading.previousSibling;
					}
				} catch(e) { heading = null; } 
				if (heading) {
					heading.parentNode.removeChild(heading);
				}

				//remove next input
				var hidden = table_to_copy.nextSibling;
				try {
					while (hidden && hidden.nodeType != 3 && hidden.tagName.toLowerCase() != 'input') {
						hidden = hidden.nextSibling;
					}
				} catch(e) { hidden = null; }
				if (hidden) {
					hidden.parentNode.removeChild(hidden);
				}
				table_to_copy.parentNode.removeChild(table_to_copy);
			})

			//	STEP 4 : find the bottombuttons div, and add the element
			var bottom_buttons = utility.dom.getElementsBySelector('div.KT_bottombuttons')[0];
			bottom_buttons.parentNode.insertBefore(tbl, bottom_buttons);
		}, 
		'eval': '(true)'
	}
];

function nxt_style_set_globals() {
	$lists = [];
	var tmp = utility.dom.getElementsByClassName(document, 'KT_tng', 'div');
	for (var k = 0; k < tmp.length; k++) {
		var list_obj = {};
		var kt_styles_attached = tmp[k].getAttribute("kt_styles_attached");
		if (kt_styles_attached) {
			continue;
		}
		list_obj.kt_styles_attached = false;
		list_obj.name = tmp[k].id;
		list_obj.main = tmp[k];
		list_obj.inner = utility.dom.getElementsByClassName(tmp[k], 'KT_tnglist', 'div');
		if (typeof list_obj.inner == 'object' && list_obj.inner != null && list_obj.inner.length && list_obj.inner.length > 0) {
			list_obj.inner = list_obj.inner[0];
			if (is.mozilla) {
				utility.dom.classNameAdd(list_obj.inner, 'fix_content_enlarge');
			}
		
			var frm = list_obj.inner.getElementsByTagName('form')[0];
			for (var i = 0; i < frm.childNodes.length; i++) {
				if (frm.childNodes[i].nodeType == 1) {
					var n = frm.childNodes[i];
					var t = n.tagName.toLowerCase();
					var c = n.className;
					if (t == 'table') {
						list_obj.table = n;
					}
					if (/KT_topbuttons/.test(c)) {
						list_obj.topbuttons = n;
					}
					if (/KT_bottombuttons/.test(c)) {
						list_obj.bottombuttons = n;
					}
					if (/KT_topnav/.test(c)) {
						list_obj.topnav = n;
						var divs = list_obj.topnav.getElementsByTagName('div');
						for (var j = 0; j < divs.length; j++) {
							if (/KT_textnav/.test(divs[j].className)) {
								list_obj.toptextnav = divs[j];
								break;
							}
						}
					}
					if (/KT_bottomnav/.test(c)) {
						list_obj.bottomnav = n;
						var divs = list_obj.bottomnav.getElementsByTagName('div');
						for (var j = 0; j < divs.length; j++) {
							if (/KT_textnav/.test(divs[j].className)) {
								list_obj.bottomtextnav = divs[j];
								break;
							}
						}
					}
				}
			}
			$lists.push(list_obj);
		}
	}
}

function nxt_style_attach() {
	if (is.ie && is.mac) {
		return;
	}
	styles_arr = [];
	nxt_style_set_globals();
	nxt_perform_transformations = function() {
		Array_each($TRANSFORMATIONS, function(t) {
			var obj = {};
			obj.selector = t;
			obj.start = new Date();
			if (eval(t['eval'])) {
				var sel = t.selector;
				if (typeof sel == 'function') {
					var arr = sel();
				} else {
					var arr = utility.dom.getElementsBySelector(t['selector']);
				}
				Array_each(arr, t['transform']);
			}
			obj.end = new Date();
			obj.diff = obj.end - obj.start;
			styles_arr.push(obj);
		});
		for(var i=0; i<$lists.length; i++) {
			$lists[i].kt_styles_attached = true;
			$lists[i].main.setAttribute("kt_styles_attached", true);
		}
		KT_style_executed = true;
		$style_executed = true;
		if (typeof nxt_list_attach != 'undefined') {
			nxt_list_attach();
		}
	}
	nxt_perform_transformations();
}

utility.dom.attachEvent2(window, 'onload', nxt_style_attach);
//Javascript UniVAL Module

/*
 * ADOBE SYSTEMS INCORPORATED
 * Copyright 2007 Adobe Systems Incorporated
 * All Rights Reserved
 *
 * NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the
 * terms of the Adobe license agreement accompanying it. If you have received this file from a
 * source other than Adobe, then your use, modification, or distribution of it requires the prior
 * written permission of Adobe.
 */

if (typeof KT_FVO == 'undefined') {
	KT_FVO = {};
	KT_FVO_properties = {
		noTriggers: 0,
		noTransactions: 0
	}
}
//configuration variables
$UNI_GLOBALVARNAME = 'KT_FVO';
$UNI_GLOBALVARNAME_MESSAGES = 'UNI_Messages';

$UNI_ATTRNAME_ERRORMESSAGE = 'errormessage';
$UNI_DEFAULTERRORMESSAGE = 'The field \'%s\' has an invalid value !';
$UNI_FORM_SUBMIT_PRIORITY = 10;

$UNI_CLASSNAME_ERROR_LABEL = 'form_validation_field_error_label';
$UNI_CLASSNAME_ERROR_CONTAINER = 'form_validation_field_error_container';
$UNI_CLASSNAME_ERROR_ELEMENT = 'form_validation_field_error_text';
$UNI_CLASSNAME_ERROR_ERROR_ELEMENT = 'form_validation_field_error_error_message';
$UNI_CLASSNAME_ERROR_SS = 'KT_field_error';
$UNI_CLASSNAME_ERROR_FORM = 'form_validation_form_error';

$UNI_DELETE_BUTTON_NAME = /delete/i;
$UNI_INSERT_BUTTON_NAME = /insert/i;
$UNI_UPDATE_BUTTON_NAME = /update/i;
$UNI_CANCEL_BUTTON_NAME = /cancel/i;
$UNI_LOGIN_BUTTON_NAME = /login/i;

/*
Recognized date time masks:
Date
	m/d/yy
	d/m/yy
	d.m.yy
	mm/dd/yyyy
	dd/mm/yyyy
	dd.mm.yyyy
	yyyy-mm-dd
Time
	h:ii:ss t
	HH:ii:ss
	H:ii:ss
	hh:ii:ss tt
*/

function UNI_isktml(el) {
	var is_ktml = false;
	if (typeof el.name != 'undefined') {
		if (typeof ktmls != 'undefined' && ktmls != null && ktmls.length) {
			var is_ktml = false;
			Array_each(ktmls, function(ktml) {
				if (ktml.name == el.name) {
					is_ktml = ktml;
				}
			});
		}
	}
	return is_ktml;
}

function UNI_date2regexp(txt) {
	return utility.date.date2regexp(txt);
}

function UNI_mask2regexp(txt) {
	txt = txt.replace(/([-\/\[\]()\*\+])/g, '\\$1');
	txt = txt.replace(/9/g, '\\d');
	txt = txt.replace(/\?/g, '.');
	txt = txt.replace(/X/g, '\\w');
	txt = txt.replace(/A/g, '[A-Za-z]');
	var re = new RegExp('^' + txt + '$');
	return re;
}

function UNI_regexp2regexp(txt) {
	var sep = txt.substring(0, 1);
	var pos = txt.lastIndexOf(sep);

	var reg = txt.substring(1, pos);
	var mods = '';
	if (pos+1 <= txt.length-1) {
		var mods = txt.substring(pos+1, txt.length);
	}
	var re = new RegExp(reg, mods);
	return re;
}

function UNI_init_error_elements(el) {
	var ret = {};
	var el_name = el.name;

	var allLabels = document.getElementsByTagName("LABEL");
	for(var i=0; i < allLabels.length; i++) {
		if (allLabels[i].htmlFor == el.id) {
			ret['label'] = allLabels[i];
			break;
		}
	}
	var is_widget = el.getAttribute("wdg:type")!=null;

	if (is_widget) {
		var zel = el;
		while(zel) {
			if(typeof(zel.className) != "undefined" && zel.className.indexOf("widget_container")>=0) {
				break;
			}
			zel = zel.parentNode;
		}
		if (zel) {
			el = zel;
		}
	}

	ret['container'] = el.parentNode;
	while(ret['container'].nodeType != 1) {
		ret['container'] = ret['container'].parentNode;
	}

	var dv = document.getElementById(el_name + '_error_element');
	if (dv != null) {
		ret['error_element'] = dv;
	} else {
		ret['error_element'] = utility.dom.createElement("DIV", {
			'id': el_name + '_error_element'
		});
		var server_side = utility.dom.getElementsByClassName(el.parentNode, $UNI_CLASSNAME_ERROR_SS);
		if (server_side.length > 0) {
			el.parentNode.removeChild(server_side[0]);
		}
		var spn = utility.dom.getElementsByClassName(el.parentNode, 'KT_field_hint')[0];
		if (typeof spn == 'undefined') {
			spn = el;
			if (el.type) {
				if (el.type.toString().toLowerCase() == 'radio') {
					try {
						spn = el.parentNode;
					} catch(e) { spn = el; }
				}
			}
		}
		//find the last element in the container element to insert the error_element after (it should be the last)
		while (spn.nextSibling) {
			spn = spn.nextSibling;
		}
		ret['error_element'] = utility.dom.insertAfter(ret['error_element'], spn);
	}

	return ret;
}

function UNI_fieldok_action(el, props) {
	var errorElements = UNI_init_error_elements(el);
	try {
		utility.dom.classNameRemove(errorElements['label'], $UNI_CLASSNAME_ERROR_LABEL);
		utility.dom.classNameRemove(errorElements['container'], $UNI_CLASSNAME_ERROR_CONTAINER);
		utility.dom.classNameRemove(el, $UNI_CLASSNAME_ERROR_ELEMENT);
		errorElements['error_element'].parentNode.removeChild(errorElements['error_element']);
	} catch(e) { }
	errorElements = undefined;
}

function UNI_required_action(el, props) {
	var errorElements = UNI_init_error_elements(el);
	if (errorElements.label)
		utility.dom.classNameAdd(errorElements.label, $UNI_CLASSNAME_ERROR_LABEL);
	if (errorElements.container)
		utility.dom.classNameAdd(errorElements.container, $UNI_CLASSNAME_ERROR_CONTAINER);
	if (el)
		utility.dom.classNameAdd(el, $UNI_CLASSNAME_ERROR_ELEMENT);

	var errorMessage = props['errorMessage'];
	if (errorMessage == '') {
		//TODO : the required message has ONE %s : the element name
		errorMessage = utility.string.sprintf(window[$UNI_GLOBALVARNAME_MESSAGES]["required"], el.name);
	}

	try {
		errorElements['error_element'].innerText = errorMessage;
		errorElements['error_element'].innerHTML = errorMessage;
	} catch(e) { }
	if (errorElements.error_element)
		utility.dom.classNameAdd(errorElements.error_element, $UNI_CLASSNAME_ERROR_ERROR_ELEMENT);
}

function UNI_format_action(el, props) {
	var errorElements = UNI_init_error_elements(el);

	if (errorElements.label)
		utility.dom.classNameAdd(errorElements.label, $UNI_CLASSNAME_ERROR_LABEL);
	if (errorElements.container)
		utility.dom.classNameAdd(errorElements.container, $UNI_CLASSNAME_ERROR_CONTAINER);
	if (el)
		utility.dom.classNameAdd(el, $UNI_CLASSNAME_ERROR_ELEMENT);

	var errorMessage = props['errorMessage'];
	if (errorMessage == '') {
		//TODO : the format message has ONE %s : the format name
		//TODO : we only get the interned format name, but we should have the screen format name
		var mesg1 = window[$UNI_GLOBALVARNAME_MESSAGES][props['type'] + '_' + props['format'] ];
		var mesg2 = window[$UNI_GLOBALVARNAME_MESSAGES][props['type'] + '_'];
		if (typeof mesg1 != 'undefined') {
			errorMessage = utility.string.sprintf(window[$UNI_GLOBALVARNAME_MESSAGES]['format'], mesg1);
		} else if (typeof mesg2 != 'undefined') {
			errorMessage = utility.string.sprintf(window[$UNI_GLOBALVARNAME_MESSAGES]['format'], mesg2);;
		} else {
			errorMessage = utility.string.sprintf(window[$UNI_GLOBALVARNAME_MESSAGES]['format'], props['format']);
		}
	}

	try {
		errorElements['error_element'].innerText = errorMessage;
		errorElements['error_element'].innerHTML = errorMessage;
	} catch(e) { }
	if (errorElements.error_element)
		utility.dom.classNameAdd(errorElements.error_element, $UNI_CLASSNAME_ERROR_ERROR_ELEMENT);
}

function UNI_boundary_action(el, props, test_min, test_max) {
	sprintf = utility.string.sprintf;
	var errorElements =  UNI_init_error_elements(el);

	if (errorElements.label)
		utility.dom.classNameAdd(errorElements.label, $UNI_CLASSNAME_ERROR_LABEL);
	if (errorElements.container)
		utility.dom.classNameAdd(errorElements.container, $UNI_CLASSNAME_ERROR_CONTAINER);
	if (el)
		utility.dom.classNameAdd(el, $UNI_CLASSNAME_ERROR_ELEMENT);

	var prefix = (props['type'] == 'text') ? 'text' : 'other';
	var errorMessage = props['errorMessage'];
	if (errorMessage == '') {
		//TODO : we only get the interned format name, but we should have the screen format name
		if (test_min != null && test_max != null) {
			errorMessage = sprintf(window[$UNI_GLOBALVARNAME_MESSAGES][prefix + '_between'], props['min'], props['max']);
		} else {
			if (test_min != null) {
				errorMessage = sprintf(window[$UNI_GLOBALVARNAME_MESSAGES][prefix + '_min'], props['min']);
			} else {
				errorMessage = sprintf(window[$UNI_GLOBALVARNAME_MESSAGES][prefix + '_max'], props['max']);
			}
		}
	}

	try {
		errorElements['error_element'].innerText = errorMessage;
		errorElements['error_element'].innerHTML = errorMessage;
	} catch(e) { }
	if (errorElements.error_element)
		utility.dom.classNameAdd(errorElements.error_element, $UNI_CLASSNAME_ERROR_ERROR_ELEMENT);
}

function UNI_validateRegExp(el, props) {
	var toret = true;
	var re = UNI_regexp2regexp(props['additional_params']);
	if (!re.exec(el.value)) {
		toret = false;
	}
	return toret;
}

function UNI_validateMask(el, props) {
	var toret = true;
	var re =  UNI_mask2regexp(props['additional_params']);
	if (!re.exec(el.value)) {
		toret = false;
	}
	return toret;
}

function UNI_parse_date(arr, dateMask) {
	return utility.date.parse_date(arr, dateMask);
}


function UNI_dateBuilder(year, month, day, hour, minutes, seconds) {
	var month_length = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (! (parseInt(year) > 0)) { return false; }
	if (! (parseInt(month) > 0 && parseInt(month) <= 12)) { return false; }
	if ((
			(parseInt(year) % 4 == 0)
			&&
			(parseInt(year) % 100 != 0)
		)
		||
			(parseInt(year) % 400 == 0)
		) {
			month_length[1] = 29;
	}
	if (! (parseInt(day) > 0 && parseInt(day) <= month_length[parseInt(month)-1])) { return false; }

	month_length[1] = 28;
	if (! (parseInt(hour) >= 0 && parseInt(hour) <= 23)) { return false; }
	if (! (parseInt(minutes) >= 0 && parseInt(minutes) <= 59)) { return false; }
	if (! (parseInt(seconds) >= 0 && parseInt(seconds) <= 59)) { return false; }

	year = utility.math.zeroPad(year, 4);
	month = utility.math.zeroPad(month, 2);
	day = utility.math.zeroPad(day, 2);
	hour = utility.math.zeroPad(hour, 2);
	minutes = utility.math.zeroPad(minutes, 2);
	seconds = utility.math.zeroPad(seconds, 2);

	return year + month + day + hour + minutes + seconds;
}

function UNI_validateDate(el, props) {
	var toret = true;
	var dateMask = props['additional_params'];
	var re = utility.date.date2regexp(dateMask);
	var arr = re.exec(el.value);
	if (!arr) {
		toret = false;
	} else {
		var o = utility.date.parse_date(arr, dateMask);
		var newDate = UNI_dateBuilder(o['year'], o['month'], o['day'], o['hour'], o['minutes'], o['seconds']);
		if (newDate == false) {
			toret = false;
		}
	}

	return toret;
}

function UNI_validate_format_text_color_generic(el, props) {
	var toret = false;
	var validColors = [
			"black",
			"green",
			"silver",
			"lime",
			"gray",
			"olive",
			"white",
			"yellow",
			"maroon",
			"navy",
			"red",
			"blue",
			"purple",
			"teal",
			"fuchsia",
			"aqua"
	];

	var userColor = el.value.toString().toLowerCase();
	Array_each(validColors, function(color, i) {
		if(userColor == color) {
			toret = true;
		}
	});

	if(toret == false) {
		UNI_format_action(el, props);
	}

	return toret;
}

function UNI_validate_required(el, props) {
	var toret = true;
	if (el.type.toString().toLowerCase() == 'radio') {
		var arr = [];
		Array_each(el.form.elements, function(el2, i2) {
			if (el2.name == el.name) {
				Array_push(arr, el2);
			}
		});
		toret = false;
		Array_each(arr, function(el, i) {
			if (el.checked) {
				toret = true;
			}
		});
		if (!toret) {
			UNI_required_action(el, props);
		}
	} else if (
		el.value == '' ||
		el.value.match(/^<br[^>]*>$/gi) ||
		el.value.match(/^<p[^>]*>(&nbsp;|)<\/p>$/gi) ||
		el.value.match(/^<div[^>]*>(&nbsp;|)<\/div>$/gi) ||
		el.value.match(/^<span[^>]*>(&nbsp;|)<\/span>$/gi) ||
		(el.type.toLowerCase() == 'checkbox' && el.checked == false)
		) {
		UNI_required_action(el, props);
		toret = false;
	}
	return toret;
}

function UNI_validate_generic(el, props) {
	var toret = true;
	if (el.value != '') {
		if (props['additional_params'] != '') {
			var is_a_regexp =/^([^0-9A-Za-z]).*\1[gism]*$/;
			if (props['additional_params'].match(is_a_regexp)) {
				var validator = UNI_validateRegExp;
			} else {
				var validator = UNI_validateMask;
			}
			if (!validator(el, props)) {
				UNI_format_action(el, props);
				toret = false;
			}
		}

	}
	return toret;
}

function UNI_validate_format_regexp(el, props) {
	var toret = true;
	if (el.value != '') {
		if (!UNI_validateRegExp(el, props)) {
			UNI_format_action(el, props);
			toret = false;
		}
	}
	return toret;
}

function UNI_validate_format_mask(el, props) {
	var toret = true;
	if (el.value != '') {
		if (!UNI_validateMask(el, props)) {
			UNI_format_action(el, props);
			toret = false;
		}
	}
	return toret;
}

function UNI_validate_format_date(el, props) {
	var toret = true;
	if (el.value != '') {
		if (!UNI_validateDate(el, props)) {
			UNI_format_action(el, props);
			toret = false;
		}
	}
	return toret;
}

function UNI_validate_format_text_ip(el, props) {
	var toret = true;
	if (el.value != '') {
		if (!UNI_validateRegExp(el, props)) {
			UNI_format_action(el, props);
			toret = false;
		} else {
			Array_each(el.value.toString().split('.'), function(match) {
				if (parseInt(match) > 255) {
					UNI_format_action(el, props);
					toret = false;
					return;
				}
			});
		}
	}
	return toret;
}

function UNI_validate_minmax(el, props) {
	var toret = true, test_max = true, test_min = true;
	if (el.value != '') {
		if (props['min'] != '') {
			test_min = el.value >= props['min'];
			toret = toret && test_min;
		}
		if (props['max'] != '') {
			test_max = el.value <= props['max'];
			toret = toret && test_max;
		}
		if (! (test_max && test_min)) {
			UNI_boundary_action(el, props, test_min, test_max);
		}
	}
	return toret;
}

function UNI_validate_minmax_text(el, props) {
	var toret = true, test_max = null, test_min = null;
	if (props['min'] != '') {
		var test_min = (el.value.length >= parseInt(props['min']));
		toret = toret && test_min;
	}
	if (props['max'] != '') {
		var test_max = (el.value.length <= parseInt(props['max']));
		toret = toret && test_max;
	}

	if (! (test_max && test_min)) {
		UNI_boundary_action(el, props, test_min, test_max);
	}
	return toret;
}

function UNI_validate_minmax_numeric(el, props) {
	var toret = true, test_max = null, test_min = null;
	if (props['min'] != '') {
		var test_min = (parseFloat(el.value) >= parseFloat(props['min']));
		toret = toret && test_min;
	}
	if (props['max'] != '') {
		var test_max = (parseFloat(el.value) <= parseFloat(props['max']));
		toret = toret && test_max;
	}
	if (! (test_max && test_min)) {
		UNI_boundary_action(el, props, test_min, test_max);
	}
	return toret;
}
function UNI_validate_minmax_double(el, props) {
	var toret = true, test_max = null, test_min = null;
	if (props['min'] != '') {
		var test_min = (parseFloat(el.value) >= parseFloat(props['min']));
		toret = toret && test_min;
	}
	if (props['max'] != '') {
		var test_max = (parseFloat(el.value) <= parseFloat(props['max']));
		toret = toret && test_max;
	}
	if (! (test_max && test_min)) {
		UNI_boundary_action(el, props, test_min, test_max);
	}
	return toret;
}


function UNI_validate_minmax_date(el, props) {
	var toret = true, test_max = null, test_min = null;

	var dateMask = props['additional_params'];
	var re = utility.date.date2regexp(dateMask);
	var arr = re.exec(el.value);
	var date1 = utility.date.parse_date(arr, dateMask);
	date1 = UNI_dateBuilder(date1['year'], date1['month'], date1['day'], date1['hour'], date1['minutes'], date1['seconds']);
	if (props['min'] != '') {
		var arr = re.exec(props['min']);
		var date_min = utility.date.parse_date(arr, dateMask);
		var date_min = UNI_dateBuilder(date_min['year'], date_min['month'], date_min['day'], date_min['hour'], date_min['minutes'], date_min['seconds']);
		var test_min = (parseInt(date1) >= parseInt(date_min));
		toret = toret && test_min;
	}
	if (props['max'] != '') {
		var arr = re.exec(props['max']);
		var date_max = utility.date.parse_date(arr, dateMask);
		var date_max = UNI_dateBuilder(date_max['year'], date_max['month'], date_max['day'], date_max['hour'], date_max['minutes'], date_max['seconds']);

		var test_max = (parseInt(date1) <= parseInt(date_max));
		toret = toret && test_max;
	}
	if (! (test_max && test_min)) {
		UNI_boundary_action(el, props, test_min, test_max);
	}
	return toret;
}

//Attaches itself to the form submit buttons and sets checking = on/off, depending on the button name
//TODO : redo insert / update / delete logic ???
function UNI_buttonHandler(e) {
	var o = utility.dom.setEventVars(e);
	if (o.targ.name.match($UNI_DELETE_BUTTON_NAME)
		||o.targ.name.match($UNI_INSERT_BUTTON_NAME)
		||o.targ.name.match($UNI_UPDATE_BUTTON_NAME)
		||o.targ.name.match($UNI_LOGIN_BUTTON_NAME)
		||(typeof o.targ.tagName != 'undefined' && o.targ.type.toLowerCase() == 'submit')) {
		o.targ.form.removeAttribute('haschanged');
	}
	if (o.targ.name.match($UNI_DELETE_BUTTON_NAME) || o.targ.name.match($UNI_CANCEL_BUTTON_NAME)) {
		o.targ.form.setAttribute('donotcheck', '1');
		window.UNI_buttonpressed = o.targ.name;
	} else if((o.targ.name.match($UNI_INSERT_BUTTON_NAME) || o.targ.name.match($UNI_UPDATE_BUTTON_NAME))) {
		o.targ.form.setAttribute('donotcheck', '0');
		window.UNI_buttonpressed = o.targ.name;
	} else {
		o.targ.form.setAttribute('donotcheck', '0');
		window.UNI_buttonpressed = o.targ.name;
	}

}

function UNI_navigateCancel(event, str) {
	var o = utility.dom.setEventVars(event);
	if (o.targ.form.getAttribute('haschanged') != null) {
		if (confirm(utility.string.getInnerText(UNI_Messages['form_was_modified']))) {
			o.targ.form.removeAttribute('haschanged');
			var loc = str;
			try {
				if (loc.indexOf("/") == 0) {
					//use the absolute path
				} else if (!loc.match(/\w+:\/\//)) {
					loc = document.getElementsByTagName('base')[0].href.toString() + loc;
				}
			} catch(e) { loc = str };
			if (typeof $ctrl != 'undefined') {
				$ctrl.loadPanels(loc);
			} else {
				window.location.href = loc;
			}
			return true;
		} else {
			utility.dom.stopEvent(o.e);
			return false;
		}
	} else {
		var loc = str;
		try {
			if (loc.indexOf("/") == 0) {
				//use the absolute path
			} else if (!loc.match(/\w+:\/\//)) {
				loc = document.getElementsByTagName('base')[0].href.toString() + loc;
			}
		} catch(e) { loc = str };

		if (typeof $ctrl != 'undefined') {
			$ctrl.loadPanels(loc);
		} else {
			window.location.href = loc;
		}
		return true;
	}
}
var UNI_navigateAway_locked = false;
function UNI_navigateAway(e) {
	if (UNI_navigateAway_locked) {
		UNI_navigateAway_locked = false;
	} else {
		var frms = document.forms;
		var toret = false;
		for ( var i = 0; i < frms.length; i++) {
			var frm = frms[i];
			if (frm.getAttribute('haschanged') != null) {
				toret = true;
			}
		}
		if (toret == true) {
			return utility.string.getInnerText(UNI_Messages['form_was_modified']);
		}
	}
}

//attach events to form submittal buttons
//TODO : redo insert / update / delete logic ???
function UNI_attachToButtons() {
	if (is.ie && is.mac) {
		return;
	}
	var frms = document.getElementsByTagName('form');
	for (var i = 0; i < frms.length; i++) {
		var frm = frms[i];
		for (var j = 0; frm.elements.length; j++) {
			var el = frm.elements[j];
			if (el != null) {
				if (el.name) {
					var attached = false;
					//var str = 'on' + (is.safari?'mousedown':'focus');
					//alert(str);
					if (el.name.toString().match($UNI_DELETE_BUTTON_NAME)
					 || el.name.toString().match($UNI_CANCEL_BUTTON_NAME)
					 ) {
						attached = true;
						el['on' + (is.safari?'mousedown':'focus')] = UNI_buttonHandler;
					}
					if (el.name.toString().match($UNI_INSERT_BUTTON_NAME)
					 || el.name.toString().match($UNI_UPDATE_BUTTON_NAME)
					 ) {
						attached = true;
						el['on' + (is.safari?'mousedown':'focus')] = UNI_buttonHandler;
					}
					if (el.type.toLowerCase() == 'submit' && !attached) {
						el['on' + (is.safari?'mousedown':'focus')] = UNI_buttonHandler;
					}
				}
			} else {
				break;
			}
		}
	}
}

//attach to all the forms in the page, called on "onload"
function UNI_attachToForm() {
	GLOBAL_registerFormSubmitEventHandler('UNI_formSubmittalHandler', $UNI_FORM_SUBMIT_PRIORITY);
	if (is.windows && is.ie) {
		GLOBAL_registerFormSubmitEventHandler('UNI_enableButtonsIEBug', $UNI_FORM_SUBMIT_PRIORITY+1);
	}
	UNI_attachToButtons();
}


function UNI_attachEmptyProps(props) {
	Array_each(['colname', 'required', 'type', 'format', 'additional_params', 'min', 'max', 'errorMessage'],
		function(prop_name) {
		if (typeof props[prop_name] == 'undefined') {
			props[prop_name] = '';
		}
	});
	return props;
}

// for the moment : error 0 : no error, error 1 : required, error 2 : illegal value
function UNI_workOnElement(el) {
	var toret = true;

	if (el && el.type && el.type.toLowerCase() == 'hidden') {
		if (!UNI_isktml(el)) {
			return true;
		}
	}
	if (typeof window[$UNI_GLOBALVARNAME] == 'undefined') {
		return true;
	}

	var elname = el.name;
	if (!window[$UNI_GLOBALVARNAME][el.name]) {
		elname = elname.replace(/_\d+$/, '');
	}
	var props = UNI_attachEmptyProps(window[$UNI_GLOBALVARNAME][elname]);

	// Validation Step 1 : REQUIRED
	if (props['required']) {
		toret = toret && UNI_validate_required(el, props);
	}
	if (!toret) {
		return toret;
	}

	// Validation Step 2 : FORMAT UNI_validate_[type]_format
	//UNI_validate_text_ip, UNI_validate_text_cc_generic
		//if they don't exist, try to exec UNI_validate_text
			//if they don't exist, try to exec UNI_validate_generic
	if (props['format'] != '' || props['type'] == 'mask' || props['type'] == 'regexp') {
		var functor_specific = window['UNI_validate_format_' + props['type'] + '_' + props['format']];
		var functor_type = window['UNI_validate_format_' + props['type']];
		var functor_generic = UNI_validate_generic;
		if (typeof functor_specific == 'function') {
			toret = toret && functor_specific(el, props);
		} else if (typeof functor_type == 'function') {
			toret = toret && functor_type(el, props);
		} else {
			toret = toret && functor_generic(el, props);
		}
	}
	if (!toret) {
		return toret;
	}
	//Validation Step 3 : min, max
	if (el.value != '') {
		if (props['min'] != '' || props['max'] != '') {
			var functor_specific = window['UNI_validate_minmax_' + props['type']];
			var functor_generic = UNI_validate_minmax;
			if (typeof functor_specific == 'function') {
				toret = toret && functor_specific(el, props);
			} else if (typeof functor_generic == 'function') {
				toret = toret && functor_generic(el, props);
			}
		}
	}
	if (!toret) {
		return toret;
	}

	//Validation Step 4 : delete errors from old fields that have them
	if (toret == true) {
		UNI_fieldok_action(el, props);
	}
	return toret;
}

function UNI_disableButtons(frm, regexp, flag) {
	Array_each(frm.getElementsByTagName('input'), function(button, i) {
		if (button.type && Array_indexOf(['submit', 'button'], button.type.toLowerCase()) >= 0) {
			if (button.className == 'mxw_v' || button.className == 'mxw_add') {
				return true;
			}
			if (button.name.match(regexp)) {
				button.disabled = flag;
			}
		}
	});
}

//what to do when form is submitted
function UNI_formSubmittalHandler(e) {
	if (is.ie && is.mac) {
		return true;
	}

	focus_happened = false;
	var o = utility.dom.setEventVars(e);
	var frm = o.targ;
	frm = utility.dom.getParentByTagName(frm, 'form');
	var returnHandler = true;

	frm.removeAttribute('haschanged');

	//this code "gets" the depressed button in the form,
	//or finds it, if the enter key has been pressed (no button defined)
	if (typeof window.UNI_buttonpressed != 'undefined') {
		var button_regexp = window.UNI_buttonpressed;
	} else {
		var form_buttons = [];
		Array_each(frm.getElementsByTagName('input'), function(button, i) {
		if (button.type && (
			button.type.toLowerCase() == 'submit' ||
			button.type.toLowerCase() == 'button'
			)) {
				Array_push(form_buttons, button);
			}
		});
		if (form_buttons.length == 1) {
			var button_regexp = form_buttons[0].name;
		} else {
			var update = false;
			var insert = false;
			var login = false;
			for (var i = 0; i < form_buttons.length; i++) {
				var button = form_buttons[i];
				if (button.name.toString().match($UNI_UPDATE_BUTTON_NAME)) {
					update = true;
				}
				if (button.name.toString().match($UNI_INSERT_BUTTON_NAME)) {
					insert = true;
				}
				if (button.name.toString().match($UNI_LOGIN_BUTTON_NAME)) {
					login = true;
				}
			}
			if (update) {
				var button_regexp = $UNI_UPDATE_BUTTON_NAME;
			} else {
				if (insert) {
					var button_regexp = $UNI_INSERT_BUTTON_NAME;
				} else {
					if (login) {
						var button_regexp = $UNI_LOGIN_BUTTON_NAME;
					}
				}
			}
		}
	}
	//
	Array_each(frm.getElementsByTagName('input'), function(button, i) {
		if (button.type && (
			button.type.toLowerCase() == 'submit' ||
			button.type.toLowerCase() == 'button'
			)) {
			if (button.className == 'mxw_v' || button.className == 'mxw_add') {
				return true;
			}
			if (button.name.match(button_regexp)) {
				var hd = utility.dom.createElement('input', {
					'type' : 'hidden',
					'name': button.name,
					'value': button.value
				});
				hd = frm.appendChild(hd);
			}
		}
	});

	if (frm.getAttribute('donotcheck') == '1') {
		return true;
	}

	var is_update_form = true;
	Array_each(utility.dom.getElementsByTagName(document, 'input'), function(input) {
		if (typeof input.type != 'undefined' && typeof input.name != 'undefined') {
			if (input.type.toLowerCase() == 'hidden' && input.name.toString().match(/^kt_pk/)) {
				if (input.value && input.value == 'KT_NEW') {
					is_update_form = false;
				}
			}

		}
	});

	var arr = frm.elements;
	var already_checked = [];
	Array_each(arr, function(el, i) {
		if (Array_indexOf(already_checked, el) >= 0) {
			return;
		}
		if (typeof el.tagName != 'undefined' && el.tagName.toLowerCase() == 'fieldset') {
			return;
		}

		if (el.type.toString().toLowerCase() == 'radio') {
			Array_each(frm.elements, function(el2, i2) {
				if (el2.name == el.name) {
					Array_push(already_checked, el2);
				}
			});
		}
		var tagname = el.tagName;
		var elname = el.name;
		if (!elname) return;
		if (typeof window[$UNI_GLOBALVARNAME] != 'undefined' && typeof window[$UNI_GLOBALVARNAME][elname] == 'undefined') {
			if (!is_update_form) {
				elname = elname.replace(/_1$/, '');
			} else {
				elname = elname.replace(/_\d+$/, '');
			}
		}
		if (typeof window[$UNI_GLOBALVARNAME] != 'undefined' && typeof window[$UNI_GLOBALVARNAME][elname] != 'undefined') {
			var tmp = UNI_workOnElement(el);
			if (!tmp) {
				if (!focus_happened) {
					try { el.focus(); focus_happened = true;} catch(e) { focus_happened = false; }
				}
			}
			returnHandler = returnHandler && tmp;
		}
	});

	if (!returnHandler) {
		frm.setAttribute('fvo_error', '1');
		button_regexp = '';
		if (Array_indexOf(utility.dom.getClassNames(frm), 'KT_tngformerror') >= 0) {
			utility.dom.classNameAdd(frm, $UNI_CLASSNAME_ERROR_FORM);
		}
		return false;
	}

	try {
		utility.dom.classNameRemove(frm, $UNI_CLASSNAME_ERROR_FORM);
	} catch(e) { }

	return returnHandler;
}

function UNI_enableButtonsIEBug(e) {
	var o = utility.dom.setEventVars(e);
	var frm = o.targ;
	frm = utility.dom.getParentByTagName(frm, 'form');
	var regexps = [/[a-z]:\\.*$/i, /\\\\.*$/i];
	var invalid_file = true;
	Array_each(frm.getElementsByTagName('input'), function(el) {
		if (el.type) {
			if (el.type.toLowerCase() == 'file') {
				var flag = false;
				for (var i = 0; i < regexps.length; i++) {
					if (el.value.match(regexps[i])) {
						flag = true;
					}
				}
				invalid_file = invalid_file && flag;
			}
		}
	});
	if (!invalid_file) {
		UNI_disableButtons(frm, /.*/, false);
	}
	return true;
}

function UNI_handle_required(form_label) {
	var htmlFor = form_label.htmlFor;
	var focus_happened = false;
	if (htmlFor) {
		var el = (is.ie&&htmlFor.toLowerCase()=="description")?document.body.all(htmlFor):document.getElementById(htmlFor);
		if (typeof el != 'undefined' && el != null && typeof window[$UNI_GLOBALVARNAME] != 'undefined') {
			if (typeof el.name == 'undefined' || el.name == null) {
				return;
			}
			var elname = el.name;

			if (!window[$UNI_GLOBALVARNAME][el.name]) {
				elname = elname.replace(/_\d+$/, '');
			}
			var validate_object = window[$UNI_GLOBALVARNAME][elname];
			var ignore_this = false;
			if (el.type.toLowerCase() == 'radio') {
				if (form_label && form_label.parentNode &&
					el && el.parentNode &&
					form_label.parentNode == el.parentNode) {
					var ignore_this = true;
				}
			}
			if (
				typeof validate_object != 'undefined' &&
				typeof validate_object.required != 'undefined' &&
				validate_object.required &&
				!ignore_this
			) {
				var txt = utility.dom.createElement("SPAN", {className: 'KT_required'});
				txt.innerHTML = "*";
				form_label.appendChild(txt);
			}
			var server_side = utility.dom.getElementsByClassName(el.parentNode, $UNI_CLASSNAME_ERROR_SS);
			if (server_side.length > 0 && !focus_happened) {
				try {
					el.focus();
				} catch(e) { }
				focus_happened = true;
				//login form
				if (Array_indexOf(utility.dom.getClassNames(el.form), 'KT_tngformerror') >= 0) {
					//this is a login form
					utility.dom.classNameAdd(el.form, $UNI_CLASSNAME_ERROR_FORM);
				}
			}
		}
	}
}

function UNI_handle_changed(form_label) {
	var htmlFor = form_label.htmlFor;
	var focus_happened = false;
	if (htmlFor) {
		var el = (is.ie&&htmlFor.toLowerCase()=="description")?document.body.all(htmlFor):document.getElementById(htmlFor);
		if (typeof el != 'undefined' && el != null) {
			if (typeof el.name == 'undefined' || el.name == null) {
				return;
			}

			var elname = el.name;
			var ignore_this = false;
			if (el.type.toLowerCase() == 'radio') {
				if (form_label && form_label.parentNode &&
					el && el.parentNode &&
					form_label.parentNode == el.parentNode) {
					var ignore_this = true;
				}
			}
			if (!ignore_this) {
				utility.dom.attachEvent(el, 'change', function(e) {
					try {
						var form = utility.dom.getParentByTagName(this, 'form');
						form.setAttribute('haschanged', '1');
					} catch(e) { }
				});
			}
		}
	}
}

function UNI_form_attach() {
	var tmp, has_update = false;
	var div = utility.dom.getElementsByClassName(document, 'KT_tng', 'div');
	var start_el = null;
	if (div.length == 1) {
		start_el = div[0];
	} else {
		start_el = utility.dom.getElementsByClassName(document, 'KT_tngtable', 'table')[0];
	}
	if (typeof start_el != 'undefined') {
	Array_each(start_el.getElementsByTagName('input'), function(button, i) {
		if (button.type && Array_indexOf(['submit', 'button'], button.type.toLowerCase()) >= 0) {
			if (button.className == 'mxw_v' || button.className == 'mxw_add') { return; }
			if (button.name.match($UNI_UPDATE_BUTTON_NAME)) { has_update = true; }
		}
	});
	if (has_update) {
		var forms = document.getElementsByTagName('form');
		if (typeof KT_FVO_properties != 'undefined' && typeof KT_FVO_properties['noTriggers'] && typeof KT_FVO_properties['noTransactions'] != 'undefined') {
			var noTriggers = parseInt(KT_FVO_properties['noTriggers'], 10);
			var noTransactions = parseInt(KT_FVO_properties['noTransactions'], 10);
			if (noTriggers == 1 && noTransactions > 1) {
				for (i in KT_FVO) {
					var re = new RegExp('^' + i, 'g');
					Array_each(forms, function(form) {
						Array_each(form.elements, function(el) {
							if (el && el.name && el.name.match(re)) {
								if (el.tagName.toLowerCase() == 'input' && el.type) {
									if (Array_indexOf(['file', 'password'], el.type.toLowerCase())>= 0) {
										KT_FVO[i]['required'] = false;
									}
								}
							}
						});
					});
				}
			}
		}
	}
	}

	try {
		if (typeof KT_FVO['kt_login_user']!='undefined') {
			var user_name_ctrl = document.getElementById("kt_login_user");
			if (user_name_ctrl) {
				user_name_ctrl;
			}
		}
	} catch(err) {}

	Array_each(utility.dom.getElementsByClassName(document, 'KT_tngtable', 'TABLE'), function(table, table_index){
		if (table.getAttribute('kt_uni_attached') == null) {
			table.setAttribute('kt_uni_attached', 'true');
			// add classes to containers
			Array_each(utility.dom.getElementsByTagName(table, 'label'), function(form_label) {
				UNI_handle_required(form_label);
				UNI_handle_changed(form_label);
			});
		}
	});
	window["UNI_uniqueid"] = new UIDGenerator();
	UNI_attachToForm();
}

if (typeof UNI_form_attach_executed == 'undefined') {
	utility.dom.attachEvent2(window, 'onload', UNI_form_attach);
	UNI_form_attach_executed = true;
}

window.onbeforeunload = UNI_navigateAway;

