/**
 * uCode / Javascript
 * rev. 0 (1969-12-31)
 *
 * Copyright (c) 2005-2007 Pause Productions (http://www.pause.ca/)
 * This code may not be distributed or reproduced without a license.
 *
 * Packaged on 2008-04-07
 * 
 * DO NOT EDIT THIS FILE! If you find bugs in uCode, or wish to add 
 * functionality, edit the originals and repackage them.
 * 
 * The person who customized this uCode package selected:
 * - uDb.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uMail.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uQuery.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uTemplate.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uUser.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uView.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uCommon.js rev. UNKNOWN (dated UNKNOWN)
 * - uShow.class.js rev. UNKNOWN (dated UNKNOWN)
 *
 * Use this quick select string when re-packaging this file:
 * php.db|php.mal|php.qry|php.tpl|php.usr|php.viw|js.com|js.shw
 *    ...or click here:
 * http://ucode.pause.ca/?modules=php.db+php.mal+php.qry+php.tpl+php.usr+php.viw+js.com+js.shw
 *
 * The following were also included due to requirements:
 * - uCommon.php rev. UNKNOWN (dated UNKNOWN)
 * - uDebugInstance.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uErrorInstance.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uError.class.php rev. UNKNOWN (dated UNKNOWN)
 * - uValidate.php rev. UNKNOWN (dated UNKNOWN)
 * - uSanitize.php rev. UNKNOWN (dated UNKNOWN)
 * - uErrorHandler.class.php rev. UNKNOWN (dated UNKNOWN)
 *
 * Make sure these sections appear in your site.ini and contain the
 * appropriate variables (you can download a pre-configured site.ini
 * file from the Package Server):
 * - [DB]
 * - [MAIL]
 * - [TEMPLATE]
 * - [USER]
 * - [ERROR]
 *
 * One or more of the included modules have supporting Javascript files.
 * To make sure these modules function properly please make sure uCode.js
 * is included in your resulting HTML. If you do not have uCode.js you can
 * generate one from the package server using the same options above.
 *
 * Some of the modules you included also have external system requirements:
 * - PHP mail(), or SMTP servers must be specified in site.ini
 * - Smarty needs to be installed where uCode.php can access it
 */

if(!window.console||!console.firebug)
{var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)
window.console[names[i]]=function(){}}
function inArray(needle,haystack){if(!isArray(haystack))return false;for(i in haystack){if(haystack[i]==needle)return true;}
return false;}
function decimals(value,decimals){if(value==='')return'';value=value*1;if(value==NaN)return'';var power=Math.pow(10,decimals);value=Math.round(value*power)/power;value=value.toString().split('.');if(value.length==1)value[1]='';for(var t=value[1].length;t<decimals;t++)value[1]+='0';value=value[0]+'.'+value[1];return value;}
function isNumeric(value){if(isNaN(parseFloat(value)))return false;return true;}
function isArray(value){if(!isObject(value)||value.constructor.toString().indexOf("Array")==-1)return false;return true;}
function isInt(value){if(typeof value=='number'&&Math.floor(value)==value)return true;return false;}
function isString(value){return typeof value=='string';}
function isFunction(value){return typeof value=='function';}
function isObject(value){return(typeof value=='object'&&!!value)||isFunction(value);}
function isRegExp(value){if(!isObject(value)||value.constructor.toString().indexOf("RegExp")==-1)return false;return true;}
function isBool(value){return typeof value=='boolean';}
function indexOf(obj,key){for(i in obj){if(obj[i]==key)return i;}
return-1;}
function hasClass(obj,className){var classes=obj.className.split(' ');if(indexOf(classes,className)==-1)return(false);return(true);}
function addClass(obj,className){if(hasClass(obj,className))return;var classes=obj.className.split(' ');classes.push(className);obj.className=classes.join(' ');}
function removeClass(obj,className){if(!hasClass(obj,className))return;var classes=obj.className.split(' ');var newClasses=[];for(var t=0;t<classes.length;t++){if(classes[t]==className)continue;newClasses.push(classes[t]);}
obj.className=newClasses.join(' ');}
Function.prototype.bindAsEventListener=function(object){var __method=this;var args=[];for(var t=0;t<arguments.length;t++)args.push(arguments[t]);var object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}}
function ObserveEvent(element,name,observer){element=$(element);if(element.addEventListener){element.addEventListener(name,observer,false);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}}
function StopObservingEvent(element,name,observer){if(element.removeEventListener){element.removeEventListener(name,observer,false);}else if(element.detachEvent){element.detachEvent('on'+name,observer);}}
var _CACHEDIDELEMENTS={};function $(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string'){if(!_CACHEDIDELEMENTS[element]||!_CACHEDIDELEMENTS[element].parentNode)_CACHEDIDELEMENTS[element]=document.getElementById(element);element=_CACHEDIDELEMENTS[element];}
if(arguments.length==1)
return element;elements.push(element);}
return elements;};function getPosition(element)
{return[DL_GetElementLeft(element),DL_GetElementTop(element)];}
function getStyle(element,style){element=$(element);var value=element.style[camelize(style)];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(style):null;}else if(element.currentStyle){value=element.currentStyle[camelize(style)];}}
if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static')value='auto';return value=='auto'?null:value;}
function positionedOffset(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=getStyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return[valueL,valueT];}
function camelize(value){var oStringList=value.split('-');if(oStringList.length==1)return oStringList[0];var camelizedString=value.indexOf('-')==0?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1):oStringList[0];for(var i=1,len=oStringList.length;i<len;i++){var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);}
return camelizedString;};function DL_GetElementLeft(eElement)
{if(!eElement&&this)
{eElement=this;}
var DL_bIE=document.all?true:false;var nLeftPos=eElement.offsetLeft;var eParElement=eElement.offsetParent;while(eParElement!=null)
{if(DL_bIE)
{if((eParElement.tagName!="TABLE")&&(eParElement.tagName!="BODY"))
{nLeftPos+=eParElement.clientLeft;}}
else
{if(eParElement.tagName=="TABLE")
{var nParBorder=parseInt(eParElement.border);if(isNaN(nParBorder))
{var nParFrame=eParElement.getAttribute('frame');if(nParFrame!=null)
{nLeftPos+=1;}}
else if(nParBorder>0)
{nLeftPos+=nParBorder;}}}
nLeftPos+=eParElement.offsetLeft;eParElement=eParElement.offsetParent;}
return nLeftPos;}
function DL_GetElementTop(eElement)
{if(!eElement&&this)
{eElement=this;}
var DL_bIE=document.all?true:false;var nTopPos=eElement.offsetTop;var eParElement=eElement.offsetParent;while(eParElement!=null)
{if(DL_bIE)
{if((eParElement.tagName!="TABLE")&&(eParElement.tagName!="BODY"))
{nTopPos+=eParElement.clientTop;}}
else
{if(eParElement.tagName=="TABLE")
{var nParBorder=parseInt(eParElement.border);if(isNaN(nParBorder))
{var nParFrame=eParElement.getAttribute('frame');if(nParFrame!=null)
{nTopPos+=1;}}
else if(nParBorder>0)
{nTopPos+=nParBorder;}}}
nTopPos+=eParElement.offsetTop;eParElement=eParElement.offsetParent;}
return nTopPos;}
function toggle(id){id=$(id);if(id.style.display=='none')show(id);else hide(id);}
function show(id){id=$(id);if(id)id.style.display='';}
function hide(id){id=$(id);if(id)id.style.display='none';}
function setCookie(name,value,expires,path){value=escape(value);path=path||'/';if(expires){var date=new Date();date.setTime(date.getTime()+(expires*1000));var expires="; expires="+date.toGMTString();}
else var expires="";document.cookie=name+"="+value+expires+"; path="+path;return true;}
function getCookie(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){var value=unescape(c.substring(nameEQ.length,c.length));return value;}}
return null;}
function deleteCookie(name){return setCookie(name,"",-1);}
function setSelect(element,values){element=$(element);if(!element)return false;if(element.tagName!='SELECT')return false;if(!isArray(values))values=[values];for(var t=0;t<element.options.length;t++){var value=element.options[t].value;if(inArray(value,values))element.options[t].selected=true;else element.options[t].selected=false;}
return true;}
function nodeMerge(){if(arguments.length<1){return false;}
var allNodes=Array();for(t=0;t<arguments.length;t++){for(x=0;x<arguments[t].length;x++){allNodes.push(arguments[t][x]);}}
return allNodes;}
function array_unique(array){var newArray=[];for(i in array){var val=array[i];if(inArray(val,newArray)){continue;}
newArray.push(val);}
return newArray;}
var uShow=function(){this.initialize();}
uShow.prototype={uid:0,initialize:function(){this.uid=uShow.prototype.uid++;this.initListen=this.init.bindAsEventListener(this);ObserveEvent(window,'load',this.initListen);this.repeat=true;this.delay=5;this.transition='fade';this.transitionTime=0.5;this.controls=true;this.autoplay=true;this.controlsElement=null;this.onTransitionStart=null;this.onTransitionComplete=null;this.onTransitionCancel=null;this.slides=[];this.slidePos=0;this.nextListen=this.next.bindAsEventListener(this);this.clickNextListen=this.clickNext.bindAsEventListener(this);this.clickPrevListen=this.clickPrev.bindAsEventListener(this);this.clickPlayListen=this.clickPlay.bindAsEventListener(this);this.clickStopListen=this.clickStop.bindAsEventListener(this);},addSlide:function(slide){this.slides.push(slide);if(this.slides.length==1){this.element=slide.element.parentNode;if(getStyle(this.element,'position')!='absolute')this.element.style.position='relative';}
slide.prepare();if(this.slides.length>1)slide.hide();return(true);},init:function(){if(this.autoplay)this.play();if(this.controls)this.drawControls();},play:function(){this.autoplay=true;var slide=this.slides[this.slidePos];var delay=this.getDelay(slide);if(delay==0){this.stop();}
else{this.timeout=setTimeout(this.nextListen,delay*1000);}},clickPlay:function(){this.autoplay=true;this.next();},clickNext:function(){this.next();},clickPrev:function(){this.previous();},clickStop:function(){this.stop();},getDelay:function(slide){if(slide.delay!=undefined)return(slide.delay);return(this.delay);},getTransition:function(slide){if(slide.transition!=undefined)return(slide.transition);return(this.transition);},stop:function(){if(this.timeout)clearTimeout(this.timeout);this.timeout=null;this.autoplay=false;},next:function(){if(this.timeout)clearTimeout(this.timeout);var current=this.slides[this.slidePos];this.slidePos++;if(this.slidePos>=this.slides.length){if(!this.repeat)return(false);this.slidePos=0;}
var next=this.slides[this.slidePos];this.transitStart(current,next);},previous:function(){if(this.timeout)clearTimeout(this.timeout);var current=this.slides[this.slidePos];this.slidePos--;if(this.slidePos<0){if(!this.repeat)return(false);this.slidePos=this.slides.length-1;}
var prev=this.slides[this.slidePos];this.transitStart(current,prev);},show:function(slideId){if(slideId==this.slidePos)return true;if(this.timeout)clearTimeout(this.timeout);var current=this.slides[this.slidePos];if(!this.slides[slideId])return false;this.slidePos=slideId;var next=this.slides[this.slidePos];this.transitStart(current,next);},transitStart:function(fromSlide,toSlide){this.transitCancel();if(this.onTransitionStart)this.onTransitionStart();var transition=this.getTransition(toSlide);switch(transition){case'fade':this.transit=new uShowFade(this);break;case'none':default:this.transit=new uShowNone(this);break;}
this.transit.start(fromSlide,toSlide);},transitComplete:function(){this.transit=undefined;if(this.onTransitionComplete)this.onTransitionComplete();if(this.autoplay)this.play();},transitCancel:function(){if(this.transit)this.transit.forceComplete();this.transit=undefined;if(this.onTransitionCancel)this.onTransitionCancel();},drawControls:function(){var element=$(this.controlsElement);if(!element)element=this.element;if(!element)return(false);this.buttonPrev=document.createElement('div');this.buttonPrev.className='uShow_prev uShow_button';this.buttonPrev.onclick=this.clickPrevListen;this.buttonPrev.innerHTML='Previous';element.appendChild(this.buttonPrev);this.buttonPlay=document.createElement('div');this.buttonPlay.className='uShow_play uShow_button';this.buttonPlay.onclick=this.clickPlayListen;this.buttonPlay.innerHTML='Play';element.appendChild(this.buttonPlay);this.buttonStop=document.createElement('div');this.buttonStop.className='uShow_stop uShow_button';this.buttonStop.onclick=this.clickStopListen;this.buttonStop.innerHTML='Stop';element.appendChild(this.buttonStop);this.buttonNext=document.createElement('div');this.buttonNext.className='uShow_next uShow_button';this.buttonNext.onclick=this.clickNextListen;this.buttonNext.innerHTML='Next';element.appendChild(this.buttonNext);}};var uShowNone=function(parentUShow){this.initialize(parentUShow);}
uShowNone.prototype={initialize:function(parentUShow){this.parentUShow=parentUShow;},start:function(fromSlide,toSlide){toSlide.show();fromSlide.hide();this.parentUShow.transitComplete();},forceComplete:function(){}};var uShowFade=function(parentUShow){this.initialize(parentUShow);}
uShowFade.prototype={initialize:function(parentUShow){this.parentUShow=parentUShow;},start:function(fromSlide,toSlide){this.fadeListen=this.fadeStep.bindAsEventListener(this);this.fadeSteps=20;this.fadeAmount=100/this.fadeSteps;this.fadeTime=this.parentUShow.transitionTime*1000/this.fadeSteps;this.fadeFrom=fromSlide;this.fadeTo=toSlide;this.fadeFrom.onTop();this.fadeTo.onBottom();this.fadeTo.show();this.fadeOpacity=100;this.fadeStep();},forceComplete:function(){this.fadeTo.setOpacity(100);this.fadeFrom.hide();this.fadeTo.show();this.fadeStop();},fadeStep:function(){if(!this.fadeFrom||!this.fadeTo)return(false);this.fadeOpacity-=this.fadeAmount;this.fadeOpacity=Math.round(this.fadeOpacity);if(this.fadeOpacity<0)this.fadeOpacity=0;this.fadeFrom.setOpacity(this.fadeOpacity);if(this.fadeOpacity==0)this.fadeStop();if(this.fadeTimeout)clearTimeout(this.fadeTimeout);this.fadeTimeout=setTimeout(this.fadeListen,this.fadeTime);},fadeStop:function(){this.fadeFrom.hide();this.fadeFrom=undefined;this.fadeTo=undefined;this.fadeOpacity=undefined;if(this.fadeTimeout)clearTimeout(this.fadeTimeout);this.fadeTimeout=undefined;this.parentUShow.transitComplete();}};var uSlide=function(elementId){this.initialize(elementId);}
uSlide.prototype={initialize:function(elementId){this.elementId=elementId;this.element=$(elementId);if(!this.element)return(false);this.delay=undefined;this.transition=undefined;this.transitionTime=undefined;},prepare:function(){if(!this.element)return(false);this.element.style.position='absolute';this.element.style.top='0px';this.element.style.left='0px';},hide:function(){if(!this.element)return(false);this.element.style.display='none';},show:function(){if(!this.element)return(false);this.element.style.display='';this.setOpacity(100);},onTop:function(){this.element.style.zIndex='1000';},onBottom:function(){this.element.style.zIndex='999';},setOpacity:function(opacity){if(document.all){this.element.style.filter="alpha(style=0,opacity:"+opacity+")";}
else{this.element.style.KHTMLOpacity=opacity/100;this.element.style.opacity=opacity/100;this.element.style.MozOpacity=opacity/100;}}};Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event);}}
function ObserveEvent(element,name,observer){if(element.addEventListener){element.addEventListener(name,observer,false);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}}
function $(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string')
element=document.getElementById(element);if(arguments.length==1)
return element;elements.push(element);}
return elements;};