
var m_names=new Array("January","February","March","April","May","June","July","August","September","October","November","December");function LTrim(str){if(str==null){return null;}
for(var i=0;str.charAt(i)==" ";i++);return str.substring(i,str.length);}
function RTrim(str){if(str==null){return null;}
for(var i=str.length-1;str.charAt(i)==" ";i--);return str.substring(0,i+1);}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str){if(str==null){return str;}
for(var i=0;str.charAt(i)==" "||str.charAt(i)=="\n"||str.charAt(i)=="\t";i++);return str.substring(i,str.length);}
function RTrimAll(str){if(str==null){return str;}
for(var i=str.length-1;str.charAt(i)==" "||str.charAt(i)=="\n"||str.charAt(i)=="\t";i--);return str.substring(0,i+1);}
function TrimAll(str){return LTrimAll(RTrimAll(str));}
function isNull(val){return(val==null);}
function isBlank(val){if(val==null){return true;}
for(var i=0;i<val.length;i++){if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}}
return true;}
function isInteger(val){if(isBlank(val)){return false;}
for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}
return true;}
function isNumeric(val){return(parseFloat(val,10)==(val*1));}
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}
function isDigit(num){if(num.length>1){return false;}
var string="1234567890";if(string.indexOf(num)!=-1){return true;}
return false;}
function isMoney(str){var s=str;var moneyPattern=/^\$*\d+\.*\d\d$/;return moneyPattern.test(s);}
function isPercentage(str){var s=str;var moneyPattern=/^\d+\.*\d*%$/;return moneyPattern.test(s);}
function isPhone(str){var s=str;var phonePattern=/^\(?\d\d\d\)?[\s\-]?\d\d\d-\d\d\d\d$/;return phonePattern.test(s);}
function isDate(str){var s=str;var datePattern=/^\d\d\d\d-\d\d-\d\d$/;return datePattern.test(s);}
function isEmail(str){var s=str;var emailPattern=/^.*@{1}.*\.(net|com|org|gov|us|biz|mil|name|info|edu|uk)$/;return emailPattern.test(s);}
function isURL(str){var s=str;var urlPattern=/^http:\/\/.*$/;return urlPattern.test(s);}
function isNoBlankSingleAlphaToken(str){var s=str;var urlPattern=/^\w*$/;return urlPattern.test(s);}
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}
function setFieldsToUpperCase(){for(var i=0;i<arguments.length;i++){arguments[i].value=arguments[i].value.toUpperCase();}}
function disallowBlank(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(isBlank(getInputValue(obj))){if(!isBlank(msg)){alert(msg);}
if(dofocus){if(isArray(obj)&&(typeof(obj.type)=="undefined")){obj=obj[0];}
if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}
obj.focus();}
return true;}
return false;}
function disallowModify(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(getInputValue(obj)!=getInputDefaultValue(obj)){if(!isBlank(msg)){alert(msg);}
if(dofocus){if(isArray(obj)&&(typeof(obj.type)=="undefined")){obj=obj[0];}
if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}
obj.focus();}
setInputValue(obj,getInputDefaultValue(obj));return true;}
return false;}
function commifyArray(obj,delimiter){if(typeof(delimiter)=="undefined"||delimiter==null){delimiter=",";}
var s="";if(obj==null||obj.length<=0){return s;}
for(var i=0;i<obj.length;i++){s=s+((s=="")?"":delimiter)+obj[i].toString();}
return s;}
function getSingleInputValue(obj,use_default,delimiter){switch(obj.type){case'radio':case'checkbox':return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);case'text':case'hidden':case'textarea':return(use_default)?obj.defaultValue:obj.value;case'password':return((use_default)?null:obj.value);case'select-one':if(obj.options==null){return null;}
if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
return o[0].value;}
if(obj.selectedIndex<0){return null;}
return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;case'select-multiple':if(obj.options==null){return null;}
var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].value;}}
return(values.length==0)?null:commifyArray(values,delimiter);}
return null;}
function getSingleInputText(obj,use_default,delimiter){switch(obj.type){case'radio':case'checkbox':return"";case'text':case'hidden':case'textarea':return(use_default)?obj.defaultValue:obj.value;case'password':return((use_default)?null:obj.value);case'select-one':if(obj.options==null){return null;}
if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
return o[0].text;}
if(obj.selectedIndex<0){return null;}
return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;case'select-multiple':if(obj.options==null){return null;}
var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].text;}}
return(values.length==0)?null:commifyArray(values,delimiter);}
return null;}
function setSingleInputValue(obj,value){switch(obj.type){case'radio':case'checkbox':if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
case'text':case'hidden':case'textarea':case'password':obj.value=value;return true;case'select-one':case'select-multiple':var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].value==value){o[i].selected=true;}
else{o[i].selected=false;}}
return true;}
return false;}
function getInputValue(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj)&&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputValue(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}
return commifyArray(values,delimiter);}
return getSingleInputValue(obj,use_default,delimiter);}
function getInputText(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj)&&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputText(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}
return commifyArray(values,delimiter);}
return getSingleInputText(obj,use_default,delimiter);}
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}
function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}
function setInputValue(obj,value){var use_default=(arguments.length>1)?arguments[1]:false;if(isArray(obj)&&(typeof(obj.type)=="undefined")){for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}}
else{setSingleInputValue(obj,value);}}
function isFormModified(theform,hidden_fields,ignore_fields){if(hidden_fields==null){hidden_fields="";}
if(ignore_fields==null){ignore_fields="";}
var hiddenFields=new Object();var ignoreFields=new Object();var i,field;var hidden_fields_array=hidden_fields.split(',');for(i=0;i<hidden_fields_array.length;i++){hiddenFields[Trim(hidden_fields_array[i])]=true;}
var ignore_fields_array=ignore_fields.split(',');for(i=0;i<ignore_fields_array.length;i++){ignoreFields[Trim(ignore_fields_array[i])]=true;}
for(i=0;i<theform.elements.length;i++){var changed=false;var name=theform.elements[i].name;if(!isBlank(name)){var type=theform[name].type;if(!ignoreFields[name]){if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
else if(type=="hidden"){changed=false;}
else{changed=isChanged(theform[name]);}}}
if(changed){return true;}}
return false;}
function isEnterKey(e){var characterCode;if(e&&e.which){e=e;characterCode=e.which;}else{e=event;characterCode=e.keyCode;}
if(characterCode==13){return true;}else{return false;}}
function shortDate(){var d=new Date();return(d.getFullYear()+'-'+d.getMonth()+'-'+d.getDay()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds());}
function randomString(){var chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";var string_length=12;var randomstring='';for(var i=0;i<string_length;i++){var rnum=Math.floor(Math.random()*chars.length);randomstring+=chars.substring(rnum,rnum+1);}
return randomstring;}
function basename(path){return path.replace(/.*\//,"");}
function setActiveStyleSheet(title){var i,a,main;for(i=0;(a=document.getElementsByTagName("link")[i]);i++){if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){a.disabled=true;if(a.getAttribute("title")==title)a.disabled=false;}}}
function setInnerHTML(elem,markup){if(elem){purge(elem);elem.innerHTML=markup;}}
function purgeObj(obj){if(obj){for(i in obj){delete obj[i];}}}
function purge(d){var a=d.attributes,i,l,n;if(a){l=a.length;for(i=0;i<l;i+=1){n=a[i].name;if(typeof d[n]==='function'){d[n]=null;}}}
a=d.childNodes;if(a){l=a.length;for(i=0;i<l;i+=1){purge(d.childNodes[i]);}}}
function findPos(obj){var curleft=curtop=0;if(obj.offsetParent){curleft=obj.offsetLeft
curtop=obj.offsetTop
while(obj=obj.offsetParent){curleft+=obj.offsetLeft
curtop+=obj.offsetTop}}
return[curleft,curtop];}
function secondsToMinutes(secs){if(isInteger(secs)&&secs>0){if(secs<10)return"00:0"+secs;if(secs<60)return"00:"+secs;var mins=Math.floor(secs/60);if(mins<10)mins="0"+mins;var secs=secs%60;if(secs<10)secs="0"+secs;return mins+":"+secs;}
return"00:00";}
function getQueryStringParams(){var objURL=new Object();window.location.search.replace(new RegExp("([^?=&]+)(=([^&]*))?","g"),function($0,$1,$2,$3){objURL[$1]=$3;});return objURL;}
function getWindowOptions(h,w){return"height="+h+",width="+w+",toolbar=0,titlebar=0,location=0,menubar=0,scrollbars=1,resizable=1";}
function openWin(url,w,h){var thisWin=window.open(url,'thisWin',getWindowOptions(w,h));}
function select_innerHTML(obj,innerHTML){obj.innerHTML=""
var selTemp=document.createElement("micoxselect")
var opt;selTemp.id="micoxselect1"
document.body.appendChild(selTemp)
selTemp=document.getElementById("micoxselect1")
selTemp.style.display="none"
if(innerHTML.toLowerCase().indexOf("<option")<0){innerHTML="<option>"+innerHTML+"</option>"}
innerHTML=innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span")
selTemp.innerHTML=innerHTML
for(var i=0;i<selTemp.childNodes.length;i++){var spantemp=selTemp.childNodes[i];if(spantemp.tagName){opt=document.createElement("OPTION")
if(document.all){obj.add(opt)}else{obj.appendChild(opt)}
for(var j=0;j<spantemp.attributes.length;j++){var attrName=spantemp.attributes[j].nodeName;var attrVal=spantemp.attributes[j].nodeValue;if(attrVal){try{opt.setAttribute(attrName,attrVal);opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));}catch(e){}}}
if(spantemp.style){for(var y in spantemp.style){try{opt.style[y]=spantemp.style[y];}catch(e){}}}
opt.value=spantemp.getAttribute("value")
opt.text=spantemp.innerHTML
opt.selected=spantemp.getAttribute('selected');opt.className=spantemp.className;}}
document.body.removeChild(selTemp)
selTemp=null}
function setInnerHTML(elem,markup){if(elem){purge(elem);elem.innerHTML=markup;}}
function purgeObj(obj){if(obj){for(i in obj){delete obj[i];}}}
function purge(d){var a=d.attributes,i,l,n;if(a){l=a.length;for(i=0;i<l;i+=1){n=a[i].name;if(typeof d[n]==='function'){d[n]=null;}}}
a=d.childNodes;if(a){l=a.length;for(i=0;i<l;i+=1){purge(d.childNodes[i]);}}}
var Prototype={Version:'1.5.0',BrowserFeatures:{XPath:!!document.evaluate},ScriptFragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyFunction:function(){},K:function(x){return x}}
var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
var Abstract=new Object();Object.extend=function(destination,source){for(var property in source){destination[property]=source[property];}
return destination;}
Object.extend(Object,{inspect:function(object){try{if(object===undefined)return'undefined';if(object===null)return'null';return object.inspect?object.inspect():object.toString();}catch(e){if(e instanceof RangeError)return'...';throw e;}},keys:function(object){var keys=[];for(var property in object)
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);}});Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}}
Function.prototype.bindAsEventListener=function(object){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[(event||window.event)].concat(args).concat($A(arguments)));}}
Object.extend(Number.prototype,{toColorPart:function(){var digits=this.toString(16);if(this<16)return'0'+digits;return digits;},succ:function(){return this+1;},times:function(iterator){$R(0,this,true).each(iterator);return this;}});var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
return returnValue;}}
var PeriodicalExecuter=Class.create();PeriodicalExecuter.prototype={initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback(this);}finally{this.currentlyExecuting=false;}}}}
String.interpret=function(value){return value==null?'':String(value);}
Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return this;},truncate:function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this;},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML;},unescapeHTML:function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var name=decodeURIComponent(pair[0]);var value=pair[1]?decodeURIComponent(pair[1]):undefined;if(hash[name]!==undefined){if(hash[name].constructor!=Array)
hash[name]=[hash[name]];if(value)hash[name].push(value);}
else hash[name]=value;}
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.replace(/\\/g,'\\\\');if(useDoubleQuotes)
return'"'+escapedString.replace(/"/g,'\\"')+'"';else
return"'"+escapedString.replace(/'/g,'\\\'')+"'";}});String.prototype.gsub.prepareReplacement=function(replacement){if(typeof replacement=='function')return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};}
String.prototype.parseQuery=String.prototype.toQueryParams;var Template=Class.create();Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype={initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){return this.template.gsub(this.pattern,function(match){var before=match[1];if(before=='\\')return match[2];return before+String.interpret(object[match[3]]);});}}
var $break=new Object();var $continue=new Object();var Enumerable={each:function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++);}catch(e){if(e!=$continue)throw e;}});}catch(e){if(e!=$break)throw e;}
return this;},eachSlice:function(number,iterator){var index=-number,slices=[],array=this.toArray();while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.map(iterator);},all:function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||Prototype.K)(value,index);if(!result)throw $break;});return result;},any:function(iterator){var result=false;this.each(function(value,index){if(result=!!(iterator||Prototype.K)(value,index))
throw $break;});return result;},collect:function(iterator){var results=[];this.each(function(value,index){results.push((iterator||Prototype.K)(value,index));});return results;},detect:function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break;}});return result;},findAll:function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value);});return results;},grep:function(pattern,iterator){var results=[];this.each(function(value,index){var stringValue=value.toString();if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value,index));})
return results;},include:function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=fillWith===undefined?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value>=result)
result=value;});return result;},min:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value<result)
result=value;});return result;},partition:function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||Prototype.K)(value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value,index){results.push(value[property]);});return results;},reject:function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value);});return results;},sortBy:function(iterator){return this.map(function(value,index){return{value:value,criteria:iterator(value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}}
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable)return[];if(iterable.toArray){return iterable.toArray();}else{var results=[];for(var i=0,length=iterable.length;i<length;i++)
results.push(iterable[i]);return results;}}
Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)
Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(value&&value.constructor==Array?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},indexOf:function(object){for(var i=0,length=this.length;i<length;i++)
if(this[i]==object)return i;return-1;},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(){return this.inject([],function(array,value){return array.include(value)?array:array.concat([value]);});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';}});Array.prototype.toArray=Array.prototype.clone;function $w(string){string=string.strip();return string?string.split(/\s+/):[];}
if(window.opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(arguments[i].constructor==Array){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
return array;}}
var Hash=function(obj){Object.extend(this,obj||{});};Object.extend(Hash,{toQueryString:function(obj){var parts=[];this.prototype._each.call(obj,function(pair){if(!pair.key)return;if(pair.value&&pair.value.constructor==Array){var values=pair.value.compact();if(values.length<2)pair.value=values.reduce();else{key=encodeURIComponent(pair.key);values.each(function(value){value=value!=undefined?encodeURIComponent(value):'';parts.push(key+'='+encodeURIComponent(value));});return;}}
if(pair.value==undefined)pair[1]='';parts.push(pair.map(encodeURIComponent).join('='));});return parts.join('&');}});Object.extend(Hash.prototype,Enumerable);Object.extend(Hash.prototype,{_each:function(iterator){for(var key in this){var value=this[key];if(value&&value==Hash.prototype[key])continue;var pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},merge:function(hash){return $H(hash).inject(this,function(mergedHash,pair){mergedHash[pair.key]=pair.value;return mergedHash;});},remove:function(){var result;for(var i=0,length=arguments.length;i<length;i++){var value=this[arguments[i]];if(value!==undefined){if(result===undefined)result=value;else{if(result.constructor!=Array)result=[result];result.push(value)}}
delete this[arguments[i]];}
return result;},toQueryString:function(){return Hash.toQueryString(this);},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';}});function $H(object){if(object&&object.constructor==Hash)return object;return new Hash(object);};ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);}
var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0}
Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++;},onComplete:function(){Ajax.activeRequestCount--;}});Ajax.Base=function(){};Ajax.Base.prototype={setOptions:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:''}
Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=='string')
this.options.parameters=this.options.parameters.toQueryParams();}}
Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{_complete:false,initialize:function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=this.options.parameters;if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
params=Hash.toQueryString(params);if(params&&/Konqueror|Safari|KHTML/.test(navigator.userAgent))params+='&_='
if(this.method=='get'&&params)
this.url+=(this.url.indexOf('?')>-1?'&':'?')+params;try{Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)
setTimeout(function(){this.respondToReadyState(1)}.bind(this),10);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();var body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange();}
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close';}
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function')
for(var i=0,length=extras.length;i<length;i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
for(var name in headers)
this.transport.setRequestHeader(name,headers[name]);},success:function(){return!this.transport.status||(this.transport.status>=200&&this.transport.status<300);},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState];var transport=this.transport,json=this.evalJSON();if(state=='Complete'){try{this._complete=true;(this.options['on'+this.transport.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(transport,json);}catch(e){this.dispatchException(e);}
if((this.getHeader('Content-type')||'text/javascript').strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalResponse();}
try{(this.options['on'+state]||Prototype.emptyFunction)(transport,json);Ajax.Responders.dispatch('on'+state,this,transport,json);}catch(e){this.dispatchException(e);}
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null}},evalJSON:function(){try{var json=this.getHeader('X-JSON');return json?eval('('+json+')'):null;}catch(e){return null}},evalResponse:function(){try{return eval(this.transport.responseText);}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Updater=Class.create();Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))}
this.transport=Ajax.getTransport();this.setOptions(options);var onComplete=this.options.onComplete||Prototype.emptyFunction;this.options.onComplete=(function(transport,param){this.updateContent();onComplete(transport,param);}).bind(this);this.request(url);},updateContent:function(){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responseText;if(!this.options.evalScripts)response=response.stripScripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver,response);else
receiver.update(response);}
if(this.success()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10);}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(container,url,options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=request.responseText;}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements;}
if(typeof element=='string')
element=document.getElementById(element);return Element.extend(element);}
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
results.push(query.snapshotItem(i));return results;};}
document.getElementsByClassName=function(className,parentElement){if(Prototype.BrowserFeatures.XPath){var q=".//*[contains(concat(' ', @class, ' '), ' "+className+" ')]";return document._getElementsByXPath(q,parentElement);}else{var children=($(parentElement)||document.body).getElementsByTagName('*');var elements=[],child;for(var i=0,length=children.length;i<length;i++){child=children[i];if(Element.hasClassName(child,className))
elements.push(Element.extend(child));}
return elements;}};if(!window.Element)
var Element=new Object();Element.extend=function(element){if(!element||_nativeExtensions||element.nodeType==3)return element;if(!element._extended&&element.tagName&&element!=window){var methods=Object.clone(Element.Methods),cache=Element.extend.cache;if(element.tagName=='FORM')
Object.extend(methods,Form.Methods);if(['INPUT','TEXTAREA','SELECT'].include(element.tagName))
Object.extend(methods,Form.Element.Methods);Object.extend(methods,Element.Methods.Simulated);for(var property in methods){var value=methods[property];if(typeof value=='function'&&!(property in element))
element[property]=cache.findOrStore(value);}}
element._extended=true;return element;};Element.extend.cache={findOrStore:function(value){return this[value]=this[value]||function(){return value.apply(null,[this].concat($A(arguments)));}}};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){$(element).style.display='none';return element;},show:function(element){$(element).style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,html){html=typeof html=='undefined'?'':html.toString();$(element).innerHTML=html.stripScripts();setTimeout(function(){html.evalScripts()},10);return element;},replace:function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();if(element.outerHTML){element.outerHTML=html.stripScripts();}else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),element);}
setTimeout(function(){html.evalScripts()},10);return element;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $A($(element).getElementsByTagName('*'));},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(typeof selector=='string')
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){return Selector.findElement($(element).ancestors(),expression,index);},down:function(element,expression,index){return Selector.findElement($(element).descendants(),expression,index);},previous:function(element,expression,index){return Selector.findElement($(element).previousSiblings(),expression,index);},next:function(element,expression,index){return Selector.findElement($(element).nextSiblings(),expression,index);},getElementsBySelector:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},getElementsByClassName:function(element,className){return document.getElementsByClassName(className,element);},readAttribute:function(element,name){element=$(element);if(document.all&&!window.opera){var t=Element._attributeTranslations;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];var attribute=element.attributes[name];if(attribute)return attribute.nodeValue;}
return element.getAttribute(name);},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;if(elementClassName.length==0)return false;if(elementClassName==className||elementClassName.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
return true;return false;},addClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element).add(className);return element;},removeClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element).remove(className);return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element)[element.hasClassName(className)?'remove':'add'](className);return element;},observe:function(){Event.observe.apply(Event,arguments);return $A(arguments).first();},stopObserving:function(){Event.stopObserving.apply(Event,arguments);return $A(arguments).first();},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode;}
return element;},empty:function(element){return $(element).innerHTML.match(/^\s*$/);},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);while(element=element.parentNode)
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=Position.cumulativeOffset(element);window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);if(['float','cssFloat'].include(style))
style=(typeof element.style.styleFloat!='undefined'?'styleFloat':'cssFloat');style=style.camelize();var value=element.style[style];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}else if(element.currentStyle){value=element.currentStyle[style];}}
if((value=='auto')&&['width','height'].include(style)&&(element.getStyle('display')!='none'))
value=element['offset'+style.capitalize()]+'px';if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static')value='auto';if(style=='opacity'){if(value)return parseFloat(value);if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1])return parseFloat(value[1])/100;return 1.0;}
return value=='auto'?null:value;},setStyle:function(element,style){element=$(element);for(var name in style){var value=style[name];if(name=='opacity'){if(value==1){value=(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else if(value===''){if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else{if(value<0.00001)value=0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')';}}else if(['float','cssFloat'].include(name))name=(typeof element.style.styleFloat!='undefined')?'styleFloat':'cssFloat';element.style[name.camelize()]=value;}
return element;},getDimensions:function(element){element=$(element);var display=$(element).getStyle('display');if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0;}}
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=element.style.overflow||'auto';if((Element.getStyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;}};Object.extend(Element.Methods,{childOf:Element.Methods.descendantOf});Element._attributeTranslations={};Element._attributeTranslations.names={colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",datetime:"dateTime",accesskey:"accessKey",tabindex:"tabIndex",enctype:"encType",maxlength:"maxLength",readonly:"readOnly",longdesc:"longDesc"};Element._attributeTranslations.values={_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){var node=element.getAttributeNode('title');return node.specified?node.nodeValue:null;}};Object.extend(Element._attributeTranslations.values,{href:Element._attributeTranslations.values._getAttr,src:Element._attributeTranslations.values._getAttr,disabled:Element._attributeTranslations.values._flag,checked:Element._attributeTranslations.values._flag,readonly:Element._attributeTranslations.values._flag,multiple:Element._attributeTranslations.values._flag});Element.Methods.Simulated={hasAttribute:function(element,attribute){var t=Element._attributeTranslations;attribute=t.names[attribute]||attribute;return $(element).getAttributeNode(attribute).specified;}};if(document.all&&!window.opera){Element.Methods.update=function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();var tagName=element.tagName.toUpperCase();if(['THEAD','TBODY','TR','TD'].include(tagName)){var div=document.createElement('div');switch(tagName){case'THEAD':case'TBODY':div.innerHTML='<table><tbody>'+html.stripScripts()+'</tbody></table>';depth=2;break;case'TR':div.innerHTML='<table><tbody><tr>'+html.stripScripts()+'</tr></tbody></table>';depth=3;break;case'TD':div.innerHTML='<table><tbody><tr><td>'+html.stripScripts()+'</td></tr></tbody></table>';depth=4;}
$A(element.childNodes).each(function(node){element.removeChild(node)});depth.times(function(){div=div.firstChild});$A(div.childNodes).each(function(node){element.appendChild(node)});}else{element.innerHTML=html.stripScripts();}
setTimeout(function(){html.evalScripts()},10);return element;}};Object.extend(Element,Element.Methods);var _nativeExtensions=false;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
['','Form','Input','TextArea','Select'].each(function(tag){var className='HTML'+tag+'Element';if(window[className])return;var klass=window[className]={};klass.prototype=document.createElement(tag?tag.toLowerCase():'div').__proto__;});Element.addMethods=function(methods){Object.extend(Element.Methods,methods||{});function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;var cache=Element.extend.cache;for(var property in methods){var value=methods[property];if(!onlyIfAbsent||!(property in destination))
destination[property]=cache.findOrStore(value);}}
if(typeof HTMLElement!='undefined'){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);copy(Form.Methods,HTMLFormElement.prototype);[HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement].each(function(klass){copy(Form.Element.Methods,klass.prototype);});_nativeExtensions=true;}}
var Toggle=new Object();Toggle.display=Element.toggle;Abstract.Insertion=function(adjacency){this.adjacency=adjacency;}
Abstract.Insertion.prototype={initialize:function(element,content){this.element=$(element);this.content=content.stripScripts();if(this.adjacency&&this.element.insertAdjacentHTML){try{this.element.insertAdjacentHTML(this.adjacency,this.content);}catch(e){var tagName=this.element.tagName.toUpperCase();if(['TBODY','TR'].include(tagName)){this.insertContent(this.contentFromAnonymousTable());}else{throw e;}}}else{this.range=this.element.ownerDocument.createRange();if(this.initializeRange)this.initializeRange();this.insertContent([this.range.createContextualFragment(this.content)]);}
setTimeout(function(){content.evalScripts()},10);},contentFromAnonymousTable:function(){var div=document.createElement('div');div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';return $A(div.childNodes[0].childNodes[0].childNodes);}}
var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange:function(){this.range.setStartBefore(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element);}).bind(this));}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(true);},insertContent:function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild);}).bind(this));}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment);}).bind(this));}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange:function(){this.range.setStartAfter(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling);}).bind(this));}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);var Selector=Class.create();Selector.prototype={initialize:function(expression){this.params={classNames:[]};this.expression=expression.toString().strip();this.parseExpression();this.compileMatcher();},parseExpression:function(){function abort(message){throw'Parse error in selector: '+message;}
if(this.expression=='')abort('empty expression');var params=this.params,expr=this.expression,match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||''});expr=match[1];}
if(expr=='*')return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1],clause=match[2],rest=match[3];switch(modifier){case'#':params.id=clause;break;case'.':params.classNames.push(clause);break;case'':case undefined:params.tagName=clause.toUpperCase();break;default:abort(expr.inspect());}
expr=rest;}
if(expr.length>0)abort(expr.inspect());},buildMatchExpression:function(){var params=this.params,conditions=[],clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.readAttribute("id") == '+clause.inspect());if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase() == '+clause.inspect());if((clause=params.classNames).length>0)
for(var i=0,length=clause.length;i<length;i++)
conditions.push('element.hasClassName('+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.readAttribute('+attribute.name.inspect()+')';var splitValueBy=function(delimiter){return value+' && '+value+'.split('+delimiter.inspect()+')';}
switch(attribute.operator){case'=':conditions.push(value+' == '+attribute.value.inspect());break;case'~=':conditions.push(splitValueBy(' ')+'.include('+attribute.value.inspect()+')');break;case'|=':conditions.push(splitValueBy('-')+'.first().toUpperCase() == '+attribute.value.toUpperCase().inspect());break;case'!=':conditions.push(value+' != '+attribute.value.inspect());break;case'':case undefined:conditions.push('element.hasAttribute('+attribute.name.inspect()+')');break;default:throw'Unknown operator '+attribute.operator+' in selector';}});}
return conditions.join(' && ');},compileMatcher:function(){this.match=new Function('element','if (!element.tagName) return false; element = $(element); return '+this.buildMatchExpression());},findElements:function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element,scope))
return[element];scope=(scope||document).getElementsByTagName(this.params.tagName||'*');var results=[];for(var i=0,length=scope.length;i<length;i++)
if(this.match(element=scope[i]))
results.push(Element.extend(element));return results;},toString:function(){return this.expression;}}
Object.extend(Selector,{matchElements:function(elements,expression){var selector=new Selector(expression);return elements.select(selector.match.bind(selector)).map(Element.extend);},findElement:function(elements,expression,index){if(typeof expression=='number')index=expression,expression=false;return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){return expressions.map(function(expression){return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null],function(results,expr){var selector=new Selector(expr);return results.inject([],function(elements,result){return elements.concat(selector.findElements(result||element));});});}).flatten();}});function $$(){return Selector.findChildElements(document,$A(arguments));}
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,getHash){var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){var key=element.name,value=$(element).getValue();if(value!=undefined){if(result[key]){if(result[key].constructor!=Array)result[key]=[result[key]];result[key].push(value);}
else result[key]=value;}}
return result;});return getHash?data:Hash.toQueryString(data);}};Form.Methods={serialize:function(form,getHash){return Form.serializeElements(Form.getElements(form),getHash);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input));}
return matchingInputs;},disable:function(form){form=$(form);form.getElements().each(function(element){element.blur();element.disabled='true';});return form;},enable:function(form){form=$(form);form.getElements().each(function(element){element.disabled='';});return form;},findFirstElement:function(form){return $(form).getElements().find(function(element){return element.type!='hidden'&&!element.disabled&&['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;}}
Object.extend(Form,Form.Methods);Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}}
Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Hash.toQueryString(pair);}}
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
element.select();return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.blur();element.disabled=false;return element;}}
Object.extend(Form.Element,Form.Element.Methods);var Field=Form.Element;var $F=Form.Element.getValue;Form.Element.Serializers={input:function(element){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element);default:return Form.Element.Serializers.textarea(element);}},inputSelector:function(element){return element.checked?element.value:null;},textarea:function(element){return element.value;},select:function(element){return this[element.type=='select-one'?'selectOne':'selectMany'](element);},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}}
Abstract.TimedObserver=function(){}
Abstract.TimedObserver.prototype={initialize:function(element,frequency,callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastValue=this.getValue();this.registerCallback();},registerCallback:function(){setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},onTimerEvent:function(){var value=this.getValue();var changed=('string'==typeof this.lastValue&&'string'==typeof value?this.lastValue!=value:String(this.lastValue)!=String(value));if(changed){this.callback(this.element,value);this.lastValue=value;}}}
Form.Element.Observer=Class.create();Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create();Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=function(){}
Abstract.EventObserver.prototype={initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback.bind(this));},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}}
Form.Element.EventObserver=Class.create();Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create();Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){return Form.serialize(this.element);}});if(!window.Event){var Event=new Object();}
Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},pointerX:function(event){return event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft));},pointerY:function(event){return event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop));},stop:function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation();}else{event.returnValue=false;event.cancelBubble=true;}},findElement:function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element;},observers:false,_observeAndCache:function(element,name,observer,useCapture){if(!this.observers)this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer);}},unloadCache:function(){if(!Event.observers)return;for(var i=0,length=Event.observers.length;i<length;i++){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i][0]=null;}
Event.observers=false;},observe:function(element,name,observer,useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';Event._observeAndCache(element,name,observer,useCapture);},stopObserving:function(element,name,observer,useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element.detachEvent){try{element.detachEvent('on'+name,observer);}catch(e){}}}});if(navigator.appVersion.match(/\bMSIE\b/))
Event.observe(window,'unload',Event.unloadCache,false);var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},realOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return[valueL,valueT];},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName=='BODY')break;var p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return[valueL,valueT];},offsetParent:function(element){if(element.offsetParent)return element.offsetParent;if(element==document.body)return element;while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return element;return document.body;},within:function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},page:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!window.opera||element.tagName=='BODY'){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return[valueL,valueT];},clone:function(source,target){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{})
source=$(source);var p=Position.page(source);target=$(target);var delta=[0,0];var parent=null;if(Element.getStyle(target,'position')=='absolute'){parent=Position.offsetParent(target);delta=Position.page(parent);}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
if(options.setLeft)target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)target.style.width=source.offsetWidth+'px';if(options.setHeight)target.style.height=source.offsetHeight+'px';},absolutize:function(element){element=$(element);if(element.style.position=='absolute')return;Position.prepare();var offsets=Position.positionedOffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';},relativize:function(element){element=$(element);if(element.style.position=='relative')return;Position.prepare();element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;}}
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){Position.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return[valueL,valueT];}}
Element.addMethods();var Scriptaculous={Version:'1.7.0',require:function(libraryName){document.write('<script type="text/javascript" src="'+libraryName+'"></script>');},load:function(){if((typeof Prototype=='undefined')||(typeof Element=='undefined')||(typeof Element.Methods=='undefined')||parseFloat(Prototype.Version.split(".")[0]+"."+
Prototype.Version.split(".")[1])<1.5)
throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");$A(document.getElementsByTagName("script")).findAll(function(s){return(s.src&&s.src.match(/scriptaculous\.js(\?.*)?$/))}).each(function(s){var path=s.src.replace(/scriptaculous\.js(\?.*)?$/,'');var includes=s.src.match(/\?.*load=([a-z,]*)/);(includes?includes[1]:'builder,effects,dragdrop,controls,slider').split(',').each(function(include){Scriptaculous.require(path+include+'.js')});});}}
String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
return(color.length==7?color:(arguments[0]||this));}
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');}
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');}
Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(navigator.appVersion.indexOf('AppleWebKit')>0)window.scrollBy(0,0);return element;}
Element.getOpacity=function(element){return $(element).getStyle('opacity');}
Element.setOpacity=function(element,value){return $(element).setStyle({opacity:value});}
Element.getInlineOpacity=function(element){return $(element).style.opacity||'';}
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)});}
var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},tagifyText:function(element){if(typeof Builder=='undefined')
throw("Effect.tagifyText requires including script.aculo.us' builder.js library");var tagifyStyle='position:relative';if(/MSIE/.test(navigator.userAgent)&&!window.opera)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};var Effect2=Effect;Effect.Transitions={linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){return((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){pulses=pulses||5;return(Math.round((pos%(1/pulses))*pulses)==0?((pos*pulses*2)-Math.floor(pos*pulses*2)):1-((pos*pulses*2)-Math.floor(pos*pulses*2)));},none:function(pos){return 0;},full:function(pos){return 1;}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
if(this.effects[i])this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(typeof queueName!='string')return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName];}}
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:60.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
Effect.Base=function(){};Effect.Base.prototype={position:null,start:function(options){this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos*this.options.fps*this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},render:function(pos){if(this.state=='idle'){this.state='running';this.event('beforeSetup');if(this.setup)this.setup();this.event('afterSetup');}
if(this.state=='running'){if(this.options.transition)pos=this.options.transition(pos);pos*=(this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event('beforeUpdate');if(this.update)this.update(pos);this.event('afterUpdate');}},cancel:function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
if(typeof this[property]!='function')data[property]=this[property];return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}}
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){var options=Object.extend({duration:0},arguments[0]||{});this.start(options);},update:Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:Math.round(this.options.x*position+this.originalLeft)+'px',top:Math.round(this.options.y*position+this.originalTop)+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=Math.round(width)+'px';if(this.options.scaleY)d.height=Math.round(height)+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);this.start(arguments[1]||{});},setup:function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset)offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-
(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart;},update:function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta));}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));}
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));}
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));}
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}})}},arguments[1]||{}));}
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));}
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}})}})}})}})}})}});}
Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));}
Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({bottom:oldInnerBottom});effect.element.down().undoPositioned();}},arguments[1]||{}));}
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});}
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options))}});}
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));}
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));}
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create();Object.extend(Object.extend(Effect.Morph.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(typeof options.style=='string'){if(options.style.indexOf(':')==-1){var cssText='',selector='.'+options.style;$A(document.styleSheets).reverse().each(function(styleSheet){if(styleSheet.cssRules)cssRules=styleSheet.cssRules;else if(styleSheet.rules)cssRules=styleSheet.rules;$A(cssRules).reverse().each(function(rule){if(selector==rule.selectorText){cssText=rule.style.cssText;throw $break;}});if(cssText)throw $break;});this.style=cssText.parseStyle();options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){if(transform.style!='opacity')
effect.element.style[transform.style.camelize()]='';});}}else this.style=options.style.parseStyle();}else this.style=$H(options.style)
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)});}
this.transforms=this.style.map(function(pair){var property=pair[0].underscore().dasherize(),value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value))
var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/),value=parseFloat(components[1]),unit=(components.length==3)?components[2]:null;var originalValue=this.element.getStyle(property);return $H({style:property,originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit});}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))});},update:function(position){var style=$H(),value=null;this.transforms.each(function(transform){value=transform.unit=='color'?$R(0,2).inject('#',function(m,v,i){return m+(Math.round(transform.originalValue[i]+
(transform.targetValue[i]-transform.originalValue[i])*position)).toColorPart()}):transform.originalValue+Math.round(((transform.targetValue-transform.originalValue)*position)*1000)/1000+transform.unit;style[transform.style]=value;});this.element.setStyle(style);}});Effect.Transform=Class.create();Object.extend(Effect.Transform.prototype,{initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){var data=$H(track).values().first();this.tracks.push($H({ids:$H(track).keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var elements=[$(track.ids)||$$(track.ids)].flatten();return elements.map(function(e){return new track.effect(e,Object.extend({sync:true},track.options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.prototype.parseStyle=function(){var element=Element.extend(document.createElement('div'));element.innerHTML='<div style="'+this+'"></div>';var style=element.down().style,styleRules=$H();Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules[property]=style[property];});if(/MSIE/.test(navigator.userAgent)&&!window.opera&&this.indexOf('opacity')>-1){styleRules.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];}
return styleRules;};Element.morph=function(element,style){new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;};['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','morph'].each(function(f){Element.Methods[f]=Element[f];});Element.Methods.visualEffect=function(element,effect,options){s=effect.gsub(/_/,'-').camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element);};Element.addMethods();if(typeof Effect=='undefined')
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={}
Autocompleter.Base=function(){};Autocompleter.Base.prototype={baseInitialize:function(element,update,options){this.element=$(element);this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
this.options.tokens=new Array(this.options.tokens);this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.element,"keypress",this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
switch(event.keyCode){case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(event);return;}
else
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(navigator.appVersion.indexOf('AppleWebKit')>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
{this.index=element.autocompleteIndex;this.render();}
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){if((event.x==undefined)|(event.x<0||event.x>320)|(event.y<0||event.y>150)){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;}else if(event.x!=undefined){try{this.element.focus();}catch(ex){}}},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++){this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");}
if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--
else this.index=this.entryCount-1;this.getEntry(this.index).scrollIntoView(true);},markNext:function(){if(this.index<this.entryCount-1)this.index++
else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
var value='';if(this.options.select){var nodes=document.getElementsByClassName(this.options.select,selectedElement)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var lastTokenPos=this.findLastToken();if(lastTokenPos!=-1){var newValue=this.element.value.substr(0,lastTokenPos+1);var whitespace=this.element.value.substr(lastTokenPos+1).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value;}else{this.element.value=value;}
this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;if(this.getToken().length>=this.options.minChars){this.startIndicator();this.getUpdatedChoices();}else{this.active=false;this.hide();}},getToken:function(){var tokenPos=this.findLastToken();if(tokenPos!=-1)
var ret=this.element.value.substr(tokenPos+1).replace(/^\s+/,'').replace(/\s+$/,'');else
var ret=this.element.value;return/\n/.test(ret)?'':ret;},findLastToken:function(){var lastTokenPos=-1;for(var i=0;i<this.options.tokens.length;i++){var thisTokenPos=this.element.value.lastIndexOf(this.options.tokens[i]);if(thisTokenPos>lastTokenPos)
lastTokenPos=thisTokenPos;}
return lastTokenPos;}}
Ajax.Autocompleter=Class.create();Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){entry=encodeURIComponent(this.options.paramName)+'='+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create();Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
if(partial.length)
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))
return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);}
Ajax.InPlaceEditor=Class.create();Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";Ajax.InPlaceEditor.prototype={initialize:function(element,url,options){this.url=url;this.element=$(element);this.options=Object.extend({paramName:"value",okButton:true,okText:"ok",cancelLink:true,cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightcolor});},onFailure:function(transport){alert("Error communicating with the server: "+transport.responseText.stripTags());},callback:function(form){return Form.serialize(form);},handleLineBreaks:true,loadingText:'Loading...',savingClassName:'inplaceeditor-saving',loadingClassName:'inplaceeditor-loading',formClassName:'inplaceeditor-form',highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{},evalScripts:false},options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId=null;}}
if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl);}
this.originalBackground=Element.getStyle(this.element,'background-color');if(!this.originalBackground){this.originalBackground="transparent";}
this.element.title=this.options.clickToEditText;this.onclickListener=this.enterEditMode.bindAsEventListener(this);this.mouseoverListener=this.enterHover.bindAsEventListener(this);this.mouseoutListener=this.leaveHover.bindAsEventListener(this);Event.observe(this.element,'click',this.onclickListener);Event.observe(this.element,'mouseover',this.mouseoverListener);Event.observe(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.observe(this.options.externalControl,'click',this.onclickListener);Event.observe(this.options.externalControl,'mouseover',this.mouseoverListener);Event.observe(this.options.externalControl,'mouseout',this.mouseoutListener);}},enterEditMode:function(evt){if(this.saving)return;if(this.editing)return;this.editing=true;this.onEnterEditMode();if(this.options.externalControl){Element.hide(this.options.externalControl);}
Element.hide(this.element);this.createForm();this.element.parentNode.insertBefore(this.form,this.element);if(!this.options.loadTextURL)Field.scrollFreeActivate(this.editField);if(evt){Event.stop(evt);}
return false;},createForm:function(){this.form=document.createElement("form");this.form.id=this.options.formId;Element.addClassName(this.form,this.options.formClassName)
this.form.onsubmit=this.onSubmit.bind(this);this.createEditField();if(this.options.textarea){var br=document.createElement("br");this.form.appendChild(br);}
if(this.options.okButton){okButton=document.createElement("input");okButton.type="submit";okButton.value=this.options.okText;okButton.className='editor_ok_button';this.form.appendChild(okButton);}
if(this.options.cancelLink){cancelLink=document.createElement("a");cancelLink.href="#";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick=this.onclickCancel.bind(this);cancelLink.className='editor_cancel';this.form.appendChild(cancelLink);}},hasHTMLLineBreaks:function(string){if(!this.options.handleLineBreaks)return false;return string.match(/<br/i)||string.match(/<p>/i);},convertHTMLLineBreaks:function(string){return string.replace(/<br>/gi,"\n").replace(/<br\/>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,"");},createEditField:function(){var text;if(this.options.loadTextURL){text=this.options.loadingText;}else{text=this.getText();}
var obj=this;if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){this.options.textarea=false;var textField=document.createElement("input");textField.obj=this;textField.type="text";textField.name=this.options.paramName;textField.value=text;textField.style.backgroundColor=this.options.highlightcolor;textField.className='editor_field';var size=this.options.size||this.options.cols||0;if(size!=0)textField.size=size;if(this.options.submitOnBlur)
textField.onblur=this.onSubmit.bind(this);this.editField=textField;}else{this.options.textarea=true;var textArea=document.createElement("textarea");textArea.obj=this;textArea.name=this.options.paramName;textArea.value=this.convertHTMLLineBreaks(text);textArea.rows=this.options.rows;textArea.cols=this.options.cols||40;textArea.className='editor_field';if(this.options.submitOnBlur)
textArea.onblur=this.onSubmit.bind(this);this.editField=textArea;}
if(this.options.loadTextURL){this.loadExternalText();}
this.form.appendChild(this.editField);},getText:function(){return this.element.innerHTML;},loadExternalText:function(){Element.addClassName(this.form,this.options.loadingClassName);this.editField.disabled=true;new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions));},onLoadedExternalText:function(transport){Element.removeClassName(this.form,this.options.loadingClassName);this.editField.disabled=false;this.editField.value=transport.responseText.stripTags();Field.scrollFreeActivate(this.editField);},onclickCancel:function(){this.onComplete();this.leaveEditMode();return false;},onFailure:function(transport){this.options.onFailure(transport);if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;this.oldInnerHTML=null;}
return false;},onSubmit:function(){var form=this.form;var value=this.editField.value;this.onLoading();if(this.options.evalScripts){new Ajax.Request(this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this),asynchronous:true,evalScripts:true},this.options.ajaxOptions));}else{new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions));}
if(arguments.length>1){Event.stop(arguments[0]);}
return false;},onLoading:function(){this.saving=true;this.removeForm();this.leaveHover();this.showSaving();},showSaving:function(){this.oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;Element.addClassName(this.element,this.options.savingClassName);this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);},removeForm:function(){if(this.form){if(this.form.parentNode)Element.remove(this.form);this.form=null;}},enterHover:function(){if(this.saving)return;this.element.style.backgroundColor=this.options.highlightcolor;if(this.effect){this.effect.cancel();}
Element.addClassName(this.element,this.options.hoverClassName)},leaveHover:function(){if(this.options.backgroundColor){this.element.style.backgroundColor=this.oldBackground;}
Element.removeClassName(this.element,this.options.hoverClassName)
if(this.saving)return;this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground});},leaveEditMode:function(){Element.removeClassName(this.element,this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);if(this.options.externalControl){Element.show(this.options.externalControl);}
this.editing=false;this.saving=false;this.oldInnerHTML=null;this.onLeaveEditMode();},onComplete:function(transport){this.leaveEditMode();this.options.onComplete.bind(this)(transport,this.element);},onEnterEditMode:function(){},onLeaveEditMode:function(){},dispose:function(){if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;}
this.leaveEditMode();Event.stopObserving(this.element,'click',this.onclickListener);Event.stopObserving(this.element,'mouseover',this.mouseoverListener);Event.stopObserving(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.stopObserving(this.options.externalControl,'click',this.onclickListener);Event.stopObserving(this.options.externalControl,'mouseover',this.mouseoverListener);Event.stopObserving(this.options.externalControl,'mouseout',this.mouseoutListener);}}};Ajax.InPlaceCollectionEditor=Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype,Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype,{createEditField:function(){if(!this.cached_selectTag){var selectTag=document.createElement("select");var collection=this.options.collection||[];var optionTag;collection.each(function(e,i){optionTag=document.createElement("option");optionTag.value=(e instanceof Array)?e[0]:e;if((typeof this.options.value=='undefined')&&((e instanceof Array)?this.element.innerHTML==e[1]:e==optionTag.value))optionTag.selected=true;if(this.options.value==optionTag.value)optionTag.selected=true;optionTag.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));selectTag.appendChild(optionTag);}.bind(this));this.cached_selectTag=selectTag;}
this.editField=this.cached_selectTag;if(this.options.loadTextURL)this.loadExternalText();this.form.appendChild(this.editField);this.options.callback=function(form,value){return"value="+encodeURIComponent(value);}}});Form.Element.DelayedObserver=Class.create();Form.Element.DelayedObserver.prototype={initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}};
function callInProgress (xmlhttp) {switch (xmlhttp.readyState) {case 1: case 2: case 3:return true;break;default:return false;break;}}function showFailureMessage() {alert('I cannot connect to the remote server.  Your network conection may be down or there might be a problem on the remote end.');}Ajax.Responders.register({onCreate: function(request) {request['timeoutId'] = window.setTimeout(function() {if (callInProgress(request.transport)) {request.transport.abort();showFailureMessage();if (request.options['onFailure']) {request.options['onFailure'](request.transport, request.json);}}},7000);},onComplete: function(request) {window.clearTimeout(request['timeoutId']);}});
Scriptaculous.load();String.prototype.trim=function(){return this.replace(/^\s+/g,'').replace(/\s+$/g,'');}
function jt_ShowHideElm(elm,showIt){if(elm)elm.style.visibility=(showIt)?"visible":"hidden";}
function jt_ShowNoneElm(elm,showIt,showStyle){if(!showStyle)showStyle="";if(elm)elm.style.display=(showIt)?showStyle:"none";}
function jt_ShowHide(divName,showIt){jt_ShowHideElm(document.getElementById(divName),showIt);}
function jt_ShowNone(divName,showIt,showStyle){jt_ShowNoneElm(document.getElementById(divName),showIt,showStyle);}
function jt_AddListener(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false);return true;}
else if(obj.attachEvent)return obj.attachEvent('on'+evType,fn);else return false;}
function jt_fixE(ev){var e=ev?ev:window.event;return e;}
function jt_Point(x,y){this.x=x;this.y=y;}
function jt_getOffsetXY(obj,findID){var xPos=obj.offsetLeft;var yPos=obj.offsetTop;var parent=obj.offsetParent;if(typeof findID=='undefined')findID='!@#$%^&*()';while((parent!=null)&&(parent.id!=findID)){xPos+=parent.offsetLeft;yPos+=parent.offsetTop;parent=parent.offsetParent;}
return new jt_Point(xPos,yPos);}
function jt_moveTo(obj,x,y){obj.style.left=x+"px";obj.style.top=y+"px";}
function jt_getOffsetX(obj){var xPos=obj.offsetLeft;var parent=obj.offsetParent;while(parent!=null){xPos+=parent.offsetLeft;parent=parent.offsetParent;}
return xPos;}
function jt_getOffsetY(obj){var yPos=obj.offsetTop;var parent=obj.offsetParent;while(parent!=null){yPos+=parent.offsetTop;parent=parent.offsetParent;}
return yPos;}
function jt_windowOffsetX(){if(window.screenX)return window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;else return document.body.scrollLeft+window.screenLeft;}
function jt_windowOffsetY(){if(window.screenY)return window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;else return document.body.scrollTop+window.screenTop;}
function jt_getChromeY(){return window.screenTop?window.screenTop:(window.outerHeight-window.innerHeight-24);}
function jt_setRadio(radioFld,val){for(var i=0;i<radioFld.length;i++)
if(radioFld[i].value==val)
if(!radioFld[i].disabled){radioFld[i].checked=true;return true;}
return false;}
function jt_getRadio(radioFld){var st="";for(var i=0;i<radioFld.length;i++)
if(radioFld[i].checked){st=radioFld[i].value;break;}
return st;}
function foSelected(pulldown){var st="";for(var i=0;i<pulldown.options.length;i++)
if(pulldown.options[i].selected){if(pulldown.options[i].value)st=pulldown.options[i].value
else st=pulldown.options[i].text;break;}
return st;}
function foPosInList(pulldown,val){if(val!="")
for(var i=0;i<pulldown.options.length;i++){var opVal=pulldown.options[i].value;if(opVal=="")opVal=pulldown.options[i].text;if(opVal==val){return i;break;}}
return-1;}
function foSetSelectVal(pulldown,val){var p=foPosInList(pulldown,val);if(p!=-1)pulldown.options.selectedIndex=p;}
function jt_parseQuery(queryString){var qObj=new Object();var stQuery=(queryString)?queryString:location.search;if(stQuery.indexOf("?")==0)stQuery=stQuery.substring(1);if(stQuery){var nvPairs=stQuery.split("&");for(var i=0;i<nvPairs.length;i++){var posEq=nvPairs[i].indexOf("=");if(posEq!=-1)eval("qObj."+nvPairs[i].substring(0,posEq)+"='"+nvPairs[i].substring(posEq+1)+"'");}}
return qObj;}
function jt_safeHTML(st){if(st.length==0)return"";st=st.replace(/</gi,"&lt;");st=st.replace(/>/gi,"&gt;");st=st.replace(/\"/gi,'&quot;');st=st.replace(/\'/gi,"&#39;");st=st.replace(/\\/gi,"&#92;");return st;}
function jt_unsafeHTML(st){if(st.length==0)return"";st=st.replace(/&lt;/gi,"<");st=st.replace(/&gt;/gi,">");st=st.replace(/&quot;/gi,'"');st=st.replace(/&#39;/gi,"'");st=st.replace(/&#92;/gi,"\\");return st;}
function jt_plural(qty,lbl){var stPlural=(qty==1)?"":"s";if(lbl)stPlural=qty+" "+lbl+stPlural;return stPlural;}
function objToString(anObj,sep){if(!sep)sep=' ][ ';var st="";for(var prop in anObj){if((prop.charAt(0)=='$')||((typeof anObj[prop])=='function'))continue;if(st!="")st+=sep;st+=prop+':'+anObj[prop];}
return st;}
function jt_alignCorner(elmToMove,elmAnchor,TlTrBlBr,xOffset,yOffset){xOffset=xOffset?xOffset:0;yOffset=yOffset?yOffset:0;var anchorXY=jt_getOffsetXY(elmAnchor);var xxOffset=(TlTrBlBr.indexOf('R')!=-1)?elmToMove.offsetWidth-elmAnchor.offsetWidth:0;var yyOffset=(TlTrBlBr.indexOf('B')!=-1)?elmToMove.offsetHeight:0;jt_moveTo(elmToMove,anchorXY.x-xxOffset+xOffset,anchorXY.y-yyOffset+yOffset);}
function jt_boxOverlap(objectA,objectB,mode){var xyA=jt_getOffsetXY(objectA);var xyB=jt_getOffsetXY(objectB);var objAxTL=xyA.x;var objAyTL=xyA.y;var objAxBR=xyA.x+objectA.offsetWidth;var objAyBR=xyA.y+objectA.offsetHeight;var objBxTL=xyB.x;var objByTL=xyB.y;var objBxBR=xyB.x+objectB.offsetWidth;var objByBR=xyB.y+objectB.offsetHeight;if(mode!='Y'){if(objAxBR<objBxTL)return-1;if(objBxBR<objAxTL)return-1;}
if(mode!='X'){if(objAyBR<objByTL)return-1;if(objByBR<objAyTL)return-1;}
var objCxTL;var objCyTL;var objCxBR;var objCyBR;if(objAxTL<objBxTL){objCxTL=objBxTL;objCxBR=objAxBR;}
else{objCxTL=objAxTL;objCxBR=objBxBR;}
if(objAyTL<objByTL){objCyTL=objByTL;objCyBR=objAyBR;}
else{objCyTL=objAyTL;objCyBR=objByBR;}
var olX=objCxBR-objCxTL;var olY=objCyBR-objCyTL;if(mode=='X')return olX;else if(mode=='Y')return olY;else return olX*olY;}
function jt_currStyle(divToRead){var cs=divToRead.style;if(window.getComputedStyle)cs=window.getComputedStyle(divToRead,null);else if(divToRead.currentStyle)cs=divToRead.currentStyle;return cs;}
function jt_divOnScrn(divOnScrn){var divPos=jt_getOffsetXY(divOnScrn);var newX=divPos.x;var newY=divPos.y;if(divPos.x+divOnScrn.offsetWidth-document.body.scrollLeft>document.body.clientWidth)newX=document.body.scrollLeft+document.body.clientWidth-divOnScrn.offsetWidth;if(divPos.x<document.body.scrollLeft)newX=document.body.scrollLeft;if(divPos.y+divOnScrn.offsetHeight-document.body.scrollTop>document.body.clientHeight)newY=document.body.scrollTop+document.body.clientHeight-divOnScrn.offsetHeight;if(divPos.y<document.body.scrollTop)newY=document.body.scrollTop;if((newX!=divPos.x)||(newY!=divPos.y))jt_moveTo(divOnScrn,newX,newY);}
jt_DialogBox=function(isModal,isBalloon){if(arguments.length==0)return;this.isModal=isModal;this.uniqid=Math.abs(Math.random());this.clearDraggables=false;if(isModal)jt_DialogBox.veilInit();this.container=document.createElement('div');if(isBalloon)this.container.className=jt_DialogBox.balloonClassName;else this.container.className=jt_DialogBox.className;this.container.dialogBox=this;var mainTable=document.createElement('table');mainTable.setAttribute('cellSpacing','0');mainTable.setAttribute('cellPadding','0');mainTable.setAttribute('border','0');var tBodyM=document.createElement('tbody');var rowM=document.createElement('tr');var cellM=document.createElement('td');if(!isBalloon){var titleTable=document.createElement('table');titleTable.setAttribute('cellSpacing','0');titleTable.setAttribute('cellPadding','0');titleTable.setAttribute('border','0');titleTable.setAttribute('width','100%');var tBodyT=document.createElement('tbody');var rowT=document.createElement('tr');var cellT=document.createElement('td');cellT.className="tbLeft";rowT.appendChild(cellT);this.titleCell=document.createElement('td');this.titleCell.className="Title";rowT.appendChild(this.titleCell);cellT=document.createElement('td');cellT.className="tbRight";jt_DialogBox.initCloseIcon();var closeIcon=document.createElement('img');closeIcon.src=jt_DialogBox.closeIcon.src;closeIcon.setAttribute('border','0');closeIcon.dialogBox=this;var aLink=document.createElement('A');aLink.setAttribute('href','#');aLink.appendChild(closeIcon);aLink.onclick=jt_DialogBox.closeBox;cellT.appendChild(aLink);rowT.appendChild(cellT);tBodyT.appendChild(rowT);titleTable.appendChild(tBodyT);cellM.appendChild(titleTable);}
rowM.appendChild(cellM);tBodyM.appendChild(rowM);rowM=document.createElement('tr');cellM=document.createElement('td');cellM.className="MainPanel";this.contentArea=document.createElement('div');this.contentArea.className="ContentArea";cellM.appendChild(this.contentArea);rowM.appendChild(cellM);tBodyM.appendChild(rowM);mainTable.appendChild(tBodyM);this.container.appendChild(mainTable);document.body.appendChild(this.container);}
jt_DialogBox.imagePath="/web/images/default/";jt_DialogBox.prototype.show=function(){this.container.style.display="block";this.topZ();jt_divOnScrn(this.container);if(this.isModal)jt_DialogBox.veilShow(true);dialSearchSuspended=true;}
jt_DialogBox.prototype.hide=function(ok,keepVeil){this.container.style.display="none";if(!keepVeil&&this.isModal)jt_DialogBox.veilShow(false);dialSearchSuspended=false;var posInList=this.listPos();if(posInList!=-1){jt_DialogBox.openList[posInList]=jt_DialogBox.openList[jt_DialogBox.openList.length-1];jt_DialogBox.openList.pop();}
if(ok){if(this.callOK)
if(this.returnData)this.callOK(this.returnData);else this.callOK();}
else if(this.callCancel)this.callCancel();if(this.resetUpdate)doUpdate=true;}
jt_DialogBox.prototype.moveTo=function(x,y){if(x==-1)x=Math.round((document.body.clientWidth-this.container.offsetWidth)/2);if(y==-1)y=Math.round((document.body.clientHeight-this.container.offsetHeight)/2)+document.body.scrollTop;if(x!=-1){if(x+this.container.offsetWidth>document.body.clientWidth)x-=(x+this.container.offsetWidth)-document.body.clientWidth;}
if(y!=-1){if(y+this.container.offsetHeight>(document.documentElement.clientHeight+document.documentElement.scrollTop)){y-=(y+this.container.offsetHeight)-(document.documentElement.clientHeight+document.documentElement.scrollTop);}}
if(x>10)x-=10;if(y>10)y-=10;this.container.style.left=x+"px";this.container.style.top=y+"px";}
jt_DialogBox.prototype.setTitle=function(title){if(this.titleCell)this.titleCell.innerHTML=title;}
jt_DialogBox.prototype.setContent=function(htmlContent){this.contentArea.innerHTML=htmlContent;}
jt_DialogBox.prototype.setContentNode=function(htmlContent){this.contentArea.innerHTML='';this.contentArea.appendChild(htmlContent);this.contentArea.parentNode.innerHTML=this.contentArea.parentNode.innerHTML;}
jt_DialogBox.prototype.setWidth=function(width){this.contentArea.style.width=width+"px";}
jt_DialogBox.prototype.resetUpdateOnClose=function(bool){this.resetUpdate=bool;}
jt_DialogBox.prototype.setCallOK=function(callOK){this.callOK=callOK;}
jt_DialogBox.prototype.setCallCancel=function(callCancel){this.callCancel=callCancel;}
jt_DialogBox.prototype.getContentNode=function(){return this.contentArea;}
jt_DialogBox.initCloseIcon=function(){if(jt_DialogBox.closeIcon==null){jt_DialogBox.closeIcon=new Image();jt_DialogBox.closeIcon.src=jt_DialogBox.imagePath+"window_close.gif";}}
jt_DialogBox.veilInit=function(){if(jt_DialogBox.veilOverlay==null){jt_DialogBox.veilOverlay=document.createElement('div');jt_DialogBox.veilOverlay.className="jtDialogBoxVeil";jt_DialogBox.veilOverlay.style.zIndex=jt_DialogBox.veilZ;jt_DialogBox.veilOverlay.innerHTML="<div onclick=\"hideOpenDialogues();\">&nbsp;</div>";jt_DialogBox.veilOverlay.setAttribute('onclick','hideOpenDialogues();');document.body.appendChild(jt_DialogBox.veilOverlay);jt_DialogBox.veilOverlay.innerHTML=jt_DialogBox.veilOverlay.innerHTML;jt_DialogBox.addListener(window,"resize",jt_DialogBox.veilSetWidth);}}
jt_DialogBox.veilShow=function(showIt){jt_DialogBox.veilSetWidth();jt_DialogBox.veilOverlay.style.display=showIt?"block":"none";}
jt_DialogBox.className="jtDialogBox";jt_DialogBox.balloonClassName="jtDialogBoxBalloon";jt_DialogBox.closeIcon=null;jt_DialogBox.veilOverlay=null;jt_DialogBox.veilZ=2000000;jt_DialogBox.openList=new Array();jt_DialogBox.maxDepth=5;jt_DialogBox.closeBox=function(e){if(!e)e=window.event;var node=e.target?e.target:e.srcElement;var count=0;while((node!=null)&&(count<jt_DialogBox.maxDepth)){if(node.dialogBox){node.dialogBox.hide();return false;}
node=node.parentNode;count++;}
return false;}
jt_DialogBox.prototype.listPos=function(){var posInList=-1;for(var i=0;i<jt_DialogBox.openList.length;i++)
if(jt_DialogBox.openList[i]==this){posInList=i;break;}
return posInList;}
jt_DialogBox.prototype.topZ=function(){var posInList=this.listPos();if(posInList==-1)jt_DialogBox.openList[jt_DialogBox.openList.length]=this;else if(posInList<jt_DialogBox.openList.length-1){for(var i=posInList;i<jt_DialogBox.openList.length-1;i++)jt_DialogBox.openList[i]=jt_DialogBox.openList[i+1];jt_DialogBox.openList[jt_DialogBox.openList.length-1]=this;var newZ=jt_DialogBox.veilZ;for(var i=jt_DialogBox.openList.length-1;i>0;i--){newZ--;jt_DialogBox.openList[i].style.zIndex=newZ;}}
this.container.style.zIndex=jt_DialogBox.veilZ+1;}
jt_DialogBox.veilSetWidth=function(){jt_DialogBox.veilOverlay.style.width=document.body.scrollWidth+'px';jt_DialogBox.veilOverlay.style.height=document.body.scrollHeight+'px';jt_DialogBox.veilOverlay.firstChild.style.width=document.body.scrollWidth+'px';jt_DialogBox.veilOverlay.firstChild.style.height=document.body.scrollHeight+'px';}
jt_DialogBox.addListener=function(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false);return true;}
else if(obj.attachEvent)return obj.attachEvent('on'+evType,fn);else return false;}
var TCP=new TColorPicker();function TCPopup(field,palette){this.field=field;this.initPalette=!palette||palette>3?0:palette;var w=194,h=240,move=screen?',left='+((screen.width-w)>>1)+',top='+((screen.height-h)>>1):'',o_colWindow=window.open('/web/scripts/picker.html',null,"help=no,status=no,scrollbars=no,resizable=no"+move+",width="+w+",height="+h+",dependent=yes",true);o_colWindow.opener=window;o_colWindow.focus();}
function TCBuildCell(R,G,B,w,h){return'<td bgcolor="#'+this.dec2hex((R<<16)+(G<<8)+B)+'"><a href="javascript:P.S(\''+this.dec2hex((R<<16)+(G<<8)+B)+'\')" onmouseover="P.P(\''+this.dec2hex((R<<16)+(G<<8)+B)+'\')"><img src="pixel.gif" width="'+w+'" height="'+h+'" border="0"></a></td>';}
function opposite(c){var result='';var list1='0123456789ABCDEF';var list2='FEDCBA9876543210';var ch='';for(var i=0;i<c.length;i++){ch=c.charAt(i);for(var n=0;n<list1.length;n++){if(ch==list1.charAt(n))result+=list2.charAt(n);}}return result;}
function TCSelect(c){this.field.value='#'+c.toUpperCase();this.field.style.backgroundColor=this.field.value;this.field.style.color='#'+opposite(c.toUpperCase());this.win.close();}
function TCPaint(c,b_noPref){c=(b_noPref?'':'#')+c.toUpperCase();if(this.o_samp)
this.o_samp.innerHTML='<font face=Tahoma size=2>'+c+' <font color=white>'+c+'</font></font>'
if(this.doc.layers)
this.sample.bgColor=c;else{if(this.sample.backgroundColor!=null)this.sample.backgroundColor=c;else if(this.sample.background!=null)this.sample.background=c;}}
function TCGenerateSafe(){var s='';for(j=0;j<12;j++){s+="<tr>";for(k=0;k<3;k++)
for(i=0;i<=5;i++)
s+=this.bldCell(k*51+(j%2)*51*3,Math.floor(j/2)*51,i*51,8,10);s+="</tr>";}
return s;}
function TCGenerateWind(){var s='';for(j=0;j<12;j++){s+="<tr>";for(k=0;k<3;k++)
for(i=0;i<=5;i++)
s+=this.bldCell(i*51,k*51+(j%2)*51*3,Math.floor(j/2)*51,8,10);s+="</tr>";}
return s}
function TCGenerateMac(){var s='';var c=0,n=1;var r,g,b;for(j=0;j<15;j++){s+="<tr>";for(k=0;k<3;k++)
for(i=0;i<=5;i++){if(j<12){s+=this.bldCell(255-(Math.floor(j/2)*51),255-(k*51+(j%2)*51*3),255-(i*51),8,10);}else{if(n<=14){r=255-(n*17);g=b=0;}else if(n>14&&n<=28){g=255-((n-14)*17);r=b=0;}else if(n>28&&n<=42){b=255-((n-28)*17);r=g=0;}else{r=g=b=255-((n-42)*17);}
s+=this.bldCell(r,g,b,8,10);n++;}}
s+="</tr>";}
return s;}
function TCGenerateGray(){var s='';for(j=0;j<=15;j++){s+="<tr>";for(k=0;k<=15;k++){g=Math.floor((k+j*16)%256);s+=this.bldCell(g,g,g,9,7);}
s+='</tr>';}
return s}
function TCDec2Hex(v){v=v.toString(16);for(;v.length<6;v='0'+v);return v;}
function TCChgMode(v){for(var k in this.divs)this.hide(k);this.show(v);}
function TColorPicker(field){this.build0=TCGenerateSafe;this.build1=TCGenerateWind;this.build2=TCGenerateGray;this.build3=TCGenerateMac;this.show=document.layers?function(div){this.divs[div].visibility='show'}:function(div){this.divs[div].visibility='visible'};this.hide=document.layers?function(div){this.divs[div].visibility='hide'}:function(div){this.divs[div].visibility='hidden'};this.C=TCChgMode;this.S=TCSelect;this.P=TCPaint;this.popup=TCPopup;this.draw=TCDraw;this.dec2hex=TCDec2Hex;this.bldCell=TCBuildCell;this.divs=[];}
function TCDraw(o_win,o_doc){this.win=o_win;this.doc=o_doc;var
s_tag_openT=o_doc.layers?'layer visibility=hidden top=54 left=5 width=182':'div style=visibility:hidden;position:absolute;left:6px;top:54px;width:182px;height:0',s_tag_openS=o_doc.layers?'layer top=32 left=6':'div',s_tag_close=o_doc.layers?'layer':'div'
this.doc.write('<'+s_tag_openS+' id=sam name=sam><table cellpadding=0 cellspacing=0 border=1 width=181 align=center class=bd><tr><td align=center height=18><div id="samp"><font face=Tahoma size=2>sample <font color=white>sample</font></font></div></td></tr></table></'+s_tag_close+'>');this.sample=o_doc.layers?o_doc.layers['sam']:o_doc.getElementById?o_doc.getElementById('sam').style:o_doc.all['sam'].style
for(var k=0;k<4;k++){this.doc.write('<'+s_tag_openT+' id="p'+k+'" name="p'+k+'"><table cellpadding=0 cellspacing=0 border=1 align=center>'+this['build'+k]()+'</table></'+s_tag_close+'>');this.divs[k]=o_doc.layers?o_doc.layers['p'+k]:o_doc.all?o_doc.all['p'+k].style:o_doc.getElementById('p'+k).style}
if(!o_doc.layers&&o_doc.body.innerHTML)
this.o_samp=o_doc.all?o_doc.all.samp:o_doc.getElementById('samp');this.C(this.initPalette);if(this.field.value)this.P(this.field.value,true)}
function adjustContainerHeight(){var d=document.getElementById('content');var a=document.getElementById('accountInfo');if(d&&a&&d.offsetHeight<a.offsetHeight){d.style.height=a.offsetHeight-20+'px';}}
function createCompanyItem(t,cid){if(t&&t.selectedIndex>0){switch(t.selectedIndex){case 1:top.document.location.href='?form=startcompanyorder&cid='+escape(cid);break;case 2:document.location.href='?form=createactivity&altdoc=true&cid='+escape(cid);break;case 3:document.location.href='?form=createnote&altdoc=true&cid='+escape(cid);break;case 4:document.location.href='?form=createmessage&altdoc=true&cid='+escape(cid);break;}}}
function createCustomerItem(t,cid){if(t&&t.selectedIndex>0){switch(t.selectedIndex){case 1:top.document.location.href='?form=startcompanyorder&contact=true&cid='+escape(cid);break;case 2:document.location.href='?form=createactivity&altdoc=true&contact=true&cid='+escape(cid);break;case 3:document.location.href='?form=createnote&altdoc=true&contact=true&ccid='+escape(cid);break;case 4:document.location.href='?form=createmessage&altdoc=true&contact=true&ccid='+escape(cid);break;}}}
function updateRUBaseSize(t){if(t){var d=document.getElementById('base_size');if(d&&t.options[t.selectedIndex].text=='EACH'){d.value=1;}}}
function checkSelectedRecipeUnit(t){if(t){var d=document.getElementById('recipe_unit');if(d&&d.options[d.selectedIndex].text=='EACH'){alert('When the recipe unit is set to \'EACH\', the base size defaults to "1" and cannot be changed.');t.value=1;t.blur();return false;}}}
function checkPrepFormModified(f,i){if(f&&i){if(isFormModified(f)){if(confirm('You have made some changes to your selected prep items, but have not saved them.  Do you want to save these changes before leaving this page to create the new prep item?')){f.createPrepItem.value=1;f.submit();return;}}}
document.location.href='?form=createprepitem&id='+i;}
function updateSearchFormOptions(t){var d=document.getElementById('search_options');if(d&&t){switch(t.selectedIndex){case 1:d.innerHTML='<table class="search_options"><tr><td>Ordering Customer Name: </td><td><input name="param_customer~name_s_n_125" /></td></tr><tr><td>Store Location Name: </td><td><input name="param_restaurant~name_s_n_125" /></td></tr></table>';break;case 2:d.innerHTML='<table class="search_options"><tr><td>Company Name: </td><td><input name="param_company~name_s_n_125" /></td></tr><tr><td>Department Name: </td><td><input name="param_department~name_s_n_125" /></td></tr><tr><td>Email: </td><td><input name="param_email_s_n_125" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 3:d.innerHTML='<table class="search_options"><tr><td>First Name: </td><td><input name="param_contact~first~name_s_n_35" /></td></tr><tr><td>Last Name: </td><td><input name="param_contact~last~name_s_n_28" /></td></tr><tr><td>Email: </td><td><input name="param_email_s_n_125" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 4:d.innerHTML='<table class="search_options"><tr><td>Location Name: </td><td><input name="param_location~name_s_n_125" /></td></tr><tr><td>Phone: </td><td><input name="param_primary~phone_s_n_28" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 5:d.innerHTML='<table class="search_options"><tr><td>Display Name: </td><td><input name="param_event~name_s_n_125" /></td></tr><tr><td>Is Public: </td><td><input type="checkbox" name="param_is~public_b_n_1" value="1" /></td></tr></table>';break;case 6:d.innerHTML='<table class="search_options"><tr><td>Title: </td><td><input name="param_note~title_s_n_125" /></td></tr><tr><td>Message: </td><td><input name="param_message_s_n_125" /></td></tr></table>';break;default:d.innerHTML='';break;}}}
function successSIC2Codes(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('sic2_codes');if(d){d.innerHTML=xmlObj.responseText;}}}
function showSIC2Codes(division){var d=document.getElementById('sic4_codes');if(d)d.innerHTML='';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getsiccodes&division='+escape(division),onSuccess:successSIC2Codes,onFailure:errFunc});}
function successSIC4Codes(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('sic4_codes');if(d){d.innerHTML=xmlObj.responseText;}}}
function showSIC4Codes(code){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getsiccodes&sic2code='+escape(code),onSuccess:successSIC4Codes,onFailure:errFunc});}
function openHelpItem(ev,key){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Help Topic');selectBox.setContent('<div class="dialogue" style="height:100px;overflow:auto;"><div id="helpTopicContent"><img src="/web/images/default/busy.gif" />Loading Help Topic...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=helptopic&key='+escape(key),onSuccess:successHelpTopicAction,onFailure:errFunc});}
var dispositions=new Object();dispositions[-1]='Still To Do';dispositions[1]='Completed';dispositions[2]='Attempted';dispositions[3]='Left Message';function updateActivityCompletion(ev,aid,disposition){if(aid){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Update Activity Disposition');selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="disposition_status"><img src="/web/images/default/busy.gif" /> Updating...</div><div id="dispositionContent"><form action="" method="post"><div><div class="formLabel">Activity Disposition: </div><div class="formInput">'+dispositions[disposition]+' <input type="hidden" name="disposition" value="'+disposition+'" /></div><div class="formDivider"></div></div><div><div class="formLabel">Notes: </div><div class="formInput"><textarea name="notes" style="width:97%;height:70px;" cols="1" rows="1"></textarea></div><div class="clb"></div><div class="formDivider"></div></div><div><div class="formLabel">&nbsp;</div><div class="formInput"><input type="button" onclick="addNoteToActivity('+aid+', this.form.notes.value);" name="updatedisposition" value="Save Changes" /></div><div class="clb"></div><div class="formDivider"></div></div></form></div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,-1);new Ajax.Request('/'+IDString,{method:'get',parameters:'form=eventdetails&actid='+escape(aid)+'&disposition='+escape(disposition),onSuccess:successDispositionUpdate,onFailure:errFunc});}}
function addNoteToActivity(aid,note){if(aid&&!isBlank(note)){note=Trim(note);new Ajax.Request('/'+IDString,{method:'get',parameters:'form=eventdetails&actid='+escape(aid)+'&addnote='+escape(note),onSuccess:successDispositionUpdate,onFailure:errFunc});}}
function toggleActivityCompletion(aid){if(aid){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=eventdetails&toggleactivity='+escape(aid),onSuccess:successToggleActivity,onFailure:errFunc});}}
function successDispositionUpdate(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('disposition_status');if(d)d.innerHTML=xmlObj.responseText;new Effect.Highlight(d);}}
function successToggleActivity(xmlObj){if(xmlObj&&xmlObj.responseText){tokens=xmlObj.responseText.split(/:/);if(tokens.length==2){var d=document.getElementById('act_state_'+tokens[0]);if(d)d.innerHTML=tokens[1];new Effect.Highlight(d);}}}
function showFullCalendarEvent(ev,eid,ic){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true,false);selectBox.setWidth(550);selectBox.setTitle('Item Details');selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="helpTopicContent"><img src="/web/images/default/busy.gif" />Loading Details...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);if(ic)new Ajax.Request('/'+IDString,{method:'post',parameters:'form=customereventdetails&eid='+escape(eid),onSuccess:successHelpTopicAction,onFailure:errFunc});else new Ajax.Request('/'+IDString,{method:'post',parameters:'form=eventdetails&eid='+escape(eid),onSuccess:successHelpTopicAction,onFailure:errFunc});}
function doAddonAssignment(ev,t,iid,aid,altBtn){if(t&&iid&&aid){t.parentNode.lastChild.innerHTML='<img src="/web/images/default/busy.gif" />Updating...';if(t.checked==true){var multiplicity=1;if(altBtn){var multiplicityElem=document.getElementById('multiplicity_'+aid);if(multiplicityElem)multiplicity=multiplicityElem.value;if(!isInteger(multiplicity))multiplicity=1;}
new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addaddontoitem&item='+escape(iid)+'&addon='+escape(aid)+'&multiplicity='+escape(multiplicity),onSuccess:successAssignAddonAction,onFailure:errFunc});}else{new Ajax.Request('/'+IDString,{method:'post',parameters:'form=removeaddonfromitem&item='+escape(iid)+'&addon='+escape(aid),onSuccess:successAssignAddonAction,onFailure:errFunc});}}}
function doAddonGroupAssignment(ev,t,gid,aid){if(t&&gid&&aid){t.parentNode.lastChild.innerHTML='<img src="/web/images/default/busy.gif" /> Updating...';if(t.checked==true){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addaddontogroup&group='+escape(gid)+'&addon='+escape(aid),onSuccess:successAssignAddonGroupAction,onFailure:errFunc});}else{new Ajax.Request('/'+IDString,{method:'post',parameters:'form=removeaddonfromgroup&group='+escape(gid)+'&addon='+escape(aid),onSuccess:successAssignAddonGroupAction,onFailure:errFunc});}}}
function getUnitOptionFromServer(t){if(t){var ti=t.options[t.selectedIndex].value;if(ti){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getunitoptionlist&id='+escape(ti),onSuccess:successUnitOptionListAction,onFailure:errFunc});}}}
function saveAjaxForm(form_id,target_url,busy_msg_elem_id,successFunc,other_params){if(form_id&&target_url&&busy_msg_elem_id){var d=document.getElementById('busy_msg_elem_id');if(d)d.innerHTML='<img src="/web/images/default/busy.gif" />Updating...';var serializedForm=$(form_id).serialize();new Ajax.Request('/'+IDString,{method:'post',parameters:'form='+target_url+'&'+serializedForm+'&'+other_params,onSuccess:successFunc,onFailure:errFunc});}}
function hideInnerHTML(elem){if(elem){var e=document.getElementById(elem);if(e&&e.innerHTML)e.innerHTML='';}}
function successAssignAddonAction(xmlObj){if(xmlObj.responseText&&isInteger(Trim(xmlObj.responseText))){var e=document.getElementById('addon_msg_'+Trim(xmlObj.responseText));if(e){e.innerHTML='<strong> Changes Saved...</strong>';setTimeout('hideInnerHTML(\''+'addon_msg_'+Trim(xmlObj.responseText)+'\')',1500);}else{alert('Cannot find update element');}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successAssignAddonGroupAction(xmlObj){if(xmlObj.responseText&&isInteger(Trim(xmlObj.responseText))){var e=document.getElementById('addon_msg_'+Trim(xmlObj.responseText));if(e){e.innerHTML='<strong>&nbsp;Changes Saved...</strong>';setTimeout('hideInnerHTML(\''+'addon_msg_'+Trim(xmlObj.responseText)+'\')',1500);}else{alert('Cannot find update element');}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successUnitOptionListAction(xmlObj){if(xmlObj.responseText){var d=document.getElementById('menu_item_unit_select');if(d){select_innerHTML(d,xmlObj.responseText);}}}
function successLocOrderSendAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('locsendingcontent');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successLocContactInfoAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('loccontactcontent');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successAssignRepAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('rep_change_status');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;setTimeout('hideInnerHTML(\'rep_change_status\')',2000);}}else{alert('There was an error performing this action.');}}
function updateSalesRep(c,r){if(c&&r){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=assignsalesrep&cid='+escape(c)+'&rid='+escape(r),onSuccess:successAssignRepAction,onFailure:errFunc});}}
function showAddOnsForItem(ev,aid,iname){hideOpenDialogues();var d=document.getElementById('addoncontent');if(d){d.parentNode.removeChild(d);}
var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(400);selectBox.setTitle('Add Ons for '+iname);selectBox.setContent('<div class="dialogue" style="height:350px;overflow:auto;"><div id="addoncontent"><img src="/web/images/default/busy.gif" />Loading Add-Ons...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showaddonsforitem&id='+escape(aid),onSuccess:successAddOnForItemAction,onFailure:errFunc});}
function showAddOnsForGroup(ev,aid,iname){hideOpenDialogues();var d=document.getElementById('addoncontent');if(d){d.parentNode.removeChild(d);}
var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(400);selectBox.setTitle('Extras for the '+iname+' Group');selectBox.setContent('<div class="dialogue" style="height:350px;overflow:auto;"><div id="addoncontent"><img src="/web/images/default/busy.gif" />Loading Extras...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showaddonsforgroup&id='+escape(aid),onSuccess:successAddOnForGroupAction,onFailure:errFunc});}
function showEditOrderSendMethods(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change order sending methods for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:170px;overflow:auto;"><div id="locsendingcontent"><img src="/web/images/default/busy.gif" />Loading Form...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showordersendmethods&id='+escape(lid),onSuccess:successLocOrderSendAction,onFailure:errFunc});}
function showEditLocationAddress(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change contact info for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="loccontactcontent"><img src="/web/images/default/busy.gif" />Loading Contact Info...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showlocationcontactinfo&id='+escape(lid),onSuccess:successLocContactInfoAction,onFailure:errFunc});}
function showEditLocationTimezone(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change time zone and sales tax for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:120px;overflow:auto;"><div id="loccontactcontent"><img src="/web/images/default/busy.gif" />Loading...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showlocationtimezone&id='+escape(lid),onSuccess:successLocContactInfoAction,onFailure:errFunc});}
function changeMenu(t){if(t){document.location.href='?form=ordering&mid='+escape(t.options[t.selectedIndex].value);}}
function updateCartFromPageItem(item_unique_id){var errMsg='';if(item_unique_id){try{var prices=document.getElementsByClassName('itemPrice');var selectedPrice;if(prices&&prices.length){for(i=0;i<prices.length;i++){if(prices[i].checked==true){selectedPrice=prices[i].id.replace(/MENU_ITEM_PRICE_/,'');break;}}}
if(!isInteger(selectedPrice))errMsg+='\t - You must select a price!\n';var optionChoices=document.getElementsByClassName('optionChoice');var optionsOK=true;if(optionChoices&&optionChoices.length){for(i=0;i<optionChoices.length;i++){if(optionChoices[i].selectedIndex==0){optionsOK=false;break;}}}
if(!optionsOK)errMsg+='\t - Options in drop-down select-boxes are required!';if(!errMsg){var serializedForm=$('menuItemForm').serialize();document.getElementById('cartHeader').innerHTML='Updating My Cart <img src="/web/images/'+template+'/busy.gif" alt="Please Wait" />';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=update&item='+escape(item_unique_id)+'&'+serializedForm,onSuccess:successCartAction,onFailure:errFunc});}else{alert('Please correct the following errors before updating this item in your cart: \n\n'+errMsg);}}catch(ex){alert(ex.description);}}}
function addPageItemToCart(item_id){var errMsg='';var d=document.getElementById('min_type');var e=document.getElementById('min_required');var q=document.getElementById('quantity');if(d&&d.value==1&&e&&(q.value*1)<(e.value*1)){errMsg+='\t - You must select at least '+e.value+' to purchase this item.\n';}
if(item_id){try{var prices=document.getElementsByClassName('itemPrice');var selectedPrice;if(prices&&prices.length){for(i=0;i<prices.length;i++){if(prices[i].checked==true){selectedPrice=prices[i].id.replace(/MENU_ITEM_PRICE_/,'');break;}}}
if(!isInteger(selectedPrice))errMsg+='\t - You must select a price!\n';var optionChoices=document.getElementsByClassName('optionChoice');var optionsOK=true;if(optionChoices&&optionChoices.length){for(i=0;i<optionChoices.length;i++){if(optionChoices[i].selectedIndex==0){optionsOK=false;break;}}}
if(!optionsOK)errMsg+='\t - Options in drop-down select-boxes are required!';if(!errMsg){var serializedForm=$('menuItemForm').serialize();document.getElementById('cartHeader').innerHTML='Updating My Cart <img src="/web/images/'+template+'/busy.gif" alt="Please Wait" />';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=add&item='+escape(item_id)+'&'+serializedForm,onSuccess:successCartAction,onFailure:errFunc});}else{alert('Please correct the following errors before adding this item to your cart: \n\n'+errMsg);}}catch(ex){alert(ex.description);}}}
function successCartAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{if(formname=='checkout'){document.location.reload();return;}
document.getElementById('cartContainer').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successCalendarEventAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('calendarEventContent').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successHelpTopicAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('helpTopicContent').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successRefreshCheckoutCart(xmlObj){if(xmlObj){document.getElementById('checkoutCart').innerHTML=xmlObj.responseText;}}
function successAddOnForItemAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('addoncontent').innerHTML=xmlObj.responseText;}catch(ex){showAlert(ex);}}}else{alert('NO XML OBJECT WAS RETURNED');}
adjustContainerHeight();}
function successAddOnForGroupAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('addoncontent').innerHTML=xmlObj.responseText;}catch(ex){showAlert(ex);}}}else{alert('NO XML OBJECT WAS RETURNED');}
adjustContainerHeight();}
function showAlert(ex){if(ex){if(ex.description)alert(ex.description);else if(ex.message)alert(ex.message);}}
function errFunc(){alert('AJAX Failure!');}
function removeCustomer(cid){if(confirm('Are you sure you want to remove this customer?')){}}
function removeCartItem(uuid){if(confirm('Are you sure you want to remove this item from your cart?')){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=remove&item='+escape(uuid),onSuccess:successCartAction,onFailure:errFunc});}}
function openEventWindow(ev,eid){hideOpenDialogues();if(eid>0){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Calendar Event');selectBox.setContent('<div class="dialogue"><div id="calendarEventContent"><img src="/web/images/default/busy.gif" />Loading Event Details...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=calendarevent&id='+escape(eid),onSuccess:successCalendarEventAction,onFailure:errFunc});}else{alert('Invalid Event Selected');}}
function successAddCalendarEventAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{if(xmlObj.responseText.charAt(0)=='!'){alert('There was a problem adding this event to the calendar: '+xmlObj.responseText.substr(1));}else{hideOpenDialogues();document.getElementById('calendar_container').innerHTML=xmlObj.responseText;}}catch(ex){alert(ex.message);}}}
adjustContainerHeight();}
function editCalendarEvent(ev,eid,title,desc,date){selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Edit Calendar Event');selectBox.setContent('<div class="dialogue"><form action="#" method="get"><table><tr><td>Event Title: </td><td><input type="text" name="event_title" id="event_title" value="'+title+'" /></td></tr><tr><td>Date and Time: </td><td><input type="text" name="event_date" id="event_date" value="'+date+'" /></td></tr><tr><td>Description: </td><td><textarea name="event_description" id="event_description" style="width:90%;height:30px;">'+desc+'</textarea></td></tr><tr><td>&nbsp;</td><td><input class="optionButton" type="button" name="addevent" id="addevent" style="width:180px;" value="Edit this Event" onclick="editEvent(this.form)" />&nbsp;<input type="button" class="optionButton" name="cancelAddEvent" id="cancelAddEvent" value="Cancel" onclick="hideOpenDialogues();" /></td></tr></table><input type="hidden" name="edit_event_id" value="'+eid+'" /></form></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,document.documentElement.scrollTop+60);}
function deleteCalendarEvent(ev,eid,title,desc,date){if(confirm('Are you sure you want to delete this calendar event?')){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=deletecalendarevent&view='+escape(viewType)+'&id='+escape(eid),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}}
function editEvent(f){if(f){var title=f.event_title.value;var desc=f.event_description.value;var date=f.event_date.value;var eid=f.edit_event_id.value;if(!isBlank(title)&&!isBlank(date)&&eid>0){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addcalendarevent&id='+escape(eid)+'&view='+escape(viewType)+'&name='+escape(title)+'&desc='+escape(desc)+'&date='+escape(date),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}else{alert('Title and Date are required.  Please complete both of these fields.');}}}
function updateCheckoutCart(){document.location.reload();}
function addEvent(f){if(f){var title=f.event_title.value;var desc=f.event_description.value;var date=f.event_date.value;if(!isBlank(title)&&!isBlank(date)){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addcalendarevent&view='+escape(viewType)+'&name='+escape(title)+'&desc='+escape(desc)+'&date='+escape(date),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}else{alert('Title and Date are required.  Please complete both of these fields.');}}}
function showAddEvent(ev,t){var val=t.value;selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Add a New Calendar Event');selectBox.setContent('<div class="dialogue"><form action="#" method="get"><table><tr><td>Event Title: </td><td><input type="text" name="event_title" id="event_title" value="'+val+'" /></td></tr><tr><td>Date and Time: </td><td><input type="text" name="event_date" id="event_date" value="" /></td></tr><tr><td>Description: </td><td><textarea name="event_description" id="event_description" style="width:90%;height:30px;"></textarea></td></tr><tr><td>&nbsp;</td><td><input class="optionButton" type="button" name="addevent" id="addevent" style="width:180px;" value="Add this Event" onclick="addEvent(this.form)" />&nbsp;<input type="button" class="optionButton" name="cancelAddEvent" id="cancelAddEvent" value="Cancel" onclick="hideOpenDialogues();" /></td></tr></table></form></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,document.documentElement.scrollTop+60);}
var currentDialogues=new Array();function hideOpenDialogues(b){var box;while(box=currentDialogues.shift()){box.hide();setInnerHTML(box.contentArea,'');}}
function enableOptionChoices(t){if(t){var s=t.selectedIndex;if(s!=0){}}}
function filterCompanyItems(cid){var d1=document.getElementById('show_notes');var d2=document.getElementById('show_activities');var d3=document.getElementById('show_msgs');var d4=document.getElementById('show_orders');var d5=document.getElementById('show_history');var d6=document.getElementById('companyitems');if(d1&&d2&&d3&&d4&&d5&&d6){d6.src='?form=companyitems&cid='+cid+'&altdoc=true&n='+d1.checked+'&a='+d2.checked+'&o='+d4.checked+'&m='+d3.checked+'&h='+d5.checked;}}
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS";},searchString:function(data){for(var i=0;i<data.length;i++){var dataString=data[i].string;var dataProp=data[i].prop;this.versionSearchString=data[i].versionSearch||data[i].identity;if(dataString){if(dataString.indexOf(data[i].subString)!=-1)return data[i].identity;}else if(dataProp)return data[i].identity;}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);if(index==-1)return;return parseFloat(dataString.substring(index+this.versionSearchString.length+1));},dataBrowser:[{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]};var showBrowserWarn=false;BrowserDetect.init();if(BrowserDetect.browser=='Explorer'&&BrowserDetect.version<7){showBrowserWarn=true;}
function ajaxCreateFunc(request){if(request){request['timeoutId']=window.setTimeout(function(){if(callInProgress(request.transport)){request.transport.abort();showFailureMessage();if(request.options['onFailure']){request.options['onFailure'](request.transport,request.json);}}},10000);}}
function viewLargerImage(elem){}
function showFailureMessage(){alert("The remote server is unavailable.");}
function ajaxCompleteFunc(request){window.clearTimeout(request['timeoutId']);}
function purgeObj(obj){if(obj){for(i in obj){delete obj[i];}}}
Ajax.Responders.register({onCreate:ajaxCreateFunc,onComplete:ajaxCompleteFunc});function doBlinds(elemId){if(elemId){var d=document.getElementById(elemId);if(d){if(d.style.display=='none'){new Effect.BlindDown(elemId);var d2=document.getElementById('showLink');if(d2)d2.innerHTML='Click to Hide';}else{new Effect.BlindUp(elemId);var d2=document.getElementById('showLink');if(d2)d2.innerHTML='Click to Show';}}}}
function goToCRMCustomer(elem){if(elem){var cid=elem.firstChild.firstChild.nextSibling;document.location.href='?form=customerdetails&id='+Trim(cid.innerHTML)+'&show=';}}
function selectExistingCompanyIntoFormFields(elem){var d=document.getElementById('company_id');var e=document.getElementById('company_name');if(d&&e)selectCompanyForCustomer(elem.firstChild.innerHTML,elem.firstChild.nextSibling.innerHTML,'company_name','company_id','company_msg');else alert('Error: Cannot assign company at this time!');}
function prepareCRMSearch(field,qs){return qs+'&search_field=true&fieldname='+escape(field.name);}
function prepareCompanySearch(field,qs){if(true||Trim(field.value)==''){var d=document.getElementById('company_id');if(d){d.value=-1;var e=document.getElementById('company_msg');e.innerHTML='You have de-selected the company you previously selected.  A new company will be created for this contact unless you select an existing company from the list.';e.style.display='block';}}
return qs+'&search_field=true&fieldname=company_only';}
function selectCompanyForCustomer(cid,cname,cnameField,cidField,msgField){if(cid&&cname){var d=document.getElementById(cnameField);var e=document.getElementById(cidField);if(d&&e){d.value=cname;e.value=cid;d=document.getElementById(msgField);if(d){d.innerHTML='';d.style.display='none';}}else{alert('Error: Cannot assign company at this time!');}}}
var formStateTimer=null;function saveFormState(n,v){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=saveformfields&'+n+'='+escape(v)});}
function scheduleFormStateSave(n,v){window.clearTimeout(formStateTimer);var func='saveFormState(\''+n+'\',\''+v+'\')';formStateTimer=window.setTimeout(func,200);}
var niftyOk=(document.getElementById&&document.createElement&&Array.prototype.push);var niftyCss=false;String.prototype.find=function(what){return(this.indexOf(what)>=0?true:false);}
var oldonload=window.onload;if(typeof(NiftyLoad)!='function')NiftyLoad=function(){};if(typeof(oldonload)=='function')
window.onload=function(){oldonload();AddCss();NiftyLoad()};else window.onload=function(){AddCss();NiftyLoad()};function AddCss(){return;niftyCss=true;var l=CreateEl("link");l.setAttribute("type","text/css");l.setAttribute("rel","stylesheet");l.setAttribute("href","/web/css/nifty/niftyCorners.css");l.setAttribute("media","screen");document.getElementsByTagName("head")[0].appendChild(l);}
function Nifty(selector,options){if(niftyOk==false)return;if(niftyCss==false)AddCss();var i,v=selector.split(","),h=0;if(options==null)options="";if(options.find("fixed-height"))
h=getElementsBySelector(v[0])[0].offsetHeight;for(i=0;i<v.length;i++)
Rounded(v[i],options);if(options.find("height"))SameHeight(selector,h);}
function Rounded(selector,options){var i,top="",bottom="",v=new Array();if(options!=""){options=options.replace("left","tl bl");options=options.replace("right","tr br");options=options.replace("top","tr tl");options=options.replace("bottom","br bl");options=options.replace("transparent","alias");if(options.find("tl")){top="both";if(!options.find("tr"))top="left";}
else if(options.find("tr"))top="right";if(options.find("bl")){bottom="both";if(!options.find("br"))bottom="left";}
else if(options.find("br"))bottom="right";}
if(top==""&&bottom==""&&!options.find("none")){top="both";bottom="both";}
v=getElementsBySelector(selector);for(i=0;i<v.length;i++){FixIE(v[i]);if(top!="")AddTop(v[i],top,options);if(bottom!="")AddBottom(v[i],bottom,options);}}
function AddTop(el,side,options){var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;d.style.marginLeft="-"+getPadding(el,"Left")+"px";d.style.marginRight="-"+getPadding(el,"Right")+"px";if(options.find("alias")||(color=getBk(el))=="transparent"){color="transparent";bk="transparent";border=getParentBk(el);btype="t";}
else{bk=getParentBk(el);border=Mix(color,bk);}
d.style.background=bk;d.className="niftycorners";p=getPadding(el,"Top");if(options.find("small")){d.style.marginBottom=(p-2)+"px";btype+="s";lim=2;}
else if(options.find("big")){d.style.marginBottom=(p-10)+"px";btype+="b";lim=8;}
else d.style.marginBottom=(p-5)+"px";for(i=1;i<=lim;i++)
d.appendChild(CreateStrip(i,side,color,border,btype));el.style.paddingTop="0";el.insertBefore(d,el.firstChild);}
function AddBottom(el,side,options){var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;d.style.marginLeft="-"+getPadding(el,"Left")+"px";d.style.marginRight="-"+getPadding(el,"Right")+"px";if(options.find("alias")||(color=getBk(el))=="transparent"){color="transparent";bk="transparent";border=getParentBk(el);btype="t";}
else{bk=getParentBk(el);border=Mix(color,bk);}
d.style.background=bk;d.className="niftycorners";p=getPadding(el,"Bottom");if(options.find("small")){d.style.marginTop=(p-2)+"px";btype+="s";lim=2;}
else if(options.find("big")){d.style.marginTop=(p-10)+"px";btype+="b";lim=8;}
else d.style.marginTop=(p-5)+"px";for(i=lim;i>0;i--)
d.appendChild(CreateStrip(i,side,color,border,btype));el.style.paddingBottom=0;el.appendChild(d);}
function CreateStrip(index,side,color,border,btype){var x=CreateEl("b");x.className=btype+index;x.style.backgroundColor=color;x.style.borderColor=border;if(side=="left"){x.style.borderRightWidth="0";x.style.marginRight="0";}
else if(side=="right"){x.style.borderLeftWidth="0";x.style.marginLeft="0";}
return(x);}
function CreateEl(x){return(document.createElement(x));}
function FixIE(el){if(el.currentStyle!=null&&el.currentStyle.hasLayout!=null&&el.currentStyle.hasLayout==false)
el.style.display="inline-block";}
function SameHeight(selector,maxh){var i,v=selector.split(","),t,j,els=[],gap;for(i=0;i<v.length;i++){t=getElementsBySelector(v[i]);els=els.concat(t);}
for(i=0;i<els.length;i++){if(els[i].offsetHeight>maxh)maxh=els[i].offsetHeight;els[i].style.height="auto";}
for(i=0;i<els.length;i++){gap=maxh-els[i].offsetHeight;if(gap>0){t=CreateEl("b");t.className="niftyfill";t.style.height=gap+"px";nc=els[i].lastChild;if(nc.className=="niftycorners")
els[i].insertBefore(t,nc);else els[i].appendChild(t);}}}
function getElementsBySelector(selector){var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c;if(selector.find("#")){if(selector.find(" ")){s=selector.split(" ");var fs=s[0].split("#");if(fs.length==1)return(objlist);f=document.getElementById(fs[1]);if(f){v=f.getElementsByTagName(s[1]);for(i=0;i<v.length;i++)objlist.push(v[i]);}
return(objlist);}
else{s=selector.split("#");tag=s[0];selid=s[1];if(selid!=""){f=document.getElementById(selid);if(f)objlist.push(f);return(objlist);}}}
if(selector.find(".")){s=selector.split(".");tag=s[0];selclass=s[1];if(selclass.find(" ")){s=selclass.split(" ");selclass=s[0];tag2=s[1];}}
var v=document.getElementsByTagName(tag);if(selclass==""){for(i=0;i<v.length;i++)objlist.push(v[i]);return(objlist);}
for(i=0;i<v.length;i++){c=v[i].className.split(" ");for(j=0;j<c.length;j++){if(c[j]==selclass){if(tag2=="")objlist.push(v[i]);else{v2=v[i].getElementsByTagName(tag2);for(k=0;k<v2.length;k++)objlist.push(v2[k]);}}}}
return(objlist);}
function getParentBk(x){var el=x.parentNode,c;while(el.tagName.toUpperCase()!="HTML"&&(c=getBk(el))=="transparent")
el=el.parentNode;if(c=="transparent")c="#FFFFFF";return(c);}
function getBk(x){var c=getStyleProp(x,"backgroundColor");if(c==null||c=="transparent"||c.find("rgba(0, 0, 0, 0)"))
return("transparent");if(c.find("rgb"))c=rgb2hex(c);return(c);}
function getPadding(x,side){var p=getStyleProp(x,"padding"+side);if(p==null||!p.find("px"))return(0);return(parseInt(p));}
function getStyleProp(x,prop){if(x.currentStyle)
return(x.currentStyle[prop]);if(document.defaultView.getComputedStyle)
return(document.defaultView.getComputedStyle(x,'')[prop]);return(null);}
function rgb2hex(value){var hex="",v,h,i;var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;var h=regexp.exec(value);for(i=1;i<4;i++){v=parseInt(h[i]).toString(16);if(v.length==1)hex+="0"+v;else hex+=v;}
return("#"+hex);}
function Mix(c1,c2){var i,step1,step2,x,y,r=new Array(3);if(c1.length==4)step1=1;else step1=2;if(c2.length==4)step2=1;else step2=2;for(i=0;i<3;i++){x=parseInt(c1.substr(1+step1*i,step1),16);if(step1==1)x=16*x+x;y=parseInt(c2.substr(1+step2*i,step2),16);if(step2==1)y=16*y+y;r[i]=Math.floor((x*50+y*50)/100);r[i]=r[i].toString(16);if(r[i].length==1)r[i]="0"+r[i];}
return("#"+r[0]+r[1]+r[2]);}
function adjustContainerHeight(){var d=document.getElementById('content');var a=document.getElementById('accountInfo');if(d&&a&&d.offsetHeight<a.offsetHeight){d.style.height=a.offsetHeight-20+'px';}}
function createCompanyItem(t,cid){if(t&&t.selectedIndex>0){switch(t.selectedIndex){case 1:top.document.location.href='?form=startcompanyorder&cid='+escape(cid);break;case 2:document.location.href='?form=createactivity&altdoc=true&cid='+escape(cid);break;case 3:document.location.href='?form=createnote&altdoc=true&cid='+escape(cid);break;case 4:document.location.href='?form=createmessage&altdoc=true&cid='+escape(cid);break;}}}
function createCustomerItem(t,cid){if(t&&t.selectedIndex>0){switch(t.selectedIndex){case 1:top.document.location.href='?form=startcompanyorder&contact=true&cid='+escape(cid);break;case 2:document.location.href='?form=createactivity&altdoc=true&contact=true&cid='+escape(cid);break;case 3:document.location.href='?form=createnote&altdoc=true&contact=true&ccid='+escape(cid);break;case 4:document.location.href='?form=createmessage&altdoc=true&contact=true&ccid='+escape(cid);break;}}}
function updateRUBaseSize(t){if(t){var d=document.getElementById('base_size');if(d&&t.options[t.selectedIndex].text=='EACH'){d.value=1;}}}
function checkSelectedRecipeUnit(t){if(t){var d=document.getElementById('recipe_unit');if(d&&d.options[d.selectedIndex].text=='EACH'){alert('When the recipe unit is set to \'EACH\', the base size defaults to "1" and cannot be changed.');t.value=1;t.blur();return false;}}}
function checkPrepFormModified(f,i){if(f&&i){if(isFormModified(f)){if(confirm('You have made some changes to your selected prep items, but have not saved them.  Do you want to save these changes before leaving this page to create the new prep item?')){f.createPrepItem.value=1;f.submit();return;}}}
document.location.href='?form=createprepitem&id='+i;}
function updateSearchFormOptions(t){var d=document.getElementById('search_options');if(d&&t){switch(t.selectedIndex){case 1:d.innerHTML='<table class="search_options"><tr><td>Ordering Customer Name: </td><td><input name="param_customer~name_s_n_125" /></td></tr><tr><td>Store Location Name: </td><td><input name="param_restaurant~name_s_n_125" /></td></tr></table>';break;case 2:d.innerHTML='<table class="search_options"><tr><td>Company Name: </td><td><input name="param_company~name_s_n_125" /></td></tr><tr><td>Department Name: </td><td><input name="param_department~name_s_n_125" /></td></tr><tr><td>Email: </td><td><input name="param_email_s_n_125" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 3:d.innerHTML='<table class="search_options"><tr><td>First Name: </td><td><input name="param_contact~first~name_s_n_35" /></td></tr><tr><td>Last Name: </td><td><input name="param_contact~last~name_s_n_28" /></td></tr><tr><td>Email: </td><td><input name="param_email_s_n_125" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 4:d.innerHTML='<table class="search_options"><tr><td>Location Name: </td><td><input name="param_location~name_s_n_125" /></td></tr><tr><td>Phone: </td><td><input name="param_primary~phone_s_n_28" /></td></tr><tr><td>Any part of address: </td><td><input name="param_address_s_n_125" /></td></tr></table>';break;case 5:d.innerHTML='<table class="search_options"><tr><td>Display Name: </td><td><input name="param_event~name_s_n_125" /></td></tr><tr><td>Is Public: </td><td><input type="checkbox" name="param_is~public_b_n_1" value="1" /></td></tr></table>';break;case 6:d.innerHTML='<table class="search_options"><tr><td>Title: </td><td><input name="param_note~title_s_n_125" /></td></tr><tr><td>Message: </td><td><input name="param_message_s_n_125" /></td></tr></table>';break;default:d.innerHTML='';break;}}}
function successSIC2Codes(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('sic2_codes');if(d){d.innerHTML=xmlObj.responseText;}}}
function showSIC2Codes(division){var d=document.getElementById('sic4_codes');if(d)d.innerHTML='';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getsiccodes&division='+escape(division),onSuccess:successSIC2Codes,onFailure:errFunc});}
function successSIC4Codes(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('sic4_codes');if(d){d.innerHTML=xmlObj.responseText;}}}
function showSIC4Codes(code){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getsiccodes&sic2code='+escape(code),onSuccess:successSIC4Codes,onFailure:errFunc});}
function openHelpItem(ev,key){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Help Topic');selectBox.setContent('<div class="dialogue" style="height:100px;overflow:auto;"><div id="helpTopicContent"><img src="/web/images/default/busy.gif" />Loading Help Topic...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=helptopic&key='+escape(key),onSuccess:successHelpTopicAction,onFailure:errFunc});}
var dispositions=new Object();dispositions[-1]='Still To Do';dispositions[1]='Completed';dispositions[2]='Attempted';dispositions[3]='Left Message';function updateActivityCompletion(ev,aid,disposition){if(aid){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Update Activity Disposition');selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="disposition_status"><img src="/web/images/default/busy.gif" /> Updating...</div><div id="dispositionContent"><form action="" method="post"><div><div class="formLabel">Activity Disposition: </div><div class="formInput">'+dispositions[disposition]+' <input type="hidden" name="disposition" value="'+disposition+'" /></div><div class="formDivider"></div></div><div><div class="formLabel">Notes: </div><div class="formInput"><textarea name="notes" style="width:97%;height:70px;" cols="1" rows="1"></textarea></div><div class="clb"></div><div class="formDivider"></div></div><div><div class="formLabel">&nbsp;</div><div class="formInput"><input type="button" onclick="addNoteToActivity('+aid+', this.form.notes.value);" name="updatedisposition" value="Save Changes" /></div><div class="clb"></div><div class="formDivider"></div></div></form></div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,-1);new Ajax.Request('/'+IDString,{method:'get',parameters:'form=eventdetails&actid='+escape(aid)+'&disposition='+escape(disposition),onSuccess:successDispositionUpdate,onFailure:errFunc});}}
function addNoteToActivity(aid,note){if(aid&&!isBlank(note)){note=Trim(note);new Ajax.Request('/'+IDString,{method:'get',parameters:'form=eventdetails&actid='+escape(aid)+'&addnote='+escape(note),onSuccess:successDispositionUpdate,onFailure:errFunc});}}
function toggleActivityCompletion(aid){if(aid){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=eventdetails&toggleactivity='+escape(aid),onSuccess:successToggleActivity,onFailure:errFunc});}}
function successDispositionUpdate(xmlObj){if(xmlObj&&xmlObj.responseText){var d=document.getElementById('disposition_status');if(d)d.innerHTML=xmlObj.responseText;new Effect.Highlight(d);}}
function successToggleActivity(xmlObj){if(xmlObj&&xmlObj.responseText){tokens=xmlObj.responseText.split(/:/);if(tokens.length==2){var d=document.getElementById('act_state_'+tokens[0]);if(d)d.innerHTML=tokens[1];new Effect.Highlight(d);}}}
function showFullCalendarEvent(ev,eid,ic){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true,false);selectBox.setWidth(550);selectBox.setTitle('Item Details');selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="helpTopicContent"><img src="/web/images/default/busy.gif" />Loading Details...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);if(ic)new Ajax.Request('/'+IDString,{method:'post',parameters:'form=customereventdetails&eid='+escape(eid),onSuccess:successHelpTopicAction,onFailure:errFunc});else new Ajax.Request('/'+IDString,{method:'post',parameters:'form=eventdetails&eid='+escape(eid),onSuccess:successHelpTopicAction,onFailure:errFunc});}
function doAddonAssignment(ev,t,iid,aid,altBtn){if(t&&iid&&aid){t.parentNode.lastChild.innerHTML='<img src="/web/images/default/busy.gif" />Updating...';if(t.checked==true){var multiplicity=1;if(altBtn){var multiplicityElem=document.getElementById('multiplicity_'+aid);if(multiplicityElem)multiplicity=multiplicityElem.value;if(!isInteger(multiplicity))multiplicity=1;}
new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addaddontoitem&item='+escape(iid)+'&addon='+escape(aid)+'&multiplicity='+escape(multiplicity),onSuccess:successAssignAddonAction,onFailure:errFunc});}else{new Ajax.Request('/'+IDString,{method:'post',parameters:'form=removeaddonfromitem&item='+escape(iid)+'&addon='+escape(aid),onSuccess:successAssignAddonAction,onFailure:errFunc});}}}
function doAddonGroupAssignment(ev,t,gid,aid){if(t&&gid&&aid){t.parentNode.lastChild.innerHTML='<img src="/web/images/default/busy.gif" /> Updating...';if(t.checked==true){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addaddontogroup&group='+escape(gid)+'&addon='+escape(aid),onSuccess:successAssignAddonGroupAction,onFailure:errFunc});}else{new Ajax.Request('/'+IDString,{method:'post',parameters:'form=removeaddonfromgroup&group='+escape(gid)+'&addon='+escape(aid),onSuccess:successAssignAddonGroupAction,onFailure:errFunc});}}}
function getUnitOptionFromServer(t){if(t){var ti=t.options[t.selectedIndex].value;if(ti){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=getunitoptionlist&id='+escape(ti),onSuccess:successUnitOptionListAction,onFailure:errFunc});}}}
function saveAjaxForm(form_id,target_url,busy_msg_elem_id,successFunc,other_params){if(form_id&&target_url&&busy_msg_elem_id){var d=document.getElementById('busy_msg_elem_id');if(d)d.innerHTML='<img src="/web/images/default/busy.gif" />Updating...';var serializedForm=$(form_id).serialize();new Ajax.Request('/'+IDString,{method:'post',parameters:'form='+target_url+'&'+serializedForm+'&'+other_params,onSuccess:successFunc,onFailure:errFunc});}}
function hideInnerHTML(elem){if(elem){var e=document.getElementById(elem);if(e&&e.innerHTML)e.innerHTML='';}}
function successAssignAddonAction(xmlObj){if(xmlObj.responseText&&isInteger(Trim(xmlObj.responseText))){var e=document.getElementById('addon_msg_'+Trim(xmlObj.responseText));if(e){e.innerHTML='<strong> Changes Saved...</strong>';setTimeout('hideInnerHTML(\''+'addon_msg_'+Trim(xmlObj.responseText)+'\')',1500);}else{alert('Cannot find update element');}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successAssignAddonGroupAction(xmlObj){if(xmlObj.responseText&&isInteger(Trim(xmlObj.responseText))){var e=document.getElementById('addon_msg_'+Trim(xmlObj.responseText));if(e){e.innerHTML='<strong>&nbsp;Changes Saved...</strong>';setTimeout('hideInnerHTML(\''+'addon_msg_'+Trim(xmlObj.responseText)+'\')',1500);}else{alert('Cannot find update element');}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successUnitOptionListAction(xmlObj){if(xmlObj.responseText){var d=document.getElementById('menu_item_unit_select');if(d){select_innerHTML(d,xmlObj.responseText);}}}
function successLocOrderSendAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('locsendingcontent');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successLocContactInfoAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('loccontactcontent');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;}}else{alert('There was an error performing this action: '+xmlObj.responseText);}}
function successAssignRepAction(xmlObj){if(xmlObj.responseText&&xmlObj.responseText.indexOf('ERROR:')==-1){var e=document.getElementById('rep_change_status');if(e){e.innerHTML=xmlObj.responseText;e.parentNode.scrollTop=0;setTimeout('hideInnerHTML(\'rep_change_status\')',2000);}}else{alert('There was an error performing this action.');}}
function updateSalesRep(c,r){if(c&&r){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=assignsalesrep&cid='+escape(c)+'&rid='+escape(r),onSuccess:successAssignRepAction,onFailure:errFunc});}}
function showAddOnsForItem(ev,aid,iname){hideOpenDialogues();var d=document.getElementById('addoncontent');if(d){d.parentNode.removeChild(d);}
var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(400);selectBox.setTitle('Add Ons for '+iname);selectBox.setContent('<div class="dialogue" style="height:350px;overflow:auto;"><div id="addoncontent"><img src="/web/images/default/busy.gif" />Loading Add-Ons...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showaddonsforitem&id='+escape(aid),onSuccess:successAddOnForItemAction,onFailure:errFunc});}
function showAddOnsForGroup(ev,aid,iname){hideOpenDialogues();var d=document.getElementById('addoncontent');if(d){d.parentNode.removeChild(d);}
var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(400);selectBox.setTitle('Extras for the '+iname+' Group');selectBox.setContent('<div class="dialogue" style="height:350px;overflow:auto;"><div id="addoncontent"><img src="/web/images/default/busy.gif" />Loading Extras...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showaddonsforgroup&id='+escape(aid),onSuccess:successAddOnForGroupAction,onFailure:errFunc});}
function showEditOrderSendMethods(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change order sending methods for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:170px;overflow:auto;"><div id="locsendingcontent"><img src="/web/images/default/busy.gif" />Loading Form...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showordersendmethods&id='+escape(lid),onSuccess:successLocOrderSendAction,onFailure:errFunc});}
function showEditLocationAddress(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change contact info for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:200px;overflow:auto;"><div id="loccontactcontent"><img src="/web/images/default/busy.gif" />Loading Contact Info...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showlocationcontactinfo&id='+escape(lid),onSuccess:successLocContactInfoAction,onFailure:errFunc});}
function showEditLocationTimezone(ev,lid,lname){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Change time zone and sales tax for '+unescape(lname));selectBox.setContent('<div class="dialogue" style="height:120px;overflow:auto;"><div id="loccontactcontent"><img src="/web/images/default/busy.gif" />Loading...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showlocationtimezone&id='+escape(lid),onSuccess:successLocContactInfoAction,onFailure:errFunc});}
function changeMenu(t){if(t){document.location.href='?form=ordering&mid='+escape(t.options[t.selectedIndex].value);}}
function updateCartFromPageItem(item_unique_id){var errMsg='';if(item_unique_id){try{var prices=document.getElementsByClassName('itemPrice');var selectedPrice;if(prices&&prices.length){for(i=0;i<prices.length;i++){if(prices[i].checked==true){selectedPrice=prices[i].id.replace(/MENU_ITEM_PRICE_/,'');break;}}}
if(!isInteger(selectedPrice))errMsg+='\t - You must select a price!\n';var optionChoices=document.getElementsByClassName('optionChoice');var optionsOK=true;if(optionChoices&&optionChoices.length){for(i=0;i<optionChoices.length;i++){if(optionChoices[i].selectedIndex==0){optionsOK=false;break;}}}
if(!optionsOK)errMsg+='\t - Options in drop-down select-boxes are required!';if(!errMsg){var serializedForm=$('menuItemForm').serialize();document.getElementById('cartHeader').innerHTML='Updating My Cart <img src="/web/images/'+template+'/busy.gif" alt="Please Wait" />';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=update&item='+escape(item_unique_id)+'&'+serializedForm,onSuccess:successCartAction,onFailure:errFunc});}else{alert('Please correct the following errors before updating this item in your cart: \n\n'+errMsg);}}catch(ex){alert(ex.description);}}}
function addPageItemToCart(item_id){var errMsg='';var d=document.getElementById('min_type');var e=document.getElementById('min_required');var q=document.getElementById('quantity');if(d&&d.value==1&&e&&(q.value*1)<(e.value*1)){errMsg+='\t - You must select at least '+e.value+' to purchase this item.\n';}
if(item_id){try{var prices=document.getElementsByClassName('itemPrice');var selectedPrice;if(prices&&prices.length){for(i=0;i<prices.length;i++){if(prices[i].checked==true){selectedPrice=prices[i].id.replace(/MENU_ITEM_PRICE_/,'');break;}}}
if(!isInteger(selectedPrice))errMsg+='\t - You must select a price!\n';var optionChoices=document.getElementsByClassName('optionChoice');var optionsOK=true;if(optionChoices&&optionChoices.length){for(i=0;i<optionChoices.length;i++){if(optionChoices[i].selectedIndex==0){optionsOK=false;break;}}}
if(!optionsOK)errMsg+='\t - Options in drop-down select-boxes are required!';if(!errMsg){var serializedForm=$('menuItemForm').serialize();document.getElementById('cartHeader').innerHTML='Updating My Cart <img src="/web/images/'+template+'/busy.gif" alt="Please Wait" />';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=add&item='+escape(item_id)+'&'+serializedForm,onSuccess:successCartAction,onFailure:errFunc});}else{alert('Please correct the following errors before adding this item to your cart: \n\n'+errMsg);}}catch(ex){alert(ex.description);}}}
function successCartAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{if(formname=='checkout'){document.location.reload();return;}
document.getElementById('cartContainer').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successCalendarEventAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('calendarEventContent').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successHelpTopicAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('helpTopicContent').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function successRefreshCheckoutCart(xmlObj){if(xmlObj){document.getElementById('checkoutCart').innerHTML=xmlObj.responseText;}}
function successAddOnForItemAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('addoncontent').innerHTML=xmlObj.responseText;}catch(ex){showAlert(ex);}}}else{alert('NO XML OBJECT WAS RETURNED');}
adjustContainerHeight();}
function successAddOnForGroupAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('addoncontent').innerHTML=xmlObj.responseText;}catch(ex){showAlert(ex);}}}else{alert('NO XML OBJECT WAS RETURNED');}
adjustContainerHeight();}
function showAlert(ex){if(ex){if(ex.description)alert(ex.description);else if(ex.message)alert(ex.message);}}
function errFunc(){alert('AJAX Failure!');}
function removeCustomer(cid){if(confirm('Are you sure you want to remove this customer?')){}}
function removeCartItem(uuid){if(confirm('Are you sure you want to remove this item from your cart?')){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=remove&item='+escape(uuid),onSuccess:successCartAction,onFailure:errFunc});}}
function openEventWindow(ev,eid){hideOpenDialogues();if(eid>0){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Calendar Event');selectBox.setContent('<div class="dialogue"><div id="calendarEventContent"><img src="/web/images/default/busy.gif" />Loading Event Details...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY+document.documentElement.scrollTop);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=calendarevent&id='+escape(eid),onSuccess:successCalendarEventAction,onFailure:errFunc});}else{alert('Invalid Event Selected');}}
function successAddCalendarEventAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{if(xmlObj.responseText.charAt(0)=='!'){alert('There was a problem adding this event to the calendar: '+xmlObj.responseText.substr(1));}else{hideOpenDialogues();document.getElementById('calendar_container').innerHTML=xmlObj.responseText;}}catch(ex){alert(ex.message);}}}
adjustContainerHeight();}
function editCalendarEvent(ev,eid,title,desc,date){selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Edit Calendar Event');selectBox.setContent('<div class="dialogue"><form action="#" method="get"><table><tr><td>Event Title: </td><td><input type="text" name="event_title" id="event_title" value="'+title+'" /></td></tr><tr><td>Date and Time: </td><td><input type="text" name="event_date" id="event_date" value="'+date+'" /></td></tr><tr><td>Description: </td><td><textarea name="event_description" id="event_description" style="width:90%;height:30px;">'+desc+'</textarea></td></tr><tr><td>&nbsp;</td><td><input class="optionButton" type="button" name="addevent" id="addevent" style="width:180px;" value="Edit this Event" onclick="editEvent(this.form)" />&nbsp;<input type="button" class="optionButton" name="cancelAddEvent" id="cancelAddEvent" value="Cancel" onclick="hideOpenDialogues();" /></td></tr></table><input type="hidden" name="edit_event_id" value="'+eid+'" /></form></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,document.documentElement.scrollTop+60);}
function deleteCalendarEvent(ev,eid,title,desc,date){if(confirm('Are you sure you want to delete this calendar event?')){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=deletecalendarevent&view='+escape(viewType)+'&id='+escape(eid),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}}
function editEvent(f){if(f){var title=f.event_title.value;var desc=f.event_description.value;var date=f.event_date.value;var eid=f.edit_event_id.value;if(!isBlank(title)&&!isBlank(date)&&eid>0){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addcalendarevent&id='+escape(eid)+'&view='+escape(viewType)+'&name='+escape(title)+'&desc='+escape(desc)+'&date='+escape(date),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}else{alert('Title and Date are required.  Please complete both of these fields.');}}}
function updateCheckoutCart(){document.location.reload();}
function addEvent(f){if(f){var title=f.event_title.value;var desc=f.event_description.value;var date=f.event_date.value;if(!isBlank(title)&&!isBlank(date)){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=addcalendarevent&view='+escape(viewType)+'&name='+escape(title)+'&desc='+escape(desc)+'&date='+escape(date),onSuccess:successAddCalendarEventAction,onFailure:errFunc});}else{alert('Title and Date are required.  Please complete both of these fields.');}}}
function showAddEvent(ev,t){var val='';selectBox=new jt_DialogBox(true);selectBox.setWidth(370);selectBox.setTitle('Add a New Calendar Event');selectBox.setContent('<div class="dialogue"><form action="#" method="get"><table><tr><td>Event Title: </td><td><input type="text" name="event_title" id="event_title" value="'+val+'" /></td></tr><tr><td>Date and Time: </td><td><input type="text" name="event_date" id="event_date" value="" /></td></tr><tr><td>Description: </td><td><textarea name="event_description" id="event_description" style="width:90%;height:30px;"></textarea></td></tr><tr><td>&nbsp;</td><td><input class="optionButton" type="button" name="addevent" id="addevent" style="width:180px;" value="Add this Event" onclick="addEvent(this.form)" />&nbsp;<input type="button" class="optionButton" name="cancelAddEvent" id="cancelAddEvent" value="Cancel" onclick="hideOpenDialogues();" /></td></tr></table></form></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1,document.documentElement.scrollTop+60);}
var currentDialogues=new Array();function hideOpenDialogues(b){var box;while(box=currentDialogues.shift()){box.hide();setInnerHTML(box.contentArea,'');}}
function enableOptionChoices(t){if(t){var s=t.selectedIndex;if(s!=0){}}}
function filterCompanyItems(cid){var d1=document.getElementById('show_notes');var d2=document.getElementById('show_activities');var d3=document.getElementById('show_msgs');var d4=document.getElementById('show_orders');var d5=document.getElementById('show_history');var d6=document.getElementById('companyitems');if(d1&&d2&&d3&&d4&&d5&&d6){d6.src='?form=companyitems&cid='+cid+'&altdoc=true&n='+d1.checked+'&a='+d2.checked+'&o='+d4.checked+'&m='+d3.checked+'&h='+d5.checked;}}
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS";},searchString:function(data){for(var i=0;i<data.length;i++){var dataString=data[i].string;var dataProp=data[i].prop;this.versionSearchString=data[i].versionSearch||data[i].identity;if(dataString){if(dataString.indexOf(data[i].subString)!=-1)return data[i].identity;}else if(dataProp)return data[i].identity;}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);if(index==-1)return;return parseFloat(dataString.substring(index+this.versionSearchString.length+1));},dataBrowser:[{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]};var showBrowserWarn=false;BrowserDetect.init();if(BrowserDetect.browser=='Explorer'&&BrowserDetect.version<7){showBrowserWarn=true;}
function ajaxCreateFunc(request){if(request){request['timeoutId']=window.setTimeout(function(){if(callInProgress(request.transport)){request.transport.abort();showFailureMessage();if(request.options['onFailure']){request.options['onFailure'](request.transport,request.json);}}},10000);}}
function viewLargerImage(elem){}
function showFailureMessage(){alert("The remote server is unavailable.");}
function ajaxCompleteFunc(request){window.clearTimeout(request['timeoutId']);}
function purgeObj(obj){if(obj){for(i in obj){delete obj[i];}}}
Ajax.Responders.register({onCreate:ajaxCreateFunc,onComplete:ajaxCompleteFunc});function doBlinds(elemId){if(elemId){var d=document.getElementById(elemId);if(d){if(d.style.display=='none'){new Effect.BlindDown(elemId);var d2=document.getElementById('showLink');if(d2)d2.innerHTML='Click to Hide';}else{new Effect.BlindUp(elemId);var d2=document.getElementById('showLink');if(d2)d2.innerHTML='Click to Show';}}}}
function goToCRMCustomer(elem){if(elem){var cid=elem.firstChild.firstChild.nextSibling;document.location.href='?form=customerdetails&id='+Trim(cid.innerHTML)+'&show=';}}
function selectExistingCompanyIntoFormFields(elem){var d=document.getElementById('company_id');var e=document.getElementById('company_name');if(d&&e)selectCompanyForCustomer(elem.firstChild.innerHTML,elem.firstChild.nextSibling.innerHTML,'company_name','company_id','company_msg');else alert('Error: Cannot assign company at this time!');}
function prepareCRMSearch(field,qs){return qs+'&search_field=true&fieldname='+escape(field.name);}
function prepareCompanySearch(field,qs){if(true||Trim(field.value)==''){var d=document.getElementById('company_id');if(d){d.value=-1;var e=document.getElementById('company_msg');e.innerHTML='You have de-selected the company you previously selected.  A new company will be created for this contact unless you select an existing company from the list.';e.style.display='block';}}
return qs+'&search_field=true&fieldname=company_only';}
function selectCompanyForCustomer(cid,cname,cnameField,cidField,msgField){if(cid&&cname){var d=document.getElementById(cnameField);var e=document.getElementById(cidField);if(d&&e){d.value=cname;e.value=cid;d=document.getElementById(msgField);if(d){d.innerHTML='';d.style.display='none';}}else{alert('Error: Cannot assign company at this time!');}}}
var formStateTimer=null;function saveFormState(n,v){new Ajax.Request('/'+IDString,{method:'post',parameters:'form=saveformfields&'+n+'='+escape(v)});}
function scheduleFormStateSave(n,v){window.clearTimeout(formStateTimer);var func='saveFormState(\''+n+'\',\''+v+'\')';formStateTimer=window.setTimeout(func,200);}
function successLibraryAction(xmlObj){if(xmlObj){if(xmlObj.responseText){try{document.getElementById('librarycontent').innerHTML=xmlObj.responseText;}catch(ex){}}}
adjustContainerHeight();}
function doLibrarySelect(img,eid){if(eid){var d=document.getElementById(eid);var d2=document.getElementById(eid+'_preview');if(d&&d2){d.value=img;d2.innerHTML='<img style="width:150px;" src="/web/documents/library/'+IDString+'/'+img+'" alt="Library Image" />';alert('Image has been selected.');}}
hideOpenDialogues();}
function showMailingLibraryImages(ev,eid){var e=jt_fixE(ev);selectBox=new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Show Mailing Library Images');selectBox.setContent('<div class="dialogue" style="height:170px;overflow:auto;"><div id="librarycontent"><img src="/web/images/default/busy.gif" />Loading Data...</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(e.clientX,e.clientY);new Ajax.Request('/'+IDString,{method:'post',parameters:'form=showmailinglibrary&eid='+eid,onSuccess:successLibraryAction,onFailure:errFunc});}
function successReminders(xmlObj) {if(xmlObj && xmlObj.responseText) {var html = xmlObj.responseText;if(html.indexOf('</div>') != -1) {selectBox = new jt_DialogBox(true);selectBox.setWidth(450);selectBox.setTitle('Reminder!');selectBox.setContent('<div class="dialogue" style="height:300px;overflow:auto;"><div style="padding:8px;"><h3>Your Activity Reminders</h3>'+html+'</div></div>');currentDialogues.unshift(selectBox);selectBox.show();selectBox.moveTo(-1, document.documentElement.scrollTop + 60);	}}}
function checkForReminders() {new Ajax.Request('/'+IDString, {method:'post',parameters:'form=getreminders',onSuccess:successReminders});setTimeout('checkForReminders()', 30000);}
function hideDayEvents() {
	var ce = document.getElementById('calFullCell');
	if(ce) {
		new Effect.BlindUp(ce);	
	}
}
function showDayEvents(ev,elem_id) {
	var d = document.getElementById(elem_id);
	if(d) {
		var ce = document.getElementById('calFullCell');
		if(d.innerHTML && ce) {
			ce.style.display = 'none';
			var e=jt_fixE(ev);
			ce.style.top = (e.clientY + document.documentElement.scrollTop) + 'px';
			ce.style.left = e.clientX + 'px';
			var ceWidth = document.body.offsetWidth - e.clientX - 20;
			ce.style.width = ceWidth + 'px';
			var content = d.innerHTML.replace(/1px;/g, '10px;');
			ce.innerHTML = '<div class="calFullCellHeader"><a href="javascript:hideDayEvents();"><img src="/web/images/default/cancel.png" alt="Close" style="border:0;" /></a></div>' + content.replace(/100%;/g, Math.round(ceWidth - 1) + 'px;');
			new Effect.BlindDown(ce);
		}
	}
}

function emptyCart(){document.getElementById('cartHeader').innerHTML='Updating My Cart <img src="/web/images/'+template+'/busy.gif" alt="Please Wait" />';new Ajax.Request('/'+IDString,{method:'post',parameters:'form=ajaxcart&cartaction=empty',onSuccess:successCartAction,onFailure:errFunc});}
