if(typeof(dojo)!='undefined'){dojo.provide("MochiKit.Base");}
if(typeof(MochiKit)=='undefined'){MochiKit={};}
if(typeof(MochiKit.Base)=='undefined'){MochiKit.Base={};}
if(typeof(MochiKit.__export__)=="undefined"){MochiKit.__export__=(MochiKit.__compat__||(typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined'));}
MochiKit.Base.VERSION="1.4";MochiKit.Base.NAME="MochiKit.Base";MochiKit.Base.update=function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){self[k]=o[k];}}}
return self;};MochiKit.Base.update(MochiKit.Base,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]";},toString:function(){return this.__repr__();},camelize:function(selector){var arr=selector.split('-');var cc=arr[0];for(var i=1;i<arr.length;i++){cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);}
return cc;},counter:function(n){if(arguments.length===0){n=1;}
return function(){return n++;};},clone:function(obj){var me=arguments.callee;if(arguments.length==1){me.prototype=obj;return new me();}},_deps:function(module,deps){if(!(module in MochiKit)){MochiKit[module]={};}
if(typeof(dojo)!='undefined'){dojo.provide('MochiKit.'+module);}
for(var i=0;i<deps.length;i++){if(typeof(dojo)!='undefined'){dojo.require('MochiKit.'+deps[i]);}
if(typeof(JSAN)!='undefined'){JSAN.use('MochiKit.'+deps[i],[]);}
if(!(deps[i]in MochiKit)){throw'MochiKit.'+module+' depends on MochiKit.'+deps[i]+'!'}}},_flattenArray:function(res,lst){for(var i=0;i<lst.length;i++){var o=lst[i];if(o instanceof Array){arguments.callee(res,o);}else{res.push(o);}}
return res;},flattenArray:function(lst){return MochiKit.Base._flattenArray([],lst);},flattenArguments:function(lst){var res=[];var m=MochiKit.Base;var args=m.extend(null,arguments);while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){for(var i=o.length-1;i>=0;i--){args.unshift(o[i]);}}else{res.push(o);}}
return res;},extend:function(self,obj,skip){if(!skip){skip=0;}
if(obj){var l=obj.length;if(typeof(l)!='number'){if(typeof(MochiKit.Iter)!="undefined"){obj=MochiKit.Iter.list(obj);l=obj.length;}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(!self){self=[];}
for(var i=skip;i<l;i++){self.push(obj[i]);}}
return self;},updatetree:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){var v=o[k];if(typeof(self[k])=='object'&&typeof(v)=='object'){arguments.callee(self[k],v);}else{self[k]=v;}}}}
return self;},setdefault:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var k in o){if(!(k in self)){self[k]=o[k];}}}
return self;},keys:function(obj){var rval=[];for(var prop in obj){rval.push(prop);}
return rval;},values:function(obj){var rval=[];for(var prop in obj){rval.push(obj[prop]);}
return rval;},items:function(obj){var rval=[];var e;for(var prop in obj){var v;try{v=obj[prop];}catch(e){continue;}
rval.push([prop,v]);}
return rval;},_newNamedError:function(module,name,func){func.prototype=new MochiKit.Base.NamedError(module.NAME+"."+name);module[name]=func;},operator:{truth:function(a){return!!a;},lognot:function(a){return!a;},identity:function(a){return a;},not:function(a){return~a;},neg:function(a){return-a;},add:function(a,b){return a+b;},sub:function(a,b){return a-b;},div:function(a,b){return a/b;},mod:function(a,b){return a%b;},mul:function(a,b){return a*b;},and:function(a,b){return a&b;},or:function(a,b){return a|b;},xor:function(a,b){return a^b;},lshift:function(a,b){return a<<b;},rshift:function(a,b){return a>>b;},zrshift:function(a,b){return a>>>b;},eq:function(a,b){return a==b;},ne:function(a,b){return a!=b;},gt:function(a,b){return a>b;},ge:function(a,b){return a>=b;},lt:function(a,b){return a<b;},le:function(a,b){return a<=b;},seq:function(a,b){return a===b;},sne:function(a,b){return a!==b;},ceq:function(a,b){return MochiKit.Base.compare(a,b)===0;},cne:function(a,b){return MochiKit.Base.compare(a,b)!==0;},cgt:function(a,b){return MochiKit.Base.compare(a,b)==1;},cge:function(a,b){return MochiKit.Base.compare(a,b)!=-1;},clt:function(a,b){return MochiKit.Base.compare(a,b)==-1;},cle:function(a,b){return MochiKit.Base.compare(a,b)!=1;},logand:function(a,b){return a&&b;},logor:function(a,b){return a||b;},contains:function(a,b){return b in a;}},forwardCall:function(func){return function(){return this[func].apply(this,arguments);};},itemgetter:function(func){return function(arg){return arg[func];};},typeMatcher:function(){var types={};for(var i=0;i<arguments.length;i++){var typ=arguments[i];types[typ]=typ;}
return function(){for(var i=0;i<arguments.length;i++){if(!(typeof(arguments[i])in types)){return false;}}
return true;};},isNull:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==null){return false;}}
return true;},isUndefinedOrNull:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(!(typeof(o)=='undefined'||o===null)){return false;}}
return true;},isEmpty:function(obj){return!MochiKit.Base.isNotEmpty.apply(this,arguments);},isNotEmpty:function(obj){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(!(o&&o.length)){return false;}}
return true;},isArrayLike:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];var typ=typeof(o);if((typ!='object'&&!(typ=='function'&&typeof(o.item)=='function'))||o===null||typeof(o.length)!='number'||o.nodeType===3||o.nodeType===4){return false;}}
return true;},isDateLike:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!="object"||o===null||typeof(o.getTime)!='function'){return false;}}
return true;},xmap:function(fn){if(fn===null){return MochiKit.Base.extend(null,arguments,1);}
var rval=[];for(var i=1;i<arguments.length;i++){rval.push(fn(arguments[i]));}
return rval;},map:function(fn,lst){var m=MochiKit.Base;var itr=MochiKit.Iter;var isArrayLike=m.isArrayLike;if(arguments.length<=2){if(!isArrayLike(lst)){if(itr){lst=itr.list(lst);if(fn===null){return lst;}}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(fn===null){return m.extend(null,lst);}
var rval=[];for(var i=0;i<lst.length;i++){rval.push(fn(lst[i]));}
return rval;}else{if(fn===null){fn=Array;}
var length=null;for(i=1;i<arguments.length;i++){if(!isArrayLike(arguments[i])){if(itr){return itr.list(itr.imap.apply(null,arguments));}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
var l=arguments[i].length;if(length===null||length>l){length=l;}}
rval=[];for(i=0;i<length;i++){var args=[];for(var j=1;j<arguments.length;j++){args.push(arguments[j][i]);}
rval.push(fn.apply(this,args));}
return rval;}},xfilter:function(fn){var rval=[];if(fn===null){fn=MochiKit.Base.operator.truth;}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(fn(o)){rval.push(o);}}
return rval;},filter:function(fn,lst,self){var rval=[];var m=MochiKit.Base;if(!m.isArrayLike(lst)){if(MochiKit.Iter){lst=MochiKit.Iter.list(lst);}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(fn===null){fn=m.operator.truth;}
if(typeof(Array.prototype.filter)=='function'){return Array.prototype.filter.call(lst,fn,self);}else if(typeof(self)=='undefined'||self===null){for(var i=0;i<lst.length;i++){var o=lst[i];if(fn(o)){rval.push(o);}}}else{for(i=0;i<lst.length;i++){o=lst[i];if(fn.call(self,o)){rval.push(o);}}}
return rval;},_wrapDumbFunction:function(func){return function(){switch(arguments.length){case 0:return func();case 1:return func(arguments[0]);case 2:return func(arguments[0],arguments[1]);case 3:return func(arguments[0],arguments[1],arguments[2]);}
var args=[];for(var i=0;i<arguments.length;i++){args.push("arguments["+i+"]");}
return eval("(func("+args.join(",")+"))");};},methodcaller:function(func){var args=MochiKit.Base.extend(null,arguments,1);if(typeof(func)=="function"){return function(obj){return func.apply(obj,args);};}else{return function(obj){return obj[func].apply(obj,args);};}},method:function(self,func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,self],arguments,2));},compose:function(f1,f2){var fnlist=[];var m=MochiKit.Base;if(arguments.length===0){throw new TypeError("compose() requires at least one argument");}
for(var i=0;i<arguments.length;i++){var fn=arguments[i];if(typeof(fn)!="function"){throw new TypeError(m.repr(fn)+" is not a function");}
fnlist.push(fn);}
return function(){var args=arguments;for(var i=fnlist.length-1;i>=0;i--){args=[fnlist[i].apply(this,args)];}
return args[0];};},bind:function(func,self){if(typeof(func)=="string"){func=self[func];}
var im_func=func.im_func;var im_preargs=func.im_preargs;var im_self=func.im_self;var m=MochiKit.Base;if(typeof(func)=="function"&&typeof(func.apply)=="undefined"){func=m._wrapDumbFunction(func);}
if(typeof(im_func)!='function'){im_func=func;}
if(typeof(self)!='undefined'){im_self=self;}
if(typeof(im_preargs)=='undefined'){im_preargs=[];}else{im_preargs=im_preargs.slice();}
m.extend(im_preargs,arguments,2);var newfunc=function(){var args=arguments;var me=arguments.callee;if(me.im_preargs.length>0){args=m.concat(me.im_preargs,args);}
var self=me.im_self;if(!self){self=this;}
return me.im_func.apply(self,args);};newfunc.im_self=im_self;newfunc.im_func=im_func;newfunc.im_preargs=im_preargs;return newfunc;},bindMethods:function(self){var bind=MochiKit.Base.bind;for(var k in self){var func=self[k];if(typeof(func)=='function'){self[k]=bind(func,self);}}},registerComparator:function(name,check,comparator,override){MochiKit.Base.comparatorRegistry.register(name,check,comparator,override);},_primitives:{'boolean':true,'string':true,'number':true},compare:function(a,b){if(a==b){return 0;}
var aIsNull=(typeof(a)=='undefined'||a===null);var bIsNull=(typeof(b)=='undefined'||b===null);if(aIsNull&&bIsNull){return 0;}else if(aIsNull){return-1;}else if(bIsNull){return 1;}
var m=MochiKit.Base;var prim=m._primitives;if(!(typeof(a)in prim&&typeof(b)in prim)){try{return m.comparatorRegistry.match(a,b);}catch(e){if(e!=m.NotFound){throw e;}}}
if(a<b){return-1;}else if(a>b){return 1;}
var repr=m.repr;throw new TypeError(repr(a)+" and "+repr(b)+" can not be compared");},compareDateLike:function(a,b){return MochiKit.Base.compare(a.getTime(),b.getTime());},compareArrayLike:function(a,b){var compare=MochiKit.Base.compare;var count=a.length;var rval=0;if(count>b.length){rval=1;count=b.length;}else if(count<b.length){rval=-1;}
for(var i=0;i<count;i++){var cmp=compare(a[i],b[i]);if(cmp){return cmp;}}
return rval;},registerRepr:function(name,check,wrap,override){MochiKit.Base.reprRegistry.register(name,check,wrap,override);},repr:function(o){if(typeof(o)=="undefined"){return"undefined";}else if(o===null){return"null";}
try{if(typeof(o.__repr__)=='function'){return o.__repr__();}else if(typeof(o.repr)=='function'&&o.repr!=arguments.callee){return o.repr();}
return MochiKit.Base.reprRegistry.match(o);}catch(e){if(typeof(o.NAME)=='string'&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){return o.NAME;}}
try{var ostring=(o+"");}catch(e){return"["+typeof(o)+"]";}
if(typeof(o)=="function"){ostring=ostring.replace(/^\s+/,"").replace(/\s+/g," ");ostring=ostring.replace(/,(\S)/,", $1");var idx=ostring.indexOf("{");if(idx!=-1){ostring=ostring.substr(0,idx)+"{...}";}}
return ostring;},reprArrayLike:function(o){var m=MochiKit.Base;return"["+m.map(m.repr,o).join(", ")+"]";},reprString:function(o){return('"'+o.replace(/(["\\])/g,'\\$1')+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\v]/g,"\\v").replace(/[\r]/g,"\\r");},reprNumber:function(o){return o+"";},registerJSON:function(name,check,wrap,override){MochiKit.Base.jsonRegistry.register(name,check,wrap,override);},evalJSON:function(){return eval("("+MochiKit.Base._filterJSON(arguments[0])+")");},_filterJSON:function(s){var m=s.match(/^\s*\/\*(.*)\*\/\s*$/);if(m){return m[1];}
return s;},serializeJSON:function(o){if(!o){return"";}
var objtype=typeof(o);if(objtype=="number"||objtype=="boolean"){return o+"";}else if(o===null){return"null";}else if(objtype=="string"){var res="";for(var i=0;i<o.length;i++){var c=o.charAt(i);if(c=='\"'){res+='\\"';}else if(c=='\\'){res+='\\\\';}else if(c=='\b'){res+='\\b';}else if(c=='\f'){res+='\\f';}else if(c=='\n'){res+='\\n';}else if(c=='\r'){res+='\\r';}else if(c=='\t'){res+='\\t';}else if(o.charCodeAt(i)<=0x1F){var hex=o.charCodeAt(i).toString(16);if(hex.length<2){hex='0'+hex;}
res+='\\u00'+hex.toUpperCase();}else{res+=c;}}
return'"'+res+'"';}
var me=arguments.callee;var newObj;if(typeof(o.__json__)=="function"){newObj=o.__json__();if(o!==newObj){return me(newObj);}}
if(typeof(o.json)=="function"){newObj=o.json();if(o!==newObj){return me(newObj);}}
if(objtype!="function"&&typeof(o.length)=="number"){var res=[];for(var i=0;i<o.length;i++){var val=me(o[i]);if(typeof(val)!="string"){continue;}
res.push(val);}
return"["+res.join(", ")+"]";}
var m=MochiKit.Base;try{newObj=m.jsonRegistry.match(o);if(o!==newObj){return me(newObj);}}catch(e){if(e!=m.NotFound){throw e;}}
if(objtype=="undefined"){throw new TypeError("undefined can not be serialized as JSON");}
if(objtype=="function"){return null;}
res=[];for(var k in o){var useKey;if(typeof(k)=="number"){useKey='"'+k+'"';}else if(typeof(k)=="string"){useKey=me(k);}else{continue;}
val=me(o[k]);if(typeof(val)!="string"){continue;}
res.push(useKey+":"+val);}
return"{"+res.join(", ")+"}";},objEqual:function(a,b){return(MochiKit.Base.compare(a,b)===0);},arrayEqual:function(self,arr){if(self.length!=arr.length){return false;}
return(MochiKit.Base.compare(self,arr)===0);},concat:function(){var rval=[];var extend=MochiKit.Base.extend;for(var i=0;i<arguments.length;i++){extend(rval,arguments[i]);}
return rval;},keyComparator:function(key){var m=MochiKit.Base;var compare=m.compare;if(arguments.length==1){return function(a,b){return compare(a[key],b[key]);};}
var compareKeys=m.extend(null,arguments);return function(a,b){var rval=0;for(var i=0;(rval===0)&&(i<compareKeys.length);i++){var key=compareKeys[i];rval=compare(a[key],b[key]);}
return rval;};},reverseKeyComparator:function(key){var comparator=MochiKit.Base.keyComparator.apply(this,arguments);return function(a,b){return comparator(b,a);};},partial:function(func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,undefined],arguments,1));},listMinMax:function(which,lst){if(lst.length===0){return null;}
var cur=lst[0];var compare=MochiKit.Base.compare;for(var i=1;i<lst.length;i++){var o=lst[i];if(compare(o,cur)==which){cur=o;}}
return cur;},objMax:function(){return MochiKit.Base.listMinMax(1,arguments);},objMin:function(){return MochiKit.Base.listMinMax(-1,arguments);},findIdentical:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
for(var i=start;i<end;i++){if(lst[i]===value){return i;}}
return-1;},mean:function(){var sum=0;var m=MochiKit.Base;var args=m.extend(null,arguments);var count=args.length;while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){count+=o.length-1;for(var i=o.length-1;i>=0;i--){sum+=o[i];}}else{sum+=o;}}
if(count<=0){throw new TypeError('mean() requires at least one argument');}
return sum/count;},median:function(){var data=MochiKit.Base.flattenArguments(arguments);if(data.length===0){throw new TypeError('median() requires at least one argument');}
data.sort(compare);if(data.length%2==0){var upper=data.length/2;return(data[upper]+data[upper-1])/2;}else{return data[(data.length-1)/2];}},findValue:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
var cmp=MochiKit.Base.compare;for(var i=start;i<end;i++){if(cmp(lst[i],value)===0){return i;}}
return-1;},nodeWalk:function(node,visitor){var nodes=[node];var extend=MochiKit.Base.extend;while(nodes.length){var res=visitor(nodes.shift());if(res){extend(nodes,res);}}},nameFunctions:function(namespace){var base=namespace.NAME;if(typeof(base)=='undefined'){base='';}else{base=base+'.';}
for(var name in namespace){var o=namespace[name];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+name;}catch(e){}}}},queryString:function(names,values){if(typeof(MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof(names)=="string"||(typeof(names.nodeType)!="undefined"&&names.nodeType>0))){var kv=MochiKit.DOM.formContents(names);names=kv[0];values=kv[1];}else if(arguments.length==1){if(typeof(names.length)=="number"&&names.length==2){return arguments.callee(names[0],names[1]);}
var o=names;names=[];values=[];for(var k in o){var v=o[k];if(typeof(v)=="function"){continue;}else if(MochiKit.Base.isArrayLike(v)){for(var i=0;i<v.length;i++){names.push(k);values.push(v[i]);}}else{names.push(k);values.push(v);}}}
var rval=[];var len=Math.min(names.length,values.length);var urlEncode=MochiKit.Base.urlEncode;for(var i=0;i<len;i++){v=values[i];if(typeof(v)!='undefined'&&v!==null){rval.push(urlEncode(names[i])+"="+urlEncode(v));}}
return rval.join("&");},parseQueryString:function(encodedString,useArrays){var qstr=(encodedString.charAt(0)=="?")?encodedString.substring(1):encodedString;var pairs=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/);var o={};var decode;if(typeof(decodeURIComponent)!="undefined"){decode=decodeURIComponent;}else{decode=unescape;}
if(useArrays){for(var i=0;i<pairs.length;i++){var pair=pairs[i].split("=");var name=decode(pair.shift());if(!name){continue;}
var arr=o[name];if(!(arr instanceof Array)){arr=[];o[name]=arr;}
arr.push(decode(pair.join("=")));}}else{for(i=0;i<pairs.length;i++){pair=pairs[i].split("=");var name=pair.shift();if(!name){continue;}
o[decode(name)]=decode(pair.join("="));}}
return o;}});MochiKit.Base.AdapterRegistry=function(){this.pairs=[];};MochiKit.Base.AdapterRegistry.prototype={register:function(name,check,wrap,override){if(override){this.pairs.unshift([name,check,wrap]);}else{this.pairs.push([name,check,wrap]);}},match:function(){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[1].apply(this,arguments)){return pair[2].apply(this,arguments);}}
throw MochiKit.Base.NotFound;},unregister:function(name){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[0]==name){this.pairs.splice(i,1);return true;}}
return false;}};MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"];MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];MochiKit.Base._exportSymbols=function(globals,module){if(!MochiKit.__export__){return;}
var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}};MochiKit.Base.__new__=function(){var m=this;m.noop=m.operator.identity;m.forward=m.forwardCall;m.find=m.findValue;if(typeof(encodeURIComponent)!="undefined"){m.urlEncode=function(unencoded){return encodeURIComponent(unencoded).replace(/\'/g,'%27');};}else{m.urlEncode=function(unencoded){return escape(unencoded).replace(/\+/g,'%2B').replace(/\"/g,'%22').rval.replace(/\'/g,'%27');};}
m.NamedError=function(name){this.message=name;this.name=name;};m.NamedError.prototype=new Error();m.update(m.NamedError.prototype,{repr:function(){if(this.message&&this.message!=this.name){return this.name+"("+m.repr(this.message)+")";}else{return this.name+"()";}},toString:m.forwardCall("repr")});m.NotFound=new m.NamedError("MochiKit.Base.NotFound");m.listMax=m.partial(m.listMinMax,1);m.listMin=m.partial(m.listMinMax,-1);m.isCallable=m.typeMatcher('function');m.isUndefined=m.typeMatcher('undefined');m.merge=m.partial(m.update,null);m.zip=m.partial(m.map,null);m.average=m.mean;m.comparatorRegistry=new m.AdapterRegistry();m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);m.reprRegistry=new m.AdapterRegistry();m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);m.registerRepr("string",m.typeMatcher("string"),m.reprString);m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);m.jsonRegistry=new m.AdapterRegistry();var all=m.concat(m.EXPORT,m.EXPORT_OK);m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};m.nameFunctions(this);};MochiKit.Base.__new__();if(MochiKit.__export__){compare=MochiKit.Base.compare;compose=MochiKit.Base.compose;serializeJSON=MochiKit.Base.serializeJSON;mean=MochiKit.Base.mean;median=MochiKit.Base.median;}
MochiKit.Base._exportSymbols(this,MochiKit.Base);;MochiKit.Base._deps('Iter',['Base']);MochiKit.Iter.NAME="MochiKit.Iter";MochiKit.Iter.VERSION="1.4";MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]";},toString:function(){return this.__repr__();},registerIteratorFactory:function(name,check,iterfactory,override){MochiKit.Iter.iteratorRegistry.register(name,check,iterfactory,override);},iter:function(iterable,sentinel){var self=MochiKit.Iter;if(arguments.length==2){return self.takewhile(function(a){return a!=sentinel;},iterable);}
if(typeof(iterable.next)=='function'){return iterable;}else if(typeof(iterable.iter)=='function'){return iterable.iter();}
try{return self.iteratorRegistry.match(iterable);}catch(e){var m=MochiKit.Base;if(e==m.NotFound){e=new TypeError(typeof(iterable)+": "+m.repr(iterable)+" is not iterable");}
throw e;}},count:function(n){if(!n){n=0;}
var m=MochiKit.Base;return{repr:function(){return"count("+n+")";},toString:m.forwardCall("repr"),next:m.counter(n)};},cycle:function(p){var self=MochiKit.Iter;var m=MochiKit.Base;var lst=[];var iterator=self.iter(p);return{repr:function(){return"cycle(...)";},toString:m.forwardCall("repr"),next:function(){try{var rval=iterator.next();lst.push(rval);return rval;}catch(e){if(e!=self.StopIteration){throw e;}
if(lst.length===0){this.next=function(){throw self.StopIteration;};}else{var i=-1;this.next=function(){i=(i+1)%lst.length;return lst[i];};}
return this.next();}}};},repeat:function(elem,n){var m=MochiKit.Base;if(typeof(n)=='undefined'){return{repr:function(){return"repeat("+m.repr(elem)+")";},toString:m.forwardCall("repr"),next:function(){return elem;}};}
return{repr:function(){return"repeat("+m.repr(elem)+", "+n+")";},toString:m.forwardCall("repr"),next:function(){if(n<=0){throw MochiKit.Iter.StopIteration;}
n-=1;return elem;}};},next:function(iterator){return iterator.next();},izip:function(p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var next=self.next;var iterables=m.map(self.iter,arguments);return{repr:function(){return"izip(...)";},toString:m.forwardCall("repr"),next:function(){return m.map(next,iterables);}};},ifilter:function(pred,seq){var m=MochiKit.Base;seq=MochiKit.Iter.iter(seq);if(pred===null){pred=m.operator.truth;}
return{repr:function(){return"ifilter(...)";},toString:m.forwardCall("repr"),next:function(){while(true){var rval=seq.next();if(pred(rval)){return rval;}}
return undefined;}};},ifilterfalse:function(pred,seq){var m=MochiKit.Base;seq=MochiKit.Iter.iter(seq);if(pred===null){pred=m.operator.truth;}
return{repr:function(){return"ifilterfalse(...)";},toString:m.forwardCall("repr"),next:function(){while(true){var rval=seq.next();if(!pred(rval)){return rval;}}
return undefined;}};},islice:function(seq){var self=MochiKit.Iter;var m=MochiKit.Base;seq=self.iter(seq);var start=0;var stop=0;var step=1;var i=-1;if(arguments.length==2){stop=arguments[1];}else if(arguments.length==3){start=arguments[1];stop=arguments[2];}else{start=arguments[1];stop=arguments[2];step=arguments[3];}
return{repr:function(){return"islice("+["...",start,stop,step].join(", ")+")";},toString:m.forwardCall("repr"),next:function(){var rval;while(i<start){rval=seq.next();i++;}
if(start>=stop){throw self.StopIteration;}
start+=step;return rval;}};},imap:function(fun,p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var iterables=m.map(self.iter,m.extend(null,arguments,1));var map=m.map;var next=self.next;return{repr:function(){return"imap(...)";},toString:m.forwardCall("repr"),next:function(){return fun.apply(this,map(next,iterables));}};},applymap:function(fun,seq,self){seq=MochiKit.Iter.iter(seq);var m=MochiKit.Base;return{repr:function(){return"applymap(...)";},toString:m.forwardCall("repr"),next:function(){return fun.apply(self,seq.next());}};},chain:function(p,q){var self=MochiKit.Iter;var m=MochiKit.Base;if(arguments.length==1){return self.iter(arguments[0]);}
var argiter=m.map(self.iter,arguments);return{repr:function(){return"chain(...)";},toString:m.forwardCall("repr"),next:function(){while(argiter.length>1){try{var result=argiter[0].next();return result;}catch(e){if(e!=self.StopIteration){throw e;}
argiter.shift();var result=argiter[0].next();return result;}}
if(argiter.length==1){var arg=argiter.shift();this.next=m.bind("next",arg);return this.next();}
throw self.StopIteration;}};},takewhile:function(pred,seq){var self=MochiKit.Iter;seq=self.iter(seq);return{repr:function(){return"takewhile(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){var rval=seq.next();if(!pred(rval)){this.next=function(){throw self.StopIteration;};this.next();}
return rval;}};},dropwhile:function(pred,seq){seq=MochiKit.Iter.iter(seq);var m=MochiKit.Base;var bind=m.bind;return{"repr":function(){return"dropwhile(...)";},"toString":m.forwardCall("repr"),"next":function(){while(true){var rval=seq.next();if(!pred(rval)){break;}}
this.next=bind("next",seq);return rval;}};},_tee:function(ident,sync,iterable){sync.pos[ident]=-1;var m=MochiKit.Base;var listMin=m.listMin;return{repr:function(){return"tee("+ident+", ...)";},toString:m.forwardCall("repr"),next:function(){var rval;var i=sync.pos[ident];if(i==sync.max){rval=iterable.next();sync.deque.push(rval);sync.max+=1;sync.pos[ident]+=1;}else{rval=sync.deque[i-sync.min];sync.pos[ident]+=1;if(i==sync.min&&listMin(sync.pos)!=sync.min){sync.min+=1;sync.deque.shift();}}
return rval;}};},tee:function(iterable,n){var rval=[];var sync={"pos":[],"deque":[],"max":-1,"min":-1};if(arguments.length==1||typeof(n)=="undefined"||n===null){n=2;}
var self=MochiKit.Iter;iterable=self.iter(iterable);var _tee=self._tee;for(var i=0;i<n;i++){rval.push(_tee(i,sync,iterable));}
return rval;},list:function(iterable){var rval;if(iterable instanceof Array){return iterable.slice();}
if(typeof(iterable)=="function"&&!(iterable instanceof Function)&&typeof(iterable.length)=='number'){rval=[];for(var i=0;i<iterable.length;i++){rval.push(iterable[i]);}
return rval;}
var self=MochiKit.Iter;iterable=self.iter(iterable);var rval=[];var a_val;try{while(true){a_val=iterable.next();rval.push(a_val);}}catch(e){if(e!=self.StopIteration){throw e;}
return rval;}
return undefined;},reduce:function(fn,iterable,initial){var i=0;var x=initial;var self=MochiKit.Iter;iterable=self.iter(iterable);if(arguments.length<3){try{x=iterable.next();}catch(e){if(e==self.StopIteration){e=new TypeError("reduce() of empty sequence with no initial value");}
throw e;}
i++;}
try{while(true){x=fn(x,iterable.next());}}catch(e){if(e!=self.StopIteration){throw e;}}
return x;},range:function(){var start=0;var stop=0;var step=1;if(arguments.length==1){stop=arguments[0];}else if(arguments.length==2){start=arguments[0];stop=arguments[1];}else if(arguments.length==3){start=arguments[0];stop=arguments[1];step=arguments[2];}else{throw new TypeError("range() takes 1, 2, or 3 arguments!");}
if(step===0){throw new TypeError("range() step must not be 0");}
return{next:function(){if((step>0&&start>=stop)||(step<0&&start<=stop)){throw MochiKit.Iter.StopIteration;}
var rval=start;start+=step;return rval;},repr:function(){return"range("+[start,stop,step].join(", ")+")";},toString:MochiKit.Base.forwardCall("repr")};},sum:function(iterable,start){if(typeof(start)=="undefined"||start===null){start=0;}
var x=start;var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){x+=iterable.next();}}catch(e){if(e!=self.StopIteration){throw e;}}
return x;},exhaust:function(iterable){var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){iterable.next();}}catch(e){if(e!=self.StopIteration){throw e;}}},forEach:function(iterable,func,self){var m=MochiKit.Base;if(arguments.length>2){func=m.bind(func,self);}
if(m.isArrayLike(iterable)){try{for(var i=0;i<iterable.length;i++){func(iterable[i]);}}catch(e){if(e!=MochiKit.Iter.StopIteration){throw e;}}}else{self=MochiKit.Iter;self.exhaust(self.imap(func,iterable));}},every:function(iterable,func){var self=MochiKit.Iter;try{self.ifilterfalse(func,iterable).next();return false;}catch(e){if(e!=self.StopIteration){throw e;}
return true;}},sorted:function(iterable,cmp){var rval=MochiKit.Iter.list(iterable);if(arguments.length==1){cmp=MochiKit.Base.compare;}
rval.sort(cmp);return rval;},reversed:function(iterable){var rval=MochiKit.Iter.list(iterable);rval.reverse();return rval;},some:function(iterable,func){var self=MochiKit.Iter;try{self.ifilter(func,iterable).next();return true;}catch(e){if(e!=self.StopIteration){throw e;}
return false;}},iextend:function(lst,iterable){if(MochiKit.Base.isArrayLike(iterable)){for(var i=0;i<iterable.length;i++){lst.push(iterable[i]);}}else{var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){lst.push(iterable.next());}}catch(e){if(e!=self.StopIteration){throw e;}}}
return lst;},groupby:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity;}
iterable=self.iter(iterable);var pk=undefined;var k=undefined;var v;function fetch(){v=iterable.next();k=keyfunc(v);};function eat(){var ret=v;v=undefined;return ret;};var first=true;var compare=m.compare;return{repr:function(){return"groupby(...)";},next:function(){while(compare(k,pk)===0){fetch();if(first){first=false;break;}}
pk=k;return[k,{next:function(){if(v==undefined){fetch();}
if(compare(k,pk)!==0){throw self.StopIteration;}
return eat();}}];}};},groupby_as_array:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity;}
iterable=self.iter(iterable);var result=[];var first=true;var prev_key;var compare=m.compare;while(true){try{var value=iterable.next();var key=keyfunc(value);}catch(e){if(e==self.StopIteration){break;}
throw e;}
if(first||compare(key,prev_key)!==0){var values=[];result.push([key,values]);}
values.push(value);first=false;prev_key=key;}
return result;},arrayLikeIter:function(iterable){var i=0;return{repr:function(){return"arrayLikeIter(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){if(i>=iterable.length){throw MochiKit.Iter.StopIteration;}
return iterable[i++];}};},hasIterateNext:function(iterable){return(iterable&&typeof(iterable.iterateNext)=="function");},iterateNextIter:function(iterable){return{repr:function(){return"iterateNextIter(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){var rval=iterable.iterateNext();if(rval===null||rval===undefined){throw MochiKit.Iter.StopIteration;}
return rval;}};}});MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter"];MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"];MochiKit.Iter.__new__=function(){var m=MochiKit.Base;if(typeof(StopIteration)!="undefined"){this.StopIteration=StopIteration;}else{this.StopIteration=new m.NamedError("StopIteration");}
this.iteratorRegistry=new m.AdapterRegistry();this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter);this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Iter.__new__();if(MochiKit.__export__){reduce=MochiKit.Iter.reduce;}
MochiKit.Base._exportSymbols(this,MochiKit.Iter);;MochiKit.Base._deps('Logging',['Base']);MochiKit.Logging.NAME="MochiKit.Logging";MochiKit.Logging.VERSION="1.4";MochiKit.Logging.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Logging.toString=function(){return this.__repr__();};MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"];MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"];MochiKit.Logging.LogMessage=function(num,level,info){this.num=num;this.level=level;this.info=info;this.timestamp=new Date();};MochiKit.Logging.LogMessage.prototype={repr:function(){var m=MochiKit.Base;return'LogMessage('+
m.map(m.repr,[this.num,this.level,this.info]).join(', ')+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(minLevel){var self=MochiKit.Logging;if(typeof(minLevel)=='string'){minLevel=self.LogLevel[minLevel];}
return function(msg){var msgLevel=msg.level;if(typeof(msgLevel)=='string'){msgLevel=self.LogLevel[msgLevel];}
return msgLevel>=minLevel;};},isLogMessage:function(){var LogMessage=MochiKit.Logging.LogMessage;for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof LogMessage)){return false;}}
return true;},compareLogMessage:function(a,b){return MochiKit.Base.compare([a.level,a.info],[b.level,b.info]);},alertListener:function(msg){alert("num: "+msg.num+"\nlevel: "+msg.level+"\ninfo: "+msg.info.join(" "));}});MochiKit.Logging.Logger=function(maxSize){this.counter=0;if(typeof(maxSize)=='undefined'||maxSize===null){maxSize=-1;}
this.maxSize=maxSize;this._messages=[];this.listeners={};this.useNativeConsole=false;};MochiKit.Logging.Logger.prototype={clear:function(){this._messages.splice(0,this._messages.length);},logToConsole:function(msg){if(typeof(window)!="undefined"&&window.console&&window.console.log){window.console.log(msg.replace(/%/g,'\uFF05'));}else if(typeof(opera)!="undefined"&&opera.postError){opera.postError(msg);}else if(typeof(printfire)=="function"){printfire(msg);}else if(typeof(Debug)!="undefined"&&Debug.writeln){Debug.writeln(msg);}else if(typeof(debug)!="undefined"&&debug.trace){debug.trace(msg);}},dispatchListeners:function(msg){for(var k in this.listeners){var pair=this.listeners[k];if(pair.ident!=k||(pair[0]&&!pair[0](msg))){continue;}
pair[1](msg);}},addListener:function(ident,filter,listener){if(typeof(filter)=='string'){filter=MochiKit.Logging.logLevelAtLeast(filter);}
var entry=[filter,listener];entry.ident=ident;this.listeners[ident]=entry;},removeListener:function(ident){delete this.listeners[ident];},baseLog:function(level,message){var msg=new MochiKit.Logging.LogMessage(this.counter,level,MochiKit.Base.extend(null,arguments,1));this._messages.push(msg);this.dispatchListeners(msg);if(this.useNativeConsole){this.logToConsole(msg.level+": "+msg.info.join(" "));}
this.counter+=1;while(this.maxSize>=0&&this._messages.length>this.maxSize){this._messages.shift();}},getMessages:function(howMany){var firstMsg=0;if(!(typeof(howMany)=='undefined'||howMany===null)){firstMsg=Math.max(0,this._messages.length-howMany);}
return this._messages.slice(firstMsg);},getMessageText:function(howMany){if(typeof(howMany)=='undefined'||howMany===null){howMany=30;}
var messages=this.getMessages(howMany);if(messages.length){var lst=map(function(m){return'\n  ['+m.num+'] '+m.level+': '+m.info.join(' ');},messages);lst.unshift('LAST '+messages.length+' MESSAGES:');return lst.join('');}
return'';},debuggingBookmarklet:function(inline){if(typeof(MochiKit.LoggingPane)=="undefined"){alert(this.getMessageText());}else{MochiKit.LoggingPane.createLoggingPane(inline||false);}}};MochiKit.Logging.__new__=function(){this.LogLevel={ERROR:40,FATAL:50,WARNING:30,INFO:20,DEBUG:10};var m=MochiKit.Base;m.registerComparator("LogMessage",this.isLogMessage,this.compareLogMessage);var partial=m.partial;var Logger=this.Logger;var baseLog=Logger.prototype.baseLog;m.update(this.Logger.prototype,{debug:partial(baseLog,'DEBUG'),log:partial(baseLog,'INFO'),error:partial(baseLog,'ERROR'),fatal:partial(baseLog,'FATAL'),warning:partial(baseLog,'WARNING')});var self=this;var connectLog=function(name){return function(){self.logger[name].apply(self.logger,arguments);};};this.log=connectLog('log');this.logError=connectLog('error');this.logDebug=connectLog('debug');this.logFatal=connectLog('fatal');this.logWarning=connectLog('warning');this.logger=new Logger();this.logger.useNativeConsole=true;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};if(typeof(printfire)=="undefined"&&typeof(document)!="undefined"&&document.createEvent&&typeof(dispatchEvent)!="undefined"){printfire=function(){printfire.args=arguments;var ev=document.createEvent("Events");ev.initEvent("printfire",false,true);dispatchEvent(ev);};}
MochiKit.Logging.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Logging);;MochiKit.Base._deps('DateTime',['Base']);MochiKit.DateTime.NAME="MochiKit.DateTime";MochiKit.DateTime.VERSION="1.4";MochiKit.DateTime.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.DateTime.toString=function(){return this.__repr__();};MochiKit.DateTime.isoDate=function(str){str=str+"";if(typeof(str)!="string"||str.length===0){return null;}
var iso=str.split('-');if(iso.length===0){return null;}
var date=new Date(iso[0],iso[1]-1,iso[2]);date.setFullYear(iso[0]);date.setMonth(iso[1]-1);date.setDate(iso[2]);return date;};MochiKit.DateTime._isoRegexp=/(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/;MochiKit.DateTime.isoTimestamp=function(str){str=str+"";if(typeof(str)!="string"||str.length===0){return null;}
var res=str.match(MochiKit.DateTime._isoRegexp);if(typeof(res)=="undefined"||res===null){return null;}
var year,month,day,hour,min,sec,msec;year=parseInt(res[1],10);if(typeof(res[2])=="undefined"||res[2]===''){return new Date(year);}
month=parseInt(res[2],10)-1;day=parseInt(res[3],10);if(typeof(res[4])=="undefined"||res[4]===''){return new Date(year,month,day);}
hour=parseInt(res[4],10);min=parseInt(res[5],10);sec=(typeof(res[6])!="undefined"&&res[6]!=='')?parseInt(res[6],10):0;if(typeof(res[7])!="undefined"&&res[7]!==''){msec=Math.round(1000.0*parseFloat("0."+res[7]));}else{msec=0;}
if((typeof(res[8])=="undefined"||res[8]==='')&&(typeof(res[9])=="undefined"||res[9]==='')){return new Date(year,month,day,hour,min,sec,msec);}
var ofs;if(typeof(res[9])!="undefined"&&res[9]!==''){ofs=parseInt(res[10],10)*3600000;if(typeof(res[11])!="undefined"&&res[11]!==''){ofs+=parseInt(res[11],10)*60000;}
if(res[9]=="-"){ofs=-ofs;}}else{ofs=0;}
return new Date(Date.UTC(year,month,day,hour,min,sec,msec)-ofs);};MochiKit.DateTime.toISOTime=function(date,realISO){if(typeof(date)=="undefined"||date===null){return null;}
var hh=date.getHours();var mm=date.getMinutes();var ss=date.getSeconds();var lst=[((realISO&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];return lst.join(":");};MochiKit.DateTime.toISOTimestamp=function(date,realISO){if(typeof(date)=="undefined"||date===null){return null;}
var sep=realISO?"T":" ";var foot=realISO?"Z":"";if(realISO){date=new Date(date.getTime()+(date.getTimezoneOffset()*60000));}
return MochiKit.DateTime.toISODate(date)+sep+MochiKit.DateTime.toISOTime(date,realISO)+foot;};MochiKit.DateTime.toISODate=function(date){if(typeof(date)=="undefined"||date===null){return null;}
var _padTwo=MochiKit.DateTime._padTwo;var _padFour=MochiKit.DateTime._padFour;return[_padFour(date.getFullYear()),_padTwo(date.getMonth()+1),_padTwo(date.getDate())].join("-");};MochiKit.DateTime.americanDate=function(d){d=d+"";if(typeof(d)!="string"||d.length===0){return null;}
var a=d.split('/');return new Date(a[2],a[0]-1,a[1]);};MochiKit.DateTime._padTwo=function(n){return(n>9)?n:"0"+n;};MochiKit.DateTime._padFour=function(n){switch(n.toString().length){case 1:return"000"+n;break;case 2:return"00"+n;break;case 3:return"0"+n;break;case 4:default:return n;}};MochiKit.DateTime.toPaddedAmericanDate=function(d){if(typeof(d)=="undefined"||d===null){return null;}
var _padTwo=MochiKit.DateTime._padTwo;return[_padTwo(d.getMonth()+1),_padTwo(d.getDate()),d.getFullYear()].join('/');};MochiKit.DateTime.toAmericanDate=function(d){if(typeof(d)=="undefined"||d===null){return null;}
return[d.getMonth()+1,d.getDate(),d.getFullYear()].join('/');};MochiKit.DateTime.EXPORT=["isoDate","isoTimestamp","toISOTime","toISOTimestamp","toISODate","americanDate","toPaddedAmericanDate","toAmericanDate"];MochiKit.DateTime.EXPORT_OK=[];MochiKit.DateTime.EXPORT_TAGS={":common":MochiKit.DateTime.EXPORT,":all":MochiKit.DateTime.EXPORT};MochiKit.DateTime.__new__=function(){var base=this.NAME+".";for(var k in this){var o=this[k];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+k;}catch(e){}}}};MochiKit.DateTime.__new__();if(typeof(MochiKit.Base)!="undefined"){MochiKit.Base._exportSymbols(this,MochiKit.DateTime);}else{(function(globals,module){if((typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined')||(MochiKit.__export__===false)){var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}}})(this,MochiKit.DateTime);};MochiKit.Base._deps('Format',['Base']);MochiKit.Format.NAME="MochiKit.Format";MochiKit.Format.VERSION="1.4";MochiKit.Format.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Format.toString=function(){return this.__repr__();};MochiKit.Format._numberFormatter=function(placeholder,header,footer,locale,isPercent,precision,leadingZeros,separatorAt,trailingZeros){return function(num){num=parseFloat(num);if(typeof(num)=="undefined"||num===null||isNaN(num)){return placeholder;}
var curheader=header;var curfooter=footer;if(num<0){num=-num;}else{curheader=curheader.replace(/-/,"");}
var me=arguments.callee;var fmt=MochiKit.Format.formatLocale(locale);if(isPercent){num=num*100.0;curfooter=fmt.percent+curfooter;}
num=MochiKit.Format.roundToFixed(num,precision);var parts=num.split(/\./);var whole=parts[0];var frac=(parts.length==1)?"":parts[1];var res="";while(whole.length<leadingZeros){whole="0"+whole;}
if(separatorAt){while(whole.length>separatorAt){var i=whole.length-separatorAt;res=fmt.separator+whole.substring(i,whole.length)+res;whole=whole.substring(0,i);}}
res=whole+res;if(precision>0){while(frac.length<trailingZeros){frac=frac+"0";}
res=res+fmt.decimal+frac;}
return curheader+res+curfooter;};};MochiKit.Format.numberFormatter=function(pattern,placeholder,locale){if(typeof(placeholder)=="undefined"){placeholder="";}
var match=pattern.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);if(!match){throw TypeError("Invalid pattern");}
var header=pattern.substr(0,match.index);var footer=pattern.substr(match.index+match[0].length);if(header.search(/-/)==-1){header=header+"-";}
var whole=match[1];var frac=(typeof(match[2])=="string"&&match[2]!="")?match[2]:"";var isPercent=(typeof(match[3])=="string"&&match[3]!="");var tmp=whole.split(/,/);var separatorAt;if(typeof(locale)=="undefined"){locale="default";}
if(tmp.length==1){separatorAt=null;}else{separatorAt=tmp[1].length;}
var leadingZeros=whole.length-whole.replace(/0/g,"").length;var trailingZeros=frac.length-frac.replace(/0/g,"").length;var precision=frac.length;var rval=MochiKit.Format._numberFormatter(placeholder,header,footer,locale,isPercent,precision,leadingZeros,separatorAt,trailingZeros);var m=MochiKit.Base;if(m){var fn=arguments.callee;var args=m.concat(arguments);rval.repr=function(){return[self.NAME,"(",map(m.repr,args).join(", "),")"].join("");};}
return rval;};MochiKit.Format.formatLocale=function(locale){if(typeof(locale)=="undefined"||locale===null){locale="default";}
if(typeof(locale)=="string"){var rval=MochiKit.Format.LOCALE[locale];if(typeof(rval)=="string"){rval=arguments.callee(rval);MochiKit.Format.LOCALE[locale]=rval;}
return rval;}else{return locale;}};MochiKit.Format.twoDigitAverage=function(numerator,denominator){if(denominator){var res=numerator/denominator;if(!isNaN(res)){return MochiKit.Format.twoDigitFloat(res);}}
return"0";};MochiKit.Format.twoDigitFloat=function(aNumber){var res=roundToFixed(aNumber,2);if(res.indexOf(".00")>0){return res.substring(0,res.length-3);}else if(res.charAt(res.length-1)=="0"){return res.substring(0,res.length-1);}else{return res;}};MochiKit.Format.lstrip=function(str,chars){str=str+"";if(typeof(str)!="string"){return null;}
if(!chars){return str.replace(/^\s+/,"");}else{return str.replace(new RegExp("^["+chars+"]+"),"");}};MochiKit.Format.rstrip=function(str,chars){str=str+"";if(typeof(str)!="string"){return null;}
if(!chars){return str.replace(/\s+$/,"");}else{return str.replace(new RegExp("["+chars+"]+$"),"");}};MochiKit.Format.strip=function(str,chars){var self=MochiKit.Format;return self.rstrip(self.lstrip(str,chars),chars);};MochiKit.Format.truncToFixed=function(aNumber,precision){var res=Math.floor(aNumber).toFixed(0);if(aNumber<0){res=Math.ceil(aNumber).toFixed(0);if(res.charAt(0)!="-"&&precision>0){res="-"+res;}}
if(res.indexOf("e")<0&&precision>0){var tail=aNumber.toString();if(tail.indexOf("e")>0){tail=".";}else if(tail.indexOf(".")<0){tail=".";}else{tail=tail.substring(tail.indexOf("."));}
if(tail.length-1>precision){tail=tail.substring(0,precision+1);}
while(tail.length-1<precision){tail+="0";}
res+=tail;}
return res;};MochiKit.Format.roundToFixed=function(aNumber,precision){var upper=Math.abs(aNumber)+0.5*Math.pow(10,-precision);var res=MochiKit.Format.truncToFixed(upper,precision);if(aNumber<0){res="-"+res;}
return res;};MochiKit.Format.percentFormat=function(aNumber){return MochiKit.Format.twoDigitFloat(100*aNumber)+'%';};MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"];MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},pt_BR:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"};MochiKit.Format.EXPORT_OK=[];MochiKit.Format.EXPORT_TAGS={':all':MochiKit.Format.EXPORT,':common':MochiKit.Format.EXPORT};MochiKit.Format.__new__=function(){var base=this.NAME+".";var k,v,o;for(k in this.LOCALE){o=this.LOCALE[k];if(typeof(o)=="object"){o.repr=function(){return this.NAME;};o.NAME=base+"LOCALE."+k;}}
for(k in this){o=this[k];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+k;}catch(e){}}}};MochiKit.Format.__new__();if(typeof(MochiKit.Base)!="undefined"){MochiKit.Base._exportSymbols(this,MochiKit.Format);}else{(function(globals,module){if((typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined')||(MochiKit.__export__===false)){var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}}})(this,MochiKit.Format);};MochiKit.Base._deps('Async',['Base']);MochiKit.Async.NAME="MochiKit.Async";MochiKit.Async.VERSION="1.4";MochiKit.Async.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Async.toString=function(){return this.__repr__();};MochiKit.Async.Deferred=function(canceller){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=canceller;this.silentlyCancelled=false;this.chained=false;};MochiKit.Async.Deferred.prototype={repr:function(){var state;if(this.fired==-1){state='unfired';}else if(this.fired===0){state='success';}else{state='error';}
return'Deferred('+this.id+', '+state+')';},toString:MochiKit.Base.forwardCall("repr"),_nextId:MochiKit.Base.counter(),cancel:function(){var self=MochiKit.Async;if(this.fired==-1){if(this.canceller){this.canceller(this);}else{this.silentlyCancelled=true;}
if(this.fired==-1){this.errback(new self.CancelledError(this));}}else if((this.fired===0)&&(this.results[0]instanceof self.Deferred)){this.results[0].cancel();}},_resback:function(res){this.fired=((res instanceof Error)?1:0);this.results[this.fired]=res;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new MochiKit.Async.AlreadyCalledError(this);}
this.silentlyCancelled=false;return;}},callback:function(res){this._check();if(res instanceof MochiKit.Async.Deferred){throw new Error("Deferred instances can only be chained if they are the result of a callback");}
this._resback(res);},errback:function(res){this._check();var self=MochiKit.Async;if(res instanceof self.Deferred){throw new Error("Deferred instances can only be chained if they are the result of a callback");}
if(!(res instanceof Error)){res=new self.GenericError(res);}
this._resback(res);},addBoth:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,fn);},addCallback:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,null);},addErrback:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(null,fn);},addCallbacks:function(cb,eb){if(this.chained){throw new Error("Chained Deferreds can not be re-used");}
this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}
return this;},_fire:function(){var chain=this.chain;var fired=this.fired;var res=this.results[fired];var self=this;var cb=null;while(chain.length>0&&this.paused===0){var pair=chain.shift();var f=pair[fired];if(f===null){continue;}
try{res=f(res);fired=((res instanceof Error)?1:0);if(res instanceof MochiKit.Async.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused===0)&&(self.fired>=0)){self._fire();}};this.paused++;}}catch(err){fired=1;if(!(err instanceof Error)){err=new MochiKit.Async.GenericError(err);}
res=err;}}
this.fired=fired;this.results[fired]=res;if(cb&&this.paused){res.addBoth(cb);res.chained=true;}}};MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(req){return MochiKit.Base.evalJSON(req.responseText);},succeed:function(result){var d=new MochiKit.Async.Deferred();d.callback.apply(d,arguments);return d;},fail:function(result){var d=new MochiKit.Async.Deferred();d.errback.apply(d,arguments);return d;},getXMLHttpRequest:function(){var self=arguments.callee;if(!self.XMLHttpRequest){var tryThese=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP');},function(){return new ActiveXObject('Microsoft.XMLHTTP');},function(){return new ActiveXObject('Msxml2.XMLHTTP.4.0');},function(){throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest");}];for(var i=0;i<tryThese.length;i++){var func=tryThese[i];try{self.XMLHttpRequest=func;return func();}catch(e){}}}
return self.XMLHttpRequest();},_xhr_onreadystatechange:function(d){var m=MochiKit.Base;if(this.readyState==4){try{this.onreadystatechange=null;}catch(e){try{this.onreadystatechange=m.noop;}catch(e){}}
var status=null;try{status=this.status;if(!status&&m.isNotEmpty(this.responseText)){status=304;}}catch(e){}
if(status==200||status==201||status==204||status==304||status==1223){d.callback(this);}else{var err=new MochiKit.Async.XMLHttpRequestError(this,"Request failed");if(err.number){d.errback(err);}else{d.errback(err);}}}},_xhr_canceller:function(req){try{req.onreadystatechange=null;}catch(e){try{req.onreadystatechange=MochiKit.Base.noop;}catch(e){}}
req.abort();},sendXMLHttpRequest:function(req,sendContent){if(typeof(sendContent)=="undefined"||sendContent===null){sendContent="";}
var m=MochiKit.Base;var self=MochiKit.Async;var d=new self.Deferred(m.partial(self._xhr_canceller,req));try{req.onreadystatechange=m.bind(self._xhr_onreadystatechange,req,d);req.send(sendContent);}catch(e){try{req.onreadystatechange=null;}catch(ignore){}
d.errback(e);}
return d;},doXHR:function(url,opts){var self=MochiKit.Async;return self.callLater(0,self._doXHR,url,opts);},_doXHR:function(url,opts){var m=MochiKit.Base;opts=m.update({method:'GET',sendContent:''},opts);var self=MochiKit.Async;var req=self.getXMLHttpRequest();if(opts.queryString){var qs=m.queryString(opts.queryString);if(qs){url+="?"+qs;}}
if('username'in opts){req.open(opts.method,url,true,opts.username,opts.password);}else{req.open(opts.method,url,true);}
if(req.overrideMimeType&&opts.mimeType){req.overrideMimeType(opts.mimeType);}
req.setRequestHeader("X-Requested-With","XMLHttpRequest");if(opts.headers){var headers=opts.headers;if(!m.isArrayLike(headers)){headers=m.items(headers);}
for(var i=0;i<headers.length;i++){var header=headers[i];var name=header[0];var value=header[1];req.setRequestHeader(name,value);}}
return self.sendXMLHttpRequest(req,opts.sendContent);},_buildURL:function(url){if(arguments.length>1){var m=MochiKit.Base;var qs=m.queryString.apply(null,m.extend(null,arguments,1));if(qs){return url+"?"+qs;}}
return url;},doSimpleXMLHttpRequest:function(url){var self=MochiKit.Async;url=self._buildURL.apply(self,arguments);return self.doXHR(url);},loadJSONDoc:function(url){var self=MochiKit.Async;url=self._buildURL.apply(self,arguments);var d=self.doXHR(url,{'mimeType':'text/plain','headers':[['Accept','application/json']]});d=d.addCallback(self.evalJSONRequest);return d;},wait:function(seconds,value){var d=new MochiKit.Async.Deferred();var m=MochiKit.Base;if(typeof(value)!='undefined'){d.addCallback(function(){return value;});}
var timeout=setTimeout(m.bind("callback",d),Math.floor(seconds*1000));d.canceller=function(){try{clearTimeout(timeout);}catch(e){}};return d;},callLater:function(seconds,func){var m=MochiKit.Base;var pfunc=m.partial.apply(m,m.extend(null,arguments,1));return MochiKit.Async.wait(seconds).addCallback(function(res){return pfunc();});}});MochiKit.Async.DeferredLock=function(){this.waiting=[];this.locked=false;this.id=this._nextId();};MochiKit.Async.DeferredLock.prototype={__class__:MochiKit.Async.DeferredLock,acquire:function(){var d=new MochiKit.Async.Deferred();if(this.locked){this.waiting.push(d);}else{this.locked=true;d.callback(this);}
return d;},release:function(){if(!this.locked){throw TypeError("Tried to release an unlocked DeferredLock");}
this.locked=false;if(this.waiting.length>0){this.locked=true;this.waiting.shift().callback(this);}},_nextId:MochiKit.Base.counter(),repr:function(){var state;if(this.locked){state='locked, '+this.waiting.length+' waiting';}else{state='unlocked';}
return'DeferredLock('+this.id+', '+state+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Async.DeferredList=function(list,fireOnOneCallback,fireOnOneErrback,consumeErrors,canceller){MochiKit.Async.Deferred.apply(this,[canceller]);this.list=list;var resultList=[];this.resultList=resultList;this.finishedCount=0;this.fireOnOneCallback=fireOnOneCallback;this.fireOnOneErrback=fireOnOneErrback;this.consumeErrors=consumeErrors;var cb=MochiKit.Base.bind(this._cbDeferred,this);for(var i=0;i<list.length;i++){var d=list[i];resultList.push(undefined);d.addCallback(cb,i,true);d.addErrback(cb,i,false);}
if(list.length===0&&!fireOnOneCallback){this.callback(this.resultList);}};MochiKit.Async.DeferredList.prototype=new MochiKit.Async.Deferred();MochiKit.Async.DeferredList.prototype._cbDeferred=function(index,succeeded,result){this.resultList[index]=[succeeded,result];this.finishedCount+=1;if(this.fired==-1){if(succeeded&&this.fireOnOneCallback){this.callback([index,result]);}else if(!succeeded&&this.fireOnOneErrback){this.errback(result);}else if(this.finishedCount==this.list.length){this.callback(this.resultList);}}
if(!succeeded&&this.consumeErrors){result=null;}
return result;};MochiKit.Async.gatherResults=function(deferredList){var d=new MochiKit.Async.DeferredList(deferredList,false,true,false);d.addCallback(function(results){var ret=[];for(var i=0;i<results.length;i++){ret.push(results[i][1]);}
return ret;});return d;};MochiKit.Async.maybeDeferred=function(func){var self=MochiKit.Async;var result;try{var r=func.apply(null,MochiKit.Base.extend([],arguments,1));if(r instanceof self.Deferred){result=r;}else if(r instanceof Error){result=self.fail(r);}else{result=self.succeed(r);}}catch(e){result=self.fail(e);}
return result;};MochiKit.Async.EXPORT=["AlreadyCalledError","CancelledError","BrowserComplianceError","GenericError","XMLHttpRequestError","Deferred","succeed","fail","getXMLHttpRequest","doSimpleXMLHttpRequest","loadJSONDoc","wait","callLater","sendXMLHttpRequest","DeferredLock","DeferredList","gatherResults","maybeDeferred","doXHR"];MochiKit.Async.EXPORT_OK=["evalJSONRequest"];MochiKit.Async.__new__=function(){var m=MochiKit.Base;var ne=m.partial(m._newNamedError,this);ne("AlreadyCalledError",function(deferred){this.deferred=deferred;});ne("CancelledError",function(deferred){this.deferred=deferred;});ne("BrowserComplianceError",function(msg){this.message=msg;});ne("GenericError",function(msg){this.message=msg;});ne("XMLHttpRequestError",function(req,msg){this.req=req;this.message=msg;try{this.number=req.status;}catch(e){}});this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Async.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Async);;MochiKit.Base._deps('DOM',['Base']);MochiKit.DOM.NAME="MochiKit.DOM";MochiKit.DOM.VERSION="1.4";MochiKit.DOM.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.DOM.toString=function(){return this.__repr__();};MochiKit.DOM.unique_ids_assigned=0;MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","H4","H5","H6","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","DL","DT","DD","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","escapeHTML","toHTML","emitHTML","scrapeText","isParent","getFirstParentByTagAndClassName","makeClipping","undoClipping","makePositioned","undoPositioned","getFirstElementByTagAndClassName"];MochiKit.DOM.EXPORT_OK=["domConverters"];MochiKit.DOM.DEPRECATED=[['computedStyle','MochiKit.Style.getStyle','1.4'],['elementDimensions','MochiKit.Style.getElementDimensions','1.4'],['elementPosition','MochiKit.Style.getElementPosition','1.4'],['hideElement','MochiKit.Style.hideElement','1.4'],['setElementDimensions','MochiKit.Style.setElementDimensions','1.4'],['setElementPosition','MochiKit.Style.setElementPosition','1.4'],['setDisplayForElement','MochiKit.Style.setDisplayForElement','1.4'],['setOpacity','MochiKit.Style.setOpacity','1.4'],['showElement','MochiKit.Style.showElement','1.4'],['Coordinates','MochiKit.Style.Coordinates','1.4'],['Dimensions','MochiKit.Style.Dimensions','1.4']];MochiKit.DOM.getViewportDimensions=new Function(''+'if (!MochiKit["Style"]) {'+'    throw new Error("This function has been deprecated and depends on MochiKit.Style.");'+'}'+'return MochiKit.Style.getViewportDimensions.apply(this, arguments);');MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){return MochiKit.DOM._window;},currentDocument:function(){return MochiKit.DOM._document;},withWindow:function(win,func){var self=MochiKit.DOM;var oldDoc=self._document;var oldWin=self._window;var rval;try{self._window=win;self._document=win.document;rval=func();}catch(e){self._window=oldWin;self._document=oldDoc;throw e;}
self._window=oldWin;self._document=oldDoc;return rval;},formContents:function(elem){var names=[];var values=[];var m=MochiKit.Base;var self=MochiKit.DOM;if(typeof(elem)=="undefined"||elem===null){elem=self._document.body;}else{elem=self.getElement(elem);}
m.nodeWalk(elem,function(elem){var name=elem.name;if(m.isNotEmpty(name)){var tagName=elem.tagName.toUpperCase();if(tagName==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){return null;}
if(tagName==="SELECT"){if(elem.type=="select-one"){if(elem.selectedIndex>=0){var opt=elem.options[elem.selectedIndex];var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);return null;}
names.push(name);values.push("");return null;}else{var opts=elem.options;if(!opts.length){names.push(name);values.push("");return null;}
for(var i=0;i<opts.length;i++){var opt=opts[i];if(!opt.selected){continue;}
var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);}
return null;}}
if(tagName==="FORM"||tagName==="P"||tagName==="SPAN"||tagName==="DIV"){return elem.childNodes;}
names.push(name);values.push(elem.value||'');return null;}
return elem.childNodes;});return[names,values];},withDocument:function(doc,func){var self=MochiKit.DOM;var oldDoc=self._document;var rval;try{self._document=doc;rval=func();}catch(e){self._document=oldDoc;throw e;}
self._document=oldDoc;return rval;},registerDOMConverter:function(name,check,wrap,override){MochiKit.DOM.domConverters.register(name,check,wrap,override);},coerceToDOM:function(node,ctx){var m=MochiKit.Base;var im=MochiKit.Iter;var self=MochiKit.DOM;if(im){var iter=im.iter;var repeat=im.repeat;var map=m.map;}
var domConverters=self.domConverters;var coerceToDOM=arguments.callee;var NotFound=m.NotFound;while(true){if(typeof(node)=='undefined'||node===null){return null;}
if(typeof(node)=="function"&&typeof(node.length)=="number"&&!(node instanceof Function)){node=im.list(node);}
if(typeof(node.nodeType)!='undefined'&&node.nodeType>0){return node;}
if(typeof(node)=='number'||typeof(node)=='boolean'){node=node.toString();}
if(typeof(node)=='string'){return self._document.createTextNode(node);}
if(typeof(node.__dom__)=='function'){node=node.__dom__(ctx);continue;}
if(typeof(node.dom)=='function'){node=node.dom(ctx);continue;}
if(typeof(node)=='function'){node=node.apply(ctx,[ctx]);continue;}
if(im){var iterNodes=null;try{iterNodes=iter(node);}catch(e){}
if(iterNodes){return map(coerceToDOM,iterNodes,repeat(ctx));}}
try{node=domConverters.match(node,ctx);continue;}catch(e){if(e!=NotFound){throw e;}}
return self._document.createTextNode(node.toString());}
return undefined;},isChildNode:function(node,maybeparent){var self=MochiKit.DOM;if(typeof(node)=="string"){node=self.getElement(node);}
if(typeof(maybeparent)=="string"){maybeparent=self.getElement(maybeparent);}
if(typeof(node)=='undefined'||node===null){return false;}
while(node!=null&&node!==self._document){if(node===maybeparent){return true;}
node=node.parentNode;}
return false;},setNodeAttribute:function(node,attr,value){var o={};o[attr]=value;try{return MochiKit.DOM.updateNodeAttributes(node,o);}catch(e){}
return null;},getNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.getAttribute(attr);}catch(e){}
return null;},removeNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.removeAttribute(attr);}catch(e){}
return null;},updateNodeAttributes:function(node,attrs){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
if(attrs){var updatetree=MochiKit.Base.updatetree;if(self.attributeArray.compliant){for(var k in attrs){var v=attrs[k];if(typeof(v)=='object'&&typeof(elem[k])=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(elem[k],v);}}else if(k.substring(0,2)=="on"){if(typeof(v)=="string"){v=new Function(v);}
elem[k]=v;}else{elem.setAttribute(k,v);}}}else{var renames=self.attributeArray.renames;for(var k in attrs){v=attrs[k];var renamed=renames[k];if(k=="style"&&typeof(v)=="string"){elem.style.cssText=v;}else if(typeof(renamed)=="string"){elem[renamed]=v;}else if(typeof(elem[k])=='object'&&typeof(v)=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(elem[k],v);}}else if(k.substring(0,2)=="on"){if(typeof(v)=="string"){v=new Function(v);}
elem[k]=v;}else{elem.setAttribute(k,v);}}}}
return elem;},appendChildNodes:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){elem.appendChild(n);}else{nodeStack=concat(n,nodeStack);}}
return elem;},insertSiblingNodesBefore:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var parentnode=elem.parentNode;var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){parentnode.insertBefore(n,elem);}else{nodeStack=concat(n,nodeStack);}}
return parentnode;},insertSiblingNodesAfter:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];if(elem.nextSibling){return self.insertSiblingNodesBefore(elem.nextSibling,nodeStack);}
else{return self.appendChildNodes(elem.parentNode,nodeStack);}},replaceChildNodes:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);arguments[0]=elem;}
var child;while((child=elem.firstChild)){elem.removeChild(child);}
if(arguments.length<2){return elem;}else{return self.appendChildNodes.apply(this,arguments);}},createDOM:function(name,attrs){var elem;var self=MochiKit.DOM;var m=MochiKit.Base;if(typeof(attrs)=="string"||typeof(attrs)=="number"){var args=m.extend([name,null],arguments,1);return arguments.callee.apply(this,args);}
if(typeof(name)=='string'){var xhtml=self._xhtml;if(attrs&&!self.attributeArray.compliant){var contents="";if('name'in attrs){contents+=' name="'+self.escapeHTML(attrs.name)+'"';}
if(name=='input'&&'type'in attrs){contents+=' type="'+self.escapeHTML(attrs.type)+'"';}
if(contents){name="<"+name+contents+">";xhtml=false;}}
var d=self._document;if(xhtml&&d===document){elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);}else{elem=d.createElement(name);}}else{elem=name;}
if(attrs){MochiKit.DOM.unique_ids_assigned++;attrs["id"]=attrs["id"]?attrs["id"]:("element_"+MochiKit.DOM.unique_ids_assigned);self.updateNodeAttributes(elem,attrs);}
if(arguments.length<=2){return elem;}else{var args=m.extend([elem],arguments,2);return self.appendChildNodes.apply(this,args);}},createDOMFunc:function(){var m=MochiKit.Base;return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));},removeElement:function(elem){var e=MochiKit.DOM.getElement(elem);e.parentNode.removeChild(e);return e;},swapDOM:function(dest,src){var self=MochiKit.DOM;dest=self.getElement(dest);var parent=dest.parentNode;if(src){src=self.getElement(src);parent.replaceChild(src,dest);}else{parent.removeChild(dest);}
return src;},getElement:function(id){var self=MochiKit.DOM;if(arguments.length==1){return((typeof(id)=="string")?self._document.getElementById(id):id);}else{return MochiKit.Base.map(self.getElement,arguments);}},getElementsByTagAndClassName:function(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return MochiKit.Base.extend(null,children);}
var elements=[];for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(typeof(cls)!="string"){cls=child.getAttribute("class");}
if(typeof(cls)=="string"){var classNames=cls.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){elements.push(child);break;}}}}
return elements;},_newCallStack:function(path,once){var rval=function(){var callStack=arguments.callee.callStack;for(var i=0;i<callStack.length;i++){if(callStack[i].apply(this,arguments)===false){break;}}
if(once){try{this[path]=null;}catch(e){}}};rval.callStack=[];return rval;},addToCallStack:function(target,path,func,once){var self=MochiKit.DOM;var existing=target[path];var regfunc=existing;if(!(typeof(existing)=='function'&&typeof(existing.callStack)=="object"&&existing.callStack!==null)){regfunc=self._newCallStack(path,once);if(typeof(existing)=='function'){regfunc.callStack.push(existing);}
target[path]=regfunc;}
regfunc.callStack.push(func);},addLoadEvent:function(func){var self=MochiKit.DOM;self.addToCallStack(self._window,"onload",func,true);},focusOnLoad:function(element){var self=MochiKit.DOM;self.addLoadEvent(function(){element=self.getElement(element);if(element){element.focus();}});},setElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);if(self.attributeArray.compliant){obj.setAttribute("class",className);}else{obj.setAttribute("className",className);}},toggleElementClass:function(className){var self=MochiKit.DOM;for(var i=1;i<arguments.length;i++){var obj=self.getElement(arguments[i]);if(!self.addElementClass(obj,className)){self.removeElementClass(obj,className);}}},addElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"||cls.length===0){self.setElementClass(obj,className);return true;}
if(cls==className){return false;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){return false;}}
self.setElementClass(obj,cls+" "+className);return true;},removeElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"||cls.length===0){return false;}
if(cls==className){self.setElementClass(obj,"");return true;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){classes.splice(i,1);self.setElementClass(obj,classes.join(" "));return true;}}
return false;},swapElementClass:function(element,fromClass,toClass){var obj=MochiKit.DOM.getElement(element);var res=MochiKit.DOM.removeElementClass(obj,fromClass);if(res){MochiKit.DOM.addElementClass(obj,toClass);}
return res;},hasElementClass:function(element,className){var obj=MochiKit.DOM.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"){return false;}
var classes=cls.split(" ");for(var i=1;i<arguments.length;i++){var good=false;for(var j=0;j<classes.length;j++){if(classes[j]==arguments[i]){good=true;break;}}
if(!good){return false;}}
return true;},escapeHTML:function(s){return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");},toHTML:function(dom){return MochiKit.DOM.emitHTML(dom).join("");},emitHTML:function(dom,lst){if(typeof(lst)=='undefined'||lst===null){lst=[];}
var queue=[dom];var self=MochiKit.DOM;var escapeHTML=self.escapeHTML;var attributeArray=self.attributeArray;while(queue.length){dom=queue.pop();if(typeof(dom)=='string'){lst.push(dom);}else if(dom.nodeType==1){lst.push('<'+dom.tagName.toLowerCase());var attributes=[];var domAttr=attributeArray(dom);for(var i=0;i<domAttr.length;i++){var a=domAttr[i];attributes.push([" ",a.name,'="',escapeHTML(a.value),'"']);}
attributes.sort();for(i=0;i<attributes.length;i++){var attrs=attributes[i];for(var j=0;j<attrs.length;j++){lst.push(attrs[j]);}}
if(dom.hasChildNodes()){lst.push(">");queue.push("</"+dom.tagName.toLowerCase()+">");var cnodes=dom.childNodes;for(i=cnodes.length-1;i>=0;i--){queue.push(cnodes[i]);}}else{lst.push('/>');}}else if(dom.nodeType==3){lst.push(escapeHTML(dom.nodeValue));}}
return lst;},scrapeText:function(node,asArray){var rval=[];(function(node){var cn=node.childNodes;if(cn){for(var i=0;i<cn.length;i++){arguments.callee.call(this,cn[i]);}}
var nodeValue=node.nodeValue;if(typeof(nodeValue)=='string'){rval.push(nodeValue);}})(MochiKit.DOM.getElement(node));if(asArray){return rval;}else{return rval.join("");}},removeEmptyTextNodes:function(element){element=MochiKit.DOM.getElement(element);for(var i=0;i<element.childNodes.length;i++){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue)){node.parentNode.removeChild(node);}}},makeClipping:function(element){element=MochiKit.DOM.getElement(element);var oldOverflow=element.style.overflow;if((MochiKit.Style.getStyle(element,'overflow')||'visible')!='hidden'){element.style.overflow='hidden';}
return oldOverflow;},undoClipping:function(element,overflow){element=MochiKit.DOM.getElement(element);if(!overflow){return;}
element.style.overflow=overflow;},makePositioned:function(element){element=MochiKit.DOM.getElement(element);var pos=MochiKit.Style.getStyle(element,'position');if(pos=='static'||!pos){element.style.position='relative';if(/Opera/.test(navigator.userAgent)){element.style.top=0;element.style.left=0;}}},undoPositioned:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=='relative'){element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}},getFirstElementByTagAndClassName:function(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return children[0];}
for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(typeof(cls)!="string"){cls=child.getAttribute("class");}
if(typeof(cls)=="string"){var classNames=cls.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){return child;}}}}},getFirstParentByTagAndClassName:function(elem,tagName,className){var self=MochiKit.DOM;elem=self.getElement(elem);if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}else{tagName=tagName.toUpperCase();}
if(typeof(className)=='undefined'||className===null){className=null;}
if(elem){elem=elem.parentNode;}
while(elem&&elem.tagName){var curTagName=elem.tagName.toUpperCase();if((tagName==='*'||tagName==curTagName)&&(className===null||self.hasElementClass(elem,className))){return elem;}
elem=elem.parentNode;}
return null;},isParent:function(child,element){if(!child.parentNode||child==element){return false;}
if(child.parentNode==element){return true;}
return MochiKit.DOM.isParent(child.parentNode,element);},__new__:function(win){var m=MochiKit.Base;if(typeof(document)!="undefined"){this._document=document;var kXULNSURI="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===kXULNSURI);}else if(MochiKit.MockDOM){this._document=MochiKit.MockDOM.document;}
this._window=win;this.domConverters=new m.AdapterRegistry();var __tmpElement=this._document.createElement("span");var attributeArray;if(__tmpElement&&__tmpElement.attributes&&__tmpElement.attributes.length>0){var filter=m.filter;attributeArray=function(node){return filter(attributeArray.ignoreAttrFilter,node.attributes);};attributeArray.ignoreAttr={};var attrs=__tmpElement.attributes;var ignoreAttr=attributeArray.ignoreAttr;for(var i=0;i<attrs.length;i++){var a=attrs[i];ignoreAttr[a.name]=a.value;}
attributeArray.ignoreAttrFilter=function(a){return(attributeArray.ignoreAttr[a.name]!=a.value);};attributeArray.compliant=false;attributeArray.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};}else{attributeArray=function(node){return node.attributes;};attributeArray.compliant=true;attributeArray.renames={};}
this.attributeArray=attributeArray;var _deprecated=function(fromModule,arr){var fromName=arr[0];var toName=arr[1];var toModule=toName.split('.')[1];var str='';str+='if (!MochiKit.'+toModule+') { throw new Error("';str+='This function has been deprecated and depends on MochiKit.';str+=toModule+'.");}';str+='return '+toName+'.apply(this, arguments);';MochiKit[fromModule][fromName]=new Function(str);}
for(var i=0;i<MochiKit.DOM.DEPRECATED.length;i++){_deprecated('DOM',MochiKit.DOM.DEPRECATED[i]);}
var createDOMFunc=this.createDOMFunc;this.UL=createDOMFunc("ul");this.OL=createDOMFunc("ol");this.LI=createDOMFunc("li");this.DL=createDOMFunc("dl");this.DT=createDOMFunc("dt");this.DD=createDOMFunc("dd");this.TD=createDOMFunc("td");this.TR=createDOMFunc("tr");this.TBODY=createDOMFunc("tbody");this.THEAD=createDOMFunc("thead");this.TFOOT=createDOMFunc("tfoot");this.TABLE=createDOMFunc("table");this.TH=createDOMFunc("th");this.INPUT=createDOMFunc("input");this.SPAN=createDOMFunc("span");this.A=createDOMFunc("a");this.DIV=createDOMFunc("div");this.IMG=createDOMFunc("img");this.BUTTON=createDOMFunc("button");this.TT=createDOMFunc("tt");this.PRE=createDOMFunc("pre");this.H1=createDOMFunc("h1");this.H2=createDOMFunc("h2");this.H3=createDOMFunc("h3");this.H4=createDOMFunc("h4");this.H5=createDOMFunc("h5");this.H6=createDOMFunc("h6");this.BR=createDOMFunc("br");this.HR=createDOMFunc("hr");this.LABEL=createDOMFunc("label");this.TEXTAREA=createDOMFunc("textarea");this.FORM=createDOMFunc("form");this.P=createDOMFunc("p");this.SELECT=createDOMFunc("select");this.OPTION=createDOMFunc("option");this.OPTGROUP=createDOMFunc("optgroup");this.LEGEND=createDOMFunc("legend");this.FIELDSET=createDOMFunc("fieldset");this.STRONG=createDOMFunc("strong");this.CANVAS=createDOMFunc("canvas");this.$=this.getElement;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.DOM.__new__(((typeof(window)=="undefined")?this:window));if(MochiKit.__export__){withWindow=MochiKit.DOM.withWindow;withDocument=MochiKit.DOM.withDocument;}
MochiKit.Base._exportSymbols(this,MochiKit.DOM);;MochiKit.Base._deps('Selector',['Base','DOM','Iter']);MochiKit.Selector.NAME="MochiKit.Selector";MochiKit.Selector.VERSION="1.4";MochiKit.Selector.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Selector.toString=function(){return this.__repr__();};MochiKit.Selector.EXPORT=["Selector","findChildElements","findDocElements","$$"];MochiKit.Selector.EXPORT_OK=[];MochiKit.Selector.Selector=function(expression){this.params={classNames:[],pseudoClassNames:[]};this.expression=expression.toString().replace(/(^\s+|\s+$)/g,'');this.parseExpression();this.compileMatcher();};MochiKit.Selector.Selector.prototype={__class__:MochiKit.Selector.Selector,parseExpression:function(){function abort(message){throw'Parse error in selector: '+message;}
if(this.expression==''){abort('empty expression');}
var repr=MochiKit.Base.repr;var params=this.params;var expr=this.expression;var 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':':params.pseudoClassNames.push(clause);break;case'':case undefined:params.tagName=clause.toUpperCase();break;default:abort(repr(expr));}
expr=rest;}
if(expr.length>0){abort(repr(expr));}},buildMatchExpression:function(){var repr=MochiKit.Base.repr;var params=this.params;var conditions=[];var clause,i;function childElements(element){return"MochiKit.Base.filter(function (node) { return node.nodeType == 1; }, "+element+".childNodes)";}
if(params.wildcard){conditions.push('true');}
if(clause=params.id){conditions.push('element.id == '+repr(clause));}
if(clause=params.tagName){conditions.push('element.tagName.toUpperCase() == '+repr(clause));}
if((clause=params.classNames).length>0){for(i=0;i<clause.length;i++){conditions.push('MochiKit.DOM.hasElementClass(element, '+repr(clause[i])+')');}}
if((clause=params.pseudoClassNames).length>0){for(i=0;i<clause.length;i++){var match=clause[i].match(/^([^(]+)(?:\((.*)\))?$/);var pseudoClass=match[1];var pseudoClassArgument=match[2];switch(pseudoClass){case'root':conditions.push('element.nodeType == 9 || element === element.ownerDocument.documentElement');break;case'nth-child':case'nth-last-child':case'nth-of-type':case'nth-last-of-type':match=pseudoClassArgument.match(/^((?:(\d+)n\+)?(\d+)|odd|even)$/);if(!match){throw"Invalid argument to pseudo element nth-child: "+pseudoClassArgument;}
var a,b;if(match[0]=='odd'){a=2;b=1;}else if(match[0]=='even'){a=2;b=0;}else{a=match[2]&&parseInt(match)||null;b=parseInt(match[3]);}
conditions.push('this.nthChild(element,'+a+','+b
+','+!!pseudoClass.match('^nth-last')
+','+!!pseudoClass.match('of-type$')
+')');break;case'first-child':conditions.push('this.nthChild(element, null, 1)');break;case'last-child':conditions.push('this.nthChild(element, null, 1, true)');break;case'first-of-type':conditions.push('this.nthChild(element, null, 1, false, true)');break;case'last-of-type':conditions.push('this.nthChild(element, null, 1, true, true)');break;case'only-child':conditions.push(childElements('element.parentNode')+'.length == 1');break;case'only-of-type':conditions.push('MochiKit.Base.filter(function (node) { return node.tagName == element.tagName; }, '+childElements('element.parentNode')+').length == 1');break;case'empty':conditions.push('element.childNodes.length == 0');break;case'enabled':conditions.push('(this.isUIElement(element) && element.disabled === false)');break;case'disabled':conditions.push('(this.isUIElement(element) && element.disabled === true)');break;case'checked':conditions.push('(this.isUIElement(element) && element.checked === true)');break;case'not':var subselector=new MochiKit.Selector.Selector(pseudoClassArgument);conditions.push('!( '+subselector.buildMatchExpression()+')')
break;}}}
if(clause=params.attributes){MochiKit.Base.map(function(attribute){var value='MochiKit.DOM.getNodeAttribute(element, '+repr(attribute.name)+')';var splitValueBy=function(delimiter){return value+'.split('+repr(delimiter)+')';}
switch(attribute.operator){case'=':conditions.push(value+' == '+repr(attribute.value));break;case'~=':conditions.push(value+' && MochiKit.Base.findValue('+splitValueBy(' ')+', '+repr(attribute.value)+') > -1');break;case'^=':conditions.push(value+'.substring(0, '+attribute.value.length+') == '+repr(attribute.value));break;case'$=':conditions.push(value+'.substring('+value+'.length - '+attribute.value.length+') == '+repr(attribute.value));break;case'*=':conditions.push(value+'.match('+repr(attribute.value)+')');break;case'|=':conditions.push(value+' && '+splitValueBy('-')+'[0].toUpperCase() == '+repr(attribute.value.toUpperCase()));break;case'!=':conditions.push(value+' != '+repr(attribute.value));break;case'':case undefined:conditions.push(value+' != null');break;default:throw'Unknown operator '+attribute.operator+' in selector';}},clause);}
return conditions.join(' && ');},compileMatcher:function(){this.match=new Function('element','if (!element.tagName) return false; \
                return '+this.buildMatchExpression());},nthChild:function(element,a,b,reverse,sametag){var siblings=MochiKit.Base.filter(function(node){return node.nodeType==1;},element.parentNode.childNodes);if(sametag){siblings=MochiKit.Base.filter(function(node){return node.tagName==element.tagName;},siblings);}
if(reverse){siblings=MochiKit.Iter.reversed(siblings);}
if(a){var actualIndex=MochiKit.Base.findIdentical(siblings,element);return((actualIndex+1-b)/a)%1==0;}else{return b==MochiKit.Base.findIdentical(siblings,element)+1;}},isUIElement:function(element){return MochiKit.Base.findValue(['input','button','select','option','textarea','object'],element.tagName.toLowerCase())>-1;},findElements:function(scope,axis){var element;if(axis==undefined){axis="";}
function inScope(element,scope){if(axis==""){return MochiKit.DOM.isChildNode(element,scope);}else if(axis==">"){return element.parentNode==scope;}else if(axis=="+"){return element==nextSiblingElement(scope);}else if(axis=="~"){var sibling=scope;while(sibling=nextSiblingElement(sibling)){if(element==sibling){return true;}}
return false;}else{throw"Invalid axis: "+axis;}}
if(element=MochiKit.DOM.getElement(this.params.id)){if(this.match(element)){if(!scope||inScope(element,scope)){return[element];}}}
function nextSiblingElement(node){node=node.nextSibling;while(node&&node.nodeType!=1){node=node.nextSibling;}
return node;}
if(axis==""){scope=(scope||MochiKit.DOM.currentDocument()).getElementsByTagName(this.params.tagName||'*');}else if(axis==">"){if(!scope){throw"> combinator not allowed without preceeding expression";}
scope=MochiKit.Base.filter(function(node){return node.nodeType==1;},scope.childNodes);}else if(axis=="+"){if(!scope){throw"+ combinator not allowed without preceeding expression";}
scope=nextSiblingElement(scope)&&[nextSiblingElement(scope)];}else if(axis=="~"){if(!scope){throw"~ combinator not allowed without preceeding expression";}
var newscope=[];while(nextSiblingElement(scope)){scope=nextSiblingElement(scope);newscope.push(scope);}
scope=newscope;}
if(!scope){return[];}
var results=MochiKit.Base.filter(MochiKit.Base.bind(function(scopeElt){return this.match(scopeElt);},this),scope);return results;},repr:function(){return'Selector('+this.expression+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Base.update(MochiKit.Selector,{findChildElements:function(element,expressions){return MochiKit.Base.flattenArray(MochiKit.Base.map(function(expression){var nextScope="";return MochiKit.Iter.reduce(function(results,expr){if(match=expr.match(/^[>+~]$/)){nextScope=match[0];return results;}else{var selector=new MochiKit.Selector.Selector(expr);var elements=MochiKit.Iter.reduce(function(elements,result){return MochiKit.Base.extend(elements,selector.findElements(result||element,nextScope));},results,[]);nextScope="";return elements;}},expression.replace(/(^\s+|\s+$)/g,'').split(/\s+/),[null]);},expressions));},findDocElements:function(){return MochiKit.Selector.findChildElements(MochiKit.DOM.currentDocument(),arguments);},__new__:function(){var m=MochiKit.Base;this.$$=this.findDocElements;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.Selector.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Selector);;MochiKit.Base._deps('Style',['Base','DOM']);MochiKit.Style.NAME='MochiKit.Style';MochiKit.Style.VERSION='1.4';MochiKit.Style.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Style.toString=function(){return this.__repr__();};MochiKit.Style.EXPORT_OK=[];MochiKit.Style.EXPORT=['setStyle','setOpacity','getStyle','getElementDimensions','elementDimensions','setElementDimensions','getElementPosition','elementPosition','setElementPosition','setDisplayForElement','hideElement','showElement','getViewportDimensions','getViewportPosition','Dimensions','Coordinates'];MochiKit.Style.Dimensions=function(w,h){this.w=w;this.h=h;};MochiKit.Style.Dimensions.prototype.__repr__=function(){var repr=MochiKit.Base.repr;return'{w: '+repr(this.w)+', h: '+repr(this.h)+'}';};MochiKit.Style.Dimensions.prototype.toString=function(){return this.__repr__();};MochiKit.Style.Coordinates=function(x,y){this.x=x;this.y=y;};MochiKit.Style.Coordinates.prototype.__repr__=function(){var repr=MochiKit.Base.repr;return'{x: '+repr(this.x)+', y: '+repr(this.y)+'}';};MochiKit.Style.Coordinates.prototype.toString=function(){return this.__repr__();};MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,cssProperty){var dom=MochiKit.DOM;var d=dom._document;elem=dom.getElement(elem);cssProperty=MochiKit.Base.camelize(cssProperty);if(!elem||elem==d){return undefined;}
if(cssProperty=='opacity'&&typeof(elem.filters)!='undefined'){var opacity=(MochiKit.Style.getStyle(elem,'filter')||'').match(/alpha\(opacity=(.*)\)/);if(opacity&&opacity[1]){return parseFloat(opacity[1])/100;}
return 1.0;}
if(cssProperty=='float'||cssProperty=='cssFloat'||cssProperty=='styleFloat'){if(elem.style["float"]){return elem.style["float"];}else if(elem.style.cssFloat){return elem.style.cssFloat;}else if(elem.style.styleFloat){return elem.style.styleFloat;}else{return"none";}}
var value=elem.style?elem.style[cssProperty]:null;if(!value){if(d.defaultView&&d.defaultView.getComputedStyle){var css=d.defaultView.getComputedStyle(elem,null);cssProperty=cssProperty.replace(/([A-Z])/g,'-$1').toLowerCase();value=css?css.getPropertyValue(cssProperty):null;}else if(elem.currentStyle){value=elem.currentStyle[cssProperty];if(/^\d/.test(value)&&!/px$/.test(value)){var left=elem.style.left;var rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=value||0;value=elem.style.pixelLeft+"px";elem.style.left=left;elem.runtimeStyle.left=rsLeft;}}}
if(cssProperty=='opacity'){value=parseFloat(value);}
if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.findValue(['left','top','right','bottom'],cssProperty)!=-1)){if(MochiKit.Style.getStyle(elem,'position')=='static'){value='auto';}}
return value=='auto'?null:value;},setStyle:function(elem,style){elem=MochiKit.DOM.getElement(elem);for(var name in style){switch(name){case'opacity':MochiKit.Style.setOpacity(elem,style[name]);break;case'float':case'cssFloat':case'styleFloat':if(typeof(elem.style["float"])!="undefined"){elem.style["float"]=style[name];}else if(typeof(elem.style.cssFloat)!="undefined"){elem.style.cssFloat=style[name];}else{elem.style.styleFloat=style[name];}
break;default:elem.style[MochiKit.Base.camelize(name)]=style[name];}}},setOpacity:function(elem,o){elem=MochiKit.DOM.getElement(elem);var self=MochiKit.Style;if(o==1){var toSet=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));elem.style["opacity"]=toSet?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)){elem.style['filter']=self.getStyle(elem,'filter').replace(/alpha\([^\)]*\)/gi,'');}}else{if(o<0.00001){o=0;}
elem.style["opacity"]=o;if(/MSIE/.test(navigator.userAgent)){elem.style['filter']=self.getStyle(elem,'filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+o*100+')';}}},getElementPosition:function(elem,relativeTo){var self=MochiKit.Style;var dom=MochiKit.DOM;elem=dom.getElement(elem);if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,'display')=='none'))){return undefined;}
var c=new self.Coordinates(0,0);var box=null;var parent=null;var d=MochiKit.DOM._document;var de=d.documentElement;var b=d.body;if(!elem.parentNode&&elem.x&&elem.y){c.x+=elem.x||0;c.y+=elem.y||0;}else if(elem.getBoundingClientRect){box=elem.getBoundingClientRect();c.x+=box.left+
(de.scrollLeft||b.scrollLeft)-
(de.clientLeft||0);c.y+=box.top+
(de.scrollTop||b.scrollTop)-
(de.clientTop||0);}else if(elem.offsetParent){c.x+=elem.offsetLeft;c.y+=elem.offsetTop;parent=elem.offsetParent;if(parent!=elem){while(parent){c.x+=parent.offsetLeft;c.y+=parent.offsetTop;parent=parent.offsetParent;}}
var ua=navigator.userAgent.toLowerCase();if((typeof(opera)!='undefined'&&parseFloat(opera.version())<9)||(ua.indexOf('AppleWebKit')!=-1&&self.getStyle(elem,'position')=='absolute')){c.x-=b.offsetLeft;c.y-=b.offsetTop;}
if(elem.parentNode){parent=elem.parentNode;}else{parent=null;}
while(parent){var tagName=parent.tagName.toUpperCase();if(tagName==='BODY'||tagName==='HTML'){break;}
var disp=self.getStyle(parent,'display');if(disp.search(/^inline|table-row.*$/i)){c.x-=parent.scrollLeft;c.y-=parent.scrollTop;}
if(parent.parentNode){parent=parent.parentNode;}else{parent=null;}}}
if(typeof(relativeTo)!='undefined'){relativeTo=arguments.callee(relativeTo);if(relativeTo){c.x-=(relativeTo.x||0);c.y-=(relativeTo.y||0);}}
return c;},setElementPosition:function(elem,newPos,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newPos.x)){newStyle['left']=newPos.x+units;}
if(!isUndefNull(newPos.y)){newStyle['top']=newPos.y+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},getElementDimensions:function(elem,contentSize){var self=MochiKit.Style;var dom=MochiKit.DOM;if(typeof(elem.w)=='number'||typeof(elem.h)=='number'){return new self.Dimensions(elem.w||0,elem.h||0);}
elem=dom.getElement(elem);if(!elem){return undefined;}
var disp=self.getStyle(elem,'display');if(disp=='none'||disp==''||typeof(disp)=='undefined'){var s=elem.style;var originalVisibility=s.visibility;var originalPosition=s.position;var originalDisplay=s.display;s.visibility='hidden';s.position='absolute';s.display='';var originalWidth=elem.offsetWidth;var originalHeight=elem.offsetHeight;s.display=originalDisplay;s.position=originalPosition;s.visibility=originalVisibility;}else{originalWidth=elem.offsetWidth||0;originalHeight=elem.offsetHeight||0;}
if(contentSize){originalWidth-=Math.round((parseFloat(self.getStyle(elem,'paddingLeft'))||0)
+(parseFloat(self.getStyle(elem,'paddingRight'))||0)
+(parseFloat(self.getStyle(elem,'borderLeftWidth'))||0)
+(parseFloat(self.getStyle(elem,'borderRightWidth'))||0));originalHeight-=Math.round((parseFloat(self.getStyle(elem,'paddingTop'))||0)
+(parseFloat(self.getStyle(elem,'paddingBottom'))||0)
+(parseFloat(self.getStyle(elem,'borderTopWidth'))||0)
+(parseFloat(self.getStyle(elem,'borderBottomWidth'))||0));}
return new self.Dimensions(originalWidth,originalHeight);},setElementDimensions:function(elem,newSize,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newSize.w)){newStyle['width']=newSize.w+units;}
if(!isUndefNull(newSize.h)){newStyle['height']=newSize.h+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},setDisplayForElement:function(display,element){var elements=MochiKit.Base.extend(null,arguments,1);var getElement=MochiKit.DOM.getElement;for(var i=0;i<elements.length;i++){element=getElement(elements[i]);if(element){element.style.display=display;}}},getViewportDimensions:function(){var d=new MochiKit.Style.Dimensions();var w=MochiKit.DOM._window;var b=MochiKit.DOM._document.body;if(w.innerWidth){d.w=w.innerWidth;d.h=w.innerHeight;}else if(b.parentElement.clientWidth){d.w=b.parentElement.clientWidth;d.h=b.parentElement.clientHeight;}else if(b&&b.clientWidth){d.w=b.clientWidth;d.h=b.clientHeight;}
return d;},getViewportPosition:function(){var c=new MochiKit.Style.Coordinates(0,0);var d=MochiKit.DOM._document;var de=d.documentElement;var db=d.body;if(de&&(de.scrollTop||de.scrollLeft)){c.x=de.scrollLeft;c.y=de.scrollTop;}else if(db){c.x=db.scrollLeft;c.y=db.scrollTop;}
return c;},__new__:function(){var m=MochiKit.Base;this.elementPosition=this.getElementPosition;this.elementDimensions=this.getElementDimensions;this.hideElement=m.partial(this.setDisplayForElement,'none');this.showElement=m.partial(this.setDisplayForElement,'block');this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.Style.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Style);;MochiKit.Base._deps('LoggingPane',['Base','Logging']);MochiKit.LoggingPane.NAME="MochiKit.LoggingPane";MochiKit.LoggingPane.VERSION="1.4";MochiKit.LoggingPane.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.LoggingPane.toString=function(){return this.__repr__();};MochiKit.LoggingPane.createLoggingPane=function(inline){var m=MochiKit.LoggingPane;inline=!(!inline);if(m._loggingPane&&m._loggingPane.inline!=inline){m._loggingPane.closePane();m._loggingPane=null;}
if(!m._loggingPane||m._loggingPane.closed){m._loggingPane=new m.LoggingPane(inline,MochiKit.Logging.logger);}
return m._loggingPane;};MochiKit.LoggingPane.LoggingPane=function(inline,logger){if(typeof(logger)=="undefined"||logger===null){logger=MochiKit.Logging.logger;}
this.logger=logger;var update=MochiKit.Base.update;var updatetree=MochiKit.Base.updatetree;var bind=MochiKit.Base.bind;var clone=MochiKit.Base.clone;var win=window;var uid="_MochiKit_LoggingPane";if(typeof(MochiKit.DOM)!="undefined"){win=MochiKit.DOM.currentWindow();}
if(!inline){var url=win.location.href.split("?")[0].replace(/[#:\/.><&%-]/g,"_");var name=uid+"_"+url;var nwin=win.open("",name,"dependent,resizable,height=200");if(!nwin){alert("Not able to open debugging window due to pop-up blocking.");return undefined;}
nwin.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
+'"http://www.w3.org/TR/html4/loose.dtd">'
+'<html><head><title>[MochiKit.LoggingPane]</title></head>'
+'<body></body></html>');nwin.document.close();nwin.document.title+=' '+win.document.title;win=nwin;}
var doc=win.document;this.doc=doc;var debugPane=doc.getElementById(uid);var existing_pane=!!debugPane;if(debugPane&&typeof(debugPane.loggingPane)!="undefined"){debugPane.loggingPane.logger=this.logger;debugPane.loggingPane.buildAndApplyFilter();return debugPane.loggingPane;}
if(existing_pane){var child;while((child=debugPane.firstChild)){debugPane.removeChild(child);}}else{debugPane=doc.createElement("div");debugPane.id=uid;}
debugPane.loggingPane=this;var levelFilterField=doc.createElement("input");var infoFilterField=doc.createElement("input");var filterButton=doc.createElement("button");var loadButton=doc.createElement("button");var clearButton=doc.createElement("button");var closeButton=doc.createElement("button");var logPaneArea=doc.createElement("div");var logPane=doc.createElement("div");var listenerId=uid+"_Listener";this.colorTable=clone(this.colorTable);var messages=[];var messageFilter=null;var messageLevel=function(msg){var level=msg.level;if(typeof(level)=="number"){level=MochiKit.Logging.LogLevel[level];}
return level;};var messageText=function(msg){return msg.info.join(" ");};var addMessageText=bind(function(msg){var level=messageLevel(msg);var text=messageText(msg);var c=this.colorTable[level];var p=doc.createElement("span");p.className="MochiKit-LogMessage MochiKit-LogLevel-"+level;p.style.cssText="margin: 0px; white-space: -moz-pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; wrap-option: emergency; color: "+c;p.appendChild(doc.createTextNode(level+": "+text));logPane.appendChild(p);logPane.appendChild(doc.createElement("br"));if(logPaneArea.offsetHeight>logPaneArea.scrollHeight){logPaneArea.scrollTop=0;}else{logPaneArea.scrollTop=logPaneArea.scrollHeight;}},this);var addMessage=function(msg){messages[messages.length]=msg;addMessageText(msg);};var buildMessageFilter=function(){var levelre,infore;try{levelre=new RegExp(levelFilterField.value);infore=new RegExp(infoFilterField.value);}catch(e){logDebug("Error in filter regex: "+e.message);return null;}
return function(msg){return(levelre.test(messageLevel(msg))&&infore.test(messageText(msg)));};};var clearMessagePane=function(){while(logPane.firstChild){logPane.removeChild(logPane.firstChild);}};var clearMessages=function(){messages=[];clearMessagePane();};var closePane=bind(function(){if(this.closed){return;}
this.closed=true;if(MochiKit.LoggingPane._loggingPane==this){MochiKit.LoggingPane._loggingPane=null;}
this.logger.removeListener(listenerId);try{try{debugPane.loggingPane=null;}catch(e){logFatal("Bookmarklet was closed incorrectly.");}
if(inline){debugPane.parentNode.removeChild(debugPane);}else{this.win.close();}}catch(e){}},this);var filterMessages=function(){clearMessagePane();for(var i=0;i<messages.length;i++){var msg=messages[i];if(messageFilter===null||messageFilter(msg)){addMessageText(msg);}}};this.buildAndApplyFilter=function(){messageFilter=buildMessageFilter();filterMessages();this.logger.removeListener(listenerId);this.logger.addListener(listenerId,messageFilter,addMessage);};var loadMessages=bind(function(){messages=this.logger.getMessages();filterMessages();},this);var filterOnEnter=bind(function(event){event=event||window.event;key=event.which||event.keyCode;if(key==13){this.buildAndApplyFilter();}},this);var style="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont;if(inline){style+="; height: 10em; border-top: 2px solid black";}else{style+="; height: 100%;";}
debugPane.style.cssText=style;if(!existing_pane){doc.body.appendChild(debugPane);}
style={"cssText":"width: 33%; display: inline; font: "+this.logFont};updatetree(levelFilterField,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":filterOnEnter,"style":style});debugPane.appendChild(levelFilterField);updatetree(infoFilterField,{"value":".*","onkeypress":filterOnEnter,"style":style});debugPane.appendChild(infoFilterField);style="width: 8%; display:inline; font: "+this.logFont;filterButton.appendChild(doc.createTextNode("Filter"));filterButton.onclick=bind("buildAndApplyFilter",this);filterButton.style.cssText=style;debugPane.appendChild(filterButton);loadButton.appendChild(doc.createTextNode("Load"));loadButton.onclick=loadMessages;loadButton.style.cssText=style;debugPane.appendChild(loadButton);clearButton.appendChild(doc.createTextNode("Clear"));clearButton.onclick=clearMessages;clearButton.style.cssText=style;debugPane.appendChild(clearButton);closeButton.appendChild(doc.createTextNode("Close"));closeButton.onclick=closePane;closeButton.style.cssText=style;debugPane.appendChild(closeButton);logPaneArea.style.cssText="overflow: auto; width: 100%";logPane.style.cssText="width: 100%; height: "+(inline?"8em":"100%");logPaneArea.appendChild(logPane);debugPane.appendChild(logPaneArea);this.buildAndApplyFilter();loadMessages();if(inline){this.win=undefined;}else{this.win=win;}
this.inline=inline;this.closePane=closePane;this.closed=false;return this;};MochiKit.LoggingPane.LoggingPane.prototype={"logFont":"8pt Verdana,sans-serif","colorTable":{"ERROR":"red","FATAL":"darkred","WARNING":"blue","INFO":"black","DEBUG":"green"}};MochiKit.LoggingPane.EXPORT_OK=["LoggingPane"];MochiKit.LoggingPane.EXPORT=["createLoggingPane"];MochiKit.LoggingPane.__new__=function(){this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};MochiKit.Base.nameFunctions(this);MochiKit.LoggingPane._loggingPane=null;};MochiKit.LoggingPane.__new__();MochiKit.Base._exportSymbols(this,MochiKit.LoggingPane);;MochiKit.Base._deps('Color',['Base','DOM','Style']);MochiKit.Color.NAME="MochiKit.Color";MochiKit.Color.VERSION="1.4";MochiKit.Color.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Color.toString=function(){return this.__repr__();};MochiKit.Color.Color=function(red,green,blue,alpha){if(typeof(alpha)=='undefined'||alpha===null){alpha=1.0;}
this.rgb={r:red,g:green,b:blue,a:alpha};};MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(alpha){var rgb=this.rgb;var m=MochiKit.Color;return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,alpha);},colorWithHue:function(hue){var hsl=this.asHSL();hsl.h=hue;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},colorWithSaturation:function(saturation){var hsl=this.asHSL();hsl.s=saturation;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},colorWithLightness:function(lightness){var hsl=this.asHSL();hsl.l=lightness;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},darkerColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.max(hsl.l-level,0);var m=MochiKit.Color;return m.Color.fromHSL(hsl);},lighterColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.min(hsl.l+level,1);var m=MochiKit.Color;return m.Color.fromHSL(hsl);},blendedColor:function(other,fraction){if(typeof(fraction)=='undefined'||fraction===null){fraction=0.5;}
var sf=1.0-fraction;var s=this.rgb;var d=other.rgb;var df=fraction;return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));},compareRGB:function(other){var a=this.asRGB();var b=other.asRGB();return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);},isLight:function(){return this.asHSL().b>0.5;},isDark:function(){return(!this.isLight());},toHSLString:function(){var c=this.asHSL();var ccc=MochiKit.Color.clampColorComponent;var rval=this._hslString;if(!rval){var mid=(ccc(c.h,360).toFixed(0)
+","+ccc(c.s,100).toPrecision(4)+"%"
+","+ccc(c.l,100).toPrecision(4)+"%");var a=c.a;if(a>=1){a=1;rval="hsl("+mid+")";}else{if(a<=0){a=0;}
rval="hsla("+mid+","+a+")";}
this._hslString=rval;}
return rval;},toRGBString:function(){var c=this.rgb;var ccc=MochiKit.Color.clampColorComponent;var rval=this._rgbString;if(!rval){var mid=(ccc(c.r,255).toFixed(0)
+","+ccc(c.g,255).toFixed(0)
+","+ccc(c.b,255).toFixed(0));if(c.a!=1){rval="rgba("+mid+","+c.a+")";}else{rval="rgb("+mid+")";}
this._rgbString=rval;}
return rval;},asRGB:function(){return MochiKit.Base.clone(this.rgb);},toHexString:function(){var m=MochiKit.Color;var c=this.rgb;var ccc=MochiKit.Color.clampColorComponent;var rval=this._hexString;if(!rval){rval=("#"+
m.toColorPart(ccc(c.r,255))+
m.toColorPart(ccc(c.g,255))+
m.toColorPart(ccc(c.b,255)));this._hexString=rval;}
return rval;},asHSV:function(){var hsv=this.hsv;var c=this.rgb;if(typeof(hsv)=='undefined'||hsv===null){hsv=MochiKit.Color.rgbToHSV(this.rgb);this.hsv=hsv;}
return MochiKit.Base.clone(hsv);},asHSL:function(){var hsl=this.hsl;var c=this.rgb;if(typeof(hsl)=='undefined'||hsl===null){hsl=MochiKit.Color.rgbToHSL(this.rgb);this.hsl=hsl;}
return MochiKit.Base.clone(hsl);},toString:function(){return this.toRGBString();},repr:function(){var c=this.rgb;var col=[c.r,c.g,c.b,c.a];return this.__class__.NAME+"("+col.join(", ")+")";}};MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,green,blue,alpha){var Color=MochiKit.Color.Color;if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;if(typeof(rgb.a)=='undefined'){alpha=undefined;}else{alpha=rgb.a;}}
return new Color(red,green,blue,alpha);},fromHSL:function(hue,saturation,lightness,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));},fromHSV:function(hue,saturation,value,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));},fromName:function(name){var Color=MochiKit.Color.Color;if(name.charAt(0)=='"'){name=name.substr(1,name.length-2);}
var htmlColor=Color._namedColors[name.toLowerCase()];if(typeof(htmlColor)=='string'){return Color.fromHexString(htmlColor);}else if(name=="transparent"){return Color.transparentColor();}
return null;},fromString:function(colorString){var self=MochiKit.Color.Color;var three=colorString.substr(0,3);if(three=="rgb"){return self.fromRGBString(colorString);}else if(three=="hsl"){return self.fromHSLString(colorString);}else if(colorString.charAt(0)=="#"){return self.fromHexString(colorString);}
return self.fromName(colorString);},fromHexString:function(hexCode){if(hexCode.charAt(0)=='#'){hexCode=hexCode.substring(1);}
var components=[];var i,hex;if(hexCode.length==3){for(i=0;i<3;i++){hex=hexCode.substr(i,1);components.push(parseInt(hex+hex,16)/255.0);}}else{for(i=0;i<6;i+=2){hex=hexCode.substr(i,2);components.push(parseInt(hex,16)/255.0);}}
var Color=MochiKit.Color.Color;return Color.fromRGB.apply(Color,components);},_fromColorString:function(pre,method,scales,colorCode){if(colorCode.indexOf(pre)===0){colorCode=colorCode.substring(colorCode.indexOf("(",3)+1,colorCode.length-1);}
var colorChunks=colorCode.split(/\s*,\s*/);var colorFloats=[];for(var i=0;i<colorChunks.length;i++){var c=colorChunks[i];var val;var three=c.substring(c.length-3);if(c.charAt(c.length-1)=='%'){val=0.01*parseFloat(c.substring(0,c.length-1));}else if(three=="deg"){val=parseFloat(c)/360.0;}else if(three=="rad"){val=parseFloat(c)/(Math.PI*2);}else{val=scales[i]*parseFloat(c);}
colorFloats.push(val);}
return this[method].apply(this,colorFloats);},fromComputedStyle:function(elem,style){var d=MochiKit.DOM;var cls=MochiKit.Color.Color;for(elem=d.getElement(elem);elem;elem=elem.parentNode){var actualColor=MochiKit.Style.getStyle.apply(d,arguments);if(!actualColor){continue;}
var color=cls.fromString(actualColor);if(!color){break;}
if(color.asRGB().a>0){return color;}}
return null;},fromBackground:function(elem){var cls=MochiKit.Color.Color;return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();},fromText:function(elem){var cls=MochiKit.Color.Color;return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();},namedColors:function(){return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);}});MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,scale){v*=scale;if(v<0){return 0;}else if(v>scale){return scale;}else{return v;}},_hslValue:function(n1,n2,hue){if(hue>6.0){hue-=6.0;}else if(hue<0.0){hue+=6.0;}
var val;if(hue<1.0){val=n1+(n2-n1)*hue;}else if(hue<3.0){val=n2;}else if(hue<4.0){val=n1+(n2-n1)*(4.0-hue);}else{val=n1;}
return val;},hsvToRGB:function(hue,saturation,value,alpha){if(arguments.length==1){var hsv=hue;hue=hsv.h;saturation=hsv.s;value=hsv.v;alpha=hsv.a;}
var red;var green;var blue;if(saturation===0){red=value;green=value;blue=value;}else{var i=Math.floor(hue*6);var f=(hue*6)-i;var p=value*(1-saturation);var q=value*(1-(saturation*f));var t=value*(1-(saturation*(1-f)));switch(i){case 1:red=q;green=value;blue=p;break;case 2:red=p;green=value;blue=t;break;case 3:red=p;green=q;blue=value;break;case 4:red=t;green=p;blue=value;break;case 5:red=value;green=p;blue=q;break;case 6:case 0:red=value;green=t;blue=p;break;}}
return{r:red,g:green,b:blue,a:alpha};},hslToRGB:function(hue,saturation,lightness,alpha){if(arguments.length==1){var hsl=hue;hue=hsl.h;saturation=hsl.s;lightness=hsl.l;alpha=hsl.a;}
var red;var green;var blue;if(saturation===0){red=lightness;green=lightness;blue=lightness;}else{var m2;if(lightness<=0.5){m2=lightness*(1.0+saturation);}else{m2=lightness+saturation-(lightness*saturation);}
var m1=(2.0*lightness)-m2;var f=MochiKit.Color._hslValue;var h6=hue*6.0;red=f(m1,m2,h6+2);green=f(m1,m2,h6);blue=f(m1,m2,h6-2);}
return{r:red,g:green,b:blue,a:alpha};},rgbToHSV:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a;}
var max=Math.max(Math.max(red,green),blue);var min=Math.min(Math.min(red,green),blue);var hue;var saturation;var value=max;if(min==max){hue=0;saturation=0;}else{var delta=(max-min);saturation=delta/max;if(red==max){hue=(green-blue)/delta;}else if(green==max){hue=2+((blue-red)/delta);}else{hue=4+((red-green)/delta);}
hue/=6;if(hue<0){hue+=1;}
if(hue>1){hue-=1;}}
return{h:hue,s:saturation,v:value,a:alpha};},rgbToHSL:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a;}
var max=Math.max(red,Math.max(green,blue));var min=Math.min(red,Math.min(green,blue));var hue;var saturation;var lightness=(max+min)/2.0;var delta=max-min;if(delta===0){hue=0;saturation=0;}else{if(lightness<=0.5){saturation=delta/(max+min);}else{saturation=delta/(2-max-min);}
if(red==max){hue=(green-blue)/delta;}else if(green==max){hue=2+((blue-red)/delta);}else{hue=4+((red-green)/delta);}
hue/=6;if(hue<0){hue+=1;}
if(hue>1){hue-=1;}}
return{h:hue,s:saturation,l:lightness,a:alpha};},toColorPart:function(num){num=Math.round(num);var digits=num.toString(16);if(num<16){return'0'+digits;}
return digits;},__new__:function(){var m=MochiKit.Base;this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1.0/255.0,1.0/255.0,1.0/255.0,1]);this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1.0/360.0,0.01,0.01,1]);var third=1.0/3.0;var colors={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[third,third,third],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*third,2*third,2*third],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};var makeColor=function(name,r,g,b,a){var rval=this.fromRGB(r,g,b,a);this[name]=function(){return rval;};return rval;};for(var k in colors){var name=k+"Color";var bindArgs=m.concat([makeColor,this.Color,name],colors[k]);this.Color[name]=m.bind.apply(null,bindArgs);}
var isColor=function(){for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof MochiKit.Color.Color)){return false;}}
return true;};var compareColor=function(a,b){return a.compareRGB(b);};m.nameFunctions(this);m.registerComparator(this.Color.NAME,isColor,compareColor);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};}});MochiKit.Color.EXPORT=["Color"];MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];MochiKit.Color.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Color);MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};;MochiKit.Base._deps('Signal',['Base','DOM','Style']);MochiKit.Signal.NAME='MochiKit.Signal';MochiKit.Signal.VERSION='1.4';MochiKit.Signal._observers=[];MochiKit.Signal.Event=function(src,e){this._event=e||window.event;this._src=src;};MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){var repr=MochiKit.Base.repr;var str='{event(): '+repr(this.event())+', src(): '+repr(this.src())+', type(): '+repr(this.type())+', target(): '+repr(this.target());if(this.type()&&this.type().indexOf('key')===0||this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu'){str+=', modifier(): '+'{alt: '+repr(this.modifier().alt)+', ctrl: '+repr(this.modifier().ctrl)+', meta: '+repr(this.modifier().meta)+', shift: '+repr(this.modifier().shift)+', any: '+repr(this.modifier().any)+'}';}
if(this.type()&&this.type().indexOf('key')===0){str+=', key(): {code: '+repr(this.key().code)+', string: '+repr(this.key().string)+'}';}
if(this.type()&&(this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu')){str+=', mouse(): {page: '+repr(this.mouse().page)+', client: '+repr(this.mouse().client);if(this.type()!='mousemove'&&this.type()!='mousewheel'){str+=', button: {left: '+repr(this.mouse().button.left)+', middle: '+repr(this.mouse().button.middle)+', right: '+repr(this.mouse().button.right)+'}';}
if(this.type()=='mousewheel'){str+=', wheel: '+repr(this.mouse().wheel);}
str+='}';}
if(this.type()=='mouseover'||this.type()=='mouseout'||this.type()=='mouseenter'||this.type()=='mouseleave'){str+=', relatedTarget(): '+repr(this.relatedTarget());}
str+='}';return str;},toString:function(){return this.__repr__();},src:function(){return this._src;},event:function(){return this._event;},type:function(){if(this._event.type==="DOMMouseScroll"){return"mousewheel";}else{return this._event.type||undefined;}},target:function(){return this._event.target||this._event.srcElement;},_relatedTarget:null,relatedTarget:function(){if(this._relatedTarget!==null){return this._relatedTarget;}
var elem=null;if(this.type()=='mouseover'||this.type()=='mouseenter'){elem=(this._event.relatedTarget||this._event.fromElement);}else if(this.type()=='mouseout'||this.type()=='mouseleave'){elem=(this._event.relatedTarget||this._event.toElement);}
if(elem!==null){this._relatedTarget=elem;return elem;}
return undefined;},_modifier:null,modifier:function(){if(this._modifier!==null){return this._modifier;}
var m={};m.alt=this._event.altKey;m.ctrl=this._event.ctrlKey;m.meta=this._event.metaKey||false;m.shift=this._event.shiftKey;m.any=m.alt||m.ctrl||m.shift||m.meta;this._modifier=m;return m;},_key:null,key:function(){if(this._key!==null){return this._key;}
var k={};if(this.type()&&this.type().indexOf('key')===0){if(this.type()=='keydown'||this.type()=='keyup'){k.code=this._event.keyCode;k.string=(MochiKit.Signal._specialKeys[k.code]||'KEY_UNKNOWN');this._key=k;return k;}else if(this.type()=='keypress'){k.code=0;k.string='';if(typeof(this._event.charCode)!='undefined'&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){k.code=this._event.charCode;k.string=String.fromCharCode(k.code);}else if(this._event.keyCode&&typeof(this._event.charCode)=='undefined'){k.code=this._event.keyCode;k.string=String.fromCharCode(k.code);}
this._key=k;return k;}}
return undefined;},_mouse:null,mouse:function(){if(this._mouse!==null){return this._mouse;}
var m={};var e=this._event;if(this.type()&&(this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu')){m.client=new MochiKit.Style.Coordinates(0,0);if(e.clientX||e.clientY){m.client.x=(!e.clientX||e.clientX<0)?0:e.clientX;m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;}
m.page=new MochiKit.Style.Coordinates(0,0);if(e.pageX||e.pageY){m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;m.page.y=(!e.pageY||e.pageY<0)?0:e.pageY;}else{var de=MochiKit.DOM._document.documentElement;var b=MochiKit.DOM._document.body;m.page.x=e.clientX+
(de.scrollLeft||b.scrollLeft)-
(de.clientLeft||0);m.page.y=e.clientY+
(de.scrollTop||b.scrollTop)-
(de.clientTop||0);}
if(this.type()!='mousemove'&&this.type()!='mousewheel'){m.button={};m.button.left=false;m.button.right=false;m.button.middle=false;if(e.which){m.button.left=(e.which==1);m.button.middle=(e.which==2);m.button.right=(e.which==3);}else{m.button.left=!!(e.button&1);m.button.right=!!(e.button&2);m.button.middle=!!(e.button&4);}}
if(this.type()=='mousewheel'){m.wheel=new MochiKit.Style.Coordinates(0,0);if(e.wheelDeltaX||e.wheelDeltaY){m.wheel.x=e.wheelDeltaX/-40||0;m.wheel.y=e.wheelDeltaY/-40||0;}else if(e.wheelDelta){m.wheel.y=e.wheelDelta/-40;}else{m.wheel.y=e.detail||0;}}
this._mouse=m;return m;}
return undefined;},stop:function(){this.stopPropagation();this.preventDefault();},stopPropagation:function(){if(this._event.stopPropagation){this._event.stopPropagation();}else{this._event.cancelBubble=true;}},preventDefault:function(){if(this._event.preventDefault){this._event.preventDefault();}else if(this._confirmUnload===null){this._event.returnValue=false;}},_confirmUnload:null,confirmUnload:function(msg){if(this.type()=='beforeunload'){this._confirmUnload=msg;this._event.returnValue=msg;}}});MochiKit.Signal._specialMacKeys={3:'KEY_ENTER',63289:'KEY_NUM_PAD_CLEAR',63276:'KEY_PAGE_UP',63277:'KEY_PAGE_DOWN',63275:'KEY_END',63273:'KEY_HOME',63234:'KEY_ARROW_LEFT',63232:'KEY_ARROW_UP',63235:'KEY_ARROW_RIGHT',63233:'KEY_ARROW_DOWN',63302:'KEY_INSERT',63272:'KEY_DELETE'};(function(){var _specialMacKeys=MochiKit.Signal._specialMacKeys;for(i=63236;i<=63242;i++){_specialMacKeys[i]='KEY_F'+(i-63236+1);}})();MochiKit.Signal._specialKeys={8:'KEY_BACKSPACE',9:'KEY_TAB',12:'KEY_NUM_PAD_CLEAR',13:'KEY_ENTER',16:'KEY_SHIFT',17:'KEY_CTRL',18:'KEY_ALT',19:'KEY_PAUSE',20:'KEY_CAPS_LOCK',27:'KEY_ESCAPE',32:'KEY_SPACEBAR',33:'KEY_PAGE_UP',34:'KEY_PAGE_DOWN',35:'KEY_END',36:'KEY_HOME',37:'KEY_ARROW_LEFT',38:'KEY_ARROW_UP',39:'KEY_ARROW_RIGHT',40:'KEY_ARROW_DOWN',44:'KEY_PRINT_SCREEN',45:'KEY_INSERT',46:'KEY_DELETE',59:'KEY_SEMICOLON',91:'KEY_WINDOWS_LEFT',92:'KEY_WINDOWS_RIGHT',93:'KEY_SELECT',106:'KEY_NUM_PAD_ASTERISK',107:'KEY_NUM_PAD_PLUS_SIGN',109:'KEY_NUM_PAD_HYPHEN-MINUS',110:'KEY_NUM_PAD_FULL_STOP',111:'KEY_NUM_PAD_SOLIDUS',144:'KEY_NUM_LOCK',145:'KEY_SCROLL_LOCK',186:'KEY_SEMICOLON',187:'KEY_EQUALS_SIGN',188:'KEY_COMMA',189:'KEY_HYPHEN-MINUS',190:'KEY_FULL_STOP',191:'KEY_SOLIDUS',192:'KEY_GRAVE_ACCENT',219:'KEY_LEFT_SQUARE_BRACKET',220:'KEY_REVERSE_SOLIDUS',221:'KEY_RIGHT_SQUARE_BRACKET',222:'KEY_APOSTROPHE'};(function(){var _specialKeys=MochiKit.Signal._specialKeys;for(var i=48;i<=57;i++){_specialKeys[i]='KEY_'+(i-48);}
for(i=65;i<=90;i++){_specialKeys[i]='KEY_'+String.fromCharCode(i);}
for(i=96;i<=105;i++){_specialKeys[i]='KEY_NUM_PAD_'+(i-96);}
for(i=112;i<=123;i++){_specialKeys[i]='KEY_F'+(i-112+1);}})();MochiKit.Signal.Ident=function(ident){this.source=ident.source;this.signal=ident.signal;this.listener=ident.listener;this.isDOM=ident.isDOM;this.objOrFunc=ident.objOrFunc;this.funcOrStr=ident.funcOrStr;this.connected=ident.connected;};MochiKit.Signal.Ident.prototype={};MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){return'['+this.NAME+' '+this.VERSION+']';},toString:function(){return this.__repr__();},_unloadCache:function(){var self=MochiKit.Signal;var observers=self._observers;for(var i=0;i<observers.length;i++){if(observers[i].signal!=='onload'&&observers[i].signal!=='onunload'){self._disconnect(observers[i]);}}},_listener:function(src,sig,func,obj,isDOM){var self=MochiKit.Signal;var E=self.Event;if(!isDOM){if(typeof(func.im_self)=='undefined'){return MochiKit.Base.bind(func,obj);}else{return func;}}
obj=obj||src;if(typeof(func)=="string"){if(sig==='onload'||sig==='onunload'){return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);};}}else{if(sig==='onload'||sig==='onunload'){return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);};}}},_browserAlreadyHasMouseEnterAndLeave:function(){return/MSIE/.test(navigator.userAgent);},_browserLacksMouseWheelEvent:function(){return/(Gecko\/)/.test(navigator.userAgent);},_mouseEnterListener:function(src,sig,func,obj){var E=MochiKit.Signal.Event;return function(nativeEvent){var e=new E(src,nativeEvent);try{e.relatedTarget().nodeName;}catch(err){return;}
e.stop();if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){return;}
e.type=function(){return sig;};if(typeof(func)=="string"){return obj[func].apply(obj,[e]);}else{return func.apply(obj,[e]);}};},_getDestPair:function(objOrFunc,funcOrStr){var obj=null;var func=null;if(typeof(funcOrStr)!='undefined'){obj=objOrFunc;func=funcOrStr;if(typeof(funcOrStr)=='string'){if(typeof(objOrFunc[funcOrStr])!="function"){throw new Error("'funcOrStr' must be a function on 'objOrFunc'");}}else if(typeof(funcOrStr)!='function'){throw new Error("'funcOrStr' must be a function or string");}}else if(typeof(objOrFunc)!="function"){throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");}else{func=objOrFunc;}
return[obj,func];},connect:function(src,sig,objOrFunc,funcOrStr){src=MochiKit.DOM.getElement(src);var self=MochiKit.Signal;if(typeof(sig)!='string'){throw new Error("'sig' must be a string");}
var destPair=self._getDestPair(objOrFunc,funcOrStr);var obj=destPair[0];var func=destPair[1];if(typeof(obj)=='undefined'||obj===null){obj=src;}
var isDOM=!!(src.addEventListener||src.attachEvent);if(isDOM&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){var listener=self._mouseEnterListener(src,sig.substr(2),func,obj);if(sig==="onmouseenter"){sig="onmouseover";}else{sig="onmouseout";}}else if(isDOM&&sig=="onmousewheel"&&self._browserLacksMouseWheelEvent()){var listener=self._listener(src,sig,func,obj,isDOM);sig="onDOMMouseScroll";}else{var listener=self._listener(src,sig,func,obj,isDOM);}
if(src.addEventListener){src.addEventListener(sig.substr(2),listener,false);}else if(src.attachEvent){src.attachEvent(sig,listener);}
var ident=new MochiKit.Signal.Ident({source:src,signal:sig,listener:listener,isDOM:isDOM,objOrFunc:objOrFunc,funcOrStr:funcOrStr,connected:true});self._observers.push(ident);if(!isDOM&&typeof(src.__connect__)=='function'){var args=MochiKit.Base.extend([ident],arguments,1);src.__connect__.apply(src,args);}
return ident;},_disconnect:function(ident){if(!ident.connected){return;}
ident.connected=false;var src=ident.source;var sig=ident.signal;var listener=ident.listener;if(!ident.isDOM){if(typeof(src.__disconnect__)=='function'){src.__disconnect__(ident,sig,ident.objOrFunc,ident.funcOrStr);}
return;}
if(src.removeEventListener){src.removeEventListener(sig.substr(2),listener,false);}else if(src.detachEvent){src.detachEvent(sig,listener);}else{throw new Error("'src' must be a DOM element");}},disconnect:function(ident){var self=MochiKit.Signal;var observers=self._observers;var m=MochiKit.Base;if(arguments.length>1){var src=MochiKit.DOM.getElement(arguments[0]);var sig=arguments[1];var obj=arguments[2];var func=arguments[3];for(var i=observers.length-1;i>=0;i--){var o=observers[i];if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){self._disconnect(o);if(!self._lock){observers.splice(i,1);}else{self._dirty=true;}
return true;}}}else{var idx=m.findIdentical(observers,ident);if(idx>=0){self._disconnect(ident);if(!self._lock){observers.splice(idx,1);}else{self._dirty=true;}
return true;}}
return false;},disconnectAllTo:function(objOrFunc,funcOrStr){var self=MochiKit.Signal;var observers=self._observers;var disconnect=self._disconnect;var locked=self._lock;var dirty=self._dirty;if(typeof(funcOrStr)==='undefined'){funcOrStr=null;}
for(var i=observers.length-1;i>=0;i--){var ident=observers[i];if(ident.objOrFunc===objOrFunc&&(funcOrStr===null||ident.funcOrStr===funcOrStr)){disconnect(ident);if(locked){dirty=true;}else{observers.splice(i,1);}}}
self._dirty=dirty;},disconnectAll:function(src,sig){src=MochiKit.DOM.getElement(src);var m=MochiKit.Base;var signals=m.flattenArguments(m.extend(null,arguments,1));var self=MochiKit.Signal;var disconnect=self._disconnect;var observers=self._observers;var i,ident;var locked=self._lock;var dirty=self._dirty;if(signals.length===0){for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}else{var sigs={};for(i=0;i<signals.length;i++){sigs[signals[i]]=true;}
for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src&&ident.signal in sigs){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}
self._dirty=dirty;},signal:function(src,sig){var self=MochiKit.Signal;var observers=self._observers;src=MochiKit.DOM.getElement(src);var args=MochiKit.Base.extend(null,arguments,2);var errors=[];self._lock=true;for(var i=0;i<observers.length;i++){var ident=observers[i];if(ident.source===src&&ident.signal===sig&&ident.connected){try{ident.listener.apply(src,args);}catch(e){errors.push(e);}}}
self._lock=false;if(self._dirty){self._dirty=false;for(var i=observers.length-1;i>=0;i--){if(!observers[i].connected){observers.splice(i,1);}}}
if(errors.length==1){throw errors[0];}else if(errors.length>1){var e=new Error("Multiple errors thrown in handling 'sig', see errors property");e.errors=errors;throw e;}}});MochiKit.Signal.EXPORT_OK=[];MochiKit.Signal.EXPORT=['connect','disconnect','signal','disconnectAll','disconnectAllTo'];MochiKit.Signal.__new__=function(win){var m=MochiKit.Base;this._document=document;this._window=win;this._lock=false;this._dirty=false;try{this.connect(window,'onunload',this._unloadCache);}catch(e){}
this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Signal.__new__(this);if(MochiKit.__export__){connect=MochiKit.Signal.connect;disconnect=MochiKit.Signal.disconnect;disconnectAll=MochiKit.Signal.disconnectAll;signal=MochiKit.Signal.signal;}
MochiKit.Base._exportSymbols(this,MochiKit.Signal);;MochiKit.Base._deps('Position',['Base','DOM','Style']);MochiKit.Position.NAME='MochiKit.Position';MochiKit.Position.VERSION='1.4';MochiKit.Position.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Position.toString=function(){return this.__repr__();};MochiKit.Position.EXPORT_OK=[];MochiKit.Position.EXPORT=[];MochiKit.Base.update(MochiKit.Position,{includeScrollOffsets:false,prepare:function(){var deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;var deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;this.windowOffset=new MochiKit.Style.Coordinates(deltaX,deltaY);},cumulativeOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},realOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},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);if(element.style.position=="fixed"){this.offset.x+=this.windowOffset.x;this.offset.y+=this.windowOffset.y;}
return(y>=this.offset.y&&y<this.offset.y+element.offsetHeight&&x>=this.offset.x&&x<this.offset.x+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache.x-this.windowOffset.x;this.ycomp=y+offsetcache.y-this.windowOffset.y;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset.y&&this.ycomp<this.offset.y+element.offsetHeight&&this.xcomp>=this.offset.x&&this.xcomp<this.offset.x+element.offsetWidth);},overlap:function(mode,element){if(!mode){return 0;}
if(mode=='vertical'){return((this.offset.y+element.offsetHeight)-this.ycomp)/element.offsetHeight;}
if(mode=='horizontal'){return((this.offset.x+element.offsetWidth)-this.xcomp)/element.offsetWidth;}},absolutize:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=='absolute'){return;}
MochiKit.Position.prepare();var offsets=MochiKit.Position.positionedOffset(element);var width=element.clientWidth;var height=element.clientHeight;var oldStyle={'position':element.style.position,'left':offsets.x-parseFloat(element.style.left||0),'top':offsets.y-parseFloat(element.style.top||0),'width':element.style.width,'height':element.style.height};element.style.position='absolute';element.style.top=offsets.y+'px';element.style.left=offsets.x+'px';element.style.width=width+'px';element.style.height=height+'px';return oldStyle;},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=MochiKit.Style.getStyle(element,'position');if(p=='relative'||p=='absolute'){break;}}}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},relativize:function(element,oldPos){element=MochiKit.DOM.getElement(element);if(element.style.position=='relative'){return;}
MochiKit.Position.prepare();var top=parseFloat(element.style.top||0)-
(oldPos['top']||0);var left=parseFloat(element.style.left||0)-
(oldPos['left']||0);element.style.position=oldPos['position'];element.style.top=top+'px';element.style.left=left+'px';element.style.width=oldPos['width'];element.style.height=oldPos['height'];},clone:function(source,target){source=MochiKit.DOM.getElement(source);target=MochiKit.DOM.getElement(target);target.style.position='absolute';var offsets=this.cumulativeOffset(source);target.style.top=offsets.y+'px';target.style.left=offsets.x+'px';target.style.width=source.offsetWidth+'px';target.style.height=source.offsetHeight+'px';},page:function(forElement){var valueT=0;var valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&MochiKit.Style.getStyle(element,'position')=='absolute'){break;}}while(element=element.offsetParent);element=forElement;do{valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}while(element=element.parentNode);return new MochiKit.Style.Coordinates(valueL,valueT);}});MochiKit.Position.__new__=function(win){var m=MochiKit.Base;this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Position.__new__(this);;MochiKit.Base._deps('Visual',['Base','DOM','Style','Color','Position']);MochiKit.Visual.NAME="MochiKit.Visual";MochiKit.Visual.VERSION="1.4";MochiKit.Visual.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Visual.toString=function(){return this.__repr__();};MochiKit.Visual._RoundCorners=function(e,options){e=MochiKit.DOM.getElement(e);this._setOptions(options);if(this.options.__unstable__wrapElement){e=this._doWrap(e);}
var color=this.options.color;var C=MochiKit.Color.Color;if(this.options.color==="fromElement"){color=C.fromBackground(e);}else if(!(color instanceof C)){color=C.fromString(color);}
this.isTransparent=(color.asRGB().a<=0);var bgColor=this.options.bgColor;if(this.options.bgColor==="fromParent"){bgColor=C.fromBackground(e.offsetParent);}else if(!(bgColor instanceof C)){bgColor=C.fromString(bgColor);}
this._roundCornersImpl(e,color,bgColor);};MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){var parent=e.parentNode;var doc=MochiKit.DOM.currentDocument();if(typeof(doc.defaultView)==="undefined"||doc.defaultView===null){return e;}
var style=doc.defaultView.getComputedStyle(e,null);if(typeof(style)==="undefined"||style===null){return e;}
var wrapper=MochiKit.DOM.DIV({"style":{display:"block",marginTop:style.getPropertyValue("padding-top"),marginRight:style.getPropertyValue("padding-right"),marginBottom:style.getPropertyValue("padding-bottom"),marginLeft:style.getPropertyValue("padding-left"),padding:"0px"}});wrapper.innerHTML=e.innerHTML;e.innerHTML="";e.appendChild(wrapper);return e;},_roundCornersImpl:function(e,color,bgColor){if(this.options.border){this._renderBorder(e,bgColor);}
if(this._isTopRounded()){this._roundTopCorners(e,color,bgColor);}
if(this._isBottomRounded()){this._roundBottomCorners(e,color,bgColor);}},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++){corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));}
el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));}
el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var dom=MochiKit.DOM;return dom.DIV({style:{backgroundColor:bgColor.toString()}});},_createCornerSlice:function(color,bgColor,n,position){var slice=MochiKit.DOM.SPAN();var inStyle=slice.style;inStyle.backgroundColor=color.toString();inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n===0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor.toString();}else if(borderColor){inStyle.borderColor=borderColor.toString();inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";}
if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";}
this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};MochiKit.Base.update(this.options,options);this.options.numSlices=(this.options.compact?2:4);},_whichSideTop:function(){var corners=this.options.corners;if(this._hasString(corners,"all","top")){return"";}
var has_tl=(corners.indexOf("tl")!=-1);var has_tr=(corners.indexOf("tr")!=-1);if(has_tl&&has_tr){return"";}
if(has_tl){return"left";}
if(has_tr){return"right";}
return"";},_whichSideBottom:function(){var corners=this.options.corners;if(this._hasString(corners,"all","bottom")){return"";}
var has_bl=(corners.indexOf('bl')!=-1);var has_br=(corners.indexOf('br')!=-1);if(has_bl&&has_br){return"";}
if(has_bl){return"left";}
if(has_br){return"right";}
return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return bgColor.blendedColor(color);}
return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.marginLeft=marginSize;style.marginRight="0px";}else if(whichSide=="right"){style.marginRight=marginSize;style.marginLeft="0px";}else{style.marginLeft=marginSize;style.marginRight=marginSize;}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.borderLeftWidth=borderSize;style.borderRightWidth="0px";}else if(whichSide=="right"){style.borderRightWidth=borderSize;style.borderLeftWidth="0px";}else{style.borderLeftWidth=borderSize;style.borderRightWidth=borderSize;}},_marginSize:function(n){if(this.isTransparent){return 0;}
var o=this.options;if(o.compact&&o.blend){var smBlendedMarginSizes=[1,0];return smBlendedMarginSizes[n];}else if(o.compact){var compactMarginSizes=[2,1];return compactMarginSizes[n];}else if(o.blend){var blendedMarginSizes=[3,2,1,0];return blendedMarginSizes[n];}else{var marginSizes=[5,3,2,1];return marginSizes[n];}},_borderSize:function(n){var o=this.options;var borderSizes;if(o.compact&&(o.blend||this.isTransparent)){return 1;}else if(o.compact){borderSizes=[1,0];}else if(o.blend){borderSizes=[2,1,1,1];}else if(o.border){borderSizes=[0,2,0,0];}else if(this.isTransparent){borderSizes=[5,3,2,1];}else{return 0;}
return borderSizes[n];},_hasString:function(str){for(var i=1;i<arguments.length;i++){if(str.indexOf(arguments[i])!=-1){return true;}}
return false;},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return(el.childNodes.length==1&&el.childNodes[0].nodeType==3);}};MochiKit.Visual.roundElement=function(e,options){new MochiKit.Visual._RoundCorners(e,options);};MochiKit.Visual.roundClass=function(tagName,className,options){var elements=MochiKit.DOM.getElementsByTagAndClassName(tagName,className);for(var i=0;i<elements.length;i++){MochiKit.Visual.roundElement(elements[i],options);}};MochiKit.Visual.tagifyText=function(element,tagifyStyle){tagifyStyle=tagifyStyle||'position:relative';if(/MSIE/.test(navigator.userAgent)){tagifyStyle+=';zoom:1';}
element=MochiKit.DOM.getElement(element);var ma=MochiKit.Base.map;ma(function(child){if(child.nodeType==3){ma(function(character){element.insertBefore(MochiKit.DOM.SPAN({style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);},child.nodeValue.split(''));MochiKit.DOM.removeElement(child);}},element.childNodes);};MochiKit.Visual.forceRerendering=function(element){try{element=MochiKit.DOM.getElement(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};MochiKit.Visual.multiple=function(elements,effect,options){options=MochiKit.Base.update({speed:0.1,delay:0.0},options);var masterDelay=options.delay;var index=0;MochiKit.Base.map(function(innerelement){options.delay=index*options.speed+masterDelay;new effect(innerelement,options);index+=1;},elements);};MochiKit.Visual.PAIRS={'slide':['slideDown','slideUp'],'blind':['blindDown','blindUp'],'appear':['appear','fade'],'size':['grow','shrink']};MochiKit.Visual.toggle=function(element,effect,options){element=MochiKit.DOM.getElement(element);effect=(effect||'appear').toLowerCase();options=MochiKit.Base.update({queue:{position:'end',scope:(element.id||'global'),limit:1}},options);var v=MochiKit.Visual;v[MochiKit.Style.getStyle(element,'display')!='none'?v.PAIRS[effect][1]:v.PAIRS[effect][0]](element,options);};MochiKit.Visual.Transitions={};MochiKit.Visual.Transitions.linear=function(pos){return pos;};MochiKit.Visual.Transitions.sinoidal=function(pos){return 0.5-Math.cos(pos*Math.PI)/2;};MochiKit.Visual.Transitions.reverse=function(pos){return 1-pos;};MochiKit.Visual.Transitions.flicker=function(pos){return 0.25-Math.cos(pos*Math.PI)/4+Math.random()/2;};MochiKit.Visual.Transitions.wobble=function(pos){return 0.5-Math.cos(9*pos*Math.PI)/2;};MochiKit.Visual.Transitions.pulse=function(pos,pulses){if(pulses){pos*=2*pulses;}else{pos*=10;}
var decimals=pos-Math.floor(pos);return(Math.floor(pos)%2==0)?decimals:1-decimals;};MochiKit.Visual.Transitions.parabolic=function(pos){return pos*pos;};MochiKit.Visual.Transitions.none=function(pos){return 0;};MochiKit.Visual.Transitions.full=function(pos){return 1;};MochiKit.Visual.ScopedQueue=function(){var cls=arguments.callee;if(!(this instanceof cls)){return new cls();}
this.__init__();};MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype,{__init__:function(){this.effects=[];this.interval=null;},add:function(effect){var timestamp=new Date().getTime();var position=(typeof(effect.options.queue)=='string')?effect.options.queue:effect.options.queue.position;var ma=MochiKit.Base.map;switch(position){case'front':ma(function(e){if(e.state=='idle'){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;}},this.effects);break;case'end':var finish;ma(function(e){var i=e.finishOn;if(i>=(finish||i)){finish=i;}},this.effects);timestamp=finish||timestamp;break;case'break':ma(function(e){e.finalize();},this.effects);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=this.startLoop(MochiKit.Base.bind(this.loop,this),40);}},startLoop:function(func,interval){return setInterval(func,interval);},remove:function(effect){this.effects=MochiKit.Base.filter(function(e){return e!=effect;},this.effects);if(!this.effects.length){this.stopLoop(this.interval);this.interval=null;}},stopLoop:function(interval){clearInterval(interval);},loop:function(){var timePos=new Date().getTime();MochiKit.Base.map(function(effect){effect.loop(timePos);},this.effects);}});MochiKit.Visual.Queues={instances:{},get:function(queueName){if(typeof(queueName)!='string'){return queueName;}
if(!this.instances[queueName]){this.instances[queueName]=new MochiKit.Visual.ScopedQueue();}
return this.instances[queueName];}};MochiKit.Visual.Queue=MochiKit.Visual.Queues.get('global');MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1.0,fps:25.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'};MochiKit.Visual.Base=function(){};MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(options){var v=MochiKit.Visual;this.options=MochiKit.Base.setdefault(options,v.DefaultOptions);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){v.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){return this.finalize();}
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');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.event('beforeUpdate');this.update(pos);this.event('afterUpdate');}},cancel:function(){if(!this.options.sync){MochiKit.Visual.Queues.get(typeof(this.options.queue)=='string'?'global':this.options.queue.scope).remove(this);}
this.state='finished';},finalize:function(){this.render(1.0);this.cancel();this.event('beforeFinish');this.finish();this.event('afterFinish');},setup:function(){},finish:function(){},update:function(position){},event:function(eventName){if(this.options[eventName+'Internal']){this.options[eventName+'Internal'](this);}
if(this.options[eventName]){this.options[eventName](this);}},repr:function(){return'['+this.__class__.NAME+', options:'+
MochiKit.Base.repr(this.options)+']';}};MochiKit.Visual.Parallel=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options);}
this.__init__(effects,options);};MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(effects,options){this.effects=effects||[];this.start(options);},update:function(position){MochiKit.Base.map(function(effect){effect.render(position);},this.effects);},finish:function(){MochiKit.Base.map(function(effect){effect.finalize();},this.effects);}});MochiKit.Visual.Sequence=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options);}
this.__init__(effects,options);};MochiKit.Visual.Sequence.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Sequence.prototype,{__class__:MochiKit.Visual.Sequence,__init__:function(effects,options){var defs={transition:MochiKit.Visual.Transitions.linear,duration:0};this.effects=effects||[];MochiKit.Base.map(function(effect){defs.duration+=effect.options.duration;},this.effects);MochiKit.Base.setdefault(options,defs);this.start(options);},update:function(position){var time=position*this.options.duration;for(var i=0;i<this.effects.length;i++){var effect=this.effects[i];if(time<=effect.options.duration){effect.render(time/effect.options.duration);break;}else{time-=effect.options.duration;}}},finish:function(){MochiKit.Base.map(function(effect){effect.finalize();},this.effects);}});MochiKit.Visual.Opacity=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(element,options){var b=MochiKit.Base;var s=MochiKit.Style;this.element=MochiKit.DOM.getElement(element);if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){s.setStyle(this.element,{zoom:1});}
options=b.update({from:s.getStyle(this.element,'opacity')||0.0,to:1.0},options);this.start(options);},update:function(position){MochiKit.Style.setStyle(this.element,{'opacity':position});}});MochiKit.Visual.Move=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({x:0,y:0,mode:'relative'},options);this.start(options);},setup:function(){MochiKit.DOM.makePositioned(this.element);var s=this.element.style;var originalVisibility=s.visibility;var originalDisplay=s.display;if(originalDisplay=='none'){s.visibility='hidden';s.display='';}
this.originalLeft=parseFloat(MochiKit.Style.getStyle(this.element,'left')||'0');this.originalTop=parseFloat(MochiKit.Style.getStyle(this.element,'top')||'0');if(this.options.mode=='absolute'){this.options.x-=this.originalLeft;this.options.y-=this.originalTop;}
if(originalDisplay=='none'){s.visibility=originalVisibility;s.display=originalDisplay;}},update:function(position){MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*position+this.originalLeft)+'px',top:Math.round(this.options.y*position+this.originalTop)+'px'});}});MochiKit.Visual.Scale=function(element,percent,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,percent,options);}
this.__init__(element,percent,options);};MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(element,percent,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},options);this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=MochiKit.Style.getStyle(this.element,'position');var ma=MochiKit.Base.map;var b=MochiKit.Base.bind;this.originalStyle={};ma(b(function(k){this.originalStyle[k]=this.element.style[k];},this),['top','left','width','height','fontSize']);this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=MochiKit.Style.getStyle(this.element,'font-size')||'100%';ma(b(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}},this),['em','px','%']);this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth];}else if(this.options.scaleMode=='box'){this.dims=[this.element.offsetHeight,this.element.offsetWidth];}else{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){MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*currentScale+this.fontSizeType});}
this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(){if(this.restoreAfterFinish){MochiKit.Style.setStyle(this.element,this.originalStyle);}},setDimensions:function(height,width){var d={};var r=Math.round;if(/MSIE/.test(navigator.userAgent)){r=Math.ceil;}
if(this.options.scaleX){d.width=r(width)+'px';}
if(this.options.scaleY){d.height=r(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';}}}
MochiKit.Style.setStyle(this.element,d);}});MochiKit.Visual.Highlight=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({startcolor:'#ffff99'},options);this.start(options);},setup:function(){var b=MochiKit.Base;var s=MochiKit.Style;if(s.getStyle(this.element,'display')=='none'){this.cancel();return;}
this.oldStyle={backgroundImage:s.getStyle(this.element,'background-image')};s.setStyle(this.element,{backgroundImage:'none'});if(!this.options.endcolor){this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString();}
if(b.isUndefinedOrNull(this.options.restorecolor)){this.options.restorecolor=s.getStyle(this.element,'background-color');}
this._base=b.map(b.bind(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);},this),[0,1,2]);this._delta=b.map(b.bind(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)
-this._base[i];},this),[0,1,2]);},update:function(position){var m='#';MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+
this._delta[i]*position));},this),[0,1,2]);MochiKit.Style.setStyle(this.element,{backgroundColor:m});},finish:function(){MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});MochiKit.Visual.ScrollTo=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options);},setup:function(){var p=MochiKit.Position;p.prepare();var offsets=p.cumulativeOffset(this.element);if(this.options.offset){offsets.y+=this.options.offset;}
var max;if(window.innerHeight){max=window.innerHeight-window.height;}else if(document.documentElement&&document.documentElement.clientHeight){max=document.documentElement.clientHeight-
document.body.scrollHeight;}else if(document.body){max=document.body.clientHeight-document.body.scrollHeight;}
this.scrollStart=p.windowOffset.y;this.delta=(offsets.y>max?max:offsets.y)-this.scrollStart;},update:function(position){var p=MochiKit.Position;p.prepare();window.scrollTo(p.windowOffset.x,this.scrollStart+(position*this.delta));}});MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;MochiKit.Visual.Morph=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options);},setup:function(){var b=MochiKit.Base;var style=this.options.style;this.styleStart={};this.styleEnd={};this.units={};var value,unit;for(var s in style){value=style[s];s=b.camelize(s);if(MochiKit.Visual.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;this.styleEnd[s]=value;this.units[s]=unit;value=MochiKit.Style.getStyle(this.element,s);components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);this.styleStart[s]=value;}else{var c=MochiKit.Color.Color;value=c.fromString(value);if(value){this.units[s]="color";this.styleEnd[s]=value.toHexString();value=MochiKit.Style.getStyle(this.element,s);this.styleStart[s]=c.fromString(value).toHexString();this.styleStart[s]=b.map(b.bind(function(i){return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16);},this),[0,1,2]);this.styleEnd[s]=b.map(b.bind(function(i){return parseInt(this.styleEnd[s].slice(i*2+1,i*2+3),16);},this),[0,1,2]);}}}},update:function(position){var value;for(var s in this.styleStart){if(this.units[s]=="color"){var m='#';var start=this.styleStart[s];var end=this.styleEnd[s];MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(start[i]+
(end[i]-start[i])*position));},this),[0,1,2]);this.element.style[s]=m;}else{value=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*position*1000)/1000+this.units[s];this.element.style[s]=value;}}}});MochiKit.Visual.fade=function(element,options){var s=MochiKit.Style;var oldOpacity=s.getStyle(element,'opacity');options=MochiKit.Base.update({from:s.getStyle(element,'opacity')||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!==0){return;}
s.hideElement(effect.element);s.setStyle(effect.element,{'opacity':oldOpacity});}},options);return new MochiKit.Visual.Opacity(element,options);};MochiKit.Visual.appear=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;options=MochiKit.Base.update({from:(s.getStyle(element,'display')=='none'?0.0:s.getStyle(element,'opacity')||0.0),to:1.0,afterFinishInternal:function(effect){v.forceRerendering(effect.element);},beforeSetupInternal:function(effect){s.setStyle(effect.element,{'opacity':effect.options.from});s.showElement(effect.element);}},options);return new v.Opacity(element,options);};MochiKit.Visual.puff=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;element=MochiKit.DOM.getElement(element);var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var oldStyle={position:s.getStyle(element,'position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height,opacity:s.getStyle(element,'opacity')};options=MochiKit.Base.update({beforeSetupInternal:function(effect){MochiKit.Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);},scaleContent:true,scaleFromCenter:true},options);return new v.Parallel([new v.Scale(element,200,{sync:true,scaleFromCenter:options.scaleFromCenter,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:options.scaleContent,restoreAfterFinish:true}),new v.Opacity(element,{sync:true,to:0.0})],options);};MochiKit.Visual.blindUp=function(element,options){var d=MochiKit.DOM;element=d.getElement(element);var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var elemClip=d.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterFinishInternal:function(effect){MochiKit.Style.hideElement(effect.element);d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,0,options);};MochiKit.Visual.blindDown=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){elemClip=d.makeClipping(effect.element);s.setStyle(effect.element,{height:'0px'});s.showElement(effect.element);},afterFinishInternal:function(effect){d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,100,options);};MochiKit.Visual.switchOff=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldOpacity=s.getStyle(element,'opacity');var elemClip;options=MochiKit.Base.update({duration:0.7,restoreAfterFinish:true,beforeSetupInternal:function(effect){d.makePositioned(element);elemClip=d.makeClipping(element);},afterFinishInternal:function(effect){s.hideElement(element);d.undoClipping(element,elemClip);d.undoPositioned(element);s.setStyle(element,{'opacity':oldOpacity});}},options);var v=MochiKit.Visual;return new v.Sequence([new v.appear(element,{sync:true,duration:0.57*options.duration,from:0,transition:v.Transitions.flicker}),new v.Scale(element,1,{sync:true,duration:0.43*options.duration,scaleFromCenter:true,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:false,restoreAfterFinish:true})],options);};MochiKit.Visual.dropOut=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,'top'),left:s.getStyle(element,'left'),opacity:s.getStyle(element,'opacity')};options=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(effect){d.makePositioned(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);var v=MochiKit.Visual;return new v.Parallel([new v.Move(element,{x:0,y:options.distance,sync:true}),new v.Opacity(element,{sync:true,to:0.0})],options);};MochiKit.Visual.shake=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,'top'),left:s.getStyle(element,'left')};options=MochiKit.Base.update({duration:0.5,afterFinishInternal:function(effect){d.undoPositioned(element);s.setStyle(element,oldStyle);}},options);return new v.Sequence([new v.Move(element,{sync:true,duration:0.1*options.duration,x:20,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.1*options.duration,x:-20,y:0})],options);};MochiKit.Visual.slideDown=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideDown must be used on a element with a child");}
d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,'bottom')||0;var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){d.makePositioned(effect.element);d.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:''});}
elemClip=d.makeClipping(effect.element);s.setStyle(effect.element,{height:'0px'});s.showElement(effect.element);},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+'px'});},afterFinishInternal:function(effect){d.undoClipping(effect.element,elemClip);if(/MSIE/.test(navigator.userAgent)){d.undoPositioned(effect.element);d.undoPositioned(effect.element.firstChild);}else{d.undoPositioned(effect.element.firstChild);d.undoPositioned(effect.element);}
s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom});}},options);return new MochiKit.Visual.Scale(element,100,options);};MochiKit.Visual.slideUp=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideUp must be used on a element with a child");}
d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,'bottom');var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){d.makePositioned(effect.element);d.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:''});}
elemClip=d.makeClipping(effect.element);s.showElement(effect.element);},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+'px'});},afterFinishInternal:function(effect){s.hideElement(effect.element);d.undoClipping(effect.element,elemClip);d.undoPositioned(effect.element.firstChild);d.undoPositioned(effect.element);s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom});}},options);return new MochiKit.Visual.Scale(element,0,options);};MochiKit.Visual.squish=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var elemClip;options=b.update({restoreAfterFinish:true,scaleMode:{originalHeight:elementDimensions.w,originalWidth:elementDimensions.h},beforeSetupInternal:function(effect){elemClip=d.makeClipping(effect.element);},afterFinishInternal:function(effect){MochiKit.Style.hideElement(effect.element);d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,/Opera/.test(navigator.userAgent)?1:0,options);};MochiKit.Visual.grow=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:'center',moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,'opacity')};var dims=s.getElementDimensions(element,true);var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.w;initialMoveY=moveY=0;moveX=-dims.w;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.h;moveY=-dims.h;break;case'bottom-right':initialMoveX=dims.w;initialMoveY=dims.h;moveX=-dims.w;moveY=-dims.h;break;case'center':initialMoveX=dims.w/2;initialMoveY=dims.h/2;moveX=-dims.w/2;moveY=-dims.h/2;break;}
var optionsParallel=MochiKit.Base.update({beforeSetupInternal:function(effect){s.setStyle(effect.effects[0].element,{height:'0px'});s.showElement(effect.effects[0].element);},afterFinishInternal:function(effect){d.undoClipping(effect.effects[0].element);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);return new v.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetupInternal:function(effect){s.hideElement(effect.element);d.makeClipping(effect.element);d.makePositioned(effect.element);},afterFinishInternal:function(effect){new v.Parallel([new v.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new v.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new v.Scale(effect.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true})],optionsParallel);}});};MochiKit.Visual.shrink=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:'center',moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,'opacity')};var dims=s.getElementDimensions(element,true);var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.w;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.h;break;case'bottom-right':moveX=dims.w;moveY=dims.h;break;case'center':moveX=dims.w/2;moveY=dims.h/2;break;}
var elemClip;var optionsParallel=MochiKit.Base.update({beforeStartInternal:function(effect){elemClip=d.makePositioned(effect.effects[0].element);d.makeClipping(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);d.undoClipping(effect.effects[0].element,elemClip);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);return new v.Parallel([new v.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new v.Scale(element,/Opera/.test(navigator.userAgent)?1:0,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true}),new v.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],optionsParallel);};MochiKit.Visual.pulsate=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var b=MochiKit.Base;var oldOpacity=MochiKit.Style.getStyle(element,'opacity');options=b.update({duration:3.0,from:0,afterFinishInternal:function(effect){MochiKit.Style.setStyle(effect.element,{'opacity':oldOpacity});}},options);var transition=options.transition||v.Transitions.sinoidal;options.transition=function(pos){return transition(1-v.Transitions.pulse(pos,options.pulses));};return new v.Opacity(element,options);};MochiKit.Visual.fold=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};var elemClip=d.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){new v.Scale(element,1,{scaleContent:false,scaleY:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){s.hideElement(effect.element);d.undoClipping(effect.element,elemClip);s.setStyle(effect.element,oldStyle);}});}},options);return new v.Scale(element,5,options);};MochiKit.Visual.Color=MochiKit.Color.Color;MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle;MochiKit.Visual.__new__=function(){var m=MochiKit.Base;m.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};};MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Parallel","Sequence","Opacity","Move","Scale","Highlight","ScrollTo","Morph","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"];MochiKit.Visual.EXPORT_OK=["Base","PAIRS"];MochiKit.Visual.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Visual);;MochiKit.Base._deps('DragAndDrop',['Base','Iter','DOM','Signal','Visual','Position']);MochiKit.DragAndDrop.NAME='MochiKit.DragAndDrop';MochiKit.DragAndDrop.VERSION='1.4';MochiKit.DragAndDrop.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.DragAndDrop.toString=function(){return this.__repr__();};MochiKit.DragAndDrop.EXPORT=["Droppable","Draggable"];MochiKit.DragAndDrop.EXPORT_OK=["Droppables","Draggables"];MochiKit.DragAndDrop.Droppables={drops:[],remove:function(element){this.drops=MochiKit.Base.filter(function(d){return d.element!=MochiKit.DOM.getElement(element);},this.drops);},register:function(drop){this.drops.push(drop);},unregister:function(drop){this.drops=MochiKit.Base.filter(function(d){return d!=drop;},this.drops);},prepare:function(element){MochiKit.Base.map(function(drop){if(drop.isAccepted(element)){if(drop.options.activeclass){MochiKit.DOM.addElementClass(drop.element,drop.options.activeclass);}
drop.options.onactive(drop.element,element);}},this.drops);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i){if(MochiKit.DOM.isParent(drops[i].element,deepest.element)){deepest=drops[i];}}
return deepest;},show:function(point,element){if(!this.drops.length){return;}
var affected=[];if(this.last_active){this.last_active.deactivate();}
MochiKit.Iter.forEach(this.drops,function(drop){if(drop.isAffected(point,element)){affected.push(drop);}});if(affected.length>0){drop=this.findDeepestChild(affected);MochiKit.Position.within(drop.element,point.page.x,point.page.y);drop.options.onhover(element,drop.element,MochiKit.Position.overlap(drop.options.overlap,drop.element));drop.activate();}},fire:function(event,element){if(!this.last_active){return;}
MochiKit.Position.prepare();if(this.last_active.isAffected(event.mouse(),element)){this.last_active.options.ondrop(element,this.last_active.element,event);}},reset:function(element){MochiKit.Base.map(function(drop){if(drop.options.activeclass){MochiKit.DOM.removeElementClass(drop.element,drop.options.activeclass);}
drop.options.ondesactive(drop.element,element);},this.drops);if(this.last_active){this.last_active.deactivate();}}};MochiKit.DragAndDrop.Droppable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.DragAndDrop.Droppable.prototype={__class__:MochiKit.DragAndDrop.Droppable,__init__:function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;this.element=d.getElement(element);this.options=b.update({greedy:true,hoverclass:null,activeclass:null,hoverfunc:b.noop,accept:null,onactive:b.noop,ondesactive:b.noop,onhover:b.noop,ondrop:b.noop,containment:[],tree:false},options);this.options._containers=[];b.map(MochiKit.Base.bind(function(c){this.options._containers.push(d.getElement(c));},this),this.options.containment);d.makePositioned(this.element);MochiKit.DragAndDrop.Droppables.register(this);},isContained:function(element){if(this.options._containers.length){var containmentNode;if(this.options.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
return MochiKit.Iter.some(this.options._containers,function(c){return containmentNode==c;});}else{return true;}},isAccepted:function(element){return((!this.options.accept)||MochiKit.Iter.some(this.options.accept,function(c){return MochiKit.DOM.hasElementClass(element,c);}));},isAffected:function(point,element){return((this.element!=element)&&this.isContained(element)&&this.isAccepted(element)&&MochiKit.Position.within(this.element,point.page.x,point.page.y));},deactivate:function(){if(this.options.hoverclass){MochiKit.DOM.removeElementClass(this.element,this.options.hoverclass);}
this.options.hoverfunc(this.element,false);MochiKit.DragAndDrop.Droppables.last_active=null;},activate:function(){if(this.options.hoverclass){MochiKit.DOM.addElementClass(this.element,this.options.hoverclass);}
this.options.hoverfunc(this.element,true);MochiKit.DragAndDrop.Droppables.last_active=this;},destroy:function(){MochiKit.DragAndDrop.Droppables.unregister(this);},repr:function(){return'['+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";}};MochiKit.DragAndDrop.Draggables={drags:[],register:function(draggable){if(this.drags.length===0){var conn=MochiKit.Signal.connect;this.eventMouseUp=conn(document,'onmouseup',this,this.endDrag);this.eventMouseMove=conn(document,'onmousemove',this,this.updateDrag);this.eventKeypress=conn(document,'onkeypress',this,this.keyPress);}
this.drags.push(draggable);},unregister:function(draggable){this.drags=MochiKit.Base.filter(function(d){return d!=draggable;},this.drags);if(this.drags.length===0){var disc=MochiKit.Signal.disconnect;disc(this.eventMouseUp);disc(this.eventMouseMove);disc(this.eventKeypress);}},activate:function(draggable){window.focus();this.activeDraggable=draggable;},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable){return;}
var pointer=event.mouse();if(this._lastPointer&&(MochiKit.Base.repr(this._lastPointer.page)==MochiKit.Base.repr(pointer.page))){return;}
this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(!this.activeDraggable){return;}
this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable){this.activeDraggable.keyPress(event);}},notify:function(eventName,draggable,event){MochiKit.Signal.signal(this,eventName,draggable,event);}};MochiKit.DragAndDrop.Draggable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.DragAndDrop.Draggable.prototype={__class__:MochiKit.DragAndDrop.Draggable,__init__:function(element,options){var v=MochiKit.Visual;var b=MochiKit.Base;options=b.update({handle:false,starteffect:function(innerelement){this._savedOpacity=MochiKit.Style.getStyle(innerelement,'opacity')||1.0;new v.Opacity(innerelement,{duration:0.2,from:this._savedOpacity,to:0.7});},reverteffect:function(innerelement,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+
Math.abs(left_offset^2))*0.02;return new v.Move(innerelement,{x:-left_offset,y:-top_offset,duration:dur});},endeffect:function(innerelement){new v.Opacity(innerelement,{duration:0.2,from:0.7,to:this._savedOpacity});},onchange:b.noop,zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},options);var d=MochiKit.DOM;this.element=d.getElement(element);if(options.handle&&(typeof(options.handle)=='string')){this.handle=d.getFirstElementByTagAndClassName(null,options.handle,this.element);}
if(!this.handle){this.handle=d.getElement(options.handle);}
if(!this.handle){this.handle=this.element;}
if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=d.getElement(options.scroll);this._isScrollChild=MochiKit.DOM.isChildNode(this.element,options.scroll);}
d.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=MochiKit.Signal.connect(this.handle,'onmousedown',this,this.initDrag);MochiKit.DragAndDrop.Draggables.register(this);},destroy:function(){MochiKit.Signal.disconnect(this.eventMouseDown);MochiKit.DragAndDrop.Draggables.unregister(this);},currentDelta:function(){var s=MochiKit.Style.getStyle;return[parseInt(s(this.element,'left')||'0'),parseInt(s(this.element,'top')||'0')];},initDrag:function(event){if(!event.mouse().button.left){return;}
var src=event.target()?event.target():{};var tagName=(src.tagName||'').toUpperCase();if(tagName==='INPUT'||tagName==='SELECT'||tagName==='OPTION'||tagName==='BUTTON'||tagName==='TEXTAREA'){return;}
if(this._revert){this._revert.cancel();this._revert=null;}
var pointer=event.mouse();var pos=MochiKit.Position.cumulativeOffset(this.element);this.offset=[pointer.page.x-pos.x,pointer.page.y-pos.y];MochiKit.DragAndDrop.Draggables.activate(this);event.stop();},startDrag:function(event){this.dragging=true;if(this.options.selectclass){MochiKit.DOM.addElementClass(this.element,this.options.selectclass);}
if(this.options.zindex){this.originalZ=parseInt(MochiKit.Style.getStyle(this.element,'z-index')||'0');this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this.ghostPosition=MochiKit.Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
MochiKit.DragAndDrop.Droppables.prepare(this.element);MochiKit.DragAndDrop.Draggables.notify('start',this,event);if(this.options.starteffect){this.options.starteffect(this.element);}},updateDrag:function(event,pointer){if(!this.dragging){this.startDrag(event);}
MochiKit.Position.prepare();MochiKit.DragAndDrop.Droppables.show(pointer,this.element);MochiKit.DragAndDrop.Draggables.notify('drag',this,event);this.draw(pointer);this.options.onchange(this);if(this.options.scroll){this.stopScrolling();var p,q;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);p=new MochiKit.Style.Coordinates(s.left,s.top);q=new MochiKit.Style.Coordinates(s.left+s.width,s.top+s.height);}else{p=MochiKit.Position.page(this.options.scroll);p.x+=this.options.scroll.scrollLeft;p.y+=this.options.scroll.scrollTop;p.x+=(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0);p.y+=(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0);q=new MochiKit.Style.Coordinates(p.x+this.options.scroll.offsetWidth,p.y+this.options.scroll.offsetHeight);}
var speed=[0,0];if(pointer.page.x>(q.x-this.options.scrollSensitivity)){speed[0]=pointer.page.x-(q.x-this.options.scrollSensitivity);}else if(pointer.page.x<(p.x+this.options.scrollSensitivity)){speed[0]=pointer.page.x-(p.x+this.options.scrollSensitivity);}
if(pointer.page.y>(q.y-this.options.scrollSensitivity)){speed[1]=pointer.page.y-(q.y-this.options.scrollSensitivity);}else if(pointer.page.y<(p.y+this.options.scrollSensitivity)){speed[1]=pointer.page.y-(p.y+this.options.scrollSensitivity);}
this.startScrolling(speed);}
if(/AppleWebKit/.test(navigator.appVersion)){window.scrollBy(0,0);}
event.stop();},finishDrag:function(event,success){var dr=MochiKit.DragAndDrop;this.dragging=false;if(this.options.selectclass){MochiKit.DOM.removeElementClass(this.element,this.options.selectclass);}
if(this.options.ghosting){MochiKit.Position.relativize(this.element,this.ghostPosition);MochiKit.DOM.removeElement(this._clone);this._clone=null;}
if(success){dr.Droppables.fire(event,this.element);}
dr.Draggables.notify('end',this,event);var revert=this.options.revert;if(revert&&typeof(revert)=='function'){revert=revert(this.element);}
var d=this.currentDelta();if(revert&&this.options.reverteffect){this._revert=this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
if(this.options.zindex){this.element.style.zIndex=this.originalZ;}
if(this.options.endeffect){this.options.endeffect(this.element);}
dr.Draggables.deactivate();dr.Droppables.reset(this.element);},keyPress:function(event){if(event.key().string!="KEY_ESCAPE"){return;}
this.finishDrag(event,false);event.stop();},endDrag:function(event){if(!this.dragging){return;}
this.stopScrolling();this.finishDrag(event,true);event.stop();},draw:function(point){var pos=MochiKit.Position.cumulativeOffset(this.element);var d=this.currentDelta();pos.x-=d[0];pos.y-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos.y-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[point.page.x-pos.x-this.offset[0],point.page.y-pos.y-this.offset[1]];if(this.options.snap){if(typeof(this.options.snap)=='function'){p=this.options.snap(p[0],p[1]);}else{if(this.options.snap instanceof Array){var i=-1;p=MochiKit.Base.map(MochiKit.Base.bind(function(v){i+=1;return Math.round(v/this.options.snap[i])*this.options.snap[i];},this),p);}else{p=MochiKit.Base.map(MochiKit.Base.bind(function(v){return Math.round(v/this.options.snap)*this.options.snap;},this),p);}}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal')){style.left=p[0]+'px';}
if((!this.options.constraint)||(this.options.constraint=='vertical')){style.top=p[1]+'px';}
if(style.visibility=='hidden'){style.visibility='';}},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;MochiKit.DragAndDrop.Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!speed[0]&&!speed[1]){return;}
this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(MochiKit.Base.bind(this.scroll,this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);if(this.scrollSpeed[0]||this.scrollSpeed[1]){var dm=delta/1000;this.options.scroll.scrollTo(s.left+dm*this.scrollSpeed[0],s.top+dm*this.scrollSpeed[1]);}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
var d=MochiKit.DragAndDrop;MochiKit.Position.prepare();d.Droppables.show(d.Draggables._lastPointer,this.element);d.Draggables.notify('drag',this);if(this._isScrollChild){d.Draggables._lastScrollPointer=d.Draggables._lastScrollPointer||d.Draggables._lastPointer;d.Draggables._lastScrollPointer.x+=this.scrollSpeed[0]*delta/1000;d.Draggables._lastScrollPointer.y+=this.scrollSpeed[1]*delta/1000;if(d.Draggables._lastScrollPointer.x<0){d.Draggables._lastScrollPointer.x=0;}
if(d.Draggables._lastScrollPointer.y<0){d.Draggables._lastScrollPointer.y=0;}
this.draw(d.Draggables._lastScrollPointer);}
this.options.onchange(this);},_getWindowScroll:function(win){var vp,w,h;MochiKit.DOM.withWindow(win,function(){vp=MochiKit.Style.getViewportPosition(win.document);});if(win.innerWidth){w=win.innerWidth;h=win.innerHeight;}else if(win.document.documentElement&&win.document.documentElement.clientWidth){w=win.document.documentElement.clientWidth;h=win.document.documentElement.clientHeight;}else{w=win.document.body.offsetWidth;h=win.document.body.offsetHeight;}
return{top:vp.y,left:vp.x,width:w,height:h};},repr:function(){return'['+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";}};MochiKit.DragAndDrop.__new__=function(){MochiKit.Base.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};};MochiKit.DragAndDrop.__new__();MochiKit.Base._exportSymbols(this,MochiKit.DragAndDrop);;if(typeof(MochiKit)=="undefined"){MochiKit={};}
if(typeof(MochiKit.MockDOM)=="undefined"){MochiKit.MockDOM={};}
MochiKit.MockDOM.NAME="MochiKit.MockDOM";MochiKit.MockDOM.VERSION="1.4";MochiKit.MockDOM.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.MockDOM.toString=function(){return this.__repr__();};MochiKit.MockDOM.createDocument=function(){var doc=new MochiKit.MockDOM.MockElement("DOCUMENT");doc.body=doc.createElement("BODY");doc.appendChild(doc.body);return doc;};MochiKit.MockDOM.MockElement=function(name,data,ownerDocument){this.tagName=this.nodeName=name.toUpperCase();this.ownerDocument=ownerDocument||null;if(name=="DOCUMENT"){this.nodeType=9;this.childNodes=[];}else if(typeof(data)=="string"){this.nodeValue=data;this.nodeType=3;}else{this.nodeType=1;this.childNodes=[];}
if(name.substring(0,1)=="<"){var nameattr=name.substring(name.indexOf('"')+1,name.lastIndexOf('"'));name=name.substring(1,name.indexOf(" "));this.tagName=this.nodeName=name.toUpperCase();this.setAttribute("name",nameattr);}};MochiKit.MockDOM.MockElement.prototype={createElement:function(tagName){return new MochiKit.MockDOM.MockElement(tagName,null,this.nodeType==9?this:this.ownerDocument);},createTextNode:function(text){return new MochiKit.MockDOM.MockElement("text",text,this.nodeType==9?this:this.ownerDocument);},setAttribute:function(name,value){this[name]=value;},getAttribute:function(name){return this[name];},appendChild:function(child){this.childNodes.push(child);},toString:function(){return"MockElement("+this.tagName+")";},getElementsByTagName:function(tagName){var foundElements=[];MochiKit.Base.nodeWalk(this,function(node){if(tagName=='*'||tagName==node.tagName){foundElements.push(node);return node.childNodes;}});return foundElements;}};MochiKit.MockDOM.EXPORT_OK=["mockElement","createDocument"];MochiKit.MockDOM.EXPORT=["document"];MochiKit.MockDOM.__new__=function(){this.document=this.createDocument();};MochiKit.MockDOM.__new__();;MochiKit.Base._deps('Sortable',['Base','Iter','DOM','Position','DragAndDrop']);MochiKit.Sortable.NAME='MochiKit.Sortable';MochiKit.Sortable.VERSION='1.4';MochiKit.Sortable.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Sortable.toString=function(){return this.__repr__();};MochiKit.Sortable.EXPORT=[];MochiKit.Sortable.EXPORT_OK=[];MochiKit.Base.update(MochiKit.Sortable,{sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&MochiKit.Sortable.sortables[element.id]){return element;}
element=element.parentNode;}},options:function(element){element=MochiKit.Sortable._findRootElement(MochiKit.DOM.getElement(element));if(!element){return;}
return MochiKit.Sortable.sortables[element.id];},destroy:function(element){var s=MochiKit.Sortable.options(element);var b=MochiKit.Base;var d=MochiKit.DragAndDrop;if(s){MochiKit.Signal.disconnect(s.startHandle);MochiKit.Signal.disconnect(s.endHandle);b.map(function(dr){d.Droppables.remove(dr);},s.droppables);b.map(function(dr){dr.destroy();},s.draggables);delete MochiKit.Sortable.sortables[s.element.id];}},create:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;options=MochiKit.Base.update({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:[element],handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:MochiKit.Base.noop,onUpdate:MochiKit.Base.noop,accept:null},options);self.destroy(element);var options_for_draggable={revert:true,ghosting:options.ghosting,scroll:options.scroll,scrollSensitivity:options.scrollSensitivity,scrollSpeed:options.scrollSpeed,constraint:options.constraint,handle:options.handle};if(options.starteffect){options_for_draggable.starteffect=options.starteffect;}
if(options.reverteffect){options_for_draggable.reverteffect=options.reverteffect;}else if(options.ghosting){options_for_draggable.reverteffect=function(innerelement){innerelement.style.top=0;innerelement.style.left=0;};}
if(options.endeffect){options_for_draggable.endeffect=options.endeffect;}
if(options.zindex){options_for_draggable.zindex=options.zindex;}
var options_for_droppable={overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,onhover:self.onHover,tree:options.tree,accept:options.accept}
var options_for_tree={onhover:self.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,accept:options.accept}
MochiKit.DOM.removeEmptyTextNodes(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){new MochiKit.DragAndDrop.Droppable(element,options_for_tree);options.droppables.push(element);}
MochiKit.Base.map(function(e){var handle=options.handle?MochiKit.DOM.getFirstElementByTagAndClassName(null,options.handle,e):e;options.draggables.push(new MochiKit.DragAndDrop.Draggable(e,MochiKit.Base.update(options_for_draggable,{handle:handle})));new MochiKit.DragAndDrop.Droppable(e,options_for_droppable);if(options.tree){e.treeNode=element;}
options.droppables.push(e);},(self.findElements(element,options)||[]));if(options.tree){MochiKit.Base.map(function(e){new MochiKit.DragAndDrop.Droppable(e,options_for_tree);e.treeNode=element;options.droppables.push(e);},(self.findTreeElements(element,options)||[]));}
self.sortables[element.id]=options;options.lastValue=self.serialize(element);options.startHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,'start',MochiKit.Base.partial(self.onStart,element));options.endHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,'end',MochiKit.Base.partial(self.onEnd,element));},onStart:function(element,draggable){var self=MochiKit.Sortable;var options=self.options(element);options.lastValue=self.serialize(options.element);},onEnd:function(element,draggable){var self=MochiKit.Sortable;self.unmark();var options=self.options(element);if(options.lastValue!=self.serialize(options.element)){options.onUpdate(options.element);}},findElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree?true:false,options.treeTag);},findChildren:function(element,only,recursive,tagName){if(!element.hasChildNodes()){return null;}
tagName=tagName.toUpperCase();if(only){only=MochiKit.Base.flattenArray([only]);}
var elements=[];MochiKit.Base.map(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||MochiKit.Iter.some(only,function(c){return MochiKit.DOM.hasElementClass(e,c);}))){elements.push(e);}
if(recursive){var grandchildren=MochiKit.Sortable.findChildren(e,only,recursive,tagName);if(grandchildren&&grandchildren.length>0){elements=elements.concat(grandchildren);}}},element.childNodes);return elements;},onHover:function(element,dropon,overlap){if(MochiKit.DOM.isParent(dropon,element)){return;}
var self=MochiKit.Sortable;if(overlap>.33&&overlap<.66&&self.options(dropon).tree){return;}else if(overlap>0.5){self.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility='hidden';dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element);}
self.options(dropon.parentNode).onChange(element);}}else{self.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility='hidden';dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element);}
self.options(dropon.parentNode).onChange(element);}}},_offsetSize:function(element,type){if(type=='vertical'||type=='height'){return element.offsetHeight;}else{return element.offsetWidth;}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var self=MochiKit.Sortable;var droponOptions=self.options(dropon);if(!MochiKit.DOM.isParent(dropon,element)){var index;var children=self.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=self._offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-self._offsetSize(children[index],droponOptions.overlap)>=0){offset-=self._offsetSize(children[index],droponOptions.overlap);}else if(offset-(self._offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
dropon.insertBefore(element,child);self.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){var m=MochiKit.Sortable._marker;if(m){MochiKit.Style.hideElement(m);}},mark:function(dropon,position){var d=MochiKit.DOM;var self=MochiKit.Sortable;var sortable=self.options(dropon.parentNode);if(sortable&&!sortable.ghosting){return;}
if(!self._marker){self._marker=d.getElement('dropmarker')||document.createElement('DIV');MochiKit.Style.hideElement(self._marker);d.addElementClass(self._marker,'dropmarker');self._marker.style.position='absolute';document.getElementsByTagName('body').item(0).appendChild(self._marker);}
var offsets=MochiKit.Position.cumulativeOffset(dropon);self._marker.style.left=offsets.x+'px';self._marker.style.top=offsets.y+'px';if(position=='after'){if(sortable.overlap=='horizontal'){self._marker.style.left=(offsets.x+dropon.clientWidth)+'px';}else{self._marker.style.top=(offsets.y+dropon.clientHeight)+'px';}}
MochiKit.Style.showElement(self._marker);},_tree:function(element,options,parent){var self=MochiKit.Sortable;var children=self.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match){continue;}
var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:self._findChildrenElement(children[i],options.treeTag.toUpperCase())}
if(child.container){self._tree(child.container,options,child)}
parent.children.push(child);}
return parent;},_findChildrenElement:function(element,containerTag){if(element&&element.hasChildNodes){containerTag=containerTag.toUpperCase();for(var i=0;i<element.childNodes.length;++i){if(element.childNodes[i].tagName.toUpperCase()==containerTag){return element.childNodes[i];}}}
return null;},tree:function(element,options){element=MochiKit.DOM.getElement(element);var sortableOptions=MochiKit.Sortable.options(element);options=MochiKit.Base.update({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},options||{});var root={id:null,parent:null,children:new Array,container:element,position:0}
return MochiKit.Sortable._tree(element,options,root);},setSequence:function(element,newSequence,options){var self=MochiKit.Sortable;var b=MochiKit.Base;element=MochiKit.DOM.getElement(element);options=b.update(self.options(element),options||{});var nodeMap={};b.map(function(n){var m=n.id.match(options.format);if(m){nodeMap[m[1]]=[n,n.parentNode];}
n.parentNode.removeChild(n);},self.findElements(element,options));b.map(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}},newSequence);},_constructIndex:function(node){var index='';do{if(node.id){index='['+node.position+']'+index;}}while((node=node.parent)!=null);return index;},sequence:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;var options=MochiKit.Base.update(self.options(element),options||{});return MochiKit.Base.map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';},MochiKit.DOM.getElement(self.findElements(element,options)||[]));},serialize:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;options=MochiKit.Base.update(self.options(element),options||{});var name=encodeURIComponent(options.name||element.id);if(options.tree){return MochiKit.Base.flattenArray(MochiKit.Base.map(function(item){return[name+self._constructIndex(item)+"[id]="+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));},self.tree(element,options).children)).join('&');}else{return MochiKit.Base.map(function(item){return name+"[]="+encodeURIComponent(item);},self.sequence(element,options)).join('&');}}});MochiKit.Sortable.Sortable=MochiKit.Sortable;;MochiKit.Base._deps('Test',['Base']);MochiKit.Test.NAME="MochiKit.Test";MochiKit.Test.VERSION="1.4";MochiKit.Test.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Test.toString=function(){return this.__repr__();};MochiKit.Test.EXPORT=["runTests"];MochiKit.Test.EXPORT_OK=[];MochiKit.Test.runTests=function(obj){if(typeof(obj)=="string"){obj=JSAN.use(obj);}
var suite=new MochiKit.Test.Suite();suite.run(obj);};MochiKit.Test.Suite=function(){this.testIndex=0;MochiKit.Base.bindMethods(this);};MochiKit.Test.Suite.prototype={run:function(obj){try{obj(this);}catch(e){this.traceback(e);}},traceback:function(e){var items=MochiKit.Iter.sorted(MochiKit.Base.items(e));print("not ok "+this.testIndex+" - Error thrown");for(var i=0;i<items.length;i++){var kv=items[i];if(kv[0]=="stack"){kv[1]=kv[1].split(/\n/)[0];}
this.print("# "+kv.join(": "));}},print:function(s){print(s);},is:function(got,expected,message){var res=1;var msg=null;try{res=MochiKit.Base.compare(got,expected);}catch(e){msg="Can not compare "+typeof(got)+":"+typeof(expected);}
if(res){msg="Expected value did not compare equal";}
if(!res){return this.testResult(true,message);}
return this.testResult(false,message,[[msg],["got:",got],["expected:",expected]]);},testResult:function(pass,msg,failures){this.testIndex+=1;if(pass){this.print("ok "+this.testIndex+" - "+msg);return;}
this.print("not ok "+this.testIndex+" - "+msg);if(failures){for(var i=0;i<failures.length;i++){this.print("# "+failures[i].join(" "));}}},isDeeply:function(got,expected,message){var m=MochiKit.Base;var res=1;try{res=m.compare(got,expected);}catch(e){}
if(res===0){return this.ok(true,message);}
var gk=m.keys(got);var ek=m.keys(expected);gk.sort();ek.sort();if(m.compare(gk,ek)){var cmp={};var i;for(i=0;i<gk.length;i++){cmp[gk[i]]="got";}
for(i=0;i<ek.length;i++){if(ek[i]in cmp){delete cmp[ek[i]];}else{cmp[ek[i]]="expected";}}
var diffkeys=m.keys(cmp);diffkeys.sort();var gotkeys=[];var expkeys=[];while(diffkeys.length){var k=diffkeys.shift();if(k in Object.prototype){continue;}
(cmp[k]=="got"?gotkeys:expkeys).push(k);}}
return this.testResult((!res),msg,(msg?[["got:",got],["expected:",expected]]:undefined));},ok:function(res,message){return this.testResult(res,message);}};MochiKit.Test.__new__=function(){var m=MochiKit.Base;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Test.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Test);;MochiKit.Style.constrainedElements=[];MochiKit.Style.resizeConstrainedElements=function(){MochiKit.Style.constrainedElements=Basis.array_sequentialize(Basis.array_flip(Basis.array_flip(MochiKit.Style.constrainedElements)));var list=MochiKit.Style.constrainedElements;var levels=[];if(list.length>0){for(var i=0;i<list.length;i++){var list_item=MochiKit.DOM.getElement(list[i]);if(!Basis.is_element(list_item)){list=Basis.array_delete_index(list,i);i--;}
if(Basis.is_element_visible(list_item)){var nest=0;var parent=list_item.parentNode;while(parent!=document.body.parentNode){nest++;parent=parent.parentNode;}
if(!levels[nest]){levels[nest]=[];}
levels[nest].push(list_item);}}
levels=Basis.ksort(levels);for(var i in levels){if(typeof(levels[i])!="function"){for(var x in levels[i]){var list_item=MochiKit.DOM.getElement(levels[i][x]);if(Basis.is_element(list_item)){Basis.set_style(list_item,{"height":"0px","width":"0px"});MochiKit.Iter.forEach(list_item.childNodes,function(node){if(node&&node.style){node.style.display="none";}});}}}}
for(var i in levels){if(typeof(levels[i])!="function"){for(var x in levels[i]){var list_item=MochiKit.DOM.getElement(levels[i][x]);if(Basis.is_element(list_item)){MochiKit.Style.resizeElements(list_item);MochiKit.Iter.forEach(list_item.childNodes,function(node){if(node&&node.style){node.style.display="";}});}}}}}
if(MochiKit.Style.resizeConstrainedElements.callbacks){for(var i=0;i<MochiKit.Style.resizeConstrainedElements.callbacks.length;i++){if(Basis.is_function(MochiKit.Style.resizeConstrainedElements.callbacks[i])){MochiKit.Style.resizeConstrainedElements.callbacks[i]();}}}};MochiKit.Style.resizeConstrainedElements.callbacks=[];MochiKit.Style.registerSizeConstraints=function(node,width,height,aspect,subtract_sibling_heights){node=MochiKit.DOM.getElement(node);var sc=node.sizeConstraints={w:null,h:null,a:null,"subtract_sibling_heights":subtract_sibling_heights};if(typeof(width)=="number"){sc.w=function(w,h){return width;}}else if(typeof(width)=="function"){sc.w=width;}else if(typeof(width)=="string"){var code="return "+width.replace(/%/g,"*0.01*w")+";";sc.w=new Function("w","h",code);}
if(typeof(height)=="number"){sc.h=function(w,h){return height;}}else if(typeof(height)=="function"){sc.h=height;}else if(typeof(height)=="string"){var code="return "+height.replace(/%/g,"*0.01*h")+";";sc.h=new Function("w","h",code);}
if(typeof(aspect)=="number"){sc.a=function(w,h){return aspect;}}else if(typeof(aspect)=="function"){sc.a=aspect;}else if(typeof(aspect)=="string"){var code="return "+aspect.replace(/%/g,"*0.01*w/h")+";";sc.a=new Function("w","h",code);}
var list=MochiKit.Style.constrainedElements;if(list.length>0){var push=true;for(var i=0;i<list.length;i++){if(list[i].id==node.id){push=false;}}
if(push){list.push(node.id);}}else{list.push(node.id);}}
MochiKit.Style.resizeElements=function(){var args=MochiKit.Base.flattenArray(arguments);for(var i=0;i<args.length;i++){var node=MochiKit.DOM.getElement(args[i]);if((node!=null)&&(node.nodeType===1)&&(node.parentNode!=null)&&(node.sizeConstraints!=null)){var p_dim=MochiKit.Style.getElementDimensions(node.parentNode);if(node.sizeConstraints.subtract_sibling_heights){for(var i=0;i<node.parentNode.childNodes.length;i++){var obj=MochiKit.DOM.getElement(node.parentNode.childNodes[i]);if(obj&&obj.tagName&&(obj!==node)){var o_dim=MochiKit.Style.getElementDimensions(obj);p_dim.h-=o_dim.h;}}}
var borders=Basis.sum_of_element(node.parentNode,"border");var padding=Basis.sum_of_element(node.parentNode,"padding");var adjust_h=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_w=(borders.left+borders.right+padding.left+padding.right);var ref={"w":(p_dim.w-adjust_w),"h":(p_dim.h-adjust_h)};var dim=MochiKit.Style._evalConstraints(node.sizeConstraints,ref);MochiKit.Style.setElementDimensions(node,dim);node.w=dim.w;node.h=dim.h;}
if(node!=null&&typeof(node.resizeContent)=="function"){node.resizeContent();}else{node=node.firstChild;while(node!=null){if(node.nodeType===1){MochiKit.Style.resizeElements(node);}
node=node.nextSibling;}}}}
MochiKit.Style._evalConstraints=function(sc,ref){var log=MochiKit.Logging.logError;if(typeof(sc.w)=="function"){try{var w=Math.max(0,sc.w(ref.w,ref.h));}catch(e){MochiKit.Logging.log("Error evaluating width size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(typeof(sc.h)=="function"){try{var h=Math.max(0,sc.h(ref.w,ref.h));}catch(e){MochiKit.Logging.log("Error evaluating height size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(typeof(sc.a)=="function"){try{var a=sc.a(ref.w,ref.h);w=w||ref.w;h=h||ref.h;if(h*a>ref.w){h=ref.w/a;}
if(w/a>ref.h){w=ref.h*a;}
if(w>h*a){w=h*a;}else{h=w/a;}}catch(e){MochiKit.Logging.log("Error evaluating aspect size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(w!=null){w=Math.floor(w);}
if(h!=null){h=Math.floor(h);}
return new MochiKit.Style.Dimensions(w,h);}
function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
Tween=function(obj,prop,func,begin,finish,duration,suffixe){this.init(obj,prop,func,begin,finish,duration,suffixe)}
var t=Tween.prototype;t.obj=new Object();t.prop='';t.func=function(t,b,c,d){return c*t/d+b;};t.begin=0;t.change=0;t.prevTime=0;t.prevPos=0;t.looping=false;t._duration=0;t._time=0;t._pos=0;t._position=0;t._startTime=0;t._finish=0;t.name='';t.suffixe='';t._listeners=new Array();t.setTime=function(t){this.prevTime=this._time;if(t>this.getDuration()){if(this.looping){this.rewind(t-this._duration);this.update();this.broadcastMessage('onMotionLooped',{target:this,type:'onMotionLooped'});}else{this._time=this._duration;this.update();this.stop();this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}}else if(t<0){this.rewind();this.update();}else{this._time=t;this.update();}}
t.getTime=function(){return this._time;}
t.setDuration=function(d){this._duration=(d==null||d<=0)?100000:d;}
t.getDuration=function(){return this._duration;}
t.setPosition=function(p){this.prevPos=this._pos;var a=this.suffixe!=''?this.suffixe:'';this.obj[this.prop]=Math.round(p)+a;this._pos=p;this.broadcastMessage('onMotionChanged',{target:this,type:'onMotionChanged'});}
t.getPosition=function(t){if(t==undefined)t=this._time;return this.func(t,this.begin,this.change,this._duration);};t.setFinish=function(f){this.change=f-this.begin;};t.geFinish=function(){return this.begin+this.change;};t.init=function(obj,prop,func,begin,finish,duration,suffixe){if(!arguments.length)return;this._listeners=new Array();this.addListener(this);if(suffixe)this.suffixe=suffixe;this.obj=obj;this.prop=prop;this.begin=begin;this._pos=begin;this.setDuration(duration);if(func!=null&&func!=''){this.func=func;}
this.setFinish(finish);}
t.start=function(){this.rewind();this.startEnterFrame();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
t.rewind=function(t){this.stop();this._time=(t==undefined)?0:t;this.fixTime();this.update();}
t.fforward=function(){this._time=this._duration;this.fixTime();this.update();}
t.update=function(){this.setPosition(this.getPosition(this._time));}
t.startEnterFrame=function(){this.stopEnterFrame();this.isPlaying=true;this.onEnterFrame();}
t.onEnterFrame=function(){if(this.isPlaying){this.nextFrame();setTimeout(Delegate.create(this,this.onEnterFrame),0);}}
t.nextFrame=function(){this.setTime((this.getTimer()-this._startTime)/1000);}
t.stop=function(){this.stopEnterFrame();this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
t.stopEnterFrame=function(){this.isPlaying=false;}
t.continueTo=function(finish,duration){this.begin=this._pos;this.setFinish(finish);if(this._duration!=undefined)
this.setDuration(duration);this.start();}
t.resume=function(){this.fixTime();this.startEnterFrame();this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionResumed'});}
t.yoyo=function(){this.continueTo(this.begin,this._time);}
t.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
t.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
t.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}}
t.fixTime=function(){this._startTime=this.getTimer()-this._time*1000;}
t.getTimer=function(){return new Date().getTime()-this._time;}
Tween.backEaseIn=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;}
Tween.backEaseOut=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;}
Tween.backEaseInOut=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;}
Tween.elasticEaseIn=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}
else
var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}
Tween.elasticEaseOut=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return(a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b);}
Tween.elasticEaseInOut=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)var p=d*(.3*1.5);if(!a||a<Math.abs(c)){var a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;}
Tween.bounceEaseOut=function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}}
Tween.bounceEaseIn=function(t,b,c,d){return c-Tween.bounceEaseOut(d-t,0,c,d)+b;}
Tween.bounceEaseInOut=function(t,b,c,d){if(t<d/2)return Tween.bounceEaseIn(t*2,0,c,d)*.5+b;else return Tween.bounceEaseOut(t*2-d,0,c,d)*.5+c*.5+b;}
Tween.strongEaseInOut=function(t,b,c,d){return c*(t/=d)*t*t*t*t+b;}
Tween.regularEaseIn=function(t,b,c,d){return c*(t/=d)*t+b;}
Tween.regularEaseOut=function(t,b,c,d){return-c*(t/=d)*(t-2)+b;}
Tween.regularEaseInOut=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;}
Tween.strongEaseIn=function(t,b,c,d){return c*(t/=d)*t*t*t*t+b;}
Tween.strongEaseOut=function(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;}
Tween.strongEaseInOut=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;};ColorTween.prototype=new Tween();ColorTween.prototype.constructor=Tween;ColorTween.superclass=Tween.prototype;function ColorTween(obj,prop,func,fromColor,toColor,duration){this.targetObject=obj;this.targetProperty=prop;this.fromColor=fromColor;this.toColor=toColor;this.init(new Object(),'x',func,0,100,duration);this.listenerObj=new Object();this.listenerObj.onMotionChanged=Delegate.create(this,this.onColorChanged);this.addListener(this.listenerObj);}
var o=ColorTween.prototype;o.targetObject={};o.targetProperty={};o.fromColor='';o.toColor='';o.currentColor='';o.listenerObj={};o.onColorChanged=function(){this.currentColor=this.getColor(this.fromColor,this.toColor,this._pos);this.targetObject[this.targetProperty]=this.currentColor;}
o.getColor=function(start,end,percent)
{var r1=this.hex2dec(start.slice(0,2));var g1=this.hex2dec(start.slice(2,4));var b1=this.hex2dec(start.slice(4,6));var r2=this.hex2dec(end.slice(0,2));var g2=this.hex2dec(end.slice(2,4));var b2=this.hex2dec(end.slice(4,6));var pc=percent/100;r=Math.floor(r1+(pc*(r2-r1))+.5);g=Math.floor(g1+(pc*(g2-g1))+.5);b=Math.floor(b1+(pc*(b2-b1))+.5);return("#"+this.dec2hex(r)+this.dec2hex(g)+this.dec2hex(b));}
o.dec2hex=function(dec){return(this.hexDigit[dec>>4]+this.hexDigit[dec&15]);}
o.hexDigit=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");o.hex2dec=function(hex){return(parseInt(hex,16))};;OpacityTween.prototype=new Tween();OpacityTween.prototype.constructor=Tween;OpacityTween.superclass=Tween.prototype;function OpacityTween(obj,func,fromOpacity,toOpacity,duration){this.targetObject=obj;this.init(new Object(),'x',func,fromOpacity,toOpacity,duration);}
var o=OpacityTween.prototype;o.targetObject={};o.onMotionChanged=function(evt){var v=evt.target._pos;var t=this.targetObject;t.style['opacity']=v/100;t.style['-moz-opacity']=v/100;if(t.filters)t.filters.alpha['opacity']=v;};TextTween.prototype=new Tween();TextTween.prototype.constructor=Tween;TextTween.superclass=Tween.prototype;function TextTween(obj,property,txt,func,duration){this.targetObject=obj;this.targetProperty=property;this.txt=txt;if(func!=null&&func!=''){this.func=func;}
this.init(new Object(),'x',func,0,txt.length,duration);}
var o=TextTween.prototype;o.targetObject={};o.targetProperty={};o.fromColor='';o.toColor='';o.currentColor='';o.onMotionChanged=function(evt){var v=evt.target._pos;this.targetObject[this.targetProperty]=this.txt.substr(0,v);};function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
function Sequence(){this.children=new Array();this.currentChildIndex=0;this._listeners=new Array();this.nextObject=new Object();this.addListener(this);}
var s=Sequence.prototype;s.addChild=function(tween){this.children.push(tween)}
s.removeChild=function(tween){var a=this.children;var i=a.length;while(i--){if(a[i]==tween){a.splice(i,1);return true;}}
return false;}
s.start=function(){this.rewind();this.play();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
s.next=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);if(this.currentChildIndex<this.children.length-1){this.currentChildIndex++;this.play();}
else{this.stop();this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}}
s.play=function(){this.nextObject=new Object();this.nextObject.onMotionFinished=Delegate.create(this,this.next);this.children[this.currentChildIndex].addListener(this.nextObject);this.children[this.currentChildIndex].start();}
s.stop=function(){this.children[this.currentChildIndex].stop();this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
s.rewind=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);this.currentChildIndex=0;for(var i=0;i<this.children.length;i++){this.children[i].rewind();}}
s.fforward=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);for(var i=0;i<this.children.length;i++){this.children[i].fforward();}
this.currentChildIndex=this.children.length-1;}
s.resume=function(){this.children[this.currentChildIndex].resume();this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionStopped'});}
s.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
s.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
s.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}};function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
function Parallel(){this.children=new Array();this.numChildren=0;this._listeners=new Array();this.addListener(this);}
var s=Parallel.prototype;s.endObject=new Object();s.addChild=function(tween){this.children.push(tween)
this.numChildren++;}
s.start=function(){this.play();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
s.play=function(){for(var u=0;u<this.numChildren;u++){if(u==(this.numChildren-1)){this.endObject=new Object();this.endObject.onMotionFinished=Delegate.create(this,this.end);this.children[u].addListener(this.endObject);}
this.children[u].start();}}
s.end=function(){this.children[this.numChildren-1].removeListener(this.endObject);this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}
s.stop=function(){this.enumAction('stop');this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
s.rewind=function(){this.enumAction('rewind');}
s.fforward=function(){this.enumAction('fforward');}
s.resume=function(){this.enumAction('resume');this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionResumed'});}
s.yoyo=function(){this.enumAction('yoyo');}
s.enumAction=function(action){for(var u=0;u<this.numChildren;u++){this.children[u][action]();}}
s.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
s.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
s.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}}
if(typeof(Basis)=='undefined'){Basis={};}
Basis.NAME="Basis";Basis.VERSION="0.1";Basis.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};Basis.misc_vars={};;var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return}f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return}if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return}}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return}var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return}var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return}AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();;var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;};function asort(inputArr,sort_flags){var valArr=[],keyArr=[],k,i,ret,sorter,that=this;switch(sort_flags){case'SORT_STRING':sorter=function(a,b){return that.strnatcmp(a,b);};break;case'SORT_LOCALE_STRING':var loc=i18n_loc_get_default();sorter=this.php_js.i18nLocales[loc].sorting;break;case'SORT_NUMERIC':sorter=function(a,b){return(a-b);};break;case'SORT_REGULAR':default:sorter=function(a,b){if(a>b){return 1;}
if(a<b){return-1;}
return 0;};break;}
var bubbleSort=function(keyArr,inputArr){var i,j,tempValue,tempKeyVal;for(i=inputArr.length-2;i>=0;i--){for(j=0;j<=i;j++){ret=sorter(inputArr[j+1],inputArr[j]);if(ret<0){tempValue=inputArr[j];inputArr[j]=inputArr[j+1];inputArr[j+1]=tempValue;tempKeyVal=keyArr[j];keyArr[j]=keyArr[j+1];keyArr[j+1]=tempKeyVal;}}}};for(k in inputArr){valArr.push(inputArr[k]);keyArr.push(k);delete inputArr[k];}
try{bubbleSort(keyArr,valArr);}catch(e){return false;}
for(i=0;i<valArr.length;i++){inputArr[keyArr[i]]=valArr[i];}
return true;}
function getenv(varname){if(!this.php_js||!this.php_js.ENV||!this.php_js.ENV[varname]){return false;}
return this.php_js.ENV[varname];}
function i18n_loc_get_default(){this.php_js=this.php_js||{};return this.php_js.i18nLocale||(i18n_loc_set_default('en_US_POSIX'),'en_US_POSIX');}
function i18n_loc_set_default(name){this.php_js=this.php_js||{};this.php_js.i18nLocales={en_US_POSIX:{sorting:function(str1,str2){return(str1==str2)?0:((str1>str2)?1:-1);}}};this.php_js.i18nLocale=name;return true;}
function ksort(array,sort_flags){var tmp_arr={},keys=[],sorter,i,key,that=this;switch(sort_flags){case'SORT_STRING':sorter=function(a,b){return that.strnatcmp(a,b);};break;case'SORT_LOCALE_STRING':var loc=i18n_loc_get_default();sorter=this.php_js.i18nLocales[loc].sorting;break;case'SORT_NUMERIC':sorter=function(a,b){return(a-b);};break;case'SORT_REGULAR':default:sorter=function(a,b){if(a>b){return 1;}
if(a<b){return-1;}
return 0;};break;}
for(key in array){keys.push(key);}
keys.sort(sorter);for(i=0;i<keys.length;i++){key=keys[i];tmp_arr[key]=array[key];delete array[key];}
for(i in tmp_arr){array[i]=tmp_arr[i];}
return true;}
function setlocale(category,locale){var categ='',cats=[],i=0,d=this.window.document;var _copy=function _copy(orig){var newObj={};for(var i in orig){if(typeof orig[i]==='object'){newObj[i]=_copy(orig[i]);}
else{newObj[i]=orig[i];}}
return newObj;};this.php_js=this.php_js||{};var phpjs=this.php_js;if(!phpjs.locales){phpjs.locales={};phpjs.locales.en={'LC_COLLATE':function(str1,str2){return(str1==str2)?0:((str1>str2)?1:-1);},'LC_CTYPE':{an:/^[A-Za-z\d]+$/g,al:/^[A-Za-z]+$/g,ct:/^[\u0000-\u001F\u007F]+$/g,dg:/^[\d]+$/g,gr:/^[\u0021-\u007E]+$/g,lw:/^[a-z]+$/g,pr:/^[\u0020-\u007E]+$/g,pu:/^[\u0021-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]+$/g,sp:/^[\f\n\r\t\v ]+$/g,up:/^[A-Z]+$/g,xd:/^[A-Fa-f\d]+$/g,CODESET:'UTF-8',lower:'abcdefghijklmnopqrstuvwxyz',upper:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'},'LC_TIME':{a:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],A:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],b:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],B:['January','February','March','April','May','June','July','August','September','October','November','December'],c:'%a %d %b %Y %r %Z',p:['AM','PM'],P:['am','pm'],r:'%I:%M:%S %p',x:'%m/%d/%Y',X:'%r',alt_digits:'',ERA:'',ERA_YEAR:'',ERA_D_T_FMT:'',ERA_D_FMT:'',ERA_T_FMT:''},'LC_MONETARY':{int_curr_symbol:'USD',currency_symbol:'$',mon_decimal_point:'.',mon_thousands_sep:',',mon_grouping:[3],positive_sign:'',negative_sign:'-',int_frac_digits:2,frac_digits:2,p_cs_precedes:1,p_sep_by_space:0,n_cs_precedes:1,n_sep_by_space:0,p_sign_posn:3,n_sign_posn:0},'LC_NUMERIC':{decimal_point:'.',thousands_sep:',',grouping:[3]},'LC_MESSAGES':{YESEXPR:'^[yY].*',NOEXPR:'^[nN].*',YESSTR:'',NOSTR:''}};phpjs.locales.en_US=_copy(phpjs.locales.en);phpjs.locales.en_US.LC_TIME.c='%a %d %b %Y %r %Z';phpjs.locales.en_US.LC_TIME.x='%D';phpjs.locales.en_US.LC_TIME.X='%r';phpjs.locales.en_US.LC_MONETARY.int_curr_symbol='USD ';phpjs.locales.en_US.LC_MONETARY.p_sign_posn=1;phpjs.locales.en_US.LC_MONETARY.n_sign_posn=1;phpjs.locales.en_US.LC_MONETARY.mon_grouping=[3,3];phpjs.locales.en_US.LC_NUMERIC.thousands_sep='';phpjs.locales.en_US.LC_NUMERIC.grouping=[];phpjs.locales.en_GB=_copy(phpjs.locales.en);phpjs.locales.en_GB.LC_TIME.r='%l:%M:%S %P %Z';phpjs.locales.en_AU=_copy(phpjs.locales.en_GB);phpjs.locales.C=_copy(phpjs.locales.en);phpjs.locales.C.LC_CTYPE.CODESET='ANSI_X3.4-1968';phpjs.locales.C.LC_MONETARY={int_curr_symbol:'',currency_symbol:'',mon_decimal_point:'',mon_thousands_sep:'',mon_grouping:[],p_cs_precedes:127,p_sep_by_space:127,n_cs_precedes:127,n_sep_by_space:127,p_sign_posn:127,n_sign_posn:127,positive_sign:'',negative_sign:'',int_frac_digits:127,frac_digits:127};phpjs.locales.C.LC_NUMERIC={decimal_point:'.',thousands_sep:'',grouping:[]};phpjs.locales.C.LC_TIME.c='%a %b %e %H:%M:%S %Y';phpjs.locales.C.LC_TIME.x='%m/%d/%y';phpjs.locales.C.LC_TIME.X='%H:%M:%S';phpjs.locales.C.LC_MESSAGES.YESEXPR='^[yY]';phpjs.locales.C.LC_MESSAGES.NOEXPR='^[nN]';phpjs.locales.fr=_copy(phpjs.locales.en);phpjs.locales.fr.LC_TIME.a=['dim','lun','mar','mer','jeu','ven','sam'];phpjs.locales.fr.LC_TIME.A=['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'];phpjs.locales.fr.LC_TIME.b=['jan','f\u00E9v','mar','avr','mai','jun','jui','ao\u00FB','sep','oct','nov','d\u00E9c'];phpjs.locales.fr.LC_TIME.B=['janvier','f\u00E9vrier','mars','avril','mai','juin','juillet','ao\u00FBt','septembre','octobre','novembre','d\u00E9cembre'];phpjs.locales.fr.LC_TIME.c='%a %d %b %Y %T %Z';phpjs.locales.fr.LC_TIME.p=['',''];phpjs.locales.fr.LC_TIME.P=['',''];phpjs.locales.fr.LC_TIME.x='%d.%m.%Y';phpjs.locales.fr.LC_TIME.X='%T';phpjs.locales.fr_CA=_copy(phpjs.locales.fr);phpjs.locales.fr_CA.LC_TIME.x='%Y-%m-%d';}
if(!phpjs.locale){phpjs.locale='en_US';var NS_XHTML='http://www.w3.org/1999/xhtml';var NS_XML='http://www.w3.org/XML/1998/namespace';if(d.getElementsByTagNameNS&&d.getElementsByTagNameNS(NS_XHTML,'html')[0]){if(d.getElementsByTagNameNS(NS_XHTML,'html')[0].getAttributeNS&&d.getElementsByTagNameNS(NS_XHTML,'html')[0].getAttributeNS(NS_XML,'lang')){phpjs.locale=d.getElementsByTagName(NS_XHTML,'html')[0].getAttributeNS(NS_XML,'lang');}else if(d.getElementsByTagNameNS(NS_XHTML,'html')[0].lang){phpjs.locale=d.getElementsByTagNameNS(NS_XHTML,'html')[0].lang;}}else if(d.getElementsByTagName('html')[0]&&d.getElementsByTagName('html')[0].lang){phpjs.locale=d.getElementsByTagName('html')[0].lang;}}
phpjs.locale=phpjs.locale.replace('-','_');if(!(phpjs.locale in phpjs.locales)){if(phpjs.locale.replace(/_[a-zA-Z]+$/,'')in phpjs.locales){phpjs.locale=phpjs.locale.replace(/_[a-zA-Z]+$/,'');}}
if(!phpjs.localeCategories){phpjs.localeCategories={'LC_COLLATE':phpjs.locale,'LC_CTYPE':phpjs.locale,'LC_MONETARY':phpjs.locale,'LC_NUMERIC':phpjs.locale,'LC_TIME':phpjs.locale,'LC_MESSAGES':phpjs.locale};}
if(locale===null||locale===''){locale=getenv(category)||getenv('LANG');}else if(locale instanceof Array){for(i=0;i<locale.length;i++){if(!(locale[i]in this.php_js.locales)){if(i===locale.length-1){return false;}
continue;}
locale=locale[i];break;}}
if(locale==='0'||locale===0){if(category==='LC_ALL'){for(categ in this.php_js.localeCategories){cats.push(categ+'='+this.php_js.localeCategories[categ]);}
return cats.join(';');}
return this.php_js.localeCategories[category];}
if(!(locale in this.php_js.locales)){return false;}
if(category==='LC_ALL'){for(categ in this.php_js.localeCategories){this.php_js.localeCategories[categ]=locale;}}else{this.php_js.localeCategories[category]=locale;}
return locale;}
function strcmp(str1,str2){return((str1==str2)?0:((str1>str2)?1:-1));}
function strftime(fmt,timestamp){this.php_js=this.php_js||{};setlocale('LC_ALL',0);var phpjs=this.php_js;var _xPad=function(x,pad,r){if(typeof r==='undefined'){r=10;}
for(;parseInt(x,10)<r&&r>1;r/=10){x=pad.toString()+x;}
return x.toString();};var locale=phpjs.localeCategories.LC_TIME;var locales=phpjs.locales;var _formats={a:function(d){return locales[locale].LC_TIME.a[d.getDay()];},A:function(d){return locales[locale].LC_TIME.A[d.getDay()];},b:function(d){return locales[locale].LC_TIME.b[d.getMonth()];},B:function(d){return locales[locale].LC_TIME.B[d.getMonth()];},C:function(d){return _xPad(parseInt(d.getFullYear()/100,10),0);},d:['getDate','0'],e:['getDate',' '],g:function(d){return _xPad(parseInt(this.G(d)/100,10),0);},G:function(d){var y=d.getFullYear();var V=parseInt(_formats.V(d),10);var W=parseInt(_formats.W(d),10);if(W>V){y++;}
else if(W===0&&V>=52){y--;}
return y;},H:['getHours','0'],I:function(d){var I=d.getHours()%12;return _xPad(I===0?12:I,0);},j:function(d){var ms=d-new Date(''+d.getFullYear()+'/1/1 GMT');ms+=d.getTimezoneOffset()*60000;var doy=parseInt(ms/60000/60/24,10)+1;return _xPad(doy,0,100);},k:['getHours','0'],l:function(d){var l=d.getHours()%12;return _xPad(l===0?12:l,' ');},m:function(d){return _xPad(d.getMonth()+1,0);},M:['getMinutes','0'],p:function(d){return locales[locale].LC_TIME.p[d.getHours()>=12?1:0];},P:function(d){return locales[locale].LC_TIME.P[d.getHours()>=12?1:0];},s:function(d){return Date.parse(d)/1000;},S:['getSeconds','0'],u:function(d){var dow=d.getDay();return((dow===0)?7:dow);},U:function(d){var doy=parseInt(_formats.j(d),10);var rdow=6-d.getDay();var woy=parseInt((doy+rdow)/7,10);return _xPad(woy,0);},V:function(d){var woy=parseInt(_formats.W(d),10);var dow1_1=(new Date(''+d.getFullYear()+'/1/1')).getDay();var idow=woy+(dow1_1>4||dow1_1<=1?0:1);if(idow===53&&(new Date(''+d.getFullYear()+'/12/31')).getDay()<4){idow=1;}
else if(idow===0){idow=_formats.V(new Date(''+(d.getFullYear()-1)+'/12/31'));}
return _xPad(idow,0);},w:'getDay',W:function(d){var doy=parseInt(_formats.j(d),10);var rdow=7-_formats.u(d);var woy=parseInt((doy+rdow)/7,10);return _xPad(woy,0,10);},y:function(d){return _xPad(d.getFullYear()%100,0);},Y:'getFullYear',z:function(d){var o=d.getTimezoneOffset();var H=_xPad(parseInt(Math.abs(o/60),10),0);var M=_xPad(o%60,0);return(o>0?'-':'+')+H+M;},Z:function(d){return d.toString().replace(/^.*\(([^)]+)\)$/,'$1');},'%':function(d){return'%';}};var _date=((typeof(timestamp)=='undefined')?new Date():(typeof(timestamp)=='object')?new Date(timestamp):new Date(timestamp*1000));var _aggregates={c:'locale',D:'%m/%d/%y',F:'%y-%m-%d',h:'%b',n:'\n',r:'locale',R:'%H:%M',t:'\t',T:'%H:%M:%S',x:'locale',X:'locale'};while(fmt.match(/%[cDFhnrRtTxX]/)){fmt=fmt.replace(/%([cDFhnrRtTxX])/g,function(m0,m1)
{var f=_aggregates[m1];return(f==='locale'?locales[locale].LC_TIME[m1]:f);});}
var str=fmt.replace(/%([aAbBCdegGHIjklmMpPsSuUVwWyYzZ%])/g,function(m0,m1){var f=_formats[m1];if(typeof f==='string'){return _date[f]();}else if(typeof f==='function'){return f(_date);}else if(typeof f==='object'&&typeof(f[0])==='string'){return _xPad(_date[f[0]](),f[1]);}else{return m1;}});return str;}
function strnatcmp(f_string1,f_string2,f_version){var i=0;if(f_version==undefined){f_version=false;}
var __strnatcmp_split=function(f_string){var result=[];var buffer='';var chr='';var i=0,f_stringl=0;var text=true;f_stringl=f_string.length;for(i=0;i<f_stringl;i++){chr=f_string.substring(i,i+1);if(chr.match(/[0-9]/)){if(text){if(buffer.length>0){result[result.length]=buffer;buffer='';}
text=false;}
buffer+=chr;}else if((text==false)&&(chr=='.')&&(i<(f_string.length-1))&&(f_string.substring(i+1,i+2).match(/[0-9]/))){result[result.length]=buffer;buffer='';}else{if(text==false){if(buffer.length>0){result[result.length]=parseInt(buffer,10);buffer='';}
text=true;}
buffer+=chr;}}
if(buffer.length>0){if(text){result[result.length]=buffer;}else{result[result.length]=parseInt(buffer,10);}}
return result;};var array1=__strnatcmp_split(f_string1+'');var array2=__strnatcmp_split(f_string2+'');var len=array1.length;var text=true;var result=-1;var r=0;if(len>array2.length){len=array2.length;result=1;}
for(i=0;i<len;i++){if(isNaN(array1[i])){if(isNaN(array2[i])){text=true;if((r=strcmp(array1[i],array2[i]))!=0){return r;}}else if(text){return 1;}else{return-1;}}else if(isNaN(array2[i])){if(text){return-1;}else{return 1;}}else{if(text||f_version){if((r=(array1[i]-array2[i]))!=0){return r;}}else{if((r=strcmp(array1[i].toString(),array2[i].toString()))!=0){return r;}}
text=false;}}
return result;}
function strtotime(str,now){var i,match,s,strTmp='',parse='';strTmp=str;strTmp=strTmp.replace(/\s{2,}|^\s|\s$/g,' ');strTmp=strTmp.replace(/[\t\r\n]/g,'');if(strTmp=='now'){return(new Date()).getTime()/1000;}else if(!isNaN(parse=Date.parse(strTmp))){return(parse/1000);}else if(now){now=new Date(now*1000);}else{now=new Date();}
strTmp=strTmp.toLowerCase();var __is={day:{'sun':0,'mon':1,'tue':2,'wed':3,'thu':4,'fri':5,'sat':6},mon:{'jan':0,'feb':1,'mar':2,'apr':3,'may':4,'jun':5,'jul':6,'aug':7,'sep':8,'oct':9,'nov':10,'dec':11}};var process=function(m){var ago=(m[2]&&m[2]=='ago');var num=(num=m[0]=='last'?-1:1)*(ago?-1:1);switch(m[0]){case'last':case'next':switch(m[1].substring(0,3)){case'yea':now.setFullYear(now.getFullYear()+num);break;case'mon':now.setMonth(now.getMonth()+num);break;case'wee':now.setDate(now.getDate()+(num*7));break;case'day':now.setDate(now.getDate()+num);break;case'hou':now.setHours(now.getHours()+num);break;case'min':now.setMinutes(now.getMinutes()+num);break;case'sec':now.setSeconds(now.getSeconds()+num);break;default:var day;if(typeof(day=__is.day[m[1].substring(0,3)])!='undefined'){var diff=day-now.getDay();if(diff==0){diff=7*num;}else if(diff>0){if(m[0]=='last'){diff-=7;}}else{if(m[0]=='next'){diff+=7;}}
now.setDate(now.getDate()+diff);}}
break;default:if(/\d+/.test(m[0])){num*=parseInt(m[0],10);switch(m[1].substring(0,3)){case'yea':now.setFullYear(now.getFullYear()+num);break;case'mon':now.setMonth(now.getMonth()+num);break;case'wee':now.setDate(now.getDate()+(num*7));break;case'day':now.setDate(now.getDate()+num);break;case'hou':now.setHours(now.getHours()+num);break;case'min':now.setMinutes(now.getMinutes()+num);break;case'sec':now.setSeconds(now.getSeconds()+num);break;}}else{return false;}
break;}
return true;};match=strTmp.match(/^(\d{2,4}-\d{2}-\d{2})(?:\s(\d{1,2}:\d{2}(:\d{2})?)?(?:\.(\d+))?)?$/);if(match!=null){if(!match[2]){match[2]='00:00:00';}else if(!match[3]){match[2]+=':00';}
s=match[1].split(/-/g);for(i in __is.mon){if(__is.mon[i]==s[1]-1){s[1]=i;}}
s[0]=parseInt(s[0],10);s[0]=(s[0]>=0&&s[0]<=69)?'20'+(s[0]<10?'0'+s[0]:s[0]+''):(s[0]>=70&&s[0]<=99)?'19'+s[0]:s[0]+'';return parseInt(strtotime(s[2]+' '+s[1]+' '+s[0]+' '+match[2])+(match[4]?match[4]/1000:''),10);}
var regex='([+-]?\\d+\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday)'+'|(last|next)\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday))'+'(\\sago)?';match=strTmp.match(new RegExp(regex,'gi'));if(match==null){return false;}
for(i=0;i<match.length;i++){if(!process(match[i].split(' '))){return false;}}
return(now.getTime()/1000);};var isIE=(navigator.appVersion.indexOf("MSIE")!=-1)?true:false;var isWin=(navigator.appVersion.toLowerCase().indexOf("win")!=-1)?true:false;var isOpera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false;function ControlVersion()
{var version;var axo;var e;try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");version=axo.GetVariable("$version");}catch(e){}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version="WIN 6,0,21,0";axo.AllowScriptAccess="always";version=axo.GetVariable("$version");}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version=axo.GetVariable("$version");}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version="WIN 3,0,18,0";}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");version="WIN 2,0,0,11";}catch(e){version=-1;}}
return version;}
function GetSwfVer(){var flashVer=-1;if(navigator.plugins!=null&&navigator.plugins.length>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";var flashDescription=navigator.plugins["Shockwave Flash"+swVer2].description;var descArray=flashDescription.split(" ");var tempArrayMajor=descArray[2].split(".");var versionMajor=tempArrayMajor[0];var versionMinor=tempArrayMajor[1];var versionRevision=descArray[3];if(versionRevision==""){versionRevision=descArray[4];}
if(versionRevision[0]=="d"){versionRevision=versionRevision.substring(1);}else if(versionRevision[0]=="r"){versionRevision=versionRevision.substring(1);if(versionRevision.indexOf("d")>0){versionRevision=versionRevision.substring(0,versionRevision.indexOf("d"));}}
var flashVer=versionMajor+"."+versionMinor+"."+versionRevision;}}
else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6")!=-1)flashVer=4;else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5")!=-1)flashVer=3;else if(navigator.userAgent.toLowerCase().indexOf("webtv")!=-1)flashVer=2;else if(isIE&&isWin&&!isOpera){flashVer=ControlVersion();}
return flashVer;}
function DetectFlashVer(reqMajorVer,reqMinorVer,reqRevision)
{versionStr=GetSwfVer();if(versionStr==-1){return false;}else if(versionStr!=0){if(isIE&&isWin&&!isOpera){tempArray=versionStr.split(" ");tempString=tempArray[1];versionArray=tempString.split(",");}else{versionArray=versionStr.split(".");}
var versionMajor=versionArray[0];var versionMinor=versionArray[1];var versionRevision=versionArray[2];if(versionMajor>parseFloat(reqMajorVer)){return true;}else if(versionMajor==parseFloat(reqMajorVer)){if(versionMinor>parseFloat(reqMinorVer))
return true;else if(versionMinor==parseFloat(reqMinorVer)){if(versionRevision>=parseFloat(reqRevision))
return true;}}
return false;}}
function AC_AddExtension(src,ext)
{if(src.indexOf('?')!=-1)
return src.replace(/\?/,ext+'?');else
return src+ext;}
function AC_Generateobj(objAttrs,params,embedAttrs)
{var str='';if(isIE&&isWin&&!isOpera)
{str+='<object ';for(var i in objAttrs)
str+=i+'="'+objAttrs[i]+'" ';for(var i in params)
str+='><param name="'+i+'" value="'+params[i]+'" /> ';str+='></object>';}else{str+='<embed ';for(var i in embedAttrs)
str+=i+'="'+embedAttrs[i]+'" ';str+='> </embed>';}
document.write(str);}
function AC_FL_RunContent(){var ret=AC_GetArgs
(arguments,".swf","movie","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash");AC_Generateobj(ret.objAttrs,ret.params,ret.embedAttrs);}
function AC_GetArgs(args,ext,srcParamName,classid,mimeType){var ret=new Object();ret.embedAttrs=new Object();ret.params=new Object();ret.objAttrs=new Object();for(var i=0;i<args.length;i=i+2){var currArg=args[i].toLowerCase();switch(currArg){case"classid":break;case"pluginspage":ret.embedAttrs[args[i]]=args[i+1];break;case"src":case"movie":args[i+1]=AC_AddExtension(args[i+1],ext);ret.embedAttrs["src"]=args[i+1];ret.params[srcParamName]=args[i+1];break;case"onafterupdate":case"onbeforeupdate":case"onblur":case"oncellchange":case"onclick":case"ondblClick":case"ondrag":case"ondragend":case"ondragenter":case"ondragleave":case"ondragover":case"ondrop":case"onfinish":case"onfocus":case"onhelp":case"onmousedown":case"onmouseup":case"onmouseover":case"onmousemove":case"onmouseout":case"onkeypress":case"onkeydown":case"onkeyup":case"onload":case"onlosecapture":case"onpropertychange":case"onreadystatechange":case"onrowsdelete":case"onrowenter":case"onrowexit":case"onrowsinserted":case"onstart":case"onscroll":case"onbeforeeditfocus":case"onactivate":case"onbeforedeactivate":case"ondeactivate":case"type":case"codebase":ret.objAttrs[args[i]]=args[i+1];break;case"id":case"width":case"height":case"align":case"vspace":case"hspace":case"class":case"title":case"accesskey":case"name":case"tabindex":ret.embedAttrs[args[i]]=ret.objAttrs[args[i]]=args[i+1];break;default:ret.embedAttrs[args[i]]=ret.params[args[i]]=args[i+1];}}
ret.objAttrs["classid"]=classid;if(mimeType)ret.embedAttrs["type"]=mimeType;return ret;};var misc_vars=new Object();var tabs=new Object();var active_tab="";var detect=navigator.userAgent.toLowerCase();var OS,browser,version,total,thestring;if(check_it('konqueror')){browser="Konqueror";OS="Linux";}else if(check_it('safari')){browser="Safari";}
else if(check_it('omniweb')){browser="OmniWeb";}
else if(check_it('opera')){browser="Opera";}
else if(check_it('webtv')){browser="WebTV";}
else if(check_it('icab')){browser="iCab";}
else if(check_it('msie')){browser="Internet Explorer";}
else if(!check_it('compatible')){browser="Netscape Navigator";version=detect.charAt(8);}else{browser="An unknown browser";}
if(!version)version=detect.charAt(place+thestring.length);if(!OS){if(check_it('linux')){OS="Linux";}
else if(check_it('x11')){OS="Unix";}
else if(check_it('mac')){OS="Mac"}
else if(check_it('win')){OS="Windows"}
else{OS="an unknown operating system";}}
function check_it(string){place=detect.indexOf(string)+1;thestring=string;return place;}
function ie_getElementsByTagName(str){if(str=="*"){return document.all;}else{return document.all.tags(str);}}
if(document.all){document.getElementsByTagName=ie_getElementsByTagName;}
delete_form_lookup=new Object();duplicate_form_lookup=new Object();notified=new Object();selected_menu_item="";function submit_delete_form(mik_md5){if(delete_form_lookup[mik_md5]){if(MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5])){MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5]).submit();}}}
function submit_duplicate_form(mik_md5){if(duplicate_form_lookup[mik_md5]){if(MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5])){MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5]).submit();}}}
function toggle_menu_item(item_idnum,prepend,a,b){if(!a){a="menu_item_parent";}
if(!b){b="menu_item_child";}
if(!prepend){prepend="";}
a_parent=prepend+"menu_parent_"+item_idnum;if(MochiKit.DOM.getElement(a_parent)){if((prepend+item_idnum)!=selected_menu_item){a_child=prepend+"menu_child_"+item_idnum;a_img=prepend+"menu_child_img_"+item_idnum;if(MochiKit.DOM.getElement(a_parent).className==a+"_off"){MochiKit.DOM.getElement(a_parent).className=a+"_on";}else{MochiKit.DOM.getElement(a_parent).className=a+"_off";}
if(MochiKit.DOM.getElement(a_child).className==b+"_off"){MochiKit.DOM.getElement(a_child).className=b+"_on";MochiKit.DOM.getElement(a_img).src="images/images/menu_item_on.gif";}else{MochiKit.DOM.getElement(a_child).className=b+"_off";MochiKit.DOM.getElement(a_img).src="images/images/menu_item_off.gif";}}}}
function set_tab_type(idnum,type){MochiKit.DOM.getElement("tab"+idnum+"_a_img").src="images/images/spacer.gif";switch(type){case"regular_selected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/tab_on_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/tab_on_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="tab_regular_on_middle";break;case"regular_unselected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/tab_off_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/tab_off_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="tab_regular_off_middle";break;case"end_selected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/right_tab_on_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/right_tab_on_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="right_tab_on_middle";break;case"end_unselected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/right_tab_off_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/right_tab_off_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="right_tab_off_middle";break;}}
function load_tab(current_tab,to_tab,form_id){if(current_tab==to_tab){return false;}else{MochiKit.DOM.getElement(form_id).submit();return true;}
if(active_tab=="tab"){MochiKit.DOM.getElement(form_id).submit();return true;}
if(current_tab!=to_tab){export_form_values('form_0');if(tabs[to_tab]["json"]){restore_form_values(to_tab,'form_0');for(x=0;x<MochiKit.DOM.getElement('form_0').elements.length;x++){tid=MochiKit.DOM.getElement('form_0').elements[x].id;tv=MochiKit.DOM.getElement('form_0').elements[x].value;tdiv=(tid.substr(0,(tid.length-6))+"div");if(tv=="Show / Edit Note"){toggle_object(tdiv,"off");}else if(tv=="Hide Note"){toggle_object(tdiv,"on");}}
tindex=current_tab.substr(3);tab_class=MochiKit.DOM.getElement(current_tab+"_c").className;if(tab_class=="tab_regular_on_middle"){set_tab_type(tindex,"regular_unselected");}
if(tab_class=="right_tab_on_middle"){set_tab_type(tindex,"end_unselected");}
tindex=to_tab.substr(3);tab_class=MochiKit.DOM.getElement(to_tab+"_c").className;if(tab_class=="tab_regular_off_middle"){set_tab_type(tindex,"regular_selected");}
if(tab_class=="right_tab_off_middle"){set_tab_type(tindex,"end_selected");}
active_tab=to_tab;return false;}else{var tabs_field=document.createElement("input");tabs_field.setAttribute("name","current_tabs");tabs_field.setAttribute("id","current_tabs");tabs_field.setAttribute("type","hidden");tabs_field.setAttribute("value",encodeBase64(MochiKit.Base.serializeJSON(tabs)));MochiKit.DOM.getElement(form_id).appendChild(tabs_field);MochiKit.DOM.getElement(form_id).submit();return true;}}}
function htmlentities(text){var v=text;var s="";var c;for(var i=0;i<v.length;i++){c=v.charAt(i);c=c.charCodeAt(0);c='&#'+c+';'
s+=c;}
return s;}
function auto_save(form,refresh_speed){window.status="Auto-saving form...";AjaxRequest.submit(form,{'url':MochiKit.DOM.getElement(form).action,'onSuccess':function(req){window.status="Done";}});init_auto_save(form,refresh_speed);}
function init_auto_save(form,refresh_speed){if(!refresh_speed){refresh_speed=300000;}
window.setTimeout("auto_save('"+form+"',"+refresh_speed+")",refresh_speed);}
function export_form_values(form){output=new Array();style=new Array();for(x=0;x<MochiKit.DOM.getElement(form).elements.length;x++){tstyle=new Object();output[x]=new Object();output[x]["id"]=MochiKit.DOM.getElement(form).elements[x].id;output[x]["name"]=MochiKit.DOM.getElement(form).elements[x].name;output[x]["value"]=MochiKit.DOM.getElement(form).elements[x].value;}
tabs[active_tab]=new Object();tabs[active_tab]["link"]=document.URL;tabs[active_tab]["json"]=MochiKit.Base.serializeJSON(output);}
function restore_form_values(from_tab,to_form){output=new Array();output=MochiKit.Base.evalJSON(tabs[from_tab]["json"]);theform=MochiKit.DOM.getElement(to_form);for(var x in output){theform.elements[x].id=output[x]["id"];theform.elements[x].name=output[x]["name"];theform.elements[x].value=output[x]["value"];}}
function print_r(theObj){if(theObj){var output="";if((theObj.constructor==Array)||(theObj.constructor==Object)){output+="<ul>";for(var p in theObj){if((theObj[p].constructor==Array)||(theObj[p].constructor==Object)){output+="<li>["+p+"] => "+(typeof theObj)+"</li>";output+="<ul>";output+=print_r(theObj[p]);output+="</ul>";}else{output+="<li>["+p+"] => "+theObj[p]+"</li>";}}
output+="</ul>";}
return output;}}
function list_add_item(e){if(!confirm('Are you sure you want to add this item?')){return;}
list=new Object();window.status="Adding item to list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-13))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);list["options"]=new Object();rrv_length=0;for(var chi=list["id"].length;chi>0;chi--){if(list["id"].substring(chi,chi-1)=="_"){chi=0;}
rrv_length++;}
if(MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value){select_add_option(list["id"],null,MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value);for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function list_rename_item(e){if(!confirm('Are you sure you want to rename this item with the text currently typed into the "Add This Item" text box?')){return;}
list=new Object();window.status="Renaming item in list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);list["options"]=new Object();index=MochiKit.DOM.getElement(list["id"]).selectedIndex;rrv_length=0;for(var chi=list["id"].length;chi>0;chi--){if(list["id"].substring(chi,chi-1)=="_"){chi=0;}
rrv_length++;}
if(MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value){MochiKit.DOM.getElement(list["id"]).options[index].text=MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value;MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value="";for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function list_delete_item(e){if(confirm("Are you sure you want to delete this item?")){list=new Object();window.status="Deleting item from list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name;list["options"]=new Object();index=MochiKit.DOM.getElement(list["id"]).selectedIndex;MochiKit.DOM.getElement(list["id"]).options[index]=null;for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function update_date_dropdowns(e){date_array=new Object();window.status="Updating date dropdown...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
date_array["id"]=target.id;temp=date_array["id"].split("_");date_array["rrv"]=temp[temp.length-1];date_array["oid"]=temp[temp.length-2];temp=date_array["id"].substr(0,(date_array["id"].length-temp[temp.length-1].length-temp[temp.length-2].length)-2);date_array["id"]=temp;date_array["month"]=MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).selectedIndex].text;date_array["year"]=MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).selectedIndex].text;var to_post=date_array;AjaxRequest.post({'url':'ajax/date.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){return_response=MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));update_days(return_response);MochiKit.Signal.signal(target,"update_calendar");}});}}
function update_days(return_array){id=return_array["id"]+"_day_"+return_array["rrv"];var obj=MochiKit.DOM.getElement(id);if(obj){var sel_id=obj.selectedIndex;obj.options.length=0;for(var x=0;x<return_array["days"];x++){obj.options[x]=new Option(x+1,x);}
if(obj.options.length>sel_id){obj.selectedIndex=sel_id;}else{obj.selectedIndex=obj.options.length-1;}}
window.status="Done";}
function update_json_variables(e){window.status="Validating form fields...";if(e){var target=detectTarget(e);var rrv_run=target.id.split("_");rrv_run=rrv_run[rrv_run.length-1];}
notified[target.id]="";for(var i in variables["form_"+rrv_run]){if(!MochiKit.DOM.getElement(i+"_"+rrv_run)){alert("update_json_variables() failed for element ["+i+"_"+rrv_run+"]");}else{variables["form_"+rrv_run][i]=MochiKit.DOM.getElement(i+"_"+rrv_run).value;}}
validate_array["form_"+rrv_run]["variables"]=variables["form_"+rrv_run];validate_array["form_"+rrv_run]["require_variables"]=require_variables["form_"+rrv_run];validate_array["form_"+rrv_run]["submit_buttons"]=submit_buttons["form_"+rrv_run];validate_array["form_"+rrv_run]["rrv_run"]=rrv_run;validate(validate_array["form_"+rrv_run]);}
function notify_validation(return_response){notify_text="";num_false=0;var rrv_run=return_response["rrv_run"];var submit_buttons=return_response["submit_buttons"];return_response=return_response["array"];for(var key in return_response){for(var rule in return_response[key]){if(is_object(return_response[key][rule])){if(return_response[key][rule][0]==false){if(MochiKit.DOM.getElement(key+"_"+rrv_run)){MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor="#FF0000";num_false++;if((!notified[key+"_"+rrv_run])||(notified[key+"_"+rrv_run]=="")){notified[key+"_"+rrv_run]="notified";notify_text=notify_text+"Variable \""+key+"_"+rrv_run+"\" does not meet the requirements of constraint \""+rule+"\".\n";}}}else if(return_response[key][rule][0]==true){if(MochiKit.DOM.getElement(key+"_"+rrv_run)){MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor="";notified[key+"_"+rrv_run]=null;}}}}}
if(num_false>0){for(var button in submit_buttons){if(MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)){MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled=true;}}
if(!is_empty(notify_text)){alert(notify_text);}}else{for(var button in submit_buttons){if(MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)){MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled=false;}}}
window.status="Done";}
function validate(input_array){AjaxRequest.post({'url':'ajax/validate.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(input_array))),'onSuccess':function(req){return_response=MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));notify_validation(return_response);}});}
function checkRegExpress(obj,submit){if(!obj.value.match(/\d\d-\d\d\d-\d\d$/)){if(obj.value.match(/\d\d-\d\d\d-\d\dP$/)){obj.style.backgroundColor='';submit.disabled=false;return true;}
obj.style.backgroundColor='#FF0000';alert("Internal IDs are in the form:\n\txx-xxx-xx");submit.disabled=true;return false;}else{obj.style.backgroundColor='';submit.disabled=false;return true;}}
function set_date(when,monthfield,dayfield,yearfield){if(when=="today"){var today=new Date();var month=today.getMonth();var day=today.getDate()-1;var year=today.getYear();if(year>99){year=2000+(year-100);}
else{year=1900+year;}
monthfield[month].selected=true;dayfield[day].selected=true;for(i=0;i<yearfield.length;i++){if(yearfield[i].text==year){yearfield[i].selected=true;}}}}
function note_onoff(objtxt,rrv_run){obj=MochiKit.DOM.getElement(objtxt+'_notediv');button=MochiKit.DOM.getElement(objtxt+'_notebutton');texta=MochiKit.DOM.getElement(objtxt+'_note'+'_'+rrv_run);if(obj.style.display=="none"){obj.style.display="";button.value="Delete Note";}else{if(confirm('Are you sure you want to delete this note?')==true){obj.style.display="none";button.value="Add Note";texta.value="";}}}
function toggle_image(theobj,a,b){theobj=MochiKit.DOM.getElement(theobj);if(theobj.src==a.src){theobj.src=b.src;}else if(theobj.src==b.src){theobj.src=a.src;}}
function toggle_object(obj,specific){if(!is_object(obj)){if(MochiKit.DOM.getElement(obj)){obj=MochiKit.DOM.getElement(obj);}}
if(!specific){if(obj.style.display=="none"){obj.style.display="";}else{obj.style.display="none";}}else{if(specific=="on"){obj.style.display="";}else if(specific=="off"){obj.style.display="none";}}}
function detectTarget(e){var targ;if(!e)var e=window.event;if(e.target){targ=e.target;}
else if(e.srcElement){targ=e.srcElement;}
if(targ.nodeType==3){targ=targ.parentNode;}
return targ;}
function CJL_RegisterEvent(elemName,elem,type,listener,useCapture,noAutoStart){var proto=arguments.callee.prototype;this.e=elem;this.type=type;this.cap=useCapture;this.l=listener;proto.start=function(){if(!elem){alert("CJL_RegisterEvent() failed for element ["+elemName+"]");return;}
if(this.e.attachEvent){this.e.attachEvent("on"+this.type,this.l);}else if(this.e.addEventListener){this.e.addEventListener(this.type,this.l,this.cap);}}
if(!noAutoStart){this.start(elem,type,listener);}
proto.stop=function(){if(this.e.detachEvent){this.e.detachEvent("on"+this.type,this.l);}else if(this.e.removeEventListener){this.e.removeEventListener(this.type,this.l,this.cap);}}}
var END_OF_INPUT=-1;var base64Chars=new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/');var reverseBase64Chars=new Array();for(var i=0;i<base64Chars.length;i++){reverseBase64Chars[base64Chars[i]]=i;}
var base64Str;var base64Count;function setBase64Str(str){base64Str=str;base64Count=0;}
function readBase64(){if(!base64Str){return END_OF_INPUT;}
if(base64Count>=base64Str.length){return END_OF_INPUT;}
var c=base64Str.charCodeAt(base64Count)&0xff;base64Count++;return c;}
function encodeBase64(str){setBase64Str(str);var result='';var inBuffer=new Array(3);var lineCount=0;var done=false;while(!done&&(inBuffer[0]=readBase64())!=END_OF_INPUT){inBuffer[1]=readBase64();inBuffer[2]=readBase64();result+=(base64Chars[inBuffer[0]>>2]);if(inBuffer[1]!=END_OF_INPUT){result+=(base64Chars[((inBuffer[0]<<4)&0x30)|(inBuffer[1]>>4)]);if(inBuffer[2]!=END_OF_INPUT){result+=(base64Chars[((inBuffer[1]<<2)&0x3c)|(inBuffer[2]>>6)]);result+=(base64Chars[inBuffer[2]&0x3F]);}else{result+=(base64Chars[((inBuffer[1]<<2)&0x3c)]);result+=('=');done=true;}}else{result+=(base64Chars[((inBuffer[0]<<4)&0x30)]);result+=('=');result+=('=');done=true;}}
return result;}
function readReverseBase64(){if(!base64Str)return END_OF_INPUT;while(true){if(base64Count>=base64Str.length)return END_OF_INPUT;var nextCharacter=base64Str.charAt(base64Count);base64Count++;if(reverseBase64Chars[nextCharacter]){return reverseBase64Chars[nextCharacter];}
if(nextCharacter=='A')return 0;}
return END_OF_INPUT;}
function ntos(n){n=n.toString(16);if(n.length==1)n="0"+n;n="%"+n;return unescape(n);}
function decodeBase64(str){setBase64Str(str);var result="";var inBuffer=new Array(4);var done=false;while(!done&&(inBuffer[0]=readReverseBase64())!=END_OF_INPUT&&(inBuffer[1]=readReverseBase64())!=END_OF_INPUT){inBuffer[2]=readReverseBase64();inBuffer[3]=readReverseBase64();result+=ntos((((inBuffer[0]<<2)&0xff)|inBuffer[1]>>4));if(inBuffer[2]!=END_OF_INPUT){result+=ntos((((inBuffer[1]<<4)&0xff)|inBuffer[2]>>2));if(inBuffer[3]!=END_OF_INPUT){result+=ntos((((inBuffer[2]<<6)&0xff)|inBuffer[3]));}else{done=true;}}else{done=true;}}
return result;}
function urlencode(val)
{var SAFECHARS="0123456789"+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"abcdefghijklmnopqrstuvwxyz"+"-_.!~*'()";var HEX="0123456789ABCDEF";var plaintext=val;var encoded="";for(var i=0;i<plaintext.length;i++){var ch=plaintext.charAt(i);if(ch==" "){encoded+="+";}else if(SAFECHARS.indexOf(ch)!=-1){encoded+=ch;}else{var charCode=ch.charCodeAt(0);if(charCode>255){alert("Unicode Character '"
+ch
+"' cannot be encoded using standard URL encoding.\n"+"(URL encoding only supports 8-bit characters.)\n"+"A space (+) will be substituted.");encoded+="+";}else{encoded+="%";encoded+=HEX.charAt((charCode>>4)&0xF);encoded+=HEX.charAt(charCode&0xF);}}}
return encoded;};function urldecode(val)
{var HEXCHARS="0123456789ABCDEFabcdef";var encoded=val;var plaintext="";var i=0;while(i<encoded.length){var ch=encoded.charAt(i);if(ch=="+"){plaintext+=" ";i++;}else if(ch=="%"){if(i<(encoded.length-2)&&HEXCHARS.indexOf(encoded.charAt(i+1))!=-1&&HEXCHARS.indexOf(encoded.charAt(i+2))!=-1){plaintext+=unescape(encoded.substr(i,3));i+=3;}else{alert('Bad escape combination near ...'+encoded.substr(i));plaintext+="%[ERROR]";i++;}}else{plaintext+=ch;i++;}}
return plaintext;};function is_alien(a){return is_object(a)&&typeof a.constructor!='function';}
function is_array(a){return is_object(a)&&a.constructor==Array;}
function is_boolean(a){return typeof a=='boolean';}
function is_empty(o){var i,v;if(is_object(o)){for(i in o){v=o[i];if(is_undefined(v)&&is_function(v)){return false;}}}else if(is_string(o)){if(o.length>0){return false;}}
return true;}
function is_function(a){return typeof a=='function';}
function is_null(a){return typeof a=='object'&&!a;}
function is_number(a){return typeof a=='number'&&isFinite(a);}
function is_object(a){return(a&&typeof a=='object')||is_function(a);}
function is_string(a){return typeof a=='string';}
function is_undefined(a){return typeof a=='undefined';}
function select_add_option(theobj,tvalue,ttext){var temp=document.createElement('option');temp.value=tvalue;temp.text=ttext;if(is_string(theobj)){theobj=MochiKit.DOM.getElement(theobj);}
try{theobj.add(temp,null);}
catch(ex){theobj.add(temp);}}
function calendar_add_date(liid,pid,button_elem){thevar='calendar'+liid+'_add_date';screend=MochiKit.Style.getViewportDimensions();dated=MochiKit.Style.getElementDimensions(thevar);to_pos=new Object;to_pos.x=((screend.w/2)-(dated.w/2));to_pos.y=((screend.h/2)-(dated.h/2));MochiKit.Style.setElementPosition(thevar,to_pos);if(eval('calendar'+liid+'_adding')==true){eval('calendar'+liid+'_adding = false;');button_elem.style.backgroundImage='url(${root}images/images/edit.gif)';button_elem.value='Add Date to Calendar';}else{eval('calendar'+liid+'_adding = true;');button_elem.style.backgroundImage='url(${root}images/images/cancel.gif)';button_elem.value='Cancel';}
toggle_object(thevar);}
function set_date_dropdowns_date(id,rrv,date){temp=date.split("-");year=eval(temp[0]);month=eval(temp[1]);day=eval(temp[2]);year_field=MochiKit.DOM.getElement((id+'_year_'+rrv));month_field=MochiKit.DOM.getElement((id+'_month_'+rrv));day_field=MochiKit.DOM.getElement((id+'_day_'+rrv));year_idx=null;month_idx=null;day_idx=null;for(x=0;x<year_field.options.length;x++){if(year_field.options[x].text==year){year_idx=year_field.options[x].value;}}
for(x=0;x<month_field.options.length;x++){if(month_field.options[x].value==(month-1)){month_idx=month_field.options[x].value;}}
for(x=0;x<day_field.options.length;x++){if(day_field.options[x].text==day){day_idx=day_field.options[x].value;}}
if(year_idx){year_field.selectedIndex=year_idx;}
if(month_idx){month_field.selectedIndex=month_idx;}
if(day_idx){day_field.selectedIndex=day_idx;}}
multipleDraggables=function(){this.__init__();}
multipleDraggables.instances=[];multipleDraggables.prototype={__init__:function(){this.drags=new Object();this.selected=new Object();this.start_drag=false;this.dragging=false;this.drag_and_drop=true;this.force_single_selection=false;this.disable_clickoff=false;this.default_events_set_up=false;this.commit=true;this.selected_class="selected";this.selectable_class="selectable";this.append_to=null;this.document_onmouseup=null;this.index=multipleDraggables.instances.length;multipleDraggables.instances[this.index]=this;this.condition_to_start=function(){return true;}},add_draggable:function(element){if(!this.default_events_set_up){this.set_up_default_events();}
var element=Basis.get_element(element);if(element&&element.id){if(element&&!this.drags[element.id]){element.multipleDraggable=this;MochiKit.DOM.addElementClass(element,this.selectable_class);this.drags[element.id]=true;Basis.signal_handler.connect(element,"onmousedown.greedy.swallow",MochiKit.Base.bind(function(e){if(((Basis.key_handler.key_state("KEY_CTRL")=="up")&&(!this.multipleDraggable.selected[this.id]))||((Basis.key_handler.key_state("KEY_CTRL")=="up")&&(this.multipleDraggable.selected.length==0))||this.multipleDraggable.force_single_selection){this.multipleDraggable.clear_selected();}
if((!this.multipleDraggable.selected[this.id]||(Basis.key_handler.key_state("KEY_CTRL")=="down"))&&!Basis.dragging_any_multiple_draggable){this.multipleDraggable.toggle_select(this);}},element),this.commit);Basis.signal_handler.connect(element,"onmouseup.greedy",MochiKit.Base.bind(function(e){if(((Basis.key_handler.key_state("KEY_CTRL")=="up")||this.multipleDraggable.force_single_selection)&&!this.multipleDraggable.dragging){this.multipleDraggable.clear_selected();this.multipleDraggable.toggle_select(this);}},element),this.commit);if(this.drag_and_drop){Basis.signal_handler.connect(element,"onmousemove.greedy.swallow",MochiKit.Base.bind(function(e){if((Basis.mouse_handler.button_state("left")=="down")&!this.multipleDraggable.dragging&&this.multipleDraggable.condition_to_start()){this.multipleDraggable.start_drag=true;}
if(this.multipleDraggable.start_drag){this.multipleDraggable.start_drag=false;this.multipleDraggable.dragging=true;Basis.dragging_any_multiple_draggable=true;if((Basis.key_handler.key_state("KEY_CTRL")=="up")||this.multipleDraggable.force_single_selection){if(!this.multipleDraggable.selected[this.id]){this.multipleDraggable.clear_selected();}}
if(!this.multipleDraggable.selected[this.id]){this.multipleDraggable.toggle_select(this.id);}
if(!MochiKit.DOM.getElement("dragger")){var dragger=new MochiKit.DOM.DIV({"id":"dragger","style":"cursor: move; width:40px; height:40px; background-color: #F5F5F5; border: 1px dashed #808080; position: absolute;"}," ");if(this.multipleDraggable.append_to){if(MochiKit.DOM.getElement(this.multipleDraggable.append_to)){MochiKit.DOM.getElement(this.multipleDraggable.append_to).appendChild(dragger);}}else{document.body.appendChild(dragger);}
new MochiKit.DragAndDrop.Draggable("dragger",{"scroll":true});MochiKit.DOM.getElement("dragger")._selected=MochiKit.Base.serializeJSON(this.multipleDraggable.selected);}
var pos=MochiKit.Position.cumulativeOffset(MochiKit.DOM.getElement("dragger"));var dim=MochiKit.Style.getElementDimensions("dragger");var scroll=Basis.scroll_coords();var clientX=pos.x+(dim.w/2);var clientY=pos.y+(dim.h/2)-scroll.y;if(document.createEventObject){var event=document.createEventObject();event.clientX=clientX;event.clientY=clientY;event.button=1;MochiKit.DOM.getElement("dragger").fireEvent("onmousedown",event);MochiKit.DOM.getElement("dragger").focus();}else if(document.createEvent){var event=document.createEvent("MouseEvents");event.initMouseEvent("mousedown",1,1,window,1,0,0,clientX,clientY,0,0,0,0,0,MochiKit.DOM.getElement("dragger"));MochiKit.Signal.signal("dragger","onmousedown",event);MochiKit.DOM.getElement("dragger").focus();}}},element),this.commit);}
Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(this.multipleDraggable&&!this.multipleDraggable.selected[this.id]){this.style.backgroundColor="#E8EDF9";}},element),this.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){this.style.backgroundColor="";},element),this.commit);}}},clear_selected:function(){for(var i in this.selected){this.toggle_select(i);delete this.selected[i];}},on_deselect:function(element){var element=MochiKit.DOM.getElement(element);if(element){MochiKit.Style.setStyle(element.id,{'background-color':''});MochiKit.DOM.removeElementClass(element.id,this.selected_class);MochiKit.DOM.addElementClass(element.id,this.selectable_class);}},on_select:function(element){var element=MochiKit.DOM.getElement(element);if(element){MochiKit.Style.setStyle(element.id,{'background-color':''});MochiKit.DOM.removeElementClass(element.id,this.selectable_class);MochiKit.DOM.addElementClass(element.id,this.selected_class);}},select_all:function(){this.clear_selected();for(var i in this.drags){var obj=MochiKit.DOM.getElement(i);if(obj){this.toggle_select(i);}}},set_up_default_events:function(){if(!this.disable_clickoff){Basis.signal_handler.connect(document.body,"onmousedown.greedy",MochiKit.Base.bind(function(){if(Basis.key_handler.key_state("KEY_CTRL")=="up"){this.clear_selected();}},this),this.commit);}
MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(e){this.start_drag=false;this.dragging=false;Basis.dragging_any_multiple_draggable=false;if(MochiKit.DOM.getElement("dragger")){MochiKit.DOM.removeElement("dragger");MochiKit.DragAndDrop.Draggables.drags=[];}},this));this.default_events_set_up=true;},toggle_select:function(element){var element=MochiKit.DOM.getElement(element);if(element){if(!this.selected[element.id]){this.selected[element.id]=true;this.on_select(element);}else{delete this.selected[element.id];this.on_deselect(element);}}}};Basis._int=function(value){return(!isNaN(parseInt(value))?parseInt(value):0);};Basis._return=function(value){return value;};Basis.add_content_element=function(page_id,replacement_id,type){var type=(type!==null)?type:"";if(page_id&&replacement_id&&confirm("Are you sure you want to add a new content element to this page?")){var to_post={};to_post["page_id"]=page_id;to_post["replacement_id"]=replacement_id;to_post["type"]=type;var as=new Basis.ajax_scaffold;as.alias="add_content_element";as.on_success=function(req){if(req.responseText=="true"){window.location=""+window.location+"";}else{MochiKit.Logging.log("Unable to add content element!");}
window.status="Done";};return as.post({"to_post":to_post});}};Basis.align_element_to_element=function(element,dest,how,offset,animation,duration){var element=MochiKit.DOM.getElement(element);var dest=MochiKit.DOM.getElement(dest);if(element&&dest&&how){var e_disp=element.style.display;var d_disp=dest.style.display;if(e_disp=="none"){element.style.display="";}
if(d_disp=="none"){element.style.display="";}
var e_pos=MochiKit.Style.getElementPosition(element);var e_dim=MochiKit.Style.getElementDimensions(element);var d_pos=MochiKit.Style.getElementPosition(dest);var d_dim=MochiKit.Style.getElementDimensions(dest);var d_anchor={};if(e_pos&&e_dim&&d_pos&&d_dim){switch(how){case"center":var e_center={"x":e_pos.x+Math.floor(e_dim.w/2),"y":e_pos.y+Math.floor(e_dim.h/2)};var d_center={"x":d_pos.x+Math.floor(d_dim.w/2),"y":d_pos.y+Math.floor(d_dim.h/2)};var d_anchor={"x":(d_center.x-(e_center.x-e_pos.x)),"y":(d_center.y-(e_center.y-e_pos.y))};break;case"bottom_to_top":var d_anchor={"x":e_pos.x,"y":e_pos.y+(d_pos.y-e_pos.y-e_dim.h)};break;case"bottom_to_bottom":var d_anchor={"x":e_pos.x,"y":e_pos.y-((e_pos.y+e_dim.h)-(d_pos.y+d_dim.h))};break;case"top_to_bottom":var d_anchor={"x":e_pos.x,"y":e_pos.y+(d_pos.y-e_pos.y+d_dim.h)};break;case"top_to_top":var d_anchor={"x":e_pos.x,"y":e_pos.y-(e_pos.y-d_pos.y)};break;case"left_to_right":var d_anchor={"x":e_pos.x+d_pos.x+d_dim.w,"y":e_pos.y};break;case"left_to_left":var d_anchor={"x":d_pos.x,"y":e_pos.y};break;case"right_to_left":var d_anchor={"x":e_pos.x+(d_pos.x-e_pos.x-e_dim.w),"y":e_pos.y};break;case"right_to_right":var d_anchor={"x":d_pos.x+(d_dim.w-e_dim.w),"y":e_pos.y};break;}
if(offset&&offset.x){d_anchor.x+=offset.x;}
if(offset&&offset.y){d_anchor.y+=offset.y;}
if(!((d_anchor.x==0)&&(d_anchor.y==0))){element.style.position="absolute";if(!animation){MochiKit.Style.setElementPosition(element,d_anchor);}else{if(!duration){duration=0.50;}
MochiKit.Visual.Move(element,{"x":d_anchor.x,"y":d_anchor.y,"duration":duration,"mode":element.style.position});}}}
element.style.display=e_disp;dest.style.display=d_disp;return d_anchor;}};Basis.array_flip=function(arr){temp=new Object();for(var i in arr){temp[arr[i]]=i;}
return temp;};Basis.array_insert=function(arr,index,value){if(arr&&arr.splice){arr.splice(index,0,value);}
return arr;};Basis.array_length=function(element){var x=0;if(element){switch(typeof(element)){case"string":case"number":case"function":case"boolean":case"undefined":return x;break;}
for(var i in element){if(typeof(element[i])!="function"){x++;}}}
return x;};Basis.array_search=function(arr,value){var index=MochiKit.Base.findValue(arr,value);return(index==-1)?null:index;};Basis.array_size=function(arr){return Basis.array_length(arr);};Basis.attach_tooltip=function(element,text,is_html,commit,is_error_message){var is_error_message=(is_error_message==true)?true:false;element.position_tooltip=MochiKit.Base.noop;var element=Basis.get_element(element);if(element&&text){element.tooltip_text=text;element.is_html=(is_html==true)?true:false;Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(Basis.show_tooltips){var tooltip=DIV({"id":"Basis.tooltip","class":"Basis.tooltip"+(is_error_message?".error":""),"style":"white-space: nowrap; z-index: 5000;"},(element.is_html?null:element.tooltip_text));tooltip.signals=tooltip.signals?tooltip.signals:[];if(element.is_html){tooltip.innerHTML=element.tooltip_text;}
element.tooltip=tooltip;var dim=MochiKit.Style.getElementDimensions(tooltip);Basis.set_style(tooltip,{"position":"absolute"});document.body.appendChild(tooltip);Basis.updated_live_dom();}
element.position_tooltip=MochiKit.Base.bind(function(){if(Basis.show_tooltips){var scroll=Basis.scroll_coords();var mouse={"x":Basis.misc_vars.mouse_x,"y":Basis.misc_vars.mouse_y};MochiKit.Style.setElementPosition(this,{"x":(mouse.x+scroll.x+15),"y":(mouse.y+scroll.y+10)});if(BrowserDetect){if((BrowserDetect.browser=="Firefox")&&(BrowserDetect.version>=2)){var pos=MochiKit.Style.getElementPosition(this);var dim=MochiKit.Style.getElementDimensions(this);var viewport=MochiKit.Style.getViewportDimensions();if((pos.x+dim.w)>(viewport.w+scroll.x)){MochiKit.Style.setElementPosition(this,{"x":(mouse.x+scroll.x-dim.w-15),"y":(mouse.y+scroll.y+10)});}}}}},tooltip);Basis.signal_handler.connect(tooltip,"onmouseover",MochiKit.Base.bind(function(){Basis.remove_element(this);},tooltip));this.position_tooltip();},element),commit);Basis.signal_handler.connect(element,"onmousemove",MochiKit.Base.bind(function(){this.position_tooltip();},element),commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){Basis.remove_element(this.tooltip);},element),commit);}};Basis.blank_object=function(){var a={};for(var i in a){if(Basis.is_function(a[i])){delete a[i];}}
return a;};Basis.center_element=function(element,animation,duration){var obj=MochiKit.DOM.getElement(element);if(obj){var screend=MochiKit.Style.getViewportDimensions();var elementd=MochiKit.Style.getElementDimensions(obj);var to_pos=new Object;to_pos.x=((screend.w/2)-(elementd.w/2));to_pos.y=((screend.h/2)-(elementd.h/2));var scroll;scroll=Basis.scroll_coords();to_pos.x+=scroll.x;to_pos.y+=scroll.y;if(to_pos.y<0){to_pos.y=0;}
if(!animation){MochiKit.Style.setElementPosition(obj,to_pos);}else{if(!duration){duration=0.50;}
MochiKit.Visual.Move(obj,{"x":to_pos.x,"y":to_pos.y,"duration":duration,"mode":"absolute"});}}};Basis.clone=function(obj){if(Basis.is_element(obj)){return obj.cloneNode(true);}else{if(obj&&obj.prototype){return MochiKit.Base.clone(obj);}else if(obj&&!obj.prototype){return MochiKit.Base.update({},obj);}}};Basis.connect_unload=function(func){if(Basis.is_function(func)){MochiKit.Signal.connect(window,"onbeforeunload",func);}};Basis.convert_nested_elements_to_tree=function(element,nested_tag,default_expanded,ignore_root,nested_tag_class_name,attach_events,commit){if(!Basis.trees){Basis.trees={};}
var default_expanded=(default_expanded!=null)?default_expanded:false;var ignore_root=(ignore_root!=null)?ignore_root:false;var attach_events=(attach_events!=null)?attach_events:true;var nested_tag=nested_tag?nested_tag:"div";var nested_tag_class_name=nested_tag_class_name?nested_tag_class_name:null;var element=MochiKit.DOM.getElement(element);if(element){var index=(element.id?element.id:Basis.array_length(Basis.trees));Basis.trees[index]={"nodes":{"with_children":[],"without_children":[]}};element.tree=Basis.trees[index];MochiKit.Base.nodeWalk(element,function(node){var parent=node.parentNode;if(parent){var container=MochiKit.DOM.createDOM(nested_tag,{"id":(node.id+"_c")});var children=MochiKit.DOM.getElementsByTagAndClassName(nested_tag,nested_tag_class_name,node);if(!node.nextSibling){var next_sibling=DIV({"style":"display: none;"});parent.appendChild(next_sibling);parent.insertBefore(container,next_sibling);Basis.remove_element(next_sibling);}else{parent.insertBefore(container,node.nextSibling);}
for(var i=0;i<children.length;i++){if(children[i].parentNode==node){container.appendChild(children[i]);}}
node.tree_children=container;container.tree_parent=node;MochiKit.DOM.addElementClass(container,"Basis.file_explorer.container");if(container.nextSibling){MochiKit.DOM.addElementClass(container,"has_remaining_siblings");}
if(container.childNodes.length==0){MochiKit.DOM.addElementClass(container,"invisible");}
if(ignore_root&&(node==element)){var placeholder=TD();var new_node=TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},IMG({"src":"images/images/spacer.gif","width":"18","height":"18"})),placeholder)));}else{if(!default_expanded){var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";}else{var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));}
var image=IMG({"src":image_src,"id":(node.id+"_toggle"),"class":"Basis.convert_nested_elements_to_tree.toggle","style":((container.childNodes.length==0)?"":"cursor: pointer;")});image.open=default_expanded;if(container.childNodes.length>0){element.tree["nodes"]["with_children"].push(image);if(attach_events){Basis.signal_handler.connect(image,{"onclick":[MochiKit.Base.bind(function(){var container=MochiKit.DOM.getElement((this.id.substring(0,(this.id.length-("_toggle").length))+"_c"));if(container){if(this.open){var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";this.src=image_src;this.open=false;}else{var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));container.style.display="";this.src=image_src;this.open=true;}}},image)]},null,commit);}}else{element.tree["nodes"]["without_children"].push(image);}
var placeholder=TD();var branch_image=TD({"width":"18","style":"vertical-align: top;"},image);var new_node=TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,branch_image,placeholder)));if(container.nextSibling){}}
if(node.nextSibling){node.parentNode.insertBefore(new_node,node.nextSibling);}else{node.parentNode.appendChild(new_node);}
placeholder.appendChild(node);var blank_container=SPAN({"id":node.id+"_wrapper","style":"display: block; position: static;","class":"Basis.file_explorer.node_container"});new_node.parentNode.insertBefore(blank_container,new_node);blank_container.appendChild(new_node);blank_container.appendChild(container);return container.childNodes;}});}};Basis.decode64=function(input){if(!input){return"";}
var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};Basis.decode_html_entities=function(string){if(string){var htmlentities={"nbsp":160,"iexcl":161,"cent":162,"pound":163,"curren":164,"yen":165,"brvbar":166,"sect":167,"uml":168,"copy":169,"ordf":170,"laquo":171,"not":172,"shy":173,"reg":174,"macr":175,"deg":176,"plusmn":177,"sup2":178,"sup3":179,"acute":180,"micro":181,"para":182,"middot":183,"cedil":184,"sup1":185,"ordm":186,"raquo":187,"frac14":188,"frac12":189,"frac34":190,"iquest":191,"Agrave":192,"Aacute":193,"Acirc":194,"Atilde":195,"Auml":196,"Aring":197,"AElig":198,"Ccedil":199,"Egrave":200,"Eacute":201,"Ecirc":202,"Euml":203,"Igrave":204,"Iacute":205,"Icirc":206,"Iuml":207,"ETH":208,"Ntilde":209,"Ograve":210,"Oacute":211,"Ocirc":212,"Otilde":213,"Ouml":214,"times":215,"Oslash":216,"Ugrave":217,"Uacute":218,"Ucirc":219,"Uuml":220,"Yacute":221,"THORN":222,"szlig":223,"agrave":224,"aacute":225,"acirc":226,"atilde":227,"auml":228,"aring":229,"aelig":230,"ccedil":231,"egrave":232,"eacute":233,"ecirc":234,"euml":235,"igrave":236,"iacute":237,"icirc":238,"iuml":239,"eth":240,"ntilde":241,"ograve":242,"oacute":243,"ocirc":244,"otilde":245,"ouml":246,"divide":247,"oslash":248,"ugrave":249,"uacute":250,"ucirc":251,"uuml":252,"yacute":253,"thorn":254,"yuml":255,"fnof":402,"Alpha":913,"Beta":914,"Gamma":915,"Delta":916,"Epsilon":917,"Zeta":918,"Eta":919,"Theta":920,"Iota":921,"Kappa":922,"Lambda":923,"Mu":924,"Nu":925,"Xi":926,"Omicron":927,"Pi":928,"Rho":929,"Sigma":931,"Tau":932,"Upsilon":933,"Phi":934,"Chi":935,"Psi":936,"Omega":937,"alpha":945,"beta":946,"gamma":947,"delta":948,"epsilon":949,"zeta":950,"eta":951,"theta":952,"iota":953,"kappa":954,"lambda":955,"mu":956,"nu":957,"xi":958,"omicron":959,"pi":960,"rho":961,"sigmaf":962,"sigma":963,"tau":964,"upsilon":965,"phi":966,"chi":967,"psi":968,"omega":969,"thetasym":977,"upsih":978,"piv":982,"bull":8226,"hellip":8230,"prime":8242,"Prime":8243,"oline":8254,"frasl":8260,"weierp":8472,"image":8465,"real":8476,"trade":8482,"alefsym":8501,"larr":8592,"uarr":8593,"rarr":8594,"darr":8595,"harr":8596,"crarr":8629,"lArr":8656,"uArr":8657,"rArr":8658,"dArr":8659,"hArr":8660,"forall":8704,"part":8706,"exist":8707,"empty":8709,"nabla":8711,"isin":8712,"notin":8713,"ni":8715,"prod":8719,"sum":8721,"minus":8722,"lowast":8727,"radic":8730,"prop":8733,"infin":8734,"ang":8736,"and":8743,"or":8744,"cap":8745,"cup":8746,"int":8747,"there4":8756,"sim":8764,"cong":8773,"asymp":8776,"ne":8800,"equiv":8801,"le":8804,"ge":8805,"sub":8834,"sup":8835,"nsub":8836,"sube":8838,"supe":8839,"oplus":8853,"otimes":8855,"perp":8869,"sdot":8901,"lceil":8968,"rceil":8969,"lfloor":8970,"rfloor":8971,"lang":9001,"rang":9002,"loz":9674,"spades":9824,"clubs":9827,"hearts":9829,"diams":9830,"quot":34,"amp":38,"lt":60,"gt":62,"OElig":338,"oelig":339,"Scaron":352,"scaron":353,"Yuml":376,"circ":710,"tilde":732,"ensp":8194,"emsp":8195,"thinsp":8201,"zwnj":8204,"zwj":8205,"lrm":8206,"rlm":8207,"ndash":8211,"mdash":8212,"lsquo":8216,"rsquo":8217,"sbquo":8218,"ldquo":8220,"rdquo":8221,"bdquo":8222,"dagger":8224,"Dagger":8225,"permil":8240,"lsaquo":8249,"rsaquo":8250,"euro":8364};var return_string=string;for(var i in htmlentities){return_string=return_string.replace(new RegExp(("&"+i+";"),"gi"),String.fromCharCode(htmlentities[i]));}}
return return_string;};Basis.delete_content_element=function(content_element_id){if(content_element_id&&confirm("Are you sure you want to delete this content element?")){var to_post={};to_post["content_element_id"]=content_element_id;var as=new Basis.ajax_scaffold;as.alias="delete_content_element";as.on_success=function(req){if(req.responseText=="true"){Basis.remove_element(getElement("ce_"+content_element_id).parentNode);}else{MochiKit.Logging.log("Unable to delete content element #"+content_element_id);}};return as.post({"to_post":to_post});}};Basis.encode64=function(input){if(!input){return"";}
var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+
keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;}
Basis.execute_javascript=function(element){var element=MochiKit.DOM.getElement(element);if(element){var st=element.getElementsByTagName("SCRIPT");var string_to_execute;for(var i=0;i<st.length;i++){string_to_execute=st[i].innerHTML;try{eval(string_to_execute.split("<!--").join("").split("-->").join(""));}catch(e){MochiKit.Logging.log(e);}}}};Basis.filter_number=function(value){if(value!=null){if(value==0){return 0;}
var unpad=value.toString().replace(/(^[0]+)/,"");var unpad=unpad.toString().replace(/([^0-9\.]+)/,"");var retval=(unpad.match(/\./g)?parseFloat(unpad):parseInt(unpad));return(!isNaN(retval))?retval:null;}
return null;};Basis.find_key=function(list,value){if(list&&(Basis.array_length(list)>0)){for(var i in list){if(typeof(list[i])!="function"){if(list[i]==value){return i;}}}}
return false;};Basis.format_filesize=function(size){var size=Basis.parse_number(size);var type="bytes";var string="";if(size){if((size>0)&&(size<1024)){type="bytes";size=(size).toFixed(0);}else if((size>=1024)&&(size<(1024*1024))){type="kilobytes";size=(size/1024).toFixed(2);}else if((size>=(1024*1024))&&(size<(1024*1024*1024))){type="megabytes";size=(size/(1024*1024)).toFixed(2);}else if((size>=(1024*1024*1024))&&(size<(1024*1024*1024*1024))){type="gigabytes";size=(size/(1024*1024*1024)).toFixed(2);}
size=numberFormatter("###,###.##")(size);switch(type){case"bytes":string=size+" bytes";break;case"kilobytes":string=size+" KB";break;case"megabytes":string=size+" MB";break;case"gigabytes":string=size+" GB";break;}
return string;}};Basis.get_child_elements_by_tag=function(element,tag){var element=MochiKit.DOM.getElement(element);var tag=tag.toUpperCase();var children=[];if(element&&tag){for(var y in element.childNodes){if(element.childNodes[y]&&element.childNodes[y].tagName&&(element.childNodes[y].tagName.toUpperCase()==tag)){children[children.length]=element.childNodes[y];}}}
return children;};Basis.get_cookie=function(cookie_name){if(document.cookie.length>0){var c_start=document.cookie.indexOf(cookie_name+"=");if(c_start!=-1){c_start=c_start+cookie_name.length+1;var c_end=document.cookie.indexOf(";",c_start)
if(c_end==-1){c_end=document.cookie.length;}
return unescape(document.cookie.substring(c_start,c_end));}}
return"";};Basis.get_css=function(selector){if(selector&&document.styleSheets){for(var i=(document.styleSheets.length-1);i>=0;i--){if(document.styleSheets[i]&&document.styleSheets[i].href&&(document.styleSheets[i].href.indexOf("http://")!=-1)&&(document.styleSheets[i].href.split("http://")[1].split("/")[0]!=window.location.href.split("http://")[1].split("/")[0])){continue;}
var list=document.styleSheets[i].cssRules?document.styleSheets[i].cssRules:document.styleSheets[i].rules;if(list){for(var x=0;x<list.length;x++){if(list[x].selectorText&&(list[x].selectorText.toLowerCase()==selector.replace(/ /g,"").toLowerCase())){var text=list[x].style.cssText;var rgbs=text.match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/g);if(rgbs&&(rgbs.length>0)){for(var y=0;y<rgbs.length;y++){var temp=rgbs[y].match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/);if(temp.length==4){text=text.replace(rgbs[y],("#"+((parseInt(temp[1]).toString(16).length==1)?("0"+parseInt(temp[1]).toString(16)):parseInt(temp[1]).toString(16))+
((parseInt(temp[2]).toString(16).length==1)?("0"+parseInt(temp[2]).toString(16)):parseInt(temp[2]).toString(16))+
((parseInt(temp[3]).toString(16).length==1)?("0"+parseInt(temp[3]).toString(16)):parseInt(temp[3]).toString(16))+";"));}}}
return text.toLowerCase();}}}}}
return null;}
Basis.get_direct_child_elements_by_tag_and_class_name=function(tag_name,class_name,parent){var tag_name=tag_name?tag_name:null;var class_name=class_name?class_name:null;var parent=MochiKit.DOM.getElement(parent)?MochiKit.DOM.getElement(parent):document;var children=[];if((tag_name||class_name)&&parent){var potential_children=MochiKit.DOM.getElementsByTagAndClassName(tag_name,class_name,parent);if(potential_children.length>0){for(var i=0;i<potential_children.length;i++){if(potential_children[i].parentNode&&(potential_children[i].parentNode==parent)){children.push(potential_children[i]);}}}}
return children;};Basis.get_element=function(element){return Basis.is_element(element)?element:MochiKit.DOM.getElement(element);};Basis.get_element_dimensions=function(element){var element=MochiKit.DOM.getElement(element);var dim={"x":0,"y":0};if(element){MochiKit.DOM.makePositioned(element);var dim=MochiKit.Style.getElementDimensions(element);MochiKit.DOM.undoPositioned(element);}
return dim;};Basis.get_style=function(element,style){var got="";var element=MochiKit.DOM.getElement(element);if(element&&style){got=MochiKit.Style.getStyle(element,style);}
return(got?got:"");};Basis.hide_all_object_elements=function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("object");if(objs.length>0){for(x=0;x<objs.length;x++){var pnode=objs[x].parentNode;if(pnode){var dims=MochiKit.Style.getElementDimensions(pnode);pnode.style.width=dims.w;pnode.style.height=dims.h;}
objs[x].style.display="none";}
return true;}
return false;};Basis.idle_timeout=function(duration,sid,url){if(duration&&sid&&url){Basis.misc_vars["keepalive_timeout"]=MochiKit.Async.callLater(duration,function(){Basis.misc_vars.timeout_popup=Basis.popup({"id":"timeout_popup","window_title":"You are idle","html":'\
\
          <div>You have been idle for too long! Do you want to remain logged in?</div>\
          <div align="right" style="padding-top: 10px;">\
            <input type="button" value="Yes" id="timeout_popup_yes">\
            <input type="button" value="No" id="timeout_popup_no">\
          </div>\
          <script>\
\
            MochiKit.Signal.connect("timeout_popup_yes","onclick",function () {\
\
              new Basis.keep_alive({"sid"       : "'+sid+'",\
                                    "url"       : "'+url+'",\
                                    "propagate" : false,\
                                    "duration"  : 1});\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
              Basis.idle_timeout('+duration+',"'+sid+'","'+url+'");\
\
            });\
\
            MochiKit.Signal.connect("timeout_popup_no","onclick",function () {\
\
              var url = ""+window.location+"";\
\
              if (url.indexOf("?") == -1) {\
\
                window.location = (url + "?logout=true");\
\
              } else {\
\
                window.location = (url + "&logout=true");\
\
              }\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
            });\
\
          </script>'});Basis.misc_vars["final_timeout"]=MochiKit.Async.callLater(30,function(){var url=""+window.location+"";if(url.indexOf("?")==-1){window.location=(url+"?logout=true");}else{window.location=(url+"&logout=true");}});});}};Basis.image_rotator=function(element,array,options){var options=options?options:{};var d=MochiKit.DOM.currentDocument();if(d.images){if(!d.preloaded_images){d.preloaded_images=new Object();}
if(!d.preloaded_images["rotate"]){d.preloaded_images["rotate"]=new Array();}
var fade=options["fade"]?true:false;var duration=options["duration"]?options["duration"]:2000;var index=d.preloaded_images["rotate"].length;var obj=MochiKit.DOM.getElement(element);d.preloaded_images["rotate"][index]=new Array();d.preloaded_images["rotate"][index][0]=element;if(obj){if(fade){var image_dimensions=MochiKit.Style.getElementDimensions(obj);var layer_a=DIV({"style":"position: absolute; top: 0px; left: 0px; display: none;"});var layer_b=DIV({"style":"position: absolute; top: 0px; left: 0px; display: none;"});var container=DIV({"style":"overflow: hidden; position: relative;"});var obj_b=IMG({"src":obj.src});MochiKit.Style.setElementDimensions(container,image_dimensions);MochiKit.Style.setElementDimensions(layer_a,image_dimensions);MochiKit.Style.setElementDimensions(layer_b,image_dimensions);MochiKit.Style.setOpacity(layer_a,100);MochiKit.Style.setOpacity(layer_b,0);obj.parentNode.insertBefore(container,obj);layer_a.appendChild(obj);layer_b.appendChild(obj_b);container.appendChild(layer_a);container.appendChild(layer_b);layer_a.style.display="";layer_b.style.display="";}
for(var i in array){var idx=d.preloaded_images["rotate"][index].length;d.preloaded_images["rotate"][index][idx]=new Image();d.preloaded_images["rotate"][index][idx].src=array[i];}
if(fade){obj.rotate=MochiKit.Base.bind(function(index,idx){var d=MochiKit.DOM.currentDocument();var current_image=(this.layer_a.style.display=="none")?this.image_b:this.image_a;var swap_to_image=(current_image==this.image_a)?this.image_b:this.image_a;if(d.preloaded_images["rotate"][index][idx]&&d.preloaded_images["rotate"][index][idx].src){swap_to_image.src=d.preloaded_images["rotate"][index][idx].src;MochiKit.Visual.fade(current_image.parentNode,0,{"duration":0.50,"afterFinish":MochiKit.Base.bind(function(){this.style.display="none";},current_image)});MochiKit.Visual.appear(swap_to_image.parentNode,100,{"duration":0.50,"afterFinish":MochiKit.Base.bind(function(){this.style.display="";},swap_to_image)});}
var max=d.preloaded_images["rotate"][index].length;if(idx==(max-1)){var nidx=1;}else{var nidx=idx+1;}
setTimeout(("MochiKit.DOM.getElement('"+this.element.id+"').rotate("+index+","+nidx+");"),duration);},{"element":obj,"layer_a":layer_a,"layer_b":layer_b,"image_a":obj,"image_b":obj_b});}else{obj.rotate=function(index,idx){var element=MochiKit.DOM.getElement(d.preloaded_images["rotate"][index][0]);if(element){if(d.preloaded_images["rotate"][index][idx]&&d.preloaded_images["rotate"][index][idx].src){element.src=d.preloaded_images["rotate"][index][idx].src;}
var max=d.preloaded_images["rotate"][index].length;if(idx==(max-1)){var nidx=1;}else{var nidx=idx+1;}
setTimeout(("MochiKit.DOM.getElement('"+element.id+"').rotate("+index+","+nidx+");"),duration);}};}
if(d.preloaded_images["rotate"][index].length>1){obj.rotate(index,1);}
return container;}}};Basis.is_element=function(element){return(element&&(typeof(element)=="object")&&element.tagName)?true:false;};Basis.is_formfield=function(element){var retval=false;var element=MochiKit.DOM.getElement(element);if(element&&element.tagName){switch(element.tagName.toUpperCase()){case"INPUT":case"SELECT":case"TEXTAREA":retval=true;break;}}
return retval;};Basis.is_function=function(variable){return(typeof(variable)=="function")?true:false;};Basis.is_mouse_leave_or_enter=function(e,handler){var related_target=e.relatedTarget?e.relatedTarget:((e.type=="mouseout")?e.toElement:e.fromElement);while(related_target&&(related_target!=handler)){related_target=related_target.parentNode;}
return(related_target!=handler);};Basis.is_number=function(value){if(value&&value.match&&(value.match(/([^0-9\.])/g)!=null)){return false;}
return(Basis.parse_number(value)!=null)?true:false;};Basis.is_visible=function(element){return!MochiKit.DOM.hasElementClass(element,"invisible");};Basis.keys=function(root,recursive){if(root){var recursive=recursive?true:false;var keys=[];for(var i in root){if(typeof(root[i])!="function"){keys.push(i);if(recursive){var tkeys=Basis.keys(root[i],recursive);keys=flattenArray([keys,tkeys]);}}}
return keys;}}
Basis.ksort=function(arr){var sorted_array={};var temp_sorted={};var temp_array=[];var x=0;this.pad=function(count,chr){var count=(parseInt(count)>0)?parseInt(count):0;var retval="";if(chr){for(var x=0;x<count;x++){retval+=chr;}}
return retval;};for(i in arr){var key=(!i.toString().match(/[^0-9]/g))?(this.pad((10-parseInt(i).toString().length),"0")+parseInt(i).toString()):i;switch(typeof(arr[i])){case"function":break;case"array":case"object":temp_sorted[key]=Basis.is_element(arr[i])?arr[i]:Basis.ksort(arr[i]);temp_array[x++]=key+"|Basis.ksort.temp_sorted";break;default:temp_array[x++]=key+"|"+arr[i];break;}}
temp_array=temp_array.sort();for(var i in temp_array){switch(typeof(temp_array[i])){case"function":case"array":case"object":break;default:var x=temp_array[i].split("|");if(x[1]=="Basis.ksort.temp_sorted"){sorted_array[x[0]]=temp_sorted[x[0]];}else{sorted_array[x[0]]=x[1];}
break;}}
return sorted_array;};Basis.load_external_javascript=function(url){if(url){var script=MochiKit.DOM.createDOM("script");script.src=url;script.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(script);}};Basis.load_rollover_images=function(array){var d=MochiKit.DOM.currentDocument();if(d.images){if(!d.preloaded_images){d.preloaded_images=new Object();}
for(var i in array){if(array[i]["id"]&&MochiKit.DOM.getElement(array[i]["id"])){d.preloaded_images[array[i]["id"]]=new Object();d.preloaded_images[array[i]["id"]].off=new Image();d.preloaded_images[array[i]["id"]].off.src=array[i]["off"];d.preloaded_images[array[i]["id"]].on=new Image();d.preloaded_images[array[i]["id"]].on.src=array[i]["on"];var obj=MochiKit.DOM.getElement(array[i]["id"]);if(obj){obj.swap=function(toggle){if((this.src==d.preloaded_images[this.id].off.src)||(toggle=="on")){this.src=d.preloaded_images[this.id].on.src;}else{this.src=d.preloaded_images[this.id].off.src;}}
if(!array[i]["noswap"]&&(array[i]["link_image"]!=false)){MochiKit.Signal.connect(obj,"onmouseover",function(){this.swap("on");});MochiKit.Signal.connect(obj,"onmouseout",function(){this.swap("off");});}}
if(array[i]["ids"]){for(var x in array[i]["ids"]){var eobj=MochiKit.DOM.getElement(array[i]["ids"][x]);if(eobj){MochiKit.Signal.connect(eobj,"onmouseover",obj,function(){this.swap("on");});MochiKit.Signal.connect(eobj,"onmouseout",obj,function(){this.swap("off");});}}}}}}};Basis.make_invisible=function(element){MochiKit.DOM.addElementClass(element,"invisible");};Basis.make_text_element_dropdown=function(element,dropdown_options,scaffold_options){var element=MochiKit.DOM.getElement(element);if(element){element.value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editing=false;element.signals=[];element.clear_signals=MochiKit.Base.bind(function(){if(this.signals){for(var i=0;i<this.signals.length;i++){MochiKit.Signal.disconnect(this.signals[i]);}}
if(this.shadow&&this.shadow.signals){for(var i=0;i<this.shadow.signals.length;i++){MochiKit.Signal.disconnect(this.shadow.signals[i]);}}},element);if(!Basis.is_formfield(element)){element.make_dropdown=MochiKit.Base.bind(function(){if(!this.editing){this.editing=true;var select=SELECT({"id":(this.id+"_select"),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});Basis.select_add_options(select,dropdown_options);Basis.select_select_item_by_text(select,this.value);var dim=Basis.get_element_dimensions(this);select.signals=[];this.font_multiplier=(dim.w/this.value.length);Basis.set_style(select,{"width":Math.floor(this.font_multiplier*this.value.length)+30,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});select.shadow=this;this.shadow=select;MochiKit.DOM.swapDOM(this,select);select.save_editable_dropdown_changes=MochiKit.Base.bind(function(){window.status="Saving...";if(this.options[this.selectedIndex].text==this.shadow.value){this.cancel_save_editable_dropdown_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(scaffold_options["is_time"]||scaffold_options["is_date"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;case"year":var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"month":var year=Basis.get_element(base+"_year_"+rrv);var month_val=(this.options[this.selectedIndex].value.length==1)?("0"+this.options[this.selectedIndex].value):this.options[this.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"day":var year=Basis.get_element(base+"_year_"+rrv);var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+this.options[this.selectedIndex].text;break;}}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.select=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){this.select.shadow.innerHTML=this.select.options[this.select.selectedIndex].text;this.select.shadow.value=this.select.options[this.select.selectedIndex].text;MochiKit.DOM.swapDOM(this.select,this.select.shadow);}else{this.select.cancel_save_editable_dropdown_changes();}
this.select.shadow.clear_signals();this.select.shadow.editing=false;window.status="Done";};as.post({"to_post":to_post});}},select);select.cancel_save_editable_dropdown_changes=MochiKit.Base.bind(function(){if(this.shadow.editing){MochiKit.Logging.log(this.id+".cancel_save_editable_dropdown_changes()");this.shadow.clear_signals();MochiKit.DOM.swapDOM(this,this.shadow);this.shadow.editing=false;}},select);select.signals.push(MochiKit.Signal.connect(select,"onblur",MochiKit.Base.bind(function(){if(this.shadow.editing){MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},select)));this.signals.push(MochiKit.Signal.connect(document,"onclick",MochiKit.Base.bind(function(e){MochiKit.Logging.log("document.onclick()");if(e.target()&&(e.target()!=this)&&(e.target()!=this.shadow)){MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},select)));select.signals.push(MochiKit.Signal.connect(select,"onkeydown",MochiKit.Base.bind(function(e){var key=e.key();if(key.code==13){MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}else if(key.code==27){MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_dropdown_changes()!");this.cancel_save_editable_dropdown_changes();}},select)));select.focus();}},element);element.onmouseleave=MochiKit.Base.bind(function(){if(!this.editing){var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.make_dropdown.highlight");this.appendChild(restore_text);var dim=Basis.get_element_dimensions(this);MochiKit.Style.setElementDimensions(this,dim);this.clear_signals();}}},element);MochiKit.Signal.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editing){this.onmouseleave();var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","style":"cursor: pointer;","class":"Basis.make_dropdown.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},this.firstChild),TD({"style":"padding-left: 5px;"},pencil_image))));this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){this.onmouseleave();this.make_dropdown();},this);this.signals.push(MochiKit.Signal.connect(pencil_image,"onclick",edit));this.signals.push(MochiKit.Signal.connect(pencil,"ondblclick",edit));}},element));MochiKit.Signal.connect(element,"onmouseleave",element.onmouseleave);}else{element.original_value=element.value;element.save_editable_dropdown_changes=MochiKit.Base.bind(function(){window.status="Saving...";var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(scaffold_options["is_time"]||scaffold_options["is_date"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;case"year":var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"month":var year=Basis.get_element(base+"_year_"+rrv);var month_val=(this.options[this.selectedIndex].value.length==1)?("0"+this.options[this.selectedIndex].value):this.options[this.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"day":var year=Basis.get_element(base+"_year_"+rrv);var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+this.options[this.selectedIndex].text;break;}}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.element=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){as.element.original_value=as.element.value;}
window.status="Done";};as.post({"to_post":to_post});},element);element.signals.push(MochiKit.Signal.connect(element,"onblur",MochiKit.Base.bind(function(){if(element.value!=element.original_value){MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},element)));element.signals.push(MochiKit.Signal.connect(document,"onclick",MochiKit.Base.bind(function(e){if(element.value!=element.original_value){if(e.target()&&(e.target()!=this)){MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}}},element)));element.signals.push(MochiKit.Signal.connect(element,"onkeydown",MochiKit.Base.bind(function(e){var key=e.key();if(key.code==13){if(element.value!=element.original_value){MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}}},element)));}}};Basis.force_make_text_element_editable_save=function(element,scaffold_options){var save_editable_element_changes=MochiKit.Base.bind(function(){window.status="Saving...";var to_post=new Object();to_post["to"]=scaffold_options["to"]?scaffold_options["to"]:this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(!to_post["to"]){delete to_post["to"];}
if(!to_post["resource_id"]){delete to_post["resource_id"];}
if(!to_post["database"]){delete to_post["database"];}
if(!to_post["table"]){delete to_post["table"];}
if(!to_post["row_id"]){delete to_post["row_id"];}
if(!to_post["field"]){delete to_post["field"];}
if(!to_post["custom_action"]){delete to_post["custom_action"];}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";as.on_success=function(req){window.status="Done";};as.post({"to_post":to_post});},element);save_editable_element_changes();};Basis.make_text_element_editable=function(element,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=MochiKit.DOM.getElement(element);if(element){element.editable_element={};element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.set_up_interaction=MochiKit.Base.bind(function(){var input=this.editable_element.shadow;if(input){Basis.signal_handler.connect(input,"onclick.greedy.swallow",function(){},this.editable_element.commit);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",MochiKit.Base.bind(function(){this.editable_element.cancel_save_editable_element_changes();},input));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",MochiKit.Base.bind(function(){this.editable_element.save_editable_element_changes();},input));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",MochiKit.Base.bind(function(e){this.editable_element.save_editable_element_changes();},input),this.editable_element.commit);Basis.state_handler.enter_state("Basis.make_text_element_editable");input.editable_element.save_editable_element_changes=MochiKit.Base.bind(function(){window.status="Saving...";if(this.value==this.editable_element.shadow.editable_element.value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(!to_post["to"]){delete to_post["to"];}
if(!to_post["resource_id"]){delete to_post["resource_id"];}
if(!to_post["database"]){delete to_post["database"];}
if(!to_post["table"]){delete to_post["table"];}
if(!to_post["row_id"]){delete to_post["row_id"];}
if(!to_post["field"]){delete to_post["field"];}
if(!to_post["custom_action"]){delete to_post["custom_action"];}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.input=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(this.input.editable_element.shadow.editable_element.is_password){this.input.editable_element.shadow.innerHTML=this.input.editable_element.shadow.editable_element.value;}else{this.input.editable_element.shadow.innerHTML=this.input.value;this.input.editable_element.shadow.editable_element.value=this.input.value;}
this.input.editable_element.cancel_save_editable_element_changes();}else{this.input.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}},input);input.editable_element.cancel_save_editable_element_changes=MochiKit.Base.bind(function(){if(this.editable_element.shadow.editable_element.editing){MochiKit.DOM.swapDOM(this,this.editable_element.shadow);this.editable_element.shadow.editable_element.editing=false;Basis.state_handler.revert();Basis.updated_live_dom();}},input);input.focus();input.select();}},element);if(!Basis.is_formfield(element)){element.editable_element.editing=false;element.editable_element.value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)){Basis.make_text_element_editable.currently_editing.editable_element.shadow.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=element;var input=INPUT({"id":(this.id+"_input"),"type":(this.editable_element.is_password?"password":"text"),"value":(this.editable_element.is_password?"":this.editable_element.value),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});input.editable_element={};var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.value.length)+15,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});input.editable_element.shadow=this;this.editable_element.shadow=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
MochiKit.DOM.swapDOM(this,input);this.editable_element.set_up_interaction();}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing){var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","style":"cursor: pointer;","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing){var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}else{element.editable_element.editing=true;element.editable_element.set_up_interaction();}}};Basis.make_visible=function(element){MochiKit.DOM.removeElementClass(element,"invisible");};Basis.mouse_coords=function(e){var posx=0;var posy=0;if(!e){var e=window.event;}
if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY;}else if(e.clientX||e.clientY){posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}
return{"x":posx,"y":posy};};Basis.parse_number=function(value){if(value!=null){if(value===0){return 0;}
if(value&&(value.toString().replace(/([^0]+)/,"")==value.toString())){return 0;}
var unpad=value.toString().replace(/(^[0]+)/,"");if(unpad.length==0){return null;}
var retval=(unpad.match(/\./g)?parseFloat(unpad):parseInt(unpad));return(!isNaN(retval))?retval:null;}
return null;};Basis.pluralize=function(input){if(input){if(input.substring(input.length-1)=="y"){var ch=input.substring(input.length-2);switch(ch){case"a":case"e":case"i":case"o":case"u":input+="s";break;default:input=input.substring(0,(input.length-1))+"ies";break;}}else if((input.substring(input.length-2)=="ss")||(input.substring(input.length-2)=="ch")){input+="es";}else if(input.substring(input.length-1)!="s"){input+="s";}
return input;}};Basis.popup=function(options){if(options&&options["id"]&&options["html"]){if(!options["window_title"]){options["window_title"]="&nbsp;";}
if(options["center_element"]==null){options["center_element"]=true;}
var obj=MochiKit.DOM.getElement(options["id"]);if(!obj){var popup=new MochiKit.DOM.DIV({"id":options["id"],"class":"Basis.popup.container","style":"display: none; position: absolute; "+options["style"]},null);document.body.appendChild(popup);}
var obj=MochiKit.DOM.getElement(options["id"]);if(obj){if(!Basis.misc_vars.popups){Basis.misc_vars.popups=new Array;}
obj.pindex=Basis.misc_vars.popups.length;Basis.misc_vars.popups[obj.pindex]=obj;if(!options["bare"]){obj.innerHTML="<table><tr><td><div id=\""+obj.id+"_handle\" style=\"cursor: move; background-color: #F3F8FF; font-weight: bold;\">"+options["window_title"]+"</td><td align=\"right\" style=\"\"><img id=\""+obj.id+"_img\" src=\"images/images/x_off.gif\" style=\"cursor: pointer;\" onclick=\"var element = MochiKit.DOM.getElement('"+obj.id+"'); if (element && element.close) { element.close(); }\"></div></td></tr><tr><td id=\""+obj.id+"_html_container\">"+options["html"]+"</td></tr></table><script>Basis.load_rollover_images({0:{\"id\":\""+obj.id+"_img\",\"off\":\"images/images/x_off.gif\",\"on\":\"images/images/x_on.gif\"}});</script>";}else{obj.innerHTML="<div id=\""+obj.id+"_html_container\">"+options["html"]+"</div>";}
new MochiKit.DragAndDrop.Draggable(obj.id,{"handle":(obj.id+"_handle"),"starteffect":MochiKit.Base.noop,"endeffect":MochiKit.Base.noop});for(var i in Draggables.drags){if(Draggables.drags[i]&&Draggables.drags[i].element&&Draggables.drags[i].element.id&&(Draggables.drags[i].element.id==obj.id)){var date=new Date();Draggables.drags[i].element.timestamp=date.getTime();}}
obj.sort_popups=MochiKit.Base.bind(function(){var date=new Date();this.timestamp=date.getTime();var order=new Array;for(var i in Draggables.drags){if(Draggables.drags[i]&&Draggables.drags[i].element&&Draggables.drags[i].element.id&&Draggables.drags[i].element.timestamp){order[order.length]=Draggables.drags[i].element.timestamp+":"+i;}}
order.sort(Basis.sort_function);var start_z=1000;for(var i=0;i<order.length;i++){el=order[i].split(":");if(Draggables.drags[el[1]].element.style.zIndex<start_z){start_z=Draggables.drags[el[1]].element.style.zIndex;}}
for(var i=0;i<order.length;i++){el=order[i].split(":");Draggables.drags[el[1]].originalZ=start_z;Draggables.drags[el[1]].element.style.zIndex=start_z;start_z++;}},obj);obj.sort_popups();MochiKit.Signal.connect(obj.id,"onmousedown",obj.sort_popups);if(!options["bare"]){MochiKit.Signal.connect((obj.id+"_handle"),"onmousedown",obj.sort_popups);}
obj.close=MochiKit.Base.bind(function(){MochiKit.Signal.disconnectAll(this);delete Basis.misc_vars.popups[this.pindex];Basis.remove_element(this.id);},obj);Basis.execute_javascript(obj);if(options["center_element"]){Basis.center_element(obj);}
if(options["move_to"]&&options["move_to"].x&&options["move_to"].y){MochiKit.Style.setElementPosition(obj,options["move_to"]);}
obj.style.display=(obj.style.display=="none")?"inline":"none";var html_container=MochiKit.DOM.getElement(obj.id+"_html_container");var window_title=MochiKit.DOM.getElement(obj.id+"_handle");if(html_container&&window_title){return{"html_container":html_container,"window_title":window_title,"reference":obj.pindex};}}}}
Basis.post_throw=function(url,token,options){if(url&&token&&options){var data=[];options["throw_verify"]=hex_md5(Basis.get_cookie("PHPSESSID"));options["throw_vars"]=Basis.encode64("a:1:{i:0;s:"+token.length+':"'+token+'";}');for(var i in options){if(!Basis.is_function(options[i])){data.push(INPUT({"type":"text","name":i,"value":options[i]}));}}
var form=new FORM({"action":url,"style":"display: none;","method":"POST"},data);document.body.appendChild(form);form.submit();}};Basis.preserve_url=function(options){var options=(options&&(Basis.array_length(options)>0))?options:{};var just_keys=options["just_keys"]?options["just_keys"]:false;var original_url=options["original_url"]?options["original_url"]:null;var keys_add=options["keys_add"]?options["keys_add"]:{};var force_https=options["force_https"]?options["force_https"]:false;var force_http=options["force_http"]?options["force_http"]:false;if(original_url=="clear"){original_url=null;}
var url=original_url?original_url.split("?")[0]:(""+window.location+"").split("?")[0];var split=url.split(":");var protocol=split[0];protocol=(force_http?"http":(force_https?"https":"http"));original_url=original_url?original_url:(""+window.location+"");original_url=original_url.split("?");original_url=original_url[1]?original_url[1]:"";original_url=original_url.split("&");var ourl={};if(original_url.length>0){for(var i in original_url){if(typeof(original_url[i])!="function"){var qitem=original_url[i];var titem=qitem.split("=");if(titem[0]&&titem[1]){ourl[titem[0]]=titem[1];}}}}
for(var i in keys_add){if(typeof(keys_add[i])!="function"){var key=i;var value=keys_add[i];if(value||(value==0)){ourl[key]=value;}else{if(ourl[key]){delete ourl[key];}}}}
original_url=url;if(original_url.substring(original_url.length-1,1)!="?"){original_url+="?";}
keys="";for(var i in ourl){if(typeof(ourl[i])!="function"){var key=i;var value=ourl[i];if(value||(value==0)){keys+=(key+"="+value+"&");}}}
if(just_keys){return keys;}
original_url+=keys;return original_url.substring(0,(original_url.length-1));};Basis.preserve_url_path=function(){var url=Basis.preserve_url().split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url=url.substring(0,url.length-1);return url;};Basis.register_size_constraints=function(element,width,height,aspect,subtract_sibling_heights){var subtract_sibling_heights=(subtract_sibling_heights===false)?false:true;var element=Basis.get_element(element);if(element&&!element.id){element.id=Basis.anonymous_element_id();}
if(element&&element.id){MochiKit.Style.registerSizeConstraints(element,width,height,aspect,subtract_sibling_heights);}};Basis.remove_children=function(element){var element=MochiKit.DOM.getElement(element);if(element){if(element.childNodes){for(var i=0;i<element.childNodes.length;i++){Basis.remove_element(element.childNodes[i]);}}
element.innerHTML="";}};Basis.remove_element=function(element){var garbage_bin=MochiKit.DOM.getElement("IELeakGarbageBin");if(!garbage_bin){var garbage_bin=new MochiKit.DOM.DIV({"id":"IELeakGarbageBin","style":"display: none;"});document.body.appendChild(garbage_bin);}
var element=Basis.get_element(element);if(element&&garbage_bin){MochiKit.Signal.disconnectAll(element);if(element.tooltip){Basis.remove_element(element.tooltip);}
if(element.drag_events){for(var i in element.drag_events){if(typeof(element.drag_events[i])!="function"){MochiKit.Signal.disconnect(element.drag_events[i]);}}}
if(element.signals){for(var i in element.signals){if(typeof(element.signals[i])!="function"){MochiKit.Signal.disconnect(element.signals[i]);}}}
var list_to_remove=[];MochiKit.Base.nodeWalk(element,function(node){list_to_remove.push(node);return node.childNodes;});for(var x=list_to_remove.length;x>0;x--){Basis.remove_element(list_to_remove[x]);}
var list=MochiKit.DragAndDrop.Droppables.drops;for(var i=0;i<list.length;i++){if(list[i].element==element){list[i].destroy();}}
var list=MochiKit.DragAndDrop.Draggables.drags;for(var i=0;i<list.length;i++){if(list[i].element==element){list[i].destroy();}}
garbage_bin.appendChild(element);garbage_bin.innerHTML="";Basis.signal_handler.purge_orphaned_signals();}}
Basis.scroll_coords=function(){var scroll_x,scroll_y;if(self.pageYOffset){scroll_x=self.pageXOffset;scroll_y=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){scroll_x=document.documentElement.scrollLeft;scroll_y=document.documentElement.scrollTop;}else if(document.body){scroll_x=document.body.scrollLeft;scroll_y=document.body.scrollTop;}
return{"x":scroll_x,"y":scroll_y};};Basis.select_add_option=function(element,value,text){var element=Basis.get_element(element);if(element&&element.options){element.options[element.options.length]=new Option(text,value);}else{MochiKit.Logging.log("cannot target element");}};Basis.select_add_options=function(element,options){var element=Basis.get_element(element);if(element&&options){for(var i in options){if(!Basis.is_function(options[i])){Basis.select_add_option(element,i,options[i]);}}}};Basis.select_delete_item_by_text=function(element,text){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){MochiKit.DOM.removeElement(element.options[i]);}}}};Basis.select_delete_item_by_value=function(element,value){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){MochiKit.DOM.removeElement(element.options[i]);}}}};Basis.select_item_indexes_by_text=function(element,text){var temp=[];var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){temp[temp.length]=i;}}}
return temp;};Basis.select_item_indexes_by_value=function(element,value){var temp=[];var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){temp[temp.length]=i;}}}
return temp;};Basis.select_restore_indexes=function(element,selected,restore_by){var element=MochiKit.DOM.getElement(element);if(element&&restore_by&&selected&&selected.length){for(var a=0;a<element.options.length;a++){for(var b=0;b<selected.options.length;b++){if(restore_by=="value"){if(element.options[a].value==selected[b].value){element.options[a].selected=true;}}else if(restore_by=="index"){if(a==selected[b].index){element.options[a].selected=true;}}else if(restore_by=="text"){if(element.options[a].text==selected[b].text){element.options[a].selected=true;}}}}}};Basis.select_select_all=function(element){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){element.options[i].selected=true;}}};Basis.select_select_item_by_text=function(element,text){var temp=new Array();var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){element.options[i].selected=true;}}}};Basis.select_select_item_by_value=function(element,value){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){element.options[i].selected=true;}}}};Basis.select_select_none=function(element){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){element.options[i].selected=false;}}};Basis.select_selected_indexes=function(element){var temp=new Array();var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].selected){temp[temp.length]={"index":i,"value":element.options[i].value,"text":element.options[i].text};}}}
return temp;};Basis.select_sort=function(element){var element=MochiKit.DOM.getElement(element);if(element){var temp=[];for(var i=0;i<element.length;i++){temp[i]=element.options[i].text+":"+element.options[i].value;}
temp.sort(Basis.sort_function);for(var i=0;i<element.length;i++){el=temp[i].split(":");element.options[i].text=el[0];element.options[i].value=el[1];}}};Basis.set_cookie=function(name,value,expires,path,domain,secure){var today=new Date();today.setTime(today.getTime());if(expires!=null){expires=(expires*1000*60*60*24);}
var expires_date=new Date(today.getTime()+(expires));document.cookie=((name)+"="+escape(value))+
((expires)?(";expires="+expires_date.toGMTString()):"")+
((path)?(";path="+path):"")+
((domain)?(";domain="+domain):"")+
((secure)?(";secure"):"");};Basis.set_element_dimensions=function(element,dimensions,units){var element=MochiKit.DOM.getElement(element);if(element){return MochiKit.Style.setElementDimensions(element,dimensions,units);}};Basis.set_element_position=function(element,options){var element=MochiKit.DOM.getElement(element);if(element){var options=options?options:{};var positions={};options["x"]=Basis.is_number(options["x"])?Basis.parse_number(options["x"]):0;options["y"]=Basis.is_number(options["y"])?Basis.parse_number(options["y"]):0;switch(options["mode"]){case"relative":element.style.position="relative";var relative_to=MochiKit.DOM.getElement(options["relative_to"]);if(relative_to){element.style.left=0;element.style.top=0;positions["element"]=MochiKit.Style.getElementPosition(element);positions["relative_to"]=MochiKit.Style.getElementPosition(relative_to);positions["element"]=positions["element"]?positions["element"]:{"x":0,"y":0};positions["relative_to"]=positions["relative_to"]?positions["relative_to"]:{"x":0,"y":0};var offset={"x":((positions["relative_to"].x-positions["element"].x)+options["x"]),"y":((positions["relative_to"].y-positions["element"].y)+options["y"])};element.style.left=offset.x;element.style.top=offset.y;}
break;case"absolute":default:element.style.position="absolute";var relative_to=MochiKit.DOM.getElement(element.offsetParent);if(relative_to){positions["relative_to"]=MochiKit.Style.getElementPosition(relative_to);MochiKit.Style.setElementPosition(element,{"x":-1*(positions["relative_to"].x-options["x"]),"y":-1*(positions["relative_to"].y-options["y"])});}
break;}}};Basis.set_style=function(element,style){var element=MochiKit.DOM.getElement(element);if(element&&style){for(var i in style){if(!Basis.is_function(style[i])&&MochiKit.Base.camelize(i)){if(i=="opacity"){MochiKit.Style.setOpacity(element,style[i]);}else{if(Basis.is_number(style[i])&&(style[i]<0)){style[i]=0;}
element.style[MochiKit.Base.camelize(i)]=style[i];}}}}};Basis.show_flash_demo=function(filename,options){var options=MochiKit.Base.updatetree(Basis.blank_object(),options);options["w"]=options["w"]?options["w"]:"680";options["h"]=options["h"]?options["h"]:"534";var flash_popup=Basis.popup({"id":"show_flash","html":"&nbsp;","window_title":"Flash Demo"});var obj=Basis.misc_vars.popups[flash_popup.reference];if(obj){obj.style.display="none";if(flash_popup&&flash_popup.html_container&&flash_popup.html_container.id){var so=new SWFObject(filename,"mymovie",options["w"],options["h"],"8","#ffffff");so.useExpressInstall("/js/js/expressinstall.swf");so.write(flash_popup.html_container.id);}
Basis.center_element(obj);obj.style.display="";}};Basis.size_child_to_parent=function(element){var child=MochiKit.DOM.getElement(element);if(child&&child.parentNode){var parent=MochiKit.DOM.getElement(child.parentNode);if(child&&parent){var p_dim=MochiKit.Style.getElementDimensions(parent);for(var i=0;i<parent.childNodes.length;i++){var obj=MochiKit.DOM.getElement(parent.childNodes[i]);if(obj&&obj.tagName&&(obj!=child)){var o_dim=MochiKit.Style.getElementDimensions(obj);p_dim.h-=o_dim.h;}}
var borders=Basis.sum_of_element(parent,"border");var padding=Basis.sum_of_element(parent,"padding");var adjust=(borders.top+borders.bottom+padding.top+padding.bottom);child.style.height=(p_dim.h-adjust);}}
return p_dim;}
Basis.size_in_viewport=function(element){var element=MochiKit.DOM.getElement(element);if(element&&Basis.is_live_dom_node(element)){var pos=MochiKit.Style.getElementPosition(element);var dim=MochiKit.Style.getElementDimensions(element);var scroll=Basis.scroll_coords();var screen=MochiKit.Style.getViewportDimensions();var borders=Basis.sum_borders_of_all_parents(element);var padding=Basis.sum_padding_of_all_parents(element);var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var coords={"w":(screen.w-(pos.x+scroll.x)-adjust_width),"h":(screen.h-(pos.y+scroll.y)-adjust_height)};return coords;}}
Basis.sort_function=function(a,b){a=a.toLowerCase();b=b.toLowerCase();if(a<b){return-1;}
if(a>b){return 1;}
return 0;};Basis.sort_ul=function(ul,get,descending){var ul=Basis.get_element(ul);if(ul){var items=MochiKit.DOM.getElementsByTagAndClassName("LI",null,ul);var length=items.length;function compare(a,b,descending){return(descending)?(a>b):(a<b);}
var exchange=function(a,b){ul.insertBefore(items[a],items[b]);};var get=(typeof(get)=="function")?get:function(items,a){return MochiKit.DOM.scrapeText(items[a]);};function isort(m,k,descending){for(var j=(m+k);j<length;j+=k){for(var i=j;i>=k&&compare(get(items,i),get(items,(i-k)),descending);i-=k){exchange(i,(i-k));}}}
if((k=Math.floor(length/5))>7){for(var m=0;m<k;m++){isort(m,k,descending);}}
if((k=Math.floor(length/7))>7){for(var m=0;m<k;m++){isort(m,k,descending);}}
for(k=7;k>0;k-=2){for(var m=0;m<k;m++){isort(m,k,descending);}}
var sorted=true;for(var i=0;i<length;i++){if(get(items,i)>get(items,(i+1))){sorted=false;break;}}
if(!sorted){Basis.sort_ul(ul,get,descending);}}};Basis.sum_borders_of_all_parents=function(element){return Basis.sum_of_all_parents(element,"border");};Basis.sum_of_all_parents=function(element,selector){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0,"right":0,"bottom":0};var width=(selector=="border")?"-width":"";if(element){var tsum=Basis.sum_of_element(element);sum.top+=tsum.top;sum.left+=tsum.left;sum.right+=tsum.right;sum.bottom+=tsum.bottom;var parent=element.parentNode;while(parent&&parent.style){var tsum=Basis.sum_of_element(parent);sum.top+=tsum.top;sum.left+=tsum.left;sum.right+=tsum.right;sum.bottom+=tsum.bottom;parent=parent.parentNode;}}
return sum;};Basis.sum_of_element=function(element,selector){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0,"right":0,"bottom":0};var width=(selector=="border")?"-width":"";if(element){sum.top+=Basis._int(Basis.get_style(element,selector+"-top"+width).replace(/([^0-9\.])/g,""));sum.left+=Basis._int(Basis.get_style(element,selector+"-left"+width).replace(/([^0-9\.])/g,""));sum.right+=Basis._int(Basis.get_style(element,selector+"-right"+width).replace(/([^0-9\.])/g,""));sum.bottom+=Basis._int(Basis.get_style(element,selector+"-bottom"+width).replace(/([^0-9\.])/g,""));}
return sum;};Basis.sum_padding_of_all_parents=function(element){return Basis.sum_of_all_parents(element,"padding");};Basis.sum_scroll_of_all_parents=function(element){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0};if(element){var parent=element.parentNode;while(parent&&parent.style){sum.top+=parent.scrollTop;sum.left+=parent.scrollLeft;parent=parent.parentNode;}}
return sum;};Basis.tinyMCE_correct_span_nesting=function(html){var container=DIV();container.innerHTML=html;Basis.tinyMCE_correct_span_nesting_walk(container.childNodes);return container.innerHTML;};Basis.tinyMCE_correct_span_nesting_walk=function(nodes){if(nodes){for(var x in nodes){var node=nodes[x];if(Basis.is_element(node)&&Basis.is_element(node.parentNode)){var collapsed_tags=false;if((node.tagName.toUpperCase()=="SPAN")&&(node.parentNode.tagName.toUpperCase()=="SPAN")&&!node.previousSibling){log("merging...");for(var i in node.childNodes){if((node.childNodes[i].nodeType==1)||(node.childNodes[i].nodeType==3)){node.parentNode.insertBefore(node.childNodes[i],node);}}
var node_classes=Basis.get_element(node).className.split(" ");for(var i in node_classes){if(!Basis.is_function(node_classes[i])){MochiKit.DOM.addElementClass(node.parentNode,node_classes[i]);}}
for(var i=0;i<node.style;i++){var style=Basis.blank_object();style[node.style[i]]=Basis.get_style(node,node.style[i]);Basis.set_style(node.parentNode,style);}
Basis.remove_element(node)}
if(collapsed_tags){Basis.tinyMCE_correct_span_nesting_walk(node.parentNode.childNodes);}else{Basis.tinyMCE_correct_span_nesting_walk(node.childNodes);}}}}};Basis.tinyMCE_getInstanceById=function(obj){var obj=MochiKit.DOM.getElement(obj);if(obj&&obj.id){if(tinyMCE&&tinyMCE.instances){for(var i in tinyMCE.instances){if(typeof(tinyMCE.instances[i])!="function"){if(tinyMCE.instances[i].formElement&&tinyMCE.instances[i].formElement.id&&(tinyMCE.instances[i].formElement.id==obj.id)){return tinyMCE.instances[i];}}}}}
return false;};Basis.tinyMCE_set_dirty_flag=function(inst){Basis.misc_vars["tinyMCE_"+inst.formElement.id+"_changed"]=true;};Basis.toggle_visible=function(element){MochiKit.DOM.toggleElementClass("invisible",element);};Basis.unhide_all_object_elements=function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("object");if(objs.length>0){for(x=0;x<objs.length;x++){objs[x].style.display="";}
return true;}
return false;};Basis.updated_live_dom=function(){if(Basis.signal_handler){Basis.signal_handler.commit_pending_elements();}};Basis.show_tooltips=(Basis.get_cookie("show_tooltips")=="false")?false:true;if(MochiKit.DOM.currentDocument().images){Basis.misc_vars["ajax_loading"]=new Image();Basis.misc_vars["ajax_loading"].src="images/images/ajax_loading.gif";}
MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",function(e){var pos=e.mouse().client;Basis.misc_vars["mouse_x"]=pos.x;Basis.misc_vars["mouse_y"]=pos.y;});window.onerror=function(message,url,line_number){MochiKit.Logging.log(["ERROR",message,url,line_number]);};try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}
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"}]};BrowserDetect.init();;Basis.ajax_scaffold=function(){this.__init__();};Basis.ajax_scaffold.instances=[];Basis.ajax_scaffold.blocked=false;Basis.ajax_scaffold.prototype={__init__:function(){this.alias;this.sid;this.url;this.send_raw=false;this.should_block=false;this.on_success=function(){return;};this.after_success=function(){return;};this.index=Basis.ajax_scaffold.instances.length;Basis.ajax_scaffold.instances[this.index]=this;},attach_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");if(!obj){var obj=new MochiKit.DOM.DIV({"id":"ajax_scaffold_indicator","style":"display:none; width: 16px; height: 16px; position: absolute;"},null);obj.innerHTML="<img id='ajax_scaffold_indicator_image' src=''><script>var obj = MochiKit.DOM.getElement('ajax_scaffold_indicator_image'); if (obj && Basis.misc_vars['ajax_loading'].src) { obj.src = Basis.misc_vars['ajax_loading'].src; }</script>";document.body.appendChild(obj);Basis.execute_javascript(obj);this.position_indicator();this.draw_indicator=MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",this,function(){this.position_indicator();});obj.style.display="";}},form_post:function(form_id){var obj=MochiKit.DOM.getElement(form_id);if(obj){var action=MochiKit.DOM.getElement(obj).action;var form_data=MochiKit.DOM.formContents(obj);if(action&&form_data){form_data[0][form_data[0].length]="exit_after_catch";form_data[1][form_data[1].length]="true";var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
this.url=action;return this.post(to_post);}else{MochiKit.Logging.log("no action or no form_data");}}},position_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");var scroll=Basis.scroll_coords();if(obj&&Basis.misc_vars["mouse_x"]&&Basis.misc_vars["mouse_y"]&&scroll&&(scroll.x>=0)&&(scroll.y>=0)){var pos={"x":(Basis.misc_vars["mouse_x"]+scroll.x+15),"y":(Basis.misc_vars["mouse_y"]+scroll.y+10)};MochiKit.Style.setElementPosition(obj,pos);}},post:function(options){if(this.should_block&&Basis.ajax_scaffold.blocked){log("ERROR: blocking request already made; cannot send this until it has completed!");return false;}
this.url=this.url?this.url:window.location.href;this.sid=this.sid?this.sid:Basis.get_cookie("PHPSESSID");if(this.url&&this.sid){if(!this.send_raw){var to_send={"alias":this.alias,"ajax_throw_verify":hex_md5(this.sid)};if(options){for(var i in options){to_send[i]=options[i];}}}else{var to_send=options;}
if(this.url.indexOf("?")!=-1){var base=this.url.substring(0,this.url.indexOf("?"));var args=parseQueryString(this.url.substring((this.url.indexOf("?")+1),this.url.length),true);}else{var base=this.url;var args={};}
args["PHPSESSID"]=this.sid;args["alias"]=this.alias;var date=new Date();args["unique"]=date.getTime();var query_string="";for(var i in args){if(typeof(args[i])!="function"){query_string+=i+"="+args[i]+"&";}}
this.url=base+"?"+query_string;this.attach_indicator();if(!this.send_raw){var send_content="array="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_send)));}else{var temp="";for(var i in to_send){temp+=urlencode(i)+"="+urlencode(to_send[i])+"&";}
var send_content=temp;}
this.deferred=MochiKit.Async.doXHR(this.url,{"method":"POST","headers":{"Content-type":"application/x-www-form-urlencoded"},"sendContent":send_content});this.deferred.addCallback(MochiKit.Base.bind(function(req){this.req=req;},this.deferred));this.deferred.addCallback(MochiKit.Base.bind(function(){var func=MochiKit.Base.bind(this.on_success,this);func.apply(null,[this.deferred.req]);},this));this.deferred.addCallback(this.after_success);this.deferred.addCallback(MochiKit.Base.bind(this.remove_indicator,this));this.deferred.addCallback(MochiKit.Base.partial(function(should_block){Basis.ajax_scaffold.blocked=should_block?false:Basis.ajax_scaffold.blocked;},this.should_block));Basis.ajax_scaffold.blocked=this.should_block?true:Basis.ajax_scaffold.blocked;return this.deferred;}else{if(!this.url){MochiKit.Logging.log("ERROR: this.url is null!");}
if(!this.sid){MochiKit.Logging.log("ERROR: this.sid is null!");}}
return false;},remove_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");if(obj){MochiKit.DOM.removeElement(obj);}
MochiKit.Signal.disconnect(this.draw_indicator);}};Basis.bnode_tree=function(){this.__init__();};Basis.bnode_tree.instances=[];Basis.bnode_tree.prototype={__init__:function(){var node_index=Basis.bnode.instances.length;this.nodes=new Array();this.nodes[node_index]=new Basis.bnode;this.top_node_index=node_index;this.index=Basis.bnode_tree.instances.length;Basis.bnode_tree.instances[this.index]=this;this.nodes[node_index].top=this.index;},node:function(id){if(id||(id==0)){return this.nodes[id];}else{return false;}},parse_func:function(){},top_node:function(){if(this.nodes[this.top_node_index]){return this.nodes[this.top_node_index];}
return false;}}
Basis.bnode=function(){this.__init__();};Basis.bnode.instances=[];Basis.bnode.prototype={__init__:function(){this.is_node=true;this.top=null;this.parent=null;this.children=new Array();this.index=Basis.bnode.instances.length;Basis.bnode.instances[this.index]=this;},add_node:function(){if(this.children){var top_node_index=Basis.bnode.instances.length;var node=new Basis.bnode();var node_index=this.children.length;if(this.parent){node.top=this.node(this.parent).top;}else{node.top=this.top;}
this.nodes()[top_node_index]=node;this.node(top_node_index).parent=this.index;this.children[this.children.length]=top_node_index;return top_node_index;}
return false;},delete_node:function(){this.delete_node_plus_children();},delete_node_plus_children:function(){if(this.children){for(var i in this.children){if(this.node(this.children[i])){this.node(this.children[i]).delete_node_plus_children();}}}
if(delete this.nodes()[this.index]){return true;}else{return false;}},has_children:function(){if(this.children.length>0){return true;}
return false},node:function(id){if((id||(id==0))&&this.nodes()[id]){return this.nodes()[id];}else{return false;}},nodes:function(){return this.tree().nodes;},nodes_after:function(){if(this.node(this.parent)){var found_node=false;var any_after=false;for(var i in this.node(this.parent).children){var tnode=this.node(this.node(this.parent).children[i]);if(tnode){if(found_node){any_after=true;}
if(tnode.index==this.index){found_node=true;}}}
return(found_node&&any_after);}
return false;},nodes_before:function(){if(this.node(this.parent)){var found_node=false;var any_before=false;for(var i in this.node(this.parent).children){var tnode=this.node(this.node(this.parent).children[i]);if(tnode){if(!found_node&&!(tnode.index==this.index)){any_before=true;}
if(tnode.index==this.index){found_node=true;}}}
return(found_node&&any_before);}
return false;},parse:function(){var tfunc=MochiKit.Base.bind(this.tree().parse_func,this);tfunc();if(this.children.length>0){for(var i in this.children){if(this.node(this.children[i])){this.node(this.children[i]).parse();}}}},tree:function(){return Basis.bnode_tree.instances[this.top];}}
Basis.color_chooser=function(options){this.__init__(options);};Basis.color_chooser.prototype={__init__:function(options){this.color=null;this.on_change=function(){};this.hue=0.0;this.saturation=0.0;this.brightness=0.0;this.update_color();this.image_root="http://www.sitequarters.com/images/images/";this.sb_dimensions={"w":256,"h":256};this.sb_container="color_chooser_sb_container";this.sb_overlay="color_chooser_sb_overlay";this.sb_overlay_image=this.image_root+"color_chooser_overlay.png";this.sb_drag="color_chooser_sb_drag";this.sb_drag_image=this.image_root+"color_chooser_slide.gif";this.sb_drag_dimensions={"w":9,"h":9};this.h_container="color_chooser_h_container";this.h_container_image=this.image_root+"color_chooser_hue.png";this.h_drag="color_chooser_h_drag";this.h_dimensions={"w":19,"h":256};this.h_drag_image=this.image_root+"color_chooser_hue_slide.gif";this.h_drag_dimensions={"w":30,"h":9};this.spacer_image=this.image_root+"spacer.gif";this.show_sb=true;this.show_h=true;this.elements={};},attach_events:function(){var sb_mousedown=MochiKit.Base.bind(function(e){this.elements["sb_container"].mousedown=true;var pos=MochiKit.Style.getElementPosition(this.elements["sb_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["sb_container"]);var hdim=MochiKit.Style.getElementDimensions(this.elements["sb_drag"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.saturation=(pos_in_image.x/dim.w);this.brightness=1-(pos_in_image.y/dim.h);this.update_hsb();this.position_sb_handle();},this);MochiKit.Signal.connect(this.elements["sb_container"],"onmousedown",sb_mousedown);MochiKit.Signal.connect(this.elements["sb_drag"],"onmousedown",sb_mousedown);MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(){this.mousedown=false;},this.elements["sb_container"]));MochiKit.Signal.connect(document,"onmousemove",MochiKit.Base.bind(function(e){if(this.elements["sb_container"].mousedown){var pos=MochiKit.Style.getElementPosition(this.elements["sb_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["sb_container"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.saturation=(pos_in_image.x/dim.w);this.brightness=1-(pos_in_image.y/dim.h);this.update_hsb();this.position_sb_handle();this.update_color();}},this));var h_mousedown=MochiKit.Base.bind(function(e){this.elements["h_container"].mousedown=true;var pos=MochiKit.Style.getElementPosition(this.elements["h_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["h_container"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.hue=1-(pos_in_image.y/dim.h);this.update_sb_hue();this.position_h_handle();},this);MochiKit.Signal.connect(this.elements["h_container"],"onmousedown",h_mousedown);MochiKit.Signal.connect(this.elements["h_drag"],"onmousedown",h_mousedown);MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(){this.mousedown=false;},this.elements["h_container"]));MochiKit.Signal.connect(document,"onmousemove",MochiKit.Base.bind(function(e){if(this.elements["h_container"].mousedown){var pos=MochiKit.Style.getElementPosition(this.elements["h_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["h_container"]);var hdim=MochiKit.Style.getElementDimensions(this.elements["h_drag"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.hue=1-(pos_in_image.y/dim.h);this.update_sb_hue();this.position_h_handle();this.update_color();}},this));},color_hex:function(){return this.color.toHexString().toUpperCase();},compile:function(){this.create_elements();this.attach_events();this.update_handles();this.on_change();},create_elements:function(){this.elements["sb_container"]=new MochiKit.DOM.DIV({"id":this.sb_container,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-color: "+this.max_color_hex()+";"},null);this.elements["sb_overlay"]=new MochiKit.DOM.DIV({"id":this.sb_overlay,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-image: url("+this.sb_overlay_image+"); filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.sb_overlay_image+"');"},null);this.elements["sb_drag"]=new MochiKit.DOM.DIV({"id":this.sb_drag,"style":"width: "+this.sb_drag_dimensions.w+"px; height: "+this.sb_drag_dimensions.h+"px; background-image: url("+this.sb_drag_image+"); position: absolute;"},null);this.elements["h_container"]=new MochiKit.DOM.DIV({"id":this.h_container,"style":"width: "+this.h_dimensions.w+"px; height: "+this.h_dimensions.h+"px; background-image: url("+this.h_container_image+");"},null);this.elements["h_drag"]=new MochiKit.DOM.DIV({"id":this.h_drag,"style":"width: "+this.h_drag_dimensions.w+"px; height: "+this.h_drag_dimensions.h+"px; background-image: url("+this.h_drag_image+"); position: absolute;"},null);this.elements["sb_drag"].innerHTML='<img src="'+this.spacer_image+'">';this.elements["h_drag"].innerHTML='<img src="'+this.spacer_image+'">';var html='<table><tr><td id="color_chooser_sb"></td><td id="color_chooser_h"></td></tr></table>';this.elements["container"]=new DIV({"style":"display: none;","class":"no_select"});document.body.appendChild(this.elements["container"]);this.elements["container"].innerHTML=html;var obj=MochiKit.DOM.getElement("color_chooser_sb");if(obj&&this.show_sb){obj.appendChild(this.elements["sb_container"]);this.elements["sb_container"].appendChild(this.elements["sb_overlay"]);obj.appendChild(this.elements["sb_drag"]);}
var obj=MochiKit.DOM.getElement("color_chooser_h");if(obj&&this.show_h){obj.appendChild(this.elements["h_container"]);obj.appendChild(this.elements["h_drag"]);}
this.update_handles();},max_color_hex:function(){return MochiKit.Color.Color.fromHSV(this.hue,1.0,1.0).toHexString();},position_h_handle:function(){var obj=this.elements["h_container"];var handle=this.elements["h_drag"];if(obj&&handle){var dim=MochiKit.Style.getElementDimensions(obj);var hdim=MochiKit.Style.getElementDimensions(handle);var offset_y=((1-this.hue)*dim.h)-(hdim.h/2);Basis.set_element_position(handle,{"x":0,"y":parseInt(offset_y),"mode":"relative","relative_to":obj});return true;}
return false;},position_sb_handle:function(){var obj=this.elements["sb_container"];var handle=this.elements["sb_drag"];if(obj&&handle){var dim=MochiKit.Style.getElementDimensions(obj);var hdim=MochiKit.Style.getElementDimensions(handle);var offset_x=(this.saturation*dim.w)-(hdim.w/2);var offset_y=((1-this.brightness)*dim.h)-(hdim.h/2);Basis.set_element_position(handle,{"x":parseInt(offset_x),"y":parseInt(offset_y),"mode":"relative","relative_to":obj});return true;}
return false;},set_color_from_hex:function(hex){if(hex){var color=MochiKit.Color.Color.fromHexString(hex);if(color.toHexString().indexOf("NaN")>-1){color=MochiKit.Color.Color.fromHexString("#000000");}
var hsv=color.asHSV();this.hue=hsv.h;this.saturation=hsv.s;this.brightness=hsv.v;this.update_sb_hue();this.update_handles();}},update_color:function(){this.color=MochiKit.Color.Color.fromHSV(this.hue,this.saturation,this.brightness);this.on_change();},update_handles:function(){this.position_sb_handle();this.position_h_handle();},update_hsb:function(){if(this.hue>1){this.hue=1.0;}
if(this.hue<0){this.hue=0.0;}
if(this.saturation>1){this.saturation=1.0;}
if(this.saturation<0){this.saturation=0.0;}
if(this.brightness>1){this.brightness=1.0;}
if(this.brightness<0){this.brightness=0.0;}
this.update_color();},update_sb_hue:function(){this.update_hsb();var obj=this.elements["sb_container"];if(obj){obj.style.backgroundColor=this.max_color_hex();}}};Basis.dynamic_select_list=function(){this.__init__();};Basis.dynamic_select_list.instances=[];Basis.dynamic_select_list.prototype={__init__:function(){this.list=null;this.list_id=null;this.table_name="basis_dynamic_list_item";this.alias=null;this.parent_id=null;this.sid=null;this.post_url=null;this.prompt_action=true;this.on_change=function(){};this.index=Basis.dynamic_select_list.instances.length;Basis.dynamic_select_list.instances[this.index]=this;},compile:function(){this.list=MochiKit.DOM.getElement(this.list_id);this.attach_events();},add_item:function(){var text=MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));if(this.list&&this.list.id&&text.value){window.status="Adding item to list...";if(this.prompt_action){if(!confirm("Are you sure you want to add '"+text.value+"' to the list?")){return;}}
Basis.select_add_option(this.list,null,text.value);text.value="";text.focus();this.update_database();}},attach_events:function(){if(this.list&&this.list.id){var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_add_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.add_item();});}
var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_rename_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.rename_item();});}
var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_delete_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.delete_item();});}}},delete_item:function(){var selected=Basis.select_selected_indexes(this.list);if(this.list&&this.list.id&&(Basis.array_length(selected)>0)){if(this.prompt_action){if(Basis.array_length(selected)==1){var index=selected[0]["index"];if(this.prompt_action){if(!confirm("Are you sure you want to delete '"+this.list.options[index].text+"' from the list?")){return;}}
window.status="Deleting item from list...";MochiKit.DOM.removeElement(this.list.options[index]);this.update_database();}else{if(this.prompt_action){if(!confirm("Are you sure you want to delete the "+Basis.array_length(selected)+" selected items from the list?")){return;}}
for(var i=0;i<Basis.array_length(selected);i++){Basis.select_delete_item_by_value(this.list.id,selected[i]["value"]);}
this.update_database();}}}else if(Basis.array_length(selected)==0){alert("Please select an item to delete, then click this button again.");}},manage_form:function(alias,parent_id,field,window_title){if(alias&&parent_id&&field){window.status="Fetching '"+field+"' form...";var to_post=new Object();to_post.alias=alias;to_post.field=field;to_post.parent_id=parent_id;var as=new Basis.ajax_scaffold;as.alias="Basis.dynamic_select_list.manage_form";as.sid=this.sid;as.url=this.post_url;as.pvar=this;as.field=field;as.window_title=window_title;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(this.window_title){var window_title=this.window_title;}else{var window_title="Manage "+(this.field.substring(0,1).toUpperCase()+this.field.substring(1,this.field.length));}
this.popup=Basis.popup({"id":"manage_"+this.field+"_form","html":response["html"],"window_title":window_title});window.status="Done";}else{window.status="manage_form(): ERROR!";}};return as.post({"to_post":to_post});}},rename_item:function(){var text=MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));var selected=Basis.select_selected_indexes(this.list);if(this.list&&this.list.id&&text.value&&(Basis.array_length(selected)>0)){var index=selected[0]["index"];if(this.prompt_action){if(!confirm("Are you sure you want to rename '"+this.list.options[index].text+"' to '"+text.value+"'?")){return;}}
window.status="Renaming item in list...";this.list.options[index].text=text.value;text.value="";text.focus();this.update_database();}else if(this.list&&this.list.id&&!text.value&&(Basis.array_length(selected)>0)){if(Basis.array_length(selected)>1){alert("You can only rename one item at a time; please select a single item and click this button again.");}else{var index=selected[0].index;if(this.list.options[index]){alert("Please type what you would like to rename '"+this.list.options[index].text+"' to in the text box on the left, then click this button again.");}}}else if(Basis.array_length(selected)==0){alert("Please select an item to rename, then type what you want to rename it to in the text box on the left, then click this button again.");}},update_database:function(){if(this.list&&this.list.id&&this.post_url){Basis.select_select_none(this.list);list=new Object();list["options"]=new Object();list["parent_id"]=this.parent_id;list["list_id"]=this.list.id;for(var x=0;x<this.list.options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=this.list.options[x].value;list["options"][x]["text"]=this.list.options[x].text;}
var to_post=new Object();to_post.list=list;to_post.alias=this.alias;var as=new Basis.ajax_scaffold;as.alias="Basis.dynamic_select_list.update_database";as.sid=this.sid;as.url=this.post_url;as.pvar=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(response["output"]){eval(response["output"]);}
Basis.select_sort(this.pvar.list.id);this.pvar.on_change();window.status="Done";}else{window.status="update_database(): ERROR!";}};as.post({"to_post":to_post});}}};Basis.interactive_signal_handler=function(){this.__init__();};Basis.interactive_signal_handler.prototype={__init__:function(){this.interactive_elements={};this.anonymous_element_lookup={};this.elements_pending_commit=[];this.proxy_events=["onabort","onblur","onclick","ondblclick","onerror","onfocus","onkeydown","onkeypress","onkeyup","onload","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onreset","onresize","onselect","onsubmit","onunload"];this.greedy_events=["onclick","ondblclick","onkeydown","onkeypress","onkeyup","onmousedown","onmousemove","onmouseup"];for(var i=0;i<this.proxy_events.length;i++){var event=this.proxy_events[i];var connecting_to=(BrowserDetect&&(BrowserDetect.browser!="Explorer"))?window:document;MochiKit.Signal.connect(connecting_to,event,MochiKit.Base.bind(MochiKit.Base.partial(function(event,e){var type=e.type();type=(type.substring(0,2)=="on")?type.substring(2):type;switch(type){case"mouseover":type="on"+(MochiKit.Signal._browserAlreadyHasMouseEnterAndLeave()&&Basis.is_mouse_leave_or_enter(e.event(),e.target())?"mouseenter":"mouseover");break;case"mouseout":type="on"+(MochiKit.Signal._browserAlreadyHasMouseEnterAndLeave()&&Basis.is_mouse_leave_or_enter(e.event(),e.target())?"mouseleave":"mouseout");break;default:type="on"+e.type();break;}
switch(type){case"onmouseenter":var list=[];var parent=e.target();while(parent&&(parent!=document.body)&&(parent!=e.relatedTarget())&&(!MochiKit.DOM.isChildNode(e.relatedTarget(),parent))){list.push(parent);parent=parent.parentNode;}
for(var i=(list.length-1);i>=0;i--){this.execute_interactive_element(list[i],type);}
break;case"onmouseleave":var parent=e.target();while(parent&&(parent!=document.body)&&(parent!=e.relatedTarget())&&(!MochiKit.DOM.isChildNode(e.relatedTarget(),parent))){this.execute_interactive_element(parent,type);parent=parent.parentNode;}
break;default:this.execute_interactive_element(e.target(),type);if(Basis.array_search(this.greedy_events,type)!=null){var has_swallowed=this.interactive_element_has_swallowed(e.target(),type);var parent=e.target().parentNode;while(parent&&document.body&&(parent!=document.body.parentNode)&&!has_swallowed){this.execute_interactive_element(parent,type,true);has_swallowed=this.interactive_element_has_swallowed(parent,type);parent=parent.parentNode;}}
break;}},event),this));}},commit_pending_elements:function(){var list=this.elements_pending_commit;for(var i=0;i<list.length;i++){if((list[i]!=null)&&this.interactive_elements[list[i]]){this.interactive_elements[list[i]].committed=true;}}
this.elements_pending_commit=[];this.purge_orphaned_signals();},connect:function(element,event,func,commit){var commit=(commit!=null)?commit:true;var element=Basis.get_element(element);if(element&&event&&Basis.is_function(func)){element.id=element.id?element.id:Basis.anonymous_element_id();var is_greedy=(event.split(".")[0]&&(event.split(".")[1]=="greedy"))?true:false;var will_swallow=(event.split(".")[0]&&(event.split(".")[2]=="swallow"))?true:false;if(is_greedy){func.is_greedy=true;event=event.split(".")[0];}
if(will_swallow){func.will_swallow=true;}
var index=this.get_element_index(element);if(index!=null){this.interactive_elements[index][event]=this.interactive_elements[index][event]?this.interactive_elements[index][event]:[];this.interactive_elements[index][event].push(func);this.interactive_elements[index].committed=commit?true:false;if(!commit){this.elements_pending_commit.push(index);}
if((event=="onchange")&&(!element.onchange_overwritten)){element.onchange=MochiKit.Base.partial(function(old_func,element,signal_handler){if(Basis.is_function(old_func)){old_func();}
signal_handler.execute_interactive_element(element,"onchange");},(element.onchange?element.onchange:function(){}),element,this);element.onchange_overwritten=true;}
return{"element":index,"event":event,"index":(this.interactive_elements[index][event].length-1)};}}else if(element&&Basis.array_length(event)&&(func==null)){var signals=[];for(var i in event){if(!Basis.is_function(event[i])&&MochiKit.Base.isArrayLike(event[i])){for(var j=0;j<event[i].length;j++){signals.push(this.connect(element,i,event[i][j],commit));}}}
return signals;}},disconnect:function(pointer){if(pointer){var list=this.interactive_elements;if(!list[pointer["element"]]){return false;}
if(!list[pointer["element"]][pointer["event"]]){return false;}
if(!list[pointer["element"]][pointer["event"]][pointer["index"]]){return false;}
this.interactive_elements[pointer["element"]][pointer["event"]][pointer["index"]]=function(){};return true;}},execute_interactive_element:function(element,event,greedy_events_only){var greedy_events_only=(greedy_events_only!=null)?greedy_events_only:false;if(element&&event){var index=this.get_element_index(element,false);var events=this.interactive_elements[index];if(events&&events[event]&&MochiKit.Base.isArrayLike(events[event])){events[event].swallowed=false;for(var i=0;i<events[event].length;i++){if(Basis.is_function(events[event][i])&&(!greedy_events_only||(greedy_events_only&&events[event][i].is_greedy))&&!events[event].swallowed){events[event][i]();if(events[event][i].will_swallow){events[event].swallowed=true;}}}}}},get_element_index:function(element,set_up_if_nonexistent){var set_up_if_nonexistent=(set_up_if_nonexistent!==null)?set_up_if_nonexistent:true;var index=null;var element=Basis.get_element(element);if(element){if(element.id){this.interactive_elements[element.id]=this.interactive_elements[element.id]?this.interactive_elements[element.id]:{};return element.id;}else{var exists=false;for(var i in this.anonymous_element_lookup){if(Basis.is_element(this.anonymous_element_lookup[i])&&(this.anonymous_element_lookup[i]===element)){exists=true;index=i;break;}}
if(!exists&&set_up_if_nonexistent){var keys=Basis.keys(this.anonymous_element_lookup);for(var i=0;i<keys.length;i++){keys[i]=Basis.parse_number(keys[i]);}
index=Basis.parse_number(MochiKit.Base.listMax(keys))+1;this.interactive_elements[index]={};this.anonymous_element_lookup[index]=element;}}}
return index;},interactive_element_has_swallowed:function(element,event){if(element&&event){var index=this.get_element_index(element,false);var events=this.interactive_elements[index];if(events&&events[event]&&MochiKit.Base.isArrayLike(events[event])){return events[event].swallowed;}}
return false;},purge_orphaned_signals:function(){var keys=Basis.keys(this.anonymous_element_lookup);for(var i=0;i<keys.length;i++){if(!MochiKit.DOM.isChildNode(this.anonymous_element_lookup[keys[i]],document.body)){if(this.interactive_elements[keys[i]]&&(this.interactive_elements[keys[i]].committed==true)){this.unregister_interactive_element(keys[i]);}}}
for(var i in this.interactive_elements){if(!MochiKit.DOM.getElement(i)&&!this.anonymous_element_lookup[i]){if(this.interactive_elements[i]&&(this.interactive_elements[i].committed==true)){this.unregister_interactive_element(i);}}}},unregister_interactive_element:function(pointer){if(pointer&&this.interactive_elements[pointer]){delete this.interactive_elements[pointer];if(this.anonymous_element_lookup[pointer]){delete this.anonymous_element_lookup[pointer];}
return true;}
return false;}};Basis.signal_handler=new Basis.interactive_signal_handler();;Basis.keep_alive=function(options){this.__init__(options);};Basis.keep_alive.prototype={__init__:function(options){this.sid=options["sid"]?options["sid"]:null;this.url=options["url"]?options["url"]:null;this.duration=options["duration"]?options["duration"]:null;this.propagate=(options["propagate"]!=null)?options["propagate"]:true;this.compile();},compile:function(){if(this.sid&&this.url&&this.duration){Basis.misc_vars["keepalive_timeout"]=MochiKit.Async.callLater(this.duration,MochiKit.Base.bind(function(){this.send_active_status();},this));}},send_active_status:function(){if(this.sid&&this.url){var as=new Basis.ajax_scaffold;as.alias="Basis.active_status";as.sid=this.sid;as.url=this.url;as.pvar=this;as.on_success=function(){if(this.pvar.propagate){this.pvar.compile();}};as.post();}}};Basis.interactive_key_handler=function(){this.__init__();};Basis.interactive_key_handler.prototype={__init__:function(){Basis.key_state=[];this.key_events={"up":{},"down":{}};MochiKit.Signal.connect(document,"onkeydown",MochiKit.Base.bind(function(e){Basis.key_state[e.key().string]="down";this.execute_key_events(e.key().string);},this));MochiKit.Signal.connect(document,"onkeyup",MochiKit.Base.bind(function(e){Basis.key_state[e.key().string]="up";this.execute_key_events(e.key().string);},this));},execute_key_events:function(key_string){var up_or_down=this.key_state(key_string);switch(up_or_down){case"up":case"down":var events=this.key_events[up_or_down][key_string];events=MochiKit.Base.isArrayLike(events)?events:[];for(var i=0;i<events.length;i++){if(Basis.is_function(events[i])){events[i]();}}
break;}},key_state:function(key_string){return((Basis.key_state[key_string]==null)||(Basis.key_state[key_string]=="up"))?"up":"down";},register_key_event:function(key_string,up_or_down,func){this.key_events[up_or_down][key_string]=MochiKit.Base.isArrayLike(this.key_events[up_or_down][key_string])?this.key_events[up_or_down][key_string]:[];this.key_events[up_or_down][key_string].push(func);return{"key_state":up_or_down,"key_string":key_string,"index":(this.key_events[up_or_down][key_string].length-1)};},set_key_state:function(key_string,state){Basis.key_state[key_string]=((state=="up")?"up":"down");},unregister_key_event:function(pointer){if(pointer){delete this.key_events[pointer["key_state"]][pointer["key_string"]][pointer["index"]];return true;}
return false;}}
Basis.key_handler=new Basis.interactive_key_handler();;Basis.menu=function(){this.__init__();};Basis.menu.instances=[];Basis.menu.prototype={__init__:function(){this.parent_element;this.current_node;this.parent_container_tag="UL";this.child_tag="LI";this.orientation="vertical";this.offset={"x":0,"y":0};this.first_level_offset={"x":0,"y":0};this.tree=new Basis.bnode_tree();},compile:function(){var temp_options={"offset":this.offset,"first_level_offset":this.first_level_offset,"child_tag":this.child_tag,"parent_container_tag":this.parent_container_tag,"orientation":this.orientation};this.__init__();for(var i in temp_options){if(i&&this[i]){this[i]=temp_options[i];}}
var parent_element=MochiKit.DOM.getElement(this.parent_element);if(parent_element){this.current_node=this.tree.top_node();this.parse_children(this.get_child_container(parent_element));}
this.hide_child_containers_and_attach_events();},find_node_with_id:function(id){if(id){for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].options&&this.tree.nodes[i].options.id&&(this.tree.nodes[i].options.id==id)){return this.tree.node(this.tree.nodes[i].index);}}}
return false;},get_all_nodes:function(){var nodes=[];for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].is_node){nodes[nodes.length]=this.tree.nodes[i].index;}}
return nodes;},get_all_nodes_with_children:function(){var nodes=[];for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].is_node&&(this.tree.nodes[i].children.length>0)){nodes[nodes.length]=this.tree.nodes[i].index;}}
return nodes;},get_child_container:function(element){var element=MochiKit.DOM.getElement(element);if(element){var parent_container=Basis.get_child_elements_by_tag(element,this.parent_container_tag);if(parent_container&&(parent_container.length>0)){return parent_container[0];}}
return false;},get_all_submenu_parent_elements:function(){var elements=[];var submenus=this.get_all_submenu_container_elements();for(var i in submenus){var submenu=MochiKit.DOM.getElement(submenus[i]);if(submenu&&submenu.parentNode){elements[elements.length]=submenu.parentNode;}}
return elements;},get_top_level_menu_elements:function(){var elements=[];var parents=this.tree.top_node().children;if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){elements[elements.length]=obj;}}}}
return elements;},get_all_submenu_container_elements:function(){var elements=[];var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){var children=MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag,null,obj);for(var x in children){if(x&&children[x]&&children[x].tagName&&(children[x].tagName.toLowerCase()==this.parent_container_tag.toLowerCase())){elements[elements.length]=children[x];}}}}}}
return elements;},hide_all_children:function(){var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){if(this.tree.node(parents[i]).has_children()){MochiKit.Signal.signal(obj,"hide_all_children");}}}}}},hide_child_containers_and_attach_events:function(){var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){if(this.tree.node(parents[i]).has_children()){MochiKit.Signal.connect(obj,"hide_all_children",MochiKit.Base.bind(function(parent_container_tag){var children=MochiKit.DOM.getElementsByTagAndClassName(parent_container_tag,null,this);for(var x in children){if(x&&children[x]&&children[x].tagName&&(children[x].tagName.toLowerCase()==parent_container_tag.toLowerCase())){children[x].style.display="none";MochiKit.Style.setOpacity(children[x],0.01);}}},obj,this.parent_container_tag));}
MochiKit.Signal.connect(obj,"onmouseenter",MochiKit.Base.bind(function(current_over){this.pending_hide_all_children=false;if(this.pending_hide_all_children_deferred&&this.pending_hide_all_children_deferred.cancel){this.pending_hide_all_children_deferred.cancel();}
current_over=MochiKit.DOM.getElement(current_over);var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(current_over&&i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]&&(this.tree.node(parents[i]).options["id"]!=current_over.id)){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj&&(!MochiKit.DOM.isChildNode(current_over,obj))){MochiKit.Signal.signal(obj,"hide_all_children");}}}}
var child=MochiKit.DOM.getElement(this.get_child_container(current_over));if(child&&(child.style.display=="none")){child.style.position="absolute";child.style.zIndex=10000;MochiKit.Style.setOpacity(child,1.0);child.style.display="";current_over.style.display="";current_over.parentNode.style.display="";var relative_to=this.relative_to(child);var child_pos=MochiKit.Style.getElementPosition(child);var child_dim=MochiKit.Style.getElementDimensions(child);var current_pos=MochiKit.Style.getElementPosition(current_over);var current_dim=MochiKit.Style.getElementDimensions(current_over);var currentpn_pos=MochiKit.Style.getElementPosition(current_over.parentNode);var currentpn_dim=MochiKit.Style.getElementDimensions(current_over.parentNode);var offset={"x":0,"y":0};var orientation=this.orientation;if(!this.is_first_level_menu_item(current_over)){orientation="vertical";}
switch(orientation){case"horizontal":offset.y=current_pos.y+current_dim.h;if(this.is_first_level_menu_item(current_over)){offset.x=current_pos.x;}else{offset.x=currentpn_pos.x;}
break;case"vertical":default:offset.y=current_pos.y;offset.x=currentpn_pos.x+currentpn_dim.w;break;}
if(relative_to&&(relative_to!=document.body)){var relative_to_pos=MochiKit.Style.getElementPosition(relative_to);offset.x-=relative_to_pos.x;offset.y-=relative_to_pos.y;}
if(this.is_first_level_menu_item(current_over)){offset.x+=this.first_level_offset.x;offset.y+=this.first_level_offset.y;}else{offset.x+=this.offset.x;offset.y+=this.offset.y;}
MochiKit.Style.setElementPosition(child,offset);var child_pos=MochiKit.Style.getElementPosition(child);var child_dim=MochiKit.Style.getElementDimensions(child);var scroll=Basis.scroll_coords();var viewport=MochiKit.Style.getViewportDimensions();if((child_pos.x+child_dim.w)>(viewport.w+scroll.x)){Basis.align_element_to_element(child,current_over.parentNode,"right_to_left",{"x":(((relative_to&&(relative_to!=document.body))?(-1*relative_to_pos.x):0)+(this.is_first_level_menu_item(current_over)?this.first_level_offset.x:this.offset.x)),"y":(((relative_to&&(relative_to!=document.body))?(-1*relative_to_pos.y):0)-(this.is_first_level_menu_item(current_over)?this.first_level_offset.y:this.offset.y))});}
child.style.display="";}},this,obj));MochiKit.Signal.signal(obj,"hide_all_children");}}}}
var obj=MochiKit.DOM.getElement(this.parent_element);if(obj){MochiKit.Signal.connect(obj,"onmouseleave",MochiKit.Base.bind(function(){this.pending_hide_all_children=true;this.pending_hide_all_children_deferred=MochiKit.Async.callLater(1,MochiKit.Base.bind(function(){if(this.pending_hide_all_children){this.hide_all_children();}},this));},this));}
var elements=this.get_all_submenu_container_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(elements[i],"Basis.menu.submenu");elements[i].style.position="absolute";elements[i].style.zIndex=10000;}}}
var elements=this.get_all_submenu_parent_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"Basis.menu.parent_item");}}}
var elements=this.get_top_level_menu_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(elements[i],"Basis.menu.top_level_item");switch(this.orientation){case"horizontal":MochiKit.DOM.addElementClass(elements[i],"Basis.float.left");if(elements[i].firstChild&&BrowserDetect&&BrowserDetect.browser&&(BrowserDetect.browser.indexOf("Explorer")!=-1)){MochiKit.DOM.addElementClass(elements[i].firstChild,"Basis.float.left.ie");}
break;}}}}
var elements=MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag,null,MochiKit.DOM.getElement(this.parent_element));if(elements.length>0){var element=MochiKit.DOM.getElement(elements[0]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"Basis.menu.top");}}},is_first_level_menu_item:function(element){element=MochiKit.DOM.getElement(element);if(element){if(this.tree.top_node().has_children()){var parents=this.tree.top_node().children;for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){if(this.tree.node(parents[i]).options["id"]==element.id){return true;}}}}}
return false;},node_has_children:function(element){var element=MochiKit.DOM.getElement(element);if(element){var children=Basis.get_child_elements_by_tag(element,this.child_tag);if(children&&(children.length>0)){return true;}}
return false;},parse_children:function(container){var container=MochiKit.DOM.getElement(container);if(container&&this.current_node&&this.current_node.is_node){var children=Basis.get_child_elements_by_tag(container,this.child_tag);if(children&&(children.length>0)){for(var i in children){if(i&&children[i]&&children[i].id){var added=this.current_node.add_node();this.tree.node(added).options={"id":children[i].id};var parent_container=this.get_child_container(children[i].id);if(parent_container&&this.node_has_children(parent_container)){var temp_node=this.current_node.index;this.current_node=this.tree.node(added);this.parse_children(parent_container);this.current_node=this.tree.node(temp_node);}}}}}},relative_to:function(element){element=MochiKit.DOM.getElement(element);if(element&&element.parentNode){element=element.parentNode;var tag=element.tagName;while((tag&&(tag.toLowerCase!="html"))&&(element.parentNode)){if(element&&element.style&&(element.style.position=="absolute")){return element;}
element=element.parentNode;tag=element.tagName;}}
return document.body;}}
Basis.interactive_mouse_handler=function(){this.__init__();};Basis.interactive_mouse_handler.prototype={__init__:function(){Basis.mouse_state={};MochiKit.Signal.connect(document,"onmousedown",function(e){Basis.mouse_state["button_left"]=e.mouse().button.left?"down":"up";Basis.mouse_state["button_middle"]=e.mouse().button.middle?"down":"up";Basis.mouse_state["button_right"]=e.mouse().button.right?"down":"up";});MochiKit.Signal.connect(document,"onmouseup",function(){Basis.mouse_state["button_left"]="up";Basis.mouse_state["button_middle"]="up";Basis.mouse_state["button_right"]="up";});MochiKit.Signal.connect(document,"onmousemove",function(e){Basis.mouse_state["screen_x"]=e.mouse().client.x;Basis.mouse_state["screen_y"]=e.mouse().client.y;Basis.mouse_state["page_x"]=e.mouse().page.x;Basis.mouse_state["page_y"]=e.mouse().page.y;});},button_state:function(button){return((Basis.mouse_state["button_"+button]==null)||(Basis.mouse_state["button_"+button]=="up"))?"up":"down";},coords:function(type){var type=(type=="screen")?"screen":"page";return{"x":Basis.mouse_state[type+"_x"],"y":Basis.mouse_state[type+"_y"]};}}
Basis.mouse_handler=new Basis.interactive_mouse_handler();;Basis.nested_sortables=function(){this.__init__();};Basis.nested_sortables.prototype={__init__:function(options){this.ul_tag="UL";this.ul_class=null;this.li_tag="LI";this.li_class=null;this.custom_ondrop=function(element,onto){};MochiKit.Base.updatetree(this,options);},build_nested_sortables:function(element,options){if(!options){var options={};}
var element=MochiKit.DOM.getElement(element);if(element){var uls=MochiKit.DOM.getElementsByTagAndClassName(this.ul_tag,this.ul_class,element);var lis=MochiKit.DOM.getElementsByTagAndClassName(this.li_tag,this.li_class,element);for(var i in lis){if(typeof(lis[i])!="function"){this.prepare_nested_sortable_element(lis[i],options);}}
uls=update([],uls);uls.reverse();for(var i in uls){if(typeof(uls[i])!="function"){var ul=uls[i];new MochiKit.Sortable.create(ul.id,MochiKit.Base.updatetree({"constraint":false,"containment":[ul],"hoverclass":"Basis.nested_sortables.hoverclass","starteffect":MochiKit.Base.noop,"endeffect":MochiKit.Base.noop,"tag":this.li_tag},options));}}}},compile:function(element,options){if(!options){var options={};}
var element=MochiKit.DOM.getElement(element);if(element&&element.id){this.build_nested_sortables(element.id,options);this.prepare_nested_sortable_element(element.id,options);}},ondrop:function(element,onto){var drop_container=onto.nextSibling;if(drop_container&&(drop_container.tagName.toUpperCase()==this.ul_tag.toUpperCase())&&(MochiKit.DOM.hasElementClass(drop_container,this.ul_class))){if(drop_container.firstChild){drop_container.insertBefore(element,drop_container.firstChild);}else{drop_container.appendChild(element);}
var drops=MochiKit.DragAndDrop.Droppables.drops;for(var i in drops){if(drops[i]&&drops[i].element&&(MochiKit.DOM.getElement(drops[i].element)==element)){if(drops[i].options&&drops[i].options.containment&&drops[i].options._containers){drops[i].options.containment=[drop_container];drops[i].options._containers=[drop_container];if(this.custom_ondrop&&(typeof(this.custom_ondrop)=="function")){this.custom_ondrop(element,onto);}}}}}},prepare_nested_sortable_element:function(element,options){if(!options){var options={};}
options["hide_dropzones"]=(options["hide_dropzones"]!=null)?options["hide_dropzones"]:true;var element=MochiKit.DOM.getElement(element);if(element&&element.tagName){var dropzone=MochiKit.DOM.getElement((element.id+"_d"));if(!dropzone){var dropzone=new MochiKit.DOM.DIV({"id":(element.id+"_d"),"class":"dropzone"});if(options["hide_dropzones"]){MochiKit.DOM.addElementClass(dropzone,"invisible");}
element.appendChild(dropzone);}
var innerUL=MochiKit.DOM.getFirstElementByTagAndClassName(this.ul_tag,this.ul_class,element);if(innerUL){element.insertBefore(dropzone,innerUL);}else{var container=MochiKit.DOM.createDOM(this.ul_tag,{"id":(element.id?(element.id+"_c"):null),"class":this.ul_class});element.appendChild(container);}
new MochiKit.DragAndDrop.Droppable((element.id+"_d"),{"ondrop":MochiKit.Base.bind(this.ondrop,this),"hoverclass":"drop-hover"});}}};Basis.application_state_handler=function(){this.__init__();};Basis.application_state_handler.prototype={__init__:function(){this.states={};this.state_tree=[];this.current_state=null;},add_state:function(state){this.states[state]={"key_handler_pointers":[],"key_handler_functions":[],"signal_handler_pointers":[],"signal_handler_functions":[]};},clear_states:function(){var states=this.states;this.__init__();this.states=states;},enter_state:function(state,push_state_tree){var push_state_tree=(push_state_tree!=null)?push_state_tree:true;if(this.current_state&&this.states[this.current_state]){this.exit_state(this.current_state,false);}
if(this.states[state]){this.current_state=state;if(push_state_tree){this.state_tree.push(state);}
var list=this.states[state];for(var i=0;i<list["key_handler_functions"].length;i++){this.states[state]["key_handler_pointers"].push(Basis.key_handler.register_key_event(list["key_handler_functions"][i]["key_string"],list["key_handler_functions"][i]["up_or_down"],list["key_handler_functions"][i]["func"]));}
for(var i=0;i<list["signal_handler_functions"].length;i++){this.states[state]["signal_handler_pointers"].push(Basis.signal_handler.connect(list["signal_handler_functions"][i]["element"],list["signal_handler_functions"][i]["event"],list["signal_handler_functions"][i]["func"],list["signal_handler_functions"][i]["commit"]));}}else{this.current_state=null;}},exit_state:function(state,pop_state_tree){var pop_state_tree=(pop_state_tree!=null)?pop_state_tree:true;if(this.states[state]&&this.states[state]["key_handler_pointers"]){var list=this.states[state]["key_handler_pointers"];for(var i=0;i<list.length;i++){Basis.key_handler.unregister_key_event(list[i]);}
this.states[state]["key_handler_pointers"]=[];var list=this.states[state]["signal_handler_pointers"];for(var i=0;i<list.length;i++){Basis.signal_handler.disconnect(list[i]);}
this.states[state]["signal_handler_pointers"]=[];if(pop_state_tree){this.state_tree.pop();}}},register_key_handler:function(state,key_string,up_or_down,func){if(this.states[state]&&this.states[state]["key_handler_functions"]){this.states[state]["key_handler_functions"].push({"key_string":(key_string!=null)?key_string:null,"up_or_down":(up_or_down!=null)?up_or_down:null,"func":(func!=null)?func:null});}},register_signal_handler:function(state,element,event,func,commit){if(this.states[state]&&this.states[state]["signal_handler_functions"]){this.states[state]["signal_handler_functions"].push({"element":(element!=null)?element:null,"event":(event!=null)?event:null,"func":(func!=null)?func:null,"commit":(commit!=null)?commit:null});}},revert:function(){this.exit_state(this.current_state);this.enter_state(this.state_tree[this.state_tree.length-1],false);}}
Basis.state_handler=new Basis.application_state_handler();;Basis.ticker=function(){this.__init__();};Basis.ticker.prototype={__init__:function(){this.interval=1;this.ticking=false;this.deferred=null;this.tick_do=function(){};},cancel:function(){if(this.ticking){this.ticking=false;if(this.deferred&&this.deferred.cancel){this.deferred.cancel();}
this.deferred=null;}},start:function(){if(!this.ticking){this.ticking=true;this.tick();}},tick:function(){if(this.ticking){this.deferred=MochiKit.Async.callLater(this.interval,MochiKit.Base.bind(function(){if(this.ticking){this.tick_do();this.tick();}},this));}}};;Basis.z_indexes={"modal_background":4999,"edit_bar_main_menu_menu":5001,"edit_bar_main_menu_button":5002};Basis.convert_textarea_to_richtextarea=function(element){var element=Basis.get_element(element);if(Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"mceEditor");element.id=element.id?element.id:Basis.anonymous_element_id();if(document.tinymce_loaded&&tinyMCE){tinyMCE.execCommand("mceAddControl",false,element.id);}}};Basis.english_timestamp=function(time,seconds_offset,return_self_updating_element){var seconds_offset=Basis.is_number(seconds_offset)?Basis._int(seconds_offset):0;var timestamp_text=partial(function(time,seconds_offset,text,return_self_updating_element){if(return_self_updating_element&&text&&time){var element=SPAN({"class":"Basis.english_timestamp"},text);element.time=time;element.seconds_offset=seconds_offset;if(Basis.signal_handler){Basis.signal_handler.connect(element,"onmouseenter",bind(function(){var now=Basis.time();var diff=(now-Basis.time(this.time));var timestamp=strftime("%b %e, %Y at %l:%M%P",Basis.time(now-diff-this.seconds_offset));this.firstChild.nodeValue=timestamp;},element),false);Basis.signal_handler.connect(element,"onmouseleave",bind(function(){var timestamp=Basis.english_timestamp(this.time,this.seconds_offset);this.firstChild.nodeValue=timestamp;},element),false);}
return element;}else{return text;}},time,seconds_offset);if(time){if(Basis.is_object(time)&&time.getYear){var time=time;}else if(Basis.is_number(time)){var time=new Date(time*1000);}}
if(time&&time.getYear){var now=Basis.time();now+=seconds_offset;var diff=(Basis.time(time)<now)?(now-Basis.time(time)):(Basis.time(time)-now);var midnight=Date(now*1000).split(" ");midnight=midnight[1]+" "+
midnight[2]+" "+
midnight[3]+" 00:00:00";var seconds_today=now-Basis.strtotime(midnight);if(diff<0){return timestamp_text("IN THE FUTURE!! (please notify an administrator)",return_self_updating_element,diff);}else if((diff>=0)&&(diff<60)){return timestamp_text((diff+" second"+((diff==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=60)&&(diff<(60*55))){var minutes=Math.round(diff/60);return timestamp_text((((minutes==1)?"A":minutes)+" minute"+((minutes==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(60*55))&&(diff<(60*60))){return timestamp_text("About an hour ago",return_self_updating_element,diff);}else if((diff>=(60*60))&&(diff<seconds_today)){var hours=Math.round(diff/(60*60));return timestamp_text((((hours==1)?"An":hours)+" hour"+((hours==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=seconds_today)&&(diff<(seconds_today+(60*60*24)))){return timestamp_text(("Yesterday at "+strftime("%l:%M%P",Basis.time(now-diff-seconds_offset))),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24)))&&(diff<(seconds_today+(60*60*24*7)))){var days=Math.round(diff/(60*60*24));return timestamp_text((days+" day"+((days==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*7)))&&(diff<(seconds_today+(60*60*24*14)))){return timestamp_text("Last week",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*14)))&&(diff<(seconds_today+(60*60*24*28)))){var weeks=Math.round(diff/(60*60*24*7));return timestamp_text((weeks+" week"+((weeks==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*28)))&&(diff<(seconds_today+(60*60*24*56)))){return timestamp_text("About a month ago",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*56)))&&(diff<(seconds_today+(60*60*24*365)))){var months=Math.round(diff/(60*60*24*30));return timestamp_text((months+" month"+((months==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*365)))&&(diff<(seconds_today+(60*60*24*365*2)))){return timestamp_text("Last year",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*365*2)))){var years=Math.round(diff/(60*60*24*365));return timestamp_text((years+" year"+((years==1)?"":"s")+" ago"),return_self_updating_element,diff);}}};Basis._string=function(str){return str?str:"";};Basis.make_element_fullscreen=function(element){var element=MochiKit.DOM.getElement(element);if(element){Basis.create_modal_background();var background=MochiKit.DOM.getElement("modal_background");if(background){var temp_id=element.id;var exit_fullscreen=partial(function(element,original_id){var substitute=MochiKit.DOM.getElement(original_id);if(substitute){var temp_id=element.id;element.id=substitute.id;substitute.id=temp_id;Basis.insert_after(substitute,element);Basis.remove_element(substitute);Basis.remove_element("modal_container");Basis.destroy_modal_background();MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_container_recenter);MochiKit.DOM.currentDocument().modal_container_recenter=null;MochiKit.Style.resizeConstrainedElements();}},element,temp_id);Basis.remove_element("modal_container");var substitute=DIV({"id":temp_id});element.id="Basis.make_element_fullscreen.substitute";MochiKit.Style.setElementDimensions(substitute,MochiKit.Style.getElementDimensions(element));Basis.insert_after(element,substitute);var minimize=IMG({"src":"images/images/default_icons/png/arrow_in.png","style":"cursor: pointer"});var modal_container=DIV({"id":"modal_container","style":"background-color: #FFFFFF; position: absolute; z-index: 1002; top: 0px; left: 0px; padding: 10px;"},DIV({"style":"text-align: right;"},minimize),element);Basis.register_size_constraints(modal_container,"100% - 20","100% - 20",null,false);document.body.appendChild(modal_container);Basis.signal_handler.connect(minimize,"onclick",exit_fullscreen);MochiKit.Style.resizeConstrainedElements();Basis.center_element(modal_container,true);if(Basis.state_handler){if(!Basis.state_handler.states["Basis.make_element_fullscreen"]){Basis.state_handler.add_state("Basis.make_element_fullscreen");Basis.state_handler.register_key_handler("Basis.make_element_fullscreen","KEY_ESCAPE","down",exit_fullscreen);}
Basis.state_handler.enter_state("Basis.make_element_fullscreen");}
if(!MochiKit.DOM.currentDocument().modal_container_recenter){MochiKit.DOM.currentDocument().modal_container_recenter=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(function(){Basis.center_element("modal_container",true);},this));}}}};Basis.create_modal_background=function(opacity,color,callbacks){var opacity=(opacity!=null)?opacity:0.50;var color=(color!=null)?color:"#000000";var callbacks=Basis.is_object(callbacks)?callbacks:{};if(!MochiKit.DOM.currentDocument().modal_background_resize){MochiKit.DOM.currentDocument().modal_background_resize=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(partial(function(opacity,color){Basis.create_modal_background(opacity,color);},opacity,color),this));}
if(!MochiKit.DOM.currentDocument().modal_background_rescroll){MochiKit.DOM.currentDocument().modal_background_rescroll=MochiKit.Signal.connect(window,"onscroll",MochiKit.Base.bind(partial(function(opacity,color){Basis.create_modal_background(opacity,color);},opacity,color),this));}
var obj=MochiKit.DOM.getElement("modal_background");if(!obj){var element=DIV({"id":"modal_background","style":"display: none; background-color: "+color+"; position: absolute; z-index: z-index: "+Basis.z_indexes["modal_background"]+"; top: 0px; left: 0px;"});document.body.appendChild(element);MochiKit.Style.setOpacity(element,0.0);}
var obj=MochiKit.DOM.getElement("modal_background");if(obj){var screend={"w":MochiKit.Style.getElementDimensions(MochiKit.DOM.currentDocument().body).w,"h":MochiKit.Style.getViewportDimensions().h};var scroll=Basis.scroll_coords();obj.style.width=screend.w;obj.style.height=screend.h+(Basis.create_edit_bar?-30:0);MochiKit.Style.setElementPosition(obj,{"x":scroll.x,"y":scroll.y});if(MochiKit.Style.getStyle(obj,"opacity")<opacity){MochiKit.Style.setOpacity(obj,0.0);obj.style.display="";return MochiKit.Visual.appear(obj,{"duration":0.50,"to":opacity,"beforeStart":Basis.is_function(callbacks["beforeStart"])?callbacks["beforeStart"]:function(){},"beforeSetup":Basis.is_function(callbacks["beforeSetup"])?callbacks["beforeSetup"]:function(){},"beforeUpdate":Basis.is_function(callbacks["beforeUpdate"])?callbacks["beforeUpdate"]:function(){},"afterUpdate":Basis.is_function(callbacks["afterUpdate"])?callbacks["afterUpdate"]:function(){},"beforeFinish":Basis.is_function(callbacks["beforeFinish"])?callbacks["beforeFinish"]:function(){},"afterFinish":Basis.is_function(callbacks["afterFinish"])?callbacks["afterFinish"]:function(){}});}}
return(new MochiKit.Async.Deferred());};Basis.destroy_modal_background=function(fade,callbacks){var fade=(fade===false)?false:true;var callbacks=Basis.is_object(callbacks)?callbacks:{};var obj=MochiKit.DOM.getElement("modal_background");if(obj){var after_finish=partial(function(obj){MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_background_resize);MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_background_rescroll);MochiKit.DOM.currentDocument().modal_background_resize=null;Basis.remove_element(obj);},obj);if(fade){MochiKit.Visual.fade(obj,{"duration":0.5,"from":0.5,"beforeStart":Basis.is_function(callbacks["beforeStart"])?callbacks["beforeStart"]:function(){},"beforeSetup":Basis.is_function(callbacks["beforeSetup"])?callbacks["beforeSetup"]:function(){},"beforeUpdate":Basis.is_function(callbacks["beforeUpdate"])?callbacks["beforeUpdate"]:function(){},"afterUpdate":Basis.is_function(callbacks["afterUpdate"])?callbacks["afterUpdate"]:function(){},"beforeFinish":Basis.is_function(callbacks["beforeFinish"])?callbacks["beforeFinish"]:function(){},"afterFinish":after_finish});}else{after_finish();}}};Basis.create_edit_bar_alert_box=function(content,color,width,height,is_html){var content=content?content:Basis.nbsp();var color=(color=="white")?"white":"dark_gray";var width=Basis.is_number(width)?Basis.filter_number(width):75;var height=Basis.is_number(height)?Basis.filter_number(height):30;var content_td=TD({"height":height,"width":width,"style":"background-color: "+((color=="dark_gray")?"#595959":"#FFFFFF")+"; padding: 5px; font-family: verdana; font-size: 9pt; color: "+((color=="dark_gray")?"#FFFFFF":"#595959")+"; font-weight: bold; vertical-align: middle;"},content);if(is_html){content_td.innerHTML=content;}
var table=TABLE({"width":width+4,"height":height+8,"style":("height: "+(height+8)+"px; width: "+(width+4)+"px;"),"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,content_td,TD(null,TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"100%","height":"100%"},TBODY(null,TR(null,TD({"height":"7","width":"4","style":"vertical-align: bottom;"},IMG({"src":"images/images/alert_box/right_top.png"}))),TR(null,TD({"style":"background-image: url(images/images/alert_box/right_vertical.png); background-repeat: repeat-y;"},IMG({"src":"images/images/spacer.gif"}))))))),TR(null,TD(null,TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"height":"8","width":"6","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_left.png"})),TD({"height":"8","width":"6","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_pointer."+color+".png"})),TD({"style":"background-image: url(images/images/alert_box/bottom_horizontal.png); background-repeat: repeat-x;"},IMG({"src":"images/images/spacer.gif"})))))),TD({"width":"4","height":"8","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_right.png"})))));return table;};Basis.create_edit_bar=function(){if(Basis.edit_bar_created){return;}
var create_edit_bar_tooltip=function(element,content,width,height){Basis.signal_handler.connect(element,"onmouseenter",bind(partial(function(width,height){if(Basis.misc_vars.edit_bar_alert_box){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);}
Basis.misc_vars.edit_bar_alert_box=Basis.create_edit_bar_alert_box(content,(MochiKit.DOM.getElement("modal_background")?"white":"dark_gray"),width,height);Basis.align_element_to_element(Basis.misc_vars.edit_bar_alert_box,this,"left_to_left",{"x":4});Basis.misc_vars.edit_bar_alert_box.style.top=null;Basis.misc_vars.edit_bar_alert_box.style.position="fixed";Basis.misc_vars.edit_bar_alert_box.style.bottom=(getViewportDimensions().h+Basis.scroll_coords().y-getElementPosition(this).y+5)
document.body.appendChild(Basis.misc_vars.edit_bar_alert_box);},width,height),element),false);Basis.signal_handler.connect(element,"onmouseleave",function(){if(Basis.misc_vars.edit_bar_alert_box){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);}},false);};var get=Basis.get_GET();var mode=(get["edit_page"]=="true")?"edit_page":"default";var list=[];switch(mode){case"default":var edit_page_button=INPUT({"type":"button","value":"Edit This Page","class":"gfx_but_default","style":"background-image: url(images/images/page.gif); background-color: transparent;"});edit_page_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_page":"true"}});};create_edit_bar_tooltip(edit_page_button,"Click here to make changes to this page.",285);list.push(edit_page_button);break;case"edit_page":var edit_page_button=INPUT({"type":"button","value":"Go Back","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/arrow_turn_left.png); background-color: transparent;"});edit_page_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_page":null,"preview":null,"edit_content_elements":null,"reorder_content_elements":null,"edit_html":null}});};list.push(edit_page_button);if(get["preview"]=="true"){var preview_button=INPUT({"type":"button","value":"Exit Preview Mode","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.grey.png); background-color: transparent;"});preview_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"preview":null}});};list.push(preview_button);}else{var preview_button=INPUT({"type":"button","value":"Preview Mode","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.png); background-color: transparent;"});preview_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"preview":"true"}});};list.push(preview_button);}
if(get["edit_content_elements"]!="true"){var edit_content_elements_button=INPUT({"type":"button","value":"Edit Content Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layout_content.png); background-color: transparent;"});edit_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":null}});};list.push(edit_content_elements_button);}else{var edit_content_elements_button=INPUT({"type":"button","value":"I'm Done Editing","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layout_delete.png); background-color: transparent;"});edit_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":null,"reorder_content_elements":null}});};list.push(edit_content_elements_button);if(get["reorder_content_elements"]!="true"){var rearrange_content_elements_button=INPUT({"type":"button","value":"Re-Arrange Content Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layers.png); background-color: transparent;"});rearrange_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":"true"}});};list.push(rearrange_content_elements_button);}else{var rearrange_content_elements_button=INPUT({"type":"button","value":"I'm Done Re-Arranging","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layers_delete.png); background-color: transparent;"});rearrange_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":null}});};list.push(rearrange_content_elements_button);}}
if(get["edit_html"]!="true"){var edit_html_elements_button=INPUT({"type":"button","value":"Edit HTML Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/html.png); background-color: transparent;"});edit_html_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_html":"true"}});};list.push(edit_html_elements_button);}else{var edit_html_elements_button=INPUT({"type":"button","value":"I'm Done Editing HTML","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/html_delete.png); background-color: transparent;"});edit_html_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_html":null}});};list.push(edit_html_elements_button);}
break;}
var logout_button=INPUT({"type":"button","value":"Log Out","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/cross.png); background-color: transparent;"});logout_button.onclick=function(){if(confirm("Are you sure you want to log out?")){window.location.href=Basis.preserve_url({"keys_add":{"logout":"true"}});}};list.push(logout_button);var home_button=INPUT({"type":"button","value":"Menu","class":"gfx_but_default","style":"border-left: 1px solid #e5e5e5; border-right: 1px solid #e5e5e5; position: relative; z-index: "+Basis.z_indexes["edit_bar_main_menu_button"]+"; background-image: url(images/images/default_icons/png/house.png); background-color: transparent;"});var home_menu=DIV({"style":"display: none; height: 195px; width: 225px; border: 1px solid #888888; z-index: "+Basis.z_indexes["edit_bar_main_menu_menu"]+"; position: fixed; left: 3px; background-color: #ffffff; font-size: 10px; font-family: verdana;"},DIV({"style":"background-color: #aaaaaa; border-bottom: 1px solid #888888; font-weight: bold; padding: 3px; color: #ffffff;"},"Quick Links"),DIV({"style":"padding: 5px;"},DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/green_badge.gif","border":"0"}),A({"href":"#","target":"","class":"Basis.edit_tools.menu_href","onclick":"Basis.delete_cookie('do_not_show_quick_links_this_session'); Basis.set_cookie('show_quick_links_again_this_session', 'true'); window.location.href = '' + window.location.href; return false;"},"Go Back To My Easy Menu")),HR({"size":"1"}),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/record_add.gif","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=add_a_page"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Add A Page To My Website")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/color_wheel.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=website_look_and_feel"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Change How My Website Looks")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/tree-folder-open.gif","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=file_manager"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Upload Files For Sharing")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/lorry.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/stats"),"target":"stats","target":"stats","class":"Basis.edit_tools.menu_href"},"Show My Website's Traffic")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/wand.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Go To The Admin Section")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/help.png","border":"0"}),A({"href":"javascript: return false;","target":"","class":"Basis.edit_tools.menu_href"},"Help! Where Do I Begin?"))));home_button.onclick=partial(function(menu,button){menu.style.display=(menu.style.display=="none")?"":"none";button.style.borderLeft=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.borderRight=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.borderBottom=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.backgroundColor=(menu.style.display=="none")?"transparent":"#FFFFFF";button.style.position="relative";menu.style.bottom=(getViewportDimensions().h+Basis.scroll_coords().y-getElementPosition(button).y-1)},home_menu,home_button);create_edit_bar_tooltip(home_button,"Quick Links",90);list.push(home_button);for(var i=0;i<list.length;i++){if(list[i]){list[i].onmouseover=function(){this.style.textDecoration="underline";};list[i].onmouseout=function(){this.style.textDecoration="none";};}}
switch(mode){case"default":var bar=DIV({"id":"Basis.edit_bar","style":"position: fixed; bottom: 0; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; padding: 0px; height: 30px; width: 100%;"},TABLE({"style":"border-top: 1px solid #ffffff;","width":"100%"},TBODY(null,TR(null,TD({"width":"50%"},home_button,edit_page_button),TD({"style":"text-align: center;"},null),TD({"width":"50%","style":"text-align: right;"},logout_button)))));break;case"edit_page":var bar=DIV({"id":"Basis.edit_bar","style":"position: fixed; bottom: 0; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; padding: 0px; height: 30px; width: 100%; z-index: "+Basis.z_indexes["edit_bar"]},TABLE({"style":"border-top: 1px solid #ffffff;","width":"100%"},TBODY(null,TR(null,TD({"width":"50%"},home_button,edit_page_button,edit_content_elements_button,rearrange_content_elements_button),TD({"style":"text-align: center;"},preview_button),TD({"width":"50%","style":"text-align: right;"},edit_html_elements_button)))));break;}
document.body.style.paddingBottom="30px";document.body.appendChild(bar);document.body.appendChild(home_menu);Basis.edit_bar_created=true;};Basis.get_GET=function(specific_var){var vars=[],hash;var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');for(var i=0;i<hashes.length;i++){hash=hashes[i].split("=");vars.push(hash[0]);vars[hash[0]]=hash[1];}
if(specific_var&&vars[specific_var]){return vars[specific_var];}else if(specific_var&&!vars[specific_var]){return null;}
return vars;};Basis.highlight_constrained_elements=function(){for(var i=0;i<MochiKit.Style.constrainedElements.length;i++){Basis.get_element(MochiKit.Style.constrainedElements[i]).style.border="3px dashed #00ff00";Basis.get_element(MochiKit.Style.constrainedElements[i]).style.margin="3px";}};Basis.delete_cookie=function(name){var today=new Date();today.setTime(today.getTime());var expires_date=new Date(today.getTime()-(60*60*24));document.cookie=((name)+"="+escape("test"))+
(";expires="+expires_date.toGMTString());};Basis.check_for_cookies=function(){Basis.set_cookie("check_for_cookies","test",1);var retval=(Basis.get_cookie("check_for_cookies")=="test")?true:false;if(retval){Basis.delete_cookie("check_for_cookies");return true;}
return false;};Basis.get_flash_version=function(){if(GetSwfVer&&Basis.is_function(GetSwfVer)){return GetSwfVer();}};Basis.get_formfield_value=function(element){var retval=null;var element=Basis.get_element(element);if(element&&Basis.is_formfield(element)){switch(element.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":retval=element.value;break;case"SELECT":retval=element.options[element.selectedIndex].value;break;}}
return retval;};Basis.strtotime=function(str,now){if(!str){return null;}
return(str=="0000-00-00")?null:Basis._int(strtotime(str,now));};Basis.microtime=function(get_as_float){var now=(new Date().getTime())/1000;var s=parseInt(now,10);return(get_as_float)?now:(Math.round((now-s)*1000)/1000)+' '+s;};Basis.time=function(date){var date_obj=new Date();if(Basis.is_number(date)){date_obj.setTime(date*1000);}else if(Basis.is_object(date)&&date.getYear){date_obj=date;}
return Basis.parse_number((Date.parse(date_obj)/1000).toString());};Basis.add_element_class=function(element,class_name){var element=Basis.get_element(element);if(element&&class_name){MochiKit.DOM.addElementClass(element,class_name);}};Basis.remove_element_class=function(element,class_name){var element=Basis.get_element(element);if(element&&class_name){MochiKit.DOM.removeElementClass(element,class_name);}};Basis.textarea=function(options,ivalue){var options=options?options:{};if(BrowserDetect.browser=="Explorer"){options["value"]=ivalue;}
var element=TEXTAREA(options,(BrowserDetect.browser=="Explorer")?null:ivalue);return element;};Basis.get_elements_by_tag_names=function(list,obj){var obj=obj?obj:document;var tag_names=MochiKit.Base.isArrayLike(list)?list:list.split(",");var result_array=[];for(var i=0;i<tag_names.length;i++){var tags=obj.getElementsByTagName(tag_names[i]);for(var j=0;j<tags.length;j++){result_array.push(tags[j]);}}
var test_node=result_array[0];if(test_node){if(test_node.sourceIndex){result_array.sort(function(a,b){return a.sourceIndex-b.sourceIndex;});}else if(test_node.compare_document_position){result_array.sort(function(a,b){return 3-(a.compare_document_position(b)&6);});}}
return result_array;};Basis.set_input_descriptive_text=function(field,description){var default_action=partial(function(field,description,focus_or_blur){if(Basis.is_element(field)){if((field.value=="")||(field.value==description)){if(focus_or_blur=="blur"){field.style.color="#aaaaaa";field.style.textDecoration="italic";field.value=description;}else{field.style.color="#000000";field.style.textDecoration="";field.value="";}}else{field.style.color="#000000";field.style.textDecoration="";}}},field,description);var focus_action=partial(function(field,description,focus_or_blur,default_action){default_action(focus_or_blur);},field,description,"focus",default_action);var blur_action=partial(function(field,description,focus_or_blur,default_action){default_action(focus_or_blur);},field,description,"blur",default_action);field.onfocus=focus_action;field.onblur=blur_action;default_action("blur");};Basis.set_tab_indexes=function(list){var field_types=["input","select","textarea"];var start_index=Basis.set_tab_indexes.start_index;var offset=0;if(list&&(list.length>0)){for(var i=0;i<list.length;i++){var obj=Basis.get_element(list[i]);if(obj){var sub_objs=Basis.get_elements_by_tag_names(field_types,obj);Basis.set_tab_indexes(sub_objs,Basis.set_tab_indexes.start_index);if(field_types.indexOf(obj.tagName.toLowerCase())>-1){Basis.set_tab_indexes.start_index++;obj.tabIndex=Basis.set_tab_indexes.start_index;}}}}}
Basis.set_tab_indexes.start_index=0;Basis.select_get_selected_value=function(obj){var obj=Basis.get_element(obj);if(obj&&(obj.options.length>0)){return obj.options[obj.selectedIndex].value;}};Basis.select_get_selected_text=function(obj){var obj=Basis.get_element(obj);if(obj&&(obj.options.length>0)){return obj.options[obj.selectedIndex].text;}};Basis.days_in_month=function(month,year){return(32-new Date(year,(month-1),32).getDate());};Basis.create_date_formfield=function(initial_date,is_optional,year_start,year_end){var load_date=Basis.is_number(initial_date)?(initial_date*1000):Basis.strtotime(initial_date);load_date=Basis.is_number(load_date)?(load_date*1000):(new Date().getTime());var is_optional=(is_optional===false)?false:true;var date=new Date(load_date);var year_start=Basis.is_number(year_start)?year_start:(0+(new Date().getFullYear())-5);var year_end=Basis.is_number(year_end)?year_end:(0+(new Date().getFullYear())+5);if(year_end<year_start){year_end=year_start;}
var formfield=DIV({"class":"Basis.date"});var is_collapsed=false;if(is_optional){var is_collapsed=(initial_date&&(initial_date!="0000-00-00"))?false:true;}
formfield.is_collapsed=is_collapsed;formfield.on_update=function(){};Basis.signal_handler.connect(formfield,"onchange",bind(function(){if(Basis.is_function(this.on_update)){this.on_update();}},formfield),false);formfield.set_up_auto_save=bind(function(options,on_success){this.on_update=partial(function(options,on_success,date_element){var to_post=options?options:{};to_post["to"]=date_element.get_date();var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";as.on_success=Basis.is_function(on_success)?on_success:function(req){window.status="Done";};return as.post({"to_post":to_post});},options,on_success,this);},formfield);var ready=false;while(!ready){var rrv_run=Basis._int((Math.random()*100));var findex=Basis._int((Math.random()*100));if(!Basis.get_element("calendar_"+rrv_run+"_"+findex)){ready=true;}}
var images={"cancel":new Image(),"enable":new Image(),"calendar":new Image()};images.cancel.src="http://www.sitequarters.com/images/images/red_x.gif";images.enable.src="http://www.sitequarters.com/images/images/green_check.gif";images.calendar.src="http://www.sitequarters.com/images/images/calendar.gif";var fields={"month":SELECT(),"day":SELECT(),"year":SELECT()};var calendar=new Basis.bcalendar();calendar.variable_name="calendar";formfield.type="date";formfield.date=date;formfield.images=images;formfield.fields=fields;formfield.calendar=calendar;formfield.is_optional=is_optional;formfield.select_date=bind(function(){Basis.select_select_item_by_value(this.fields.month,(this.date.getMonth()+1));Basis.select_select_item_by_value(this.fields.day,this.date.getDate());Basis.select_select_item_by_value(this.fields.year,(0+this.date.getFullYear()));},formfield);formfield.get_date=bind(function(){if(this.is_collapsed&&this.is_optional){return"0000-00-00";}else{var year=(0+this.date.getFullYear());var month=(this.date.getMonth()+1);var day=this.date.getDate();month=(month<10)?("0"+month):month;day=(day<10)?("0"+day):day;return(year+"-"+month+"-"+day);}},formfield);formfield.set_date=bind(function(date){if(date&&(date!="0000-00-00")){var date=date.split("-");this.date.setDate(Basis._int(date[2]));this.date.setMonth(Basis._int(date[1])-1);this.date.setYear(date[0]);this.select_date();this.update_date_fields();if(this.is_optional){this.is_collapsed=false;}}},formfield);formfield.update_date_fields=bind(function(){var days_in_new_month=Basis.days_in_month((Basis._int(Basis.select_get_selected_value(this.fields.month))-0),Basis._int(Basis.select_get_selected_value(this.fields.year)));if(Basis.select_get_selected_value(this.fields.day)>days_in_new_month){Basis.select_select_item_by_value(this.fields.day,days_in_new_month);}
this.date.setDate(Basis.select_get_selected_value(this.fields.day));this.date.setMonth(Basis.select_get_selected_value(this.fields.month)-1);this.date.setYear(Basis.select_get_selected_value(this.fields.year));this.calendar.year=(0+this.date.getFullYear());this.calendar.day=this.date.getDate();this.calendar.month=(this.date.getMonth()+1);this.fields.day.options.length=0;for(var x=0;x<Basis.days_in_month((this.date.getMonth()+1),(0+this.date.getFullYear()));x++){Basis.select_add_option(this.fields.day,(x+1),(x+1));}
Basis.select_select_item_by_value(this.fields.month,this.calendar.month);Basis.select_select_item_by_value(this.fields.day,this.calendar.day);Basis.select_select_item_by_value(this.fields.year,this.calendar.year);if(this.calendar_image.popup&&this.calendar_image.popup.date){this.calendar_image.popup.date=this.date;this.calendar_image.popup.grid_date=this.date;this.calendar_image.popup.compile();}
Basis.signal_handler.execute_interactive_element(this,"onchange");},formfield);MochiKit.Signal.connect(formfield.fields.month,"onchange",formfield.update_date_fields);MochiKit.Signal.connect(formfield.fields.day,"onchange",formfield.update_date_fields);MochiKit.Signal.connect(formfield.fields.year,"onchange",formfield.update_date_fields);Basis.select_add_options(fields.month,{"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"});for(var x=0;x<(year_end-year_start);x++){Basis.select_add_option(fields.year,(year_start+x),(year_start+x));}
for(var x=0;x<Basis.days_in_month((formfield.date.getMonth()+1),(0+formfield.date.getFullYear()));x++){Basis.select_add_option(fields.day,(x+1),(x+1));}
Basis.select_select_item_by_value(fields.month,(date.getMonth()+1));Basis.select_select_item_by_value(fields.day,date.getDate());Basis.select_select_item_by_value(fields.year,(0+date.getFullYear()));var calendar_image=IMG();calendar_image.src=formfield.images.calendar.src;calendar_image.style.cursor="pointer";calendar_image.onclick=bind(partial(function(calendar_image){if(calendar_image.popup){Basis.remove_element(calendar_image.popup);calendar_image.popup=null;Basis.updated_live_dom();}else{var popup=Basis.calendar_popup(this.date,this);document.body.appendChild(popup);popup.compile();Basis.align_element_to_element(popup,calendar_image,"top_to_top");Basis.align_element_to_element(popup,calendar_image,"left_to_right",{"x":3});calendar_image.popup=popup;}},calendar_image),formfield);var date_fields=DIV({"style":"display: "+(is_collapsed?"none":"block")},TABLE(null,TBODY(null,TR(null,TD(null,formfield.fields.month,formfield.fields.day,", ",formfield.fields.year),TD(null,calendar_image)))));var optional_date_toggle=DIV({"style":"cursor: pointer;"},"Optional Date");var optional_date_toggle_image=IMG({"style":"cursor: pointer;"});optional_date_toggle.style.display=is_collapsed?"":"none";optional_date_toggle_image.src=is_collapsed?formfield.images.enable.src:formfield.images.cancel.src;var toggle=bind(partial(function(optional_date_toggle,date_fields,optional_date_toggle_image,on_off){if(this.is_collapsed||(on_off=="on")){optional_date_toggle.style.display="none";date_fields.style.display="";optional_date_toggle_image.src=this.images.cancel.src;this.is_collapsed=false;}else{optional_date_toggle.style.display="";date_fields.style.display="none";optional_date_toggle_image.src=this.images.enable.src;this.is_collapsed=true;}
this.update_date_fields();},optional_date_toggle,date_fields,optional_date_toggle_image),formfield);optional_date_toggle.onclick=toggle;optional_date_toggle_image.onclick=toggle;formfield.toggle=toggle;formfield.calendar_image=calendar_image;formfield.update_date_fields();if(is_optional){formfield.appendChild(TABLE({"cellspacing":"0","cellpadding":"0","border":"0"},TBODY(null,TR(null,TD(null,optional_date_toggle,date_fields),TD(null,optional_date_toggle_image)))));}else{formfield.appendChild(date_fields);}
return formfield;};Basis.calendar_popup=function(date,linked_formfield){var date=date?date:new Date();var date=new Date(date);var grid_date=new Date(date);var popup=DIV({"class":"bcalendar_container","style":"position: absolute; top: 0px; left: 0px; display: block;"});popup.linked_formfield=linked_formfield?linked_formfield:{};var images={"back":new Image(),"next":new Image()};images.back.src="http://www.sitequarters.com/tasklist/images/images/prev_on.gif";images.next.src="http://www.sitequarters.com/tasklist/images/images/next_on.gif";images.back.style.cursor="pointer";images.next.style.cursor="pointer";images.back.onclick=bind(function(){var month=this.grid_date.getMonth();var year=(0+this.grid_date.getFullYear());if(month==0){this.grid_date.setYear(year-1);this.grid_date.setMonth(11);}else{this.grid_date.setMonth(month-1);}
this.compile();},popup);images.next.onclick=bind(function(){var month=this.grid_date.getMonth();var year=(0+this.grid_date.getFullYear());if(month==11){this.grid_date.setYear(year+1);this.grid_date.setMonth(0);}else{this.grid_date.setMonth(month+1);}
this.compile();},popup);popup.date=date;popup.grid_date=grid_date;popup.images=images;popup.build_grid=bind(function(){var date=new Date(this.grid_date);date.setDate(1);var grid={0:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},1:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},2:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},3:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},4:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},5:{0:"",1:"",2:"",3:"",4:"",5:"",6:""}};var months={"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May","6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"};var start_day=date.getDay();var curr_day=1;var num_days=Basis.days_in_month((date.getMonth()+1),(0+date.getFullYear()));for(var x=0;x<6;x++){for(var y=0;y<7;y++){if(x==0){if(y>=start_day){if(curr_day<=num_days){grid[x][y]=curr_day;curr_day++;}}}else{if(curr_day<=num_days){grid[x][y]=curr_day;curr_day++;}}}}
return grid;},popup);popup.build_table=bind(function(){var months={"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"};var grid=this.build_grid();var table=TABLE(null,TBODY(null,TR(null,TD({"style":"text-align: left;"},this.images.back),TD({"colspan":"5","style":"text-align: center; font-weight: bold;"},months[this.grid_date.getMonth()+1],Basis.nbsp(),(0+this.grid_date.getFullYear())),TD({"style":"text-align: right;"},this.images.next)),TR(null,TD(null,"Sun"),TD(null,"Mon"),TD(null,"Tue"),TD(null,"Wed"),TD(null,"Thu"),TD(null,"Fri"),TD(null,"Sat"))));for(var x=0;x<6;x++){var tr=TR();for(var y=0;y<7;y++){var td=TD(null,grid[x][y]?grid[x][y]:Basis.nbsp());if(grid[x][y]){td.style.cursor="pointer";td.onclick=bind(partial(function(td){this.date=new Date(this.grid_date);this.date.setDate(Basis._int(td.innerHTML.trim()));if(this.linked_formfield&&this.linked_formfield.update_date_fields){this.linked_formfield.date=new Date(this.date);this.linked_formfield.select_date();this.linked_formfield.update_date_fields();this.linked_formfield.calendar_image.onclick();}},td),this);}
if((grid[x][y]==this.date.getDate())&&(this.date.getFullYear()==this.grid_date.getFullYear())&&(this.date.getMonth()==this.grid_date.getMonth())){MochiKit.DOM.addElementClass(td,"chosen");}
if((grid[x][y]==(new Date()).getDate())&&(this.grid_date.getFullYear()==(new Date()).getFullYear())&&(this.grid_date.getMonth()==(new Date()).getMonth())){MochiKit.DOM.addElementClass(td,"today");}
Basis.signal_handler.connect(td,"onmouseenter",bind(partial(function(td){if(td.innerHTML.trim()&&(Basis._int(td.innerHTML)!=this.date.getDate())){MochiKit.DOM.addElementClass(td,"td_mouseover");}},td),this),false);Basis.signal_handler.connect(td,"onmouseleave",bind(partial(function(td){if(td.innerHTML.trim()&&(Basis._int(td.innerHTML)!=this.date.getDate())){MochiKit.DOM.removeElementClass(td,"td_mouseover");}},td),this),false);tr.appendChild(td);}
if((x==0)||((x>0)&&(grid[x][0]))){table.getElementsByTagName("tbody")[0].appendChild(tr);}}
return table;},popup);popup.compile=bind(function(updated_live_dom){Basis.remove_children(this);this.appendChild(this.build_table());Basis.updated_live_dom();},popup);return popup;};Basis.filter_numbers=function(arr){var numbers=[];if(arr){for(var i in arr){if(!Basis.is_function(arr[i])&&Basis.is_number(arr[i])){numbers.push(arr[i]);}}}
return numbers;};Basis.strip_nonstandard_ascii=function(str){if(str){var tstr="";for(var x=0;x<str.length;x++){tstr+=(((str.charAt(x).charCodeAt(0)>=0)&&(str.charAt(x).charCodeAt(0)<=128))?str.charAt(x):"");}
return tstr;}
return"";};Basis.filter_nonstandard_ascii=function(str){var replace={};replace[("’").charCodeAt(0)]=("'").charCodeAt(0);if(str){var tstr="";for(var x=0;x<str.length;x++){var idx=str.charAt(x).charCodeAt(0);tstr+=(replace[idx]!=null)?String.fromCharCode(replace[idx]):str.charAt(x);}
return Basis.strip_nonstandard_ascii(tstr);}
return"";};Basis.text=function(text){return(text==null)?"":text;};Basis.nbsp=function(){var span=SPAN();span.innerHTML="&nbsp;";return span;};Basis.remove_element=function(element){var garbage_bin=MochiKit.DOM.getElement("IELeakGarbageBin");if(!garbage_bin){var garbage_bin=new MochiKit.DOM.DIV({"id":"IELeakGarbageBin","style":"display: none;"});document.body.appendChild(garbage_bin);}
var element=Basis.get_element(element);if(element&&garbage_bin){garbage_bin.appendChild(element);garbage_bin.innerHTML="";Basis.signal_handler.purge_orphaned_signals();}}
Basis.updated_live_dom=function(){if(Basis.signal_handler&&!Basis.signal_handler.blocked){Basis.signal_handler.commit_pending_elements();}};Basis.block_updating_live_dom=function(){Basis.signal_handler.blocked=true;};Basis.unblock_updating_live_dom=function(){Basis.signal_handler.blocked=false;};function addslashes(str){str=str?str:"";return(str+'').replace(/([\\"'])/g,"\\$1").replace(/\0/g,"\\0");}
function stripslashes(str){str=str?str:"";return(str+'').replace(/\0/g,'0').replace(/\\([\\'"])/g,'$1');}
function array2json(arr){var parts=[];var is_list=(Object.prototype.toString.apply(arr)==='[object Array]');for(var key in arr){var value=arr[key];if(value!==undefined){if(typeof value=="object"){if(is_list)parts.push(array2json(value));else parts.push('"'+key+'":'+array2json(value));}else if(typeof value=="function"){}else{var str="";if(!is_list)str='"'+key+'":';if(typeof value=="number")str+=value;else if(value===false)str+='false';else if(value===true)str+='true';else str+='"'+Basis.filter_nonstandard_ascii(value).replace(/"/g,"\\\"").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+'"';parts.push(str);}}}
var json="";for(var i in parts){if(i&&parts[i]&&!Basis.is_function(parts[i])){json+=(parts[i]+",");}}
if(json.substring(json.length-1)==","){json=json.substring(0,json.length-1);}
if(is_list)return'['+json+']';return'{'+json+'}';}
MochiKit.Base.serializeJSON=function(o){return array2json(o);};Basis.array_sequentialize=function(arr){var new_array=[];for(var i in arr){if(arr[i]&&!Basis.is_function(arr[i])){new_array.push(arr[i]);}}
return new_array;};Basis.is_element_visible=function(element){var element=Basis.get_element(element);if(element&&(element.style.display!="none")){var parent=element.parentNode;while(parent&&(parent!=document.body.parentNode)){if(parent.style.display=="none"){return false;}
parent=parent.parentNode;}
return true;}
return false;};Basis.anonymous_element_ids={};Basis.anonymous_element_id=function(){var x=MochiKit.DOM.unique_ids_assigned+1;var found=false;while(!found){var id=("element_"+x);var element=Basis.get_element(id);if(!element&&!Basis.anonymous_element_ids[id]){found=true;Basis.anonymous_element_ids[id]=true;MochiKit.DOM.unique_ids_assigned++;return id;}
x++;}};Basis.make_text_element_editable=function(element,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=Basis.get_element(element);if(element){element.editable_element={};element.editable_element.editing=false;element.editable_element.entered=false;element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.original_value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editable_element.scaffold_options=scaffold_options;element.editable_element.set_up_interaction=bind(function(input){var input=Basis.is_formfield(this)?this:this.editable_element.input;if(!input){log("AAAAH NO INPUT");return;}
Basis.signal_handler.connect(input,"onclick.greedy.swallow",bind(partial(function(input){this.editable_element.original_value=input.value;this.editable_element.editing=true;},input),this),this.editable_element.commit);input.onfocus=bind(partial(function(input){this.editable_element.original_value=input.value;this.editable_element.editing=true;},input),this);input.onblur=bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",bind(function(){this.editable_element.cancel_save_editable_element_changes();},this));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",bind(partial(function(input){if(input.tagName.toUpperCase()!="TEXTAREA"){this.editable_element.save_editable_element_changes();}},input),this));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",bind(function(e){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this));this.editable_element.save_editable_element_changes=bind(partial(function(input){if(this.editable_element.editing){window.status="Saving...";if(input.value==this.editable_element.original_value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=input.value;to_post["resource_id"]=this.editable_element.scaffold_options["resource_id"]?this.editable_element.scaffold_options["resource_id"]:"";to_post["database"]=this.editable_element.scaffold_options["database"]?this.editable_element.scaffold_options["database"]:"";to_post["table"]=this.editable_element.scaffold_options["table"]?this.editable_element.scaffold_options["table"]:"";to_post["row_id"]=this.editable_element.scaffold_options["row_id"]?this.editable_element.scaffold_options["row_id"]:"";to_post["field"]=this.editable_element.scaffold_options["field"]?this.editable_element.scaffold_options["field"]:"";to_post["custom_action"]=this.editable_element.scaffold_options["custom_action"]?this.editable_element.scaffold_options["custom_action"]:"";var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.element=this;as.input=input;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));this.element.editable_element.original_value=this.input.value;if(response["text"]=="true"){if(!this.element.editable_element.is_password){if(this.element!=this.input){this.element.innerHTML=this.input.value;}}
this.element.editable_element.cancel_save_editable_element_changes();}else{this.element.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}}},input),this);this.editable_element.cancel_save_editable_element_changes=bind(partial(function(input){this.editable_element.editing=false;if(!this.editable_element.editing){if(this!=input){Basis.remove_element(input);}
this.style.display="";Basis.state_handler.revert();Basis.updated_live_dom();}},input),this);},element);if(!Basis.is_formfield(element)){element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)){Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=this;var input=INPUT({"id":(this.id+"_input"),"type":(this.editable_element.is_password?"password":"text"),"value":(this.editable_element.is_password?"":this.editable_element.original_value),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.original_value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.original_value.length)+15,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});this.editable_element.input=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
this.style.display="none";Basis.insert_after(this,input);this.editable_element.set_up_interaction(input);if(this.editable_element.input&&Basis.is_function(this.editable_element.input.select)){this.editable_element.input.select();}
Basis.state_handler.enter_state("Basis.make_text_element_editable");}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&!this.editable_element.entered){this.editable_element.entered=true;var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif","style":"cursor: pointer;"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit,this.editable_element.commit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&this.editable_element.entered){this.editable_element.entered=false;var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}
if(Basis.is_formfield(element)){element.editable_element.set_up_interaction();}}};Basis.make_text_element_dropdown=function(element,dropdown_options,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=Basis.get_element(element);if(element){element.editable_element={};element.editable_element.editing=false;element.editable_element.entered=false;element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.original_value=Basis.is_formfield(element)?element.options[element.selectedIndex].value:Basis.find_key(dropdown_options,MochiKit.DOM.scrapeText(element));element.editable_element.scaffold_options=scaffold_options;element.editable_element.dropdown_options=dropdown_options;element.editable_element.set_up_interaction=bind(function(input){var input=Basis.is_formfield(this)?this:this.editable_element.input;if(!input){log("AAAAH NO INPUT");return;}
Basis.signal_handler.connect(input,"onclick.greedy.swallow",bind(partial(function(input){this.editable_element.editing=true;},input),this),this.editable_element.commit);input.onchange=bind(partial(function(input){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},input),this);input.onblur=bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",bind(function(){this.editable_element.cancel_save_editable_element_changes();},this));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",bind(partial(function(input){if(input.tagName.toUpperCase()!="TEXTAREA"){this.editable_element.save_editable_element_changes();}},input),this));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this));this.editable_element.save_editable_element_changes=bind(partial(function(input){if(this.editable_element.editing){window.status="Saving...";if(input.options[input.selectedIndex].value==this.editable_element.original_value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=input.options[input.selectedIndex].value;to_post["resource_id"]=this.editable_element.scaffold_options["resource_id"]?this.editable_element.scaffold_options["resource_id"]:"";to_post["database"]=this.editable_element.scaffold_options["database"]?this.editable_element.scaffold_options["database"]:"";to_post["table"]=this.editable_element.scaffold_options["table"]?this.editable_element.scaffold_options["table"]:"";to_post["row_id"]=this.editable_element.scaffold_options["row_id"]?this.editable_element.scaffold_options["row_id"]:"";to_post["field"]=this.editable_element.scaffold_options["field"]?this.editable_element.scaffold_options["field"]:"";to_post["custom_action"]=this.editable_element.scaffold_options["custom_action"]?this.editable_element.scaffold_options["custom_action"]:"";var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,this.editable_element.scaffold_options);if(scaffold_options["is_date"]&&input.get_date){to_post["to"]=input.get_date();}
if(scaffold_options["is_time"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;}}
as.element=this;as.input=input;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));this.element.editable_element.original_value=this.input.value;if(response["text"]=="true"){if(this.element!=this.input){this.element.innerHTML=this.input.options[this.input.selectedIndex].text;}
this.element.editable_element.cancel_save_editable_element_changes();}else{this.element.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}}},input),this);this.editable_element.cancel_save_editable_element_changes=bind(partial(function(input){this.editable_element.editing=false;if(!this.editable_element.editing){if(this!=input){Basis.remove_element(input);}
this.style.display="";Basis.state_handler.revert();Basis.updated_live_dom();}},input),this);input.focus();},element);if(!Basis.is_formfield(element)){element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)&&Basis.make_text_element_editable.currently_editing.editable_element&&Basis.is_function(Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes)){Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=this;var input=SELECT({"id":(this.id+"_select"),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});Basis.select_add_options(input,this.editable_element.dropdown_options);Basis.select_select_item_by_value(input,this.editable_element.original_value);var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.original_value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.original_value.length)+35,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});this.editable_element.input=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
this.style.display="none";Basis.insert_after(this,input);this.editable_element.set_up_interaction(input);Basis.state_handler.enter_state("Basis.make_text_element_editable");}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&!this.editable_element.entered){this.editable_element.entered=true;var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif","style":"cursor: pointer;"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit,this.editable_element.commit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&this.editable_element.entered){this.editable_element.entered=false;var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}
if(Basis.is_formfield(element)){element.editable_element.set_up_interaction();}}};Basis.convert_div_to_box=function(element,options){var options=options?options:{};var border_color=options["border_color"]?("_"+options["border_color"]):"";var element=Basis.get_element(element);if(element){var table=MochiKit.DOM.createDOM("table",{"id":(element.id+".table"),"cellpadding":0,"cellspacing":0,"width":"100%","height":"100%","class":"Basis.dashboard.box.frame"});var tbody=MochiKit.DOM.createDOM("tbody");table.appendChild(tbody);var rows={0:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_top_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"height top"}),"html":"<img src=\"images/images/dashboard/box_top"+border_color+".gif\">"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_top_right"+border_color+".gif\">"}},1:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"width left"}),"html":"<img src=\"images/images/dashboard/box_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"middle","style":options["style"]}),"html":"&nbsp;"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"width right"}),"html":"<img src=\"images/images/dashboard/box_right"+border_color+".gif\">"}},2:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_bottom_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"height bottom"}),"html":"<img src=\"images/images/dashboard/box_bottom"+border_color+".gif\">"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_bottom_right"+border_color+".gif\">"}}};for(var x=0;x<Basis.array_length(rows);x++){var tr=MochiKit.DOM.createDOM("tr");for(var y=0;y<Basis.array_length(rows[x]);y++){rows[x][y]["td"].innerHTML=rows[x][y]["html"];tr.appendChild(rows[x][y]["td"]);}
tbody.appendChild(tr);}
MochiKit.DOM.swapDOM(element,table);var middle=MochiKit.DOM.getElementsByTagAndClassName("td","middle",table);if(middle&&middle[0]&&MochiKit.DOM.getElement(middle[0])&&middle[0].appendChild){Basis.remove_children(middle[0]);middle[0].appendChild(element);element.parent_table=table;element.revert=MochiKit.Base.bind(function(){if(MochiKit.DOM.getElement(this.parent_table)){MochiKit.DOM.swapDOM(this.parent_table,this);delete this.parent_table;delete this.revert;}},element);}}};MochiKit.DragAndDrop.Draggable.prototype.draw=function(point){var pos=MochiKit.Position.cumulativeOffset(this.element);var d=this.currentDelta();pos.x-=d[0];pos.y-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos.y-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[point.page.x-pos.x-this.offset[0],point.page.y-pos.y-this.offset[1]];if(this.options.snap){if(typeof(this.options.snap)=='function'){p=this.options.snap(p[0],p[1]);}else{if(this.options.snap instanceof Array){var i=-1;p=MochiKit.Base.map(MochiKit.Base.bind(function(v){i+=1;return Math.round(v/this.options.snap[i])*this.options.snap[i];},this),p);}else{p=MochiKit.Base.map(MochiKit.Base.bind(function(v){return Math.round(v/this.options.snap)*this.options.snap;},this),p);}}}
if(this.options.contained_by){var drag_dim=MochiKit.Style.getElementDimensions(this.element);var cont_dim=MochiKit.Style.getElementDimensions(getElement(this.options.contained_by));if(drag_dim&&cont_dim&&(drag_dim.w>cont_dim.w)){var cont_border=Basis.sum_of_element(this.options.contained_by,"border");var offset=(cont_border.left+cont_border.right);p[0]=(p[0]>=0)?0:p[0];p[0]=((p[0]+drag_dim.w)>cont_dim.w)?p[0]:(cont_dim.w-drag_dim.w-offset);}else if(drag_dim&&cont_dim&&(drag_dim.w<=cont_dim.w)){p[0]=0;}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal')){style.left=p[0]+'px';}
if((!this.options.constraint)||(this.options.constraint=='vertical')){style.top=p[1]+'px';}
if(style.visibility=='hidden'){style.visibility='';}};Basis.array_delete_index=function(arr,idx){if(arr&&(idx!==null)){if(idx===0){return arr.slice(1);}else if(idx==(arr.length-1)){return arr.slice(0,(arr.length-1));}else{arr.splice(idx,1);return arr;}}}
Basis.array_delete_value=function(arr,value){if(arr&&(value!==null)){for(var i=0;i<arr.length;i++){if(arr[i]==value){arr=Basis.array_delete_index(arr,i);i--;}}}
return arr;}
Basis.insert_after=function(node,to_insert){node.parentNode.insertBefore(to_insert,node.nextSibling);};Basis.hide_all_children=function(element){var element=Basis.get_element(element);if(element){for(var i=0;i<element.childNodes.length;i++){element.childNodes[i].style.display="none";}}};Basis.unhide_all_children=function(element){var element=Basis.get_element(element);if(element){for(var i=0;i<element.childNodes.length;i++){element.childNodes[i].style.display="";}}};Basis.is_live_dom_node=function(element){var element=Basis.get_element(element);if(element&&element.parentNode){var parent=element.parentNode;while(parent){if(parent==document.body){return true;}
parent=parent.parentNode;}
return false;}};Basis.is_object=function(element){return(element&&(typeof(element)=="object"))?true:false;};Basis.index_of=function(arr,value){if(arr){for(var i in arr){if(i&&arr[i]&&(arr[i]==value)){return i;}}}
return null;};Basis.in_array=function(needle,haystack){var found=false;for(key in haystack){if(haystack[key]==needle){found=true;break;}}
return found;};if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"");}}
if(!Array.prototype.indexOf){Array.prototype.indexOf=function(value,begin,strict){for(var i=(+begin||0),length=this.length;i<length;i++){if((this[i]===value)||(strict&&(this[i]==value))){return i;}}
return-1;};}
Basis.filter_data=function(data,search_terms,optional_fields_to_filter_by,return_keys_only){var data=Basis.is_object(data)?data:null;var search_terms=search_terms?search_terms:null;var optional_fields_to_filter_by=Basis.is_object(optional_fields_to_filter_by)?optional_fields_to_filter_by:null;var return_keys_only=((return_keys_only==null)||(return_keys_only!==true))?false:true;var results={};if(data&&search_terms){var keywords=search_terms.trim().split(" ");for(var key in data){if(key&&data[key]&&keywords){var row=data[key];var found=false;for(var x=0;x<keywords.length;x++){var wildcard=(keywords[x].indexOf("*")!=-1)?true:false;var regex=(wildcard?"^":"")+keywords[x].replace(/\*/g,".*?")+(wildcard?"$":"");for(var field in row){if(field&&row[field]&&row[field].match){if(!optional_fields_to_filter_by||(optional_fields_to_filter_by&&Basis.in_array(field,optional_fields_to_filter_by))){found=row[field].match(new RegExp(regex,"gi"))?true:false;if(found){break;}}}}}
if(found){if(return_keys_only){results[key]=key;}else{results[key]=row;}}}}}
return results;};Basis.sort_data=function(data,field_to_sort_by,sort_order,return_keys_only,trim){var data=Basis.is_object(data)?data:null;var field_to_sort_by=field_to_sort_by?field_to_sort_by:null;var sort_order=sort_order?sort_order:"ASC";var return_keys_only=((return_keys_only==null)||(return_keys_only!==true))?false:true;var trim=(trim==true)?true:false;var results={};var sorted=[];if(data&&field_to_sort_by){var field=field_to_sort_by;var field_exists=null;for(var i in data){if(field_exists===null){var keys=Basis.keys(data[i]);field_exists=Basis.in_array(field,keys)?true:false;}
if(field_exists&&(data[i][field]!=null)){var value=trim?data[i][field].toString().trim():data[i][field];value=(value=="")?" ":value;sorted.push({"key":i,"value":value});}}
function custom_sorter(a,b){if(a.value&&a.value.toLowerCase&&b.value&&b.value.toLowerCase){a=a.value.toLowerCase();b=b.value.toLowerCase();if(a&&b){if(a<b){return-1;}
if(a>b){return 1;}}}
return 0;};sorted.sort(custom_sorter);}
if(sort_order=="ASC"){for(var i in sorted){if(i&&sorted[i]&&sorted[i].key&&data[sorted[i].key]){results[sorted[i].key]=data[sorted[i].key];}}}else if(sort_order=="DESC"){var keys=Basis.keys(sorted);for(var x=(keys.length-1);x>=0;x--){var i=keys[x];if(i&&sorted[i]&&sorted[i].key&&data[sorted[i].key]){results[sorted[i].key]=data[sorted[i].key];}}}
return results;};Basis.page_data=function(data,requested_page,num_per_page){var data=Basis.is_object(data)?data:null;var total_rows=Basis.array_length(data);var num_per_page=Math.min(total_rows,(num_per_page?num_per_page:Basis.array_length(data)));var results={};if(data&&num_per_page){var requested_page=Basis.is_number(requested_page)?Math.round(requested_page):1;var total_pages=Math.floor(total_rows/num_per_page)+((Math.floor(total_rows/num_per_page)==(total_rows/num_per_page))?0:1);var page_of_data={};var keys=Basis.keys(data);var starting_row_id=(num_per_page*(requested_page-1));for(var row_id=starting_row_id;row_id<(starting_row_id+num_per_page);row_id++){if(keys[row_id]){results[keys[row_id]]=data[keys[row_id]];}}}
return(Basis.array_length(results)==0)?null:results;};Basis.size_in_viewport=function(element){var element=MochiKit.DOM.getElement(element);if(element&&Basis.is_live_dom_node(element)){var pos=MochiKit.Style.getElementPosition(element);pos=(pos&&pos.x&pos.y)?pos:{"x":0,"y":0};var dim=MochiKit.Style.getElementDimensions(element);var scroll=Basis.scroll_coords();var screen=MochiKit.Style.getViewportDimensions();var borders=Basis.sum_borders_of_all_parents(element);var padding=Basis.sum_padding_of_all_parents(element);var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var coords={"w":(screen.w-(pos.x+scroll.x)-adjust_width),"h":(screen.h-(pos.y+scroll.y)-adjust_height)};return coords;}};;Basis.data_pager=function(options){this.__init__(options);};Basis.data_pager.prototype={__init__:function(options){var options=Basis.is_object(options)?options:{};this.data=Basis.is_object(options["data"])?options["data"]:{};this.num_per_page=Basis.is_number(options["num_per_page"])?Math.round(options["num_per_page"]):1;this.current_page=1;this.total_rows=Basis.array_length(this.data);this.total_pages=Math.floor(this.total_rows/this.num_per_page)+((Math.floor(this.total_rows/this.num_per_page)==(this.total_rows/this.num_per_page))?0:1);},get_page:function(page){return Basis.page_data(this.data,page,this.num_per_page);},next_page:function(){this.current_page+=1;return this.this_page();},previous_page:function(){this.current_page=(this.current_page>1)?(this.current_page-1):1;return this.this_page();},this_page:function(){return this.get_page(this.current_page);}};Basis.tile_manager=function(){this.__init__();};Basis.tile_manager.prototype={__init__:function(){this.tiles=[];this.current_tile=0;this.container_element=null;this.child_tile_container_element=null;this.is_sliding=false;this.after_hide_all_contents=function(){alert("test");};MochiKit.Signal.connect(this,"after_hide_all_contents",bind(function(){this.after_hide_all_contents();},this));MochiKit.Style.resizeConstrainedElements.callbacks.push(MochiKit.Base.bind(function(){this.resize_tiles();},this));},back:function(){this.go_to(this.current_tile-1);},clear_all_tiles:function(){for(var i=this.tiles.length;i>0;i--){this.pop_tile();}
this.current_tile=null;},compile:function(){if(Basis.is_live_dom_node(this.container_element)){this.child_tile_container_element=DIV({"style":"position: absolute; left: 0px; top: 0px;"});this.container_element.appendChild(this.child_tile_container_element);Basis.register_size_constraints(this.container_element,"100%","100%",null,false);Basis.register_size_constraints(this.child_tile_container_element,"100%","100%");this.resize_tiles();}},create_tile:function(){if(this.container_element){var borders=Basis.sum_of_all_parents(this.container_element,"border");var padding=Basis.sum_of_all_parents(this.container_element,"padding");var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var dim=MochiKit.Style.getElementDimensions(this.container_element);var pdim=MochiKit.Style.getElementDimensions(this.container_element.parentNode);var tile=DIV({"style":"position: absolute; top: 0px; left: 0px;","class":"tile"});Basis.register_size_constraints(tile,"100%","100%",null,false);tile.on_load=function(){};tile.on_unload=function(){};tile.after_unload=function(){};tile.name="";tile.hide_when_sliding=null;return tile;}
return null;},get_current_tile:function(){return(((this.current_tile==null)&&(this.tiles.length>0))?0:this.current_tile);},go_to:function(index){if(!this.is_sliding&&(index!==null)&&this.tiles[index]&&(index!==this.current_tile)){this.after_hide_all_contents=MochiKit.Base.bind(partial(function(index){if((this.current_tile!==null)&&Basis.is_function(this.tiles[this.current_tile].on_unload)){this.tiles[this.current_tile].on_unload();}
this.is_sliding=true;var multiplier=(this.current_tile-index);var x=(Basis.parse_number(this.tiles[index].style.width)*multiplier);MochiKit.Visual.Move(this.child_tile_container_element,{"x":x,"mode":"relative","duration":0.50,"afterFinish":bind(partial(function(index,old_index){this.is_sliding=false;this.current_tile=index;if(this.tiles[index]){this.unhide_tile(index);}
if((old_index!==null)&&this.tiles[old_index]&&Basis.is_function(this.tiles[old_index].after_unload)){this.tiles[old_index].after_unload();}
if((index!==null)&&this.tiles[index]&&Basis.is_function(this.tiles[index].on_load)){this.tiles[index].on_load();}
for(var i=index+1;i<this.tiles.length;i++){this.pop_tile();}},index,this.current_tile),this)});},index),this);this.hide_all_contents(index,(((this.current_tile==null)?0:this.current_tile)==0)?true:false);if((index!==null)&&(index==0)&&(this.current_tile===null)&&this.tiles[index]&&Basis.is_function(this.tiles[index].on_load)){this.tiles[index].on_load();}}},hide_all_contents:function(index,loading_top_level_tile){for(var i=0;i<this.tiles.length;i++){if(this.tiles[i].hide_when_sliding&&(!loading_top_level_tile||(loading_top_level_tile&&(i>0)))){if(index===null){this.tiles[i].hide_when_sliding.style.display="none";}else if(i==index){MochiKit.Visual.fade(this.tiles[i].hide_when_sliding,{"duration":0.0,"afterFinish":bind(function(){this.hide_all_contents(null);MochiKit.Signal.signal(this,"after_hide_all_contents");},this)});}}}},pop_tile:function(){if(this.tiles[this.tiles.length-1]){MochiKit.DOM.removeElement(this.tiles[this.tiles.length-1]);this.tiles.pop();}},push_tile:function(tile){if(tile){this.tiles.push(tile);this.child_tile_container_element.appendChild(tile);this.resize_tiles();return(this.tiles.length-1);}
return null;},resize_tiles:function(){if(Basis.is_live_dom_node(this.container_element)){var container_size=MochiKit.Style.getElementDimensions(this.container_element);if(container_size){for(var i=0;i<this.tiles.length;i++){var tile=this.tiles[i];Basis.set_element_dimensions(tile,container_size);Basis.set_style(tile,{"left":(i*container_size.w)+"px"});}
Basis.set_style(this.child_tile_container_element,{"left":(this.current_tile*container_size.w*-1)+"px"});}}},toString:function(){return"Basis.tile_manager";},unhide_tile:function(index){if((index!==null)&&this.tiles[index]&&this.tiles[index].hide_when_sliding){MochiKit.Visual.appear(this.tiles[index].hide_when_sliding,{"duration":0.5,"afterFinish":MochiKit.Style.resizeConstrainedElements});}}};Basis.grid_control=function(options){this.__init__(options);};Basis.grid_control.prototype={__init__:function(options){options=Basis.is_object(options)?options:{};this.data_type="";this.root_class_name="";this.raw_data=Basis.is_object(options["raw_data"])?options["raw_data"]:{};this.num_per_page=Basis.is_number(options["num_per_page"])?Math.round(options["num_per_page"]):10;this.show_all=true;this.current_mode="";this.current_dataset={};this.current_raw_dataset={};this.currently_selected=[];this.current_page=1;this.current_num_pages=null;this.current_filter={"search_text":null,"search_limit":null,"group_limit":null,"alpha_limit":null,"alpha_limit_field":null,"group":null,"archived":null};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null,"archived":null};this.current_filter_data={};this.current_sorting={"field":"first_name","direction":"ASC"};this.current_sorted_data={};this.groups={};this.group_map={};this.debug=false;this.resource_types={};this.default_resource_type="";this.elements={"container_output":null,"list_output":null,"general_buttons":null,"filter_controls":null,"page_controls":null,"list_title":SPAN(null," "),"group_filter":null,"archived_filter":null};this.pager=new Basis.data_pager();this.add_new_resource=function(){};this.can_add_new_resource=true;this.fields_to_display={};this.grid_field_map={};if(!window.resizeConstrainedElements_signal){window.resizeConstrainedElements_signal=MochiKit.Signal.connect(window,"onresize",MochiKit.Style.resizeConstrainedElements);}},add_new_resource:function(type,data_row){var to_post={};to_post["type"]=type;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="add_new_resource";as.list=this;as.data_row=data_row;as.on_success=function(req){if(Basis.is_number(req.responseText)){var resource_id=req.responseText;this.list.clear_cached_datasets(true);this.list.raw_data[resource_id]=this.data_row;this.list.group_map[resource_id]=this.data_row["groups"];this.list.refresh();}
window.status="Done";};return as.post({"to_post":to_post});},archive_resources:function(resource_ids){if(confirm("Are you sure you want to archive the selected items?")){var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="archive_resources";as.list=this;as.on_success=function(req){var ids_archived=MochiKit.Base.evalJSON(req.responseText);var to_refresh=[];for(var i=0;i<ids_archived.length;i++){if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_archived[i]]){this.list.dashboard.resource_linker[ids_archived[i]]["archived"]="yes";}}
this.list.clear_cached_datasets(true);this.list.fetch_raw_data((this.list.current_filter["archived"]=="yes")?true:false);this.list.refresh();window.status="Done";};return as.post({"to_post":to_post});}},clear_cached_datasets:function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:((this.current_mode=="organization")?"company_name":"first_name")),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},debug_log:function(message){if(message&&this.debug){this.system_log(message,false);}},delete_resources:function(resource_ids){if(confirm("Are you sure you want to delete the selected items?")){var to_delete=[];for(var i=0;i<resource_ids.length;i++){if(this.dashboard.resource_linker[resource_ids[i]]["resource_access"]["full_access"]){to_delete.push(resource_ids[i]);}}
if(to_delete.length==0){alert("You haven't selected any items that you have access to delete!");return;}
var to_post={};to_post["resource_ids"]=to_delete;var as=new Basis.ajax_scaffold;as.alias="delete_resources";as.list=this;as.on_success=function(req){var ids_deleted=MochiKit.Base.evalJSON(req.responseText);var to_refresh=[];for(var i=0;i<ids_deleted.length;i++){delete this.list.raw_data[ids_deleted[i]];delete this.list.group_map[ids_deleted[i]];if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_deleted[i]]){var type=this.list.dashboard.resource_linker[ids_deleted[i]]["type"];var associated=Basis.filter_numbers(Basis.keys(this.list.dashboard.resource_linker[ids_deleted[i]]["associated_resources"],true));for(var x=0;x<associated.length;x++){to_refresh.push(associated[x]);}
delete this.list.dashboard.resource_linker[ids_deleted[i]];delete this.list.dashboard.available_resources[type][ids_deleted[i]];}}
this.list.clear_cached_datasets(true);this.list.refresh();this.list.dashboard.get_assorted_resources(to_refresh);window.status="Done";};return as.post({"to_post":to_post});}},fetch_groups:function(){if(this.dashboard){this.groups={};var keys=Basis.keys(this.dashboard.available_resources["GROUP"]);for(var i=0;i<keys.length;i++){this.groups[keys[i]]=this.dashboard.resource_display_text(keys[i]);}
if(Basis.is_element(this.elements["group_filter"])){this.elements["group_filter"].options.length=0;Basis.select_add_option(this.elements["group_filter"],"","Choose a Group:");asort(this.groups);Basis.select_add_options(this.elements["group_filter"],this.groups);}
return new MochiKit.Async.succeed();}else{var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_groups";as.list=this;as.on_success=function(req){var groups=MochiKit.Base.evalJSON(req.responseText);this.list.groups=groups;if(Basis.is_element(this.list.elements["group_filter"])){this.list.elements["group_filter"].options.length=0;Basis.select_add_option(this.list.elements["group_filter"],"","Choose a Group:");Basis.select_add_options(this.list.elements["group_filter"],this.list.groups);}
window.status="Done";};return as.post({"to_post":to_post});}},fetch_raw_data:function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;log("Make me do something");},filter_groups:function(data){var filtered_data={};var keys=Basis.keys(data);for(var i=0;i<keys.length;i++){var resource_id=keys[i];if(Basis.in_array(this.current_filter["group"],this.group_map[resource_id])){filtered_data[resource_id]=data[resource_id];}}
return filtered_data;},filter_hash:function(what_filter){var what_filter=what_filter?what_filter:"all";switch(what_filter){case"filter":return hex_md5(serializeJSON([this.current_mode,this.current_filter]));break;case"sorting":return hex_md5(serializeJSON([this.current_mode,this.current_sorting]));break;case"all":return hex_md5(serializeJSON([this.current_mode,this.current_page,this.current_num_pages,this.current_filter,this.current_sorting]));break;}},get_master_field_data:function(master_field,row,raw,raw_value){var raw=(raw!=null)?true:false;var raw_value=(raw_value!=null)?true:false;if(master_field&&row&&this.grid_field_map[master_field]){tspan=SPAN();switch(this.grid_field_map[master_field]["type"]){case"text":data=stripslashes(row[this.grid_field_map[master_field]["field"]]);break;case"select":if(this.grid_field_map[master_field]["array"]){data=raw_value?stripslashes(row[this.grid_field_map[master_field]["field"]]):this.grid_field_map[master_field]["array"][stripslashes(row[this.grid_field_map[master_field]["field"]])];}
break;}
if(raw){return data?data:"";}
if(data){data=data.replace(/\r\n/g,"\n");data=data.replace(/\r/g,"\n");data=data.replace(/ /g,"&nbsp;");var urls=data.match(/(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\/)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(\/[a-zA-Z0-9\&amp;%_\.\/-~-]*)?/g);if(urls){for(var i=0;i<urls.length;i++){var protocol=urls[i].match(/(file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\//g);protocol=protocol?protocol[0]:"http://";var url=urls[i];var replace_with=(((url.indexOf(protocol)>-1)?"":protocol)+url);data=data.replace(url,"<a href=\""+replace_with+"\">"+url+"</a>");}}
data=data.replace(/\n/g,"<br>");data=data.replace(/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/g,"<a href=\"mailto:$1@$2$3$6$7\">$1@$2$3$6$7</a>");}
tspan.innerHTML=data?data:"&nbsp;";return tspan;}
return"";},get_master_field_title:function(master_field){if(master_field&&this.grid_field_map[master_field]){return this.grid_field_map[master_field]["text"];}
return null;},is_selected:function(resource_id){return Basis.in_array(resource_id,this.currently_selected)?true:false;},load_page:function(page){var page=Basis.is_number(Math.round(page))?Math.round(page):1;page=(page>0)?page:1;page=(page<=this.current_num_pages)?page:this.current_num_pages;this.current_page=page;this.refresh();},next_page:function(){this.load_page(this.current_page+1);},last_page:function(){this.load_page(this.current_page-1);},prepared_data:function(data){var ret_data=null;if(data){var ret_data={};for(var i in data){if(!Basis.is_function(data[i])&&Basis.is_object(data[i])){for(var x in data[i]){if(!Basis.is_function(data[i][x])){ret_data[i]=ret_data[i]?ret_data[i]:{};ret_data[i][x]=this.get_master_field_data(x,data[i],true);}}}}}
return ret_data;},refresh:function(){this.current_filter_hash["all"]=this.filter_hash("all");this.refresh_controls();this.refresh_data();this.refresh_pages();this.refresh_title();this.refresh_table();MochiKit.Style.resizeConstrainedElements();},refresh_controls:function(){this.elements["general_buttons"].style.display="block";if(this.elements["filter_controls"]){if(this.show_all){this.elements["filter_controls"].style.display="none";}else{this.elements["filter_controls"].style.display="";}}
if(this.elements["page_controls"]){if(this.num_per_page==9999999){this.elements["page_controls"].style.display="none";}else{this.elements["page_controls"].style.display="";}}},refresh_data:function(){var data=this.raw_data;this.debug_log(["raw data",Basis.keys(data).toString()])
if(this.current_mode&&this.data_type){data=Basis.filter_data(data,this.current_mode,[this.data_type],false);}
this.debug_log(["filter by resource type",Basis.keys(data).toString()])
if(this.current_filter_hash["filter"]==this.filter_hash("filter")){data=this.current_filter_data;this.debug_log(['this.current_filter_hash["filter"] == this.filter_hash("filter")',Basis.keys(data).toString()])}else{if(this.current_filter["group"]){data=this.filter_groups(data);this.debug_log(['this.current_filter["group"]',Basis.keys(data).toString()])}
if(!this.show_all){if(this.current_filter["alpha_limit"]){var fields=this.current_filter["alpha_limit_field"]?[this.current_filter["alpha_limit_field"]]:null;var filter=this.current_filter["alpha_limit"]+"*";data=Basis.filter_data(data,filter,fields,false);this.debug_log(['this.current_filter["alpha_limit"]',Basis.keys(data).toString()])}
if(this.current_filter["search_text"]){var fields=this.current_filter["search_limit"]?[this.current_filter["search_limit"]]:null;var prepared_data=Basis.filter_data(this.prepared_data(data),this.current_filter["search_text"],fields,false);var tdata={};var list=Basis.keys(prepared_data);for(var i=0;i<list.length;i++){tdata[list[i]]=data[list[i]];}
data=tdata;this.debug_log(['this.current_filter["search_text"]',Basis.keys(data).toString()])}}
this.current_filter_data=data;this.current_filter_hash["filter"]=this.filter_hash("filter");this.current_sorted_data=null;this.current_filter_hash["sorting"]=null;}
this.debug_log(['before sort',Basis.keys(data).toString()])
if(this.current_filter_hash["sorting"]==this.filter_hash("sorting")){data=this.current_sorted_data;this.debug_log(['this.current_filter_hash["sorting"] == this.filter_hash("sorting")',Basis.keys(data).toString()])}else{data=Basis.sort_data(data,this.current_sorting.field,this.current_sorting.direction,false,true);this.debug_log(['Basis.sort_data()',Basis.keys(data).toString()])
this.current_sorted_data=data;this.current_filter_hash["sorting"]=this.filter_hash("sorting");}
this.current_raw_dataset=data;this.debug_log(['before paging',Basis.keys(data).toString()])
this.pager.data=data;this.pager.num_per_page=this.num_per_page;var tnum_pages=Math.floor(Basis.array_length(this.current_raw_dataset)/this.num_per_page);this.current_num_pages=tnum_pages+(((tnum_pages*this.num_per_page)==Basis.array_length(this.current_raw_dataset))?0:1);if(this.current_page>this.current_num_pages){this.current_page=1;}
this.pager.current_page=this.current_page;this.current_dataset=this.pager.this_page();this.debug_log(['paged data',Basis.keys(this.current_dataset?this.current_dataset:[]).toString()])},refresh_pages:function(){if(this.current_filter_hash["all"]==this.filter_hash("all")){return;}
var tr=TR();for(var x=0;x<this.current_num_pages;x++){var page=SPAN({"style":"cursor: pointer;"},(x+1));var td=TD({"class":this.root_class_name+".page_controls.page","width":(1/(this.current_num_pages+1),2).toFixed()},page);Basis.signal_handler.connect(page,"onclick",bind(partial(function(page,td){this.load_page(page);},(x+1),td),this),false);tr.appendChild(td);}
var previous_page=SPAN({"style":"cursor: pointer;"},"<<");var next_page=SPAN({"style":"cursor: pointer;"},">>");Basis.signal_handler.connect(previous_page,"onclick",bind(function(){this.last_page();},this),false);Basis.signal_handler.connect(next_page,"onclick",bind(function(){this.next_page();},this),false);var pages_div=DIV({"id":Basis.anonymous_element_id()+"_pages_div","style":"overflow: hidden; cursor: move;"},TABLE({"class":this.root_class_name+".page_controls.pages","cellpadding":"5"},TBODY(null,tr)));var pages=DIV({"class":this.root_class_name+".page_controls"},TABLE({"cellpadding":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"1"},previous_page),TD({"align":"center"},pages_div),TD({"width":"1"},next_page)))));if(Basis.is_live_dom_node(this.elements["page_controls"])){MochiKit.DOM.swapDOM(this.elements["page_controls"],pages);Basis.updated_live_dom();}
this.elements["page_controls"]=pages;Basis.register_size_constraints(pages_div,"100%","25");new Draggable(pages_div.firstChild,{"constraint":"horizontal","contained_by":pages_div});},refresh_table:function(){log("Make me do something");},refresh_title:function(){log("Make me do something");},render:function(view){this.elements["container_output"]=Basis.get_element(this.elements["container_output"]);if(this.elements["container_output"]&&Basis.is_element(this.elements["container_output"])){this.refresh_data();var first_render=(this.elements["container_output"]&&!this.elements["list_output"])?true:false;if(first_render){var search_text=INPUT({"type":"text","style":"width: 200px;"});Basis.signal_handler.connect(search_text,"onchange",bind(partial(function(element){this.current_filter["search_text"]=element.value;},search_text),this),false);var search_text_go=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(search_text_go,"onclick",bind(function(){this.refresh();},this),false);var search_limit=SELECT();var alpha_limit=SELECT();Basis.select_add_option(search_limit,""," ")
Basis.select_add_option(alpha_limit,""," ")
for(var i in this.grid_field_map){if(this.grid_field_map[i]&&this.grid_field_map[i]["field"]&&this.grid_field_map[i]["text"]){Basis.select_add_option(search_limit,this.grid_field_map[i]["field"],this.grid_field_map[i]["text"]);Basis.select_add_option(alpha_limit,this.grid_field_map[i]["field"],this.grid_field_map[i]["text"]);}}
Basis.signal_handler.connect(search_limit,"onchange",bind(partial(function(element){this.current_filter["search_limit"]=element.options[element.selectedIndex].value;this.refresh();},search_limit),this),false);Basis.signal_handler.connect(alpha_limit,"onchange",bind(partial(function(element){this.current_filter["alpha_limit_field"]=element.options[element.selectedIndex].value;this.refresh();},alpha_limit),this),false);MochiKit.Signal.connect(search_text,"onkeydown",partial(function(text_input,button,e){if(e.key().string=="KEY_ENTER"){Basis.signal_handler.execute_interactive_element(text_input,"onchange");Basis.signal_handler.execute_interactive_element(button,"onclick");}},search_text,search_text_go));var alpha=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];var alpha_limit_select=DIV({"style":"overflow: hidden; cursor: move;"});var tr=TR();var letter=SPAN({"style":"cursor: pointer;"},"None");var td=TD({"width":(1/(alpha.length+1),2).toFixed()},letter);Basis.signal_handler.connect(letter,"onclick",bind(partial(function(letter){this.current_filter["alpha_limit"]=null;this.refresh();},alpha[x]),this),false);tr.appendChild(td);for(var x=0;x<alpha.length;x++){var letter=SPAN({"style":"cursor: pointer;"},alpha[x]);var td=TD({"width":(1/(alpha.length+1),2).toFixed()},letter);Basis.signal_handler.connect(letter,"onclick",bind(partial(function(letter){this.current_filter["alpha_limit"]=letter;this.refresh();},alpha[x]),this),false);tr.appendChild(td);}
alpha_limit_select.appendChild(TABLE({"class":this.root_class_name+".filter_controls.alpha_limit","width":"100%","cellpadding":"5"},TBODY(null,tr)));this.elements["filter_controls"]=DIV({"class":this.root_class_name+".filter_controls"},P({"style":"padding-left: 10px;"},STRONG(null,"Find Specific Items:")),TABLE({"cellpadding":"5"},TBODY(null,TR(null,TD(null,"Search: "),TD(null,search_text),TD(null,search_text_go),TD(null,"Search Only This Field: "),TD(null,search_limit)),TR({"style":"display: none;"},TD(null,"Limit to: "),TD({"colspan":"2","style":"padding: 0px;"},alpha_limit_select),TD(null,"Limit To Only This Field: "),TD(null,alpha_limit)))));this.refresh_pages();var button_find_specific_resources=INPUT({"type":"button","style":(this.show_all?"":"display: none;"),"value":"Find Specific Items"});var button_show_all_resources=INPUT({"type":"button","style":(!this.show_all?"":"display: none;"),"value":"Show All"});var button_add_new_resource=INPUT({"type":"button","value":"Add New"});Basis.signal_handler.connect(button_find_specific_resources,"onclick",bind(partial(function(button_find_specific_resources,button_show_all_resources){this.show_all=false;button_find_specific_resources.style.display="none";button_show_all_resources.style.display="";this.clear_cached_datasets()
this.refresh();},button_find_specific_resources,button_show_all_resources),this),false);Basis.signal_handler.connect(button_show_all_resources,"onclick",bind(partial(function(button_find_specific_resources,button_show_all_resources){this.show_all=true;button_find_specific_resources.style.display="";button_show_all_resources.style.display="none";this.clear_cached_datasets()
this.refresh();},button_find_specific_resources,button_show_all_resources),this),false);Basis.signal_handler.connect(button_add_new_resource,"onclick",this.add_new_resource,false);var dropdown_num_per_page=SELECT();Basis.select_add_options(dropdown_num_per_page,{10:"10 per Page",25:"25 per Page",50:"50 per Page",9999999:"All Results"});Basis.select_select_item_by_value(dropdown_num_per_page,this.num_per_page);Basis.signal_handler.connect(dropdown_num_per_page,"onchange",bind(partial(function(element){this.num_per_page=element.options[element.selectedIndex].value;this.current_page=1;this.refresh();},dropdown_num_per_page),this),false);var resource_type=null;if(Basis.array_length(this.resource_types)>0){var resource_type=SELECT();Basis.select_add_options(resource_type,this.resource_types);Basis.select_select_item_by_value(resource_type,this.default_resource_type);Basis.signal_handler.connect(resource_type,"onchange",bind(partial(function(element){this.current_mode=element.options[element.selectedIndex].value;this.current_page=1;this.clear_cached_datasets();this.refresh();},resource_type),this),false);}
var group_filter=SELECT();group_filter.onchange=bind(partial(function(element){this.current_filter["group"]=element.options[element.selectedIndex].value;this.refresh();},group_filter),this);this.elements["group_filter"]=group_filter;var archived_filter=SELECT();Basis.select_add_options(archived_filter,{"no":" ","yes":"Show All Archived"});archived_filter.onchange=bind(partial(function(element){this.current_filter["archived"]=element.options[element.selectedIndex].value;this.clear_cached_datasets();this.fetch_raw_data((this.current_filter["archived"]=="yes")?true:false);this.refresh();},archived_filter),this);this.elements["archived_filter"]=archived_filter;this.elements["general_buttons"]=DIV({"class":this.root_class_name+".main_buttons"},TABLE({"border":"0","width":"100%","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"align":"left"},button_find_specific_resources,button_show_all_resources,(this.can_add_new_resource?button_add_new_resource:null)),TD({"align":"right"},(resource_type?"Type: ":null),resource_type,archived_filter,group_filter,dropdown_num_per_page)))));this.elements["list_output"]=DIV(null,"Grid Rows");var container=TABLE({"border":"0","width":"100%","class":this.root_class_name+".container","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD(null,this.elements["general_buttons"],this.elements["filter_controls"],this.elements["page_controls"],this.elements["list_output"]))));this.refresh_controls();this.refresh_title();Basis.remove_children(this.elements["container_output"]);this.elements["container_output"].appendChild(container);Basis.updated_live_dom();Basis.register_size_constraints(alpha_limit_select,"100%","25");new Draggable(alpha_limit_select.firstChild,{"constraint":"horizontal","contained_by":alpha_limit_select});}
this.refresh();}},render_groups:function(resource_id,mode){var mode=Basis.in_array(mode,["detail","edit","add"])?mode:"detail";var resource_id=Basis.is_number(resource_id)?Math.round(resource_id):null;var groups=null;var keys=Basis.keys(this.group_map);if(resource_id&&(Basis.in_array(resource_id,keys)!=null)){switch(mode){case"detail":var groups=DIV();for(var i in this.group_map[resource_id]){var group_id=this.group_map[resource_id][i];if(!Basis.is_function(this.groups[group_id])){groups.appendChild(DIV(null,this.groups[group_id]));}}
break;case"edit":case"add":var groups=DIV();for(var i in this.groups){var group_id=i;if(!Basis.is_function(this.groups[group_id])){var checkbox=INPUT({"type":"checkbox"});checkbox.checked=Basis.in_array(group_id,this.group_map[resource_id])?true:false;checkbox.value=group_id;if(mode=="edit"){Basis.signal_handler.connect(checkbox,"onclick",bind(partial(function(group_id,resource_id,element){this.group_map[resource_id]=Basis.is_object(this.group_map[resource_id])?this.group_map[resource_id]:{};if(element.checked){this.group_map[resource_id][Basis.array_length(this.group_map[resource_id])]=group_id;this.save_groups(resource_id);}else{var idx=Basis.index_of(this.group_map[resource_id],group_id);if(idx!=null){delete this.group_map[resource_id][idx];}
this.save_groups(resource_id);}},i,resource_id,checkbox),this),false);}
groups.appendChild(DIV(null,checkbox," ",this.groups[i]));}}
break;}}
return groups;},render_resource:function(){log("I need to be set to do something!");},save_groups:function(resource_id){var to_post={};to_post["resource_id"]=resource_id;to_post["groups"]=this.group_map[resource_id];var as=new Basis.ajax_scaffold;as.alias="save_groups";as.list=this;as.on_success=function(req){this.list.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.list.current_filter_data={};window.status="Done";};return as.post({"to_post":to_post});},select_resource:function(resource_id){if(resource_id&&!this.is_selected(resource_id)){this.currently_selected.push(resource_id);}},system_log:function(message){if(message){var timestamp=Basis.parse_number(Date.parse(Date()).toString().substring(0,10));MochiKit.Logging.log(timestamp+" "+message);}},unarchive_resources:function(resource_ids){if(confirm("Are you sure you want to restore the selected items?")){var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="unarchive_resources";as.list=this;as.on_success=function(req){var ids_unarchived=MochiKit.Base.evalJSON(req.responseText);for(var i=0;i<ids_unarchived.length;i++){if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_unarchived[i]]){this.list.dashboard.resource_linker[ids_unarchived[i]]["archived"]="no";}}
this.list.clear_cached_datasets(true);this.list.fetch_raw_data((this.list.current_filter["archived"]=="yes")?true:false);this.list.refresh();window.status="Done";};return as.post({"to_post":to_post});}},unselect_resource:function(resource_id){if(resource_id&&Basis.in_array(resource_id,this.currently_selected)){var idx=this.currently_selected.indexOf(resource_id);this.currently_selected=Basis.array_delete_index(this.currently_selected,idx);}},update_resource_field:function(resource_id,field,value){if(this.raw_data[resource_id]){this.raw_data[resource_id][field]=value;}
if(this.current_filter_data[resource_id]){this.current_filter_data[resource_id][field]=value;}
if(this.current_sorted_data[resource_id]){this.current_sorted_data[resource_id][field]=value;}
if(this.current_raw_dataset[resource_id]){this.current_raw_dataset[resource_id][field]=value;}}};Basis.wizard=function(options){this.__init__(options);};Basis.wizard.prototype={__init__:function(options){var options=Basis.is_object(options)?options:{};this.options=options;this.tiles=(options["tiles"])?options["tiles"]:new Basis.tile_manager();this.name="";this.steps=[];this.current_step=-1;this.on_done=function(){};this.on_cancel=function(){};this.should_destroy_background=true;Basis.state_handler.add_state("wizard");Basis.state_handler.register_key_handler("wizard","KEY_ESCAPE","down",bind(function(){this.cancel();},this));},add_step:function(name,content,options){var index=this.steps.push({"name":name,"content":content,"options":options});Basis.state_handler.add_state("wizard_"+this.name+"_step_"+index);return this.steps[index-1];},can_unload:function(){if(this.steps[this.current_step]&&Basis.is_function(this.steps[this.current_step].options.can_unload)){return this.steps[this.current_step].options.can_unload();}
return true;},cancel:function(){if(confirm("Are you sure you want to exit this wizard?")){this.done(true);this.on_cancel();}},compile:function(){if((this.tiles.toString()=="Basis.tile_manager")&&(this.steps.length>0)){this.redefine_tile_sizing();this.create_wizard_container();MochiKit.Style.setOpacity("wizard_container",0);this.tiles.container_element=Basis.get_element("wizard_container");this.tiles.compile();this.options["width"]=this.options["width"]?this.options["width"]:"70%";this.options["height"]=this.options["height"]?this.options["height"]:"70%";Basis.register_size_constraints(this.tiles.container_element,this.options["width"],this.options["height"],null,false);Basis.state_handler.enter_state("wizard");this.render_step(0);Basis.center_element("wizard_container");MochiKit.Style.setOpacity("wizard_container",100);this.create_background();}},create_background:function(opacity){var opacity=(opacity!=null)?opacity:0.50;var obj=MochiKit.DOM.getElement("background");if(!obj){var element=DIV({"id":"background","style":"display: none; background-color: #000000; position: absolute; z-index: 1001; top: 0px; left: 0px;"});document.body.appendChild(element);MochiKit.Style.setOpacity(element,0.0);}
var obj=MochiKit.DOM.getElement("background");if(obj){var screend={"w":MochiKit.Style.getElementDimensions(MochiKit.DOM.currentDocument().body).w,"h":MochiKit.Style.getViewportDimensions().h};var scroll=Basis.scroll_coords();obj.style.width=screend.w;obj.style.height=screend.h;MochiKit.Style.setElementPosition(obj,{"x":scroll.x,"y":scroll.y});if(MochiKit.Style.getStyle(obj,"opacity")<opacity){MochiKit.Style.setOpacity(obj,0.0);obj.style.display="";appear(obj,{"duration":0.50,"to":opacity});}}
if(!MochiKit.DOM.currentDocument().background_resize){MochiKit.DOM.currentDocument().background_resize=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(partial(function(opacity){this.create_background(opacity);},opacity),this));}},create_wizard_container:function(){var obj=MochiKit.DOM.getElement("wizard_container");if(!obj){var element=DIV({"id":"wizard_container","style":"overflow: hidden; background-color: #FFFFFF; position: absolute; z-index: 1002; top: 0px; left: 0px;"});document.body.appendChild(element);if(!MochiKit.DOM.currentDocument().background_recenter){MochiKit.DOM.currentDocument().background_recenter=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(function(){Basis.center_element("wizard_container",true);},this));}}},default_screen:function(name){var section=DIV({"style":"overflow: auto;"});section.style.padding="10px";var element=DIV();var table=TABLE({"cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD(null,section))));var button_back=(this.current_step>0)?INPUT({"type":"button","value":(this.options["back_button_text"]?this.options["back_button_text"]:"Back")}):null;var button_next=(this.current_step<(this.steps.length-1))?INPUT({"type":"button","value":(this.options["next_button_text"]?this.options["next_button_text"]:"Next")}):null;var button_done=(this.current_step==(this.steps.length-1))?INPUT({"type":"button","value":(this.options["done_button_text"]?this.options["done_button_text"]:"Done")}):null;var button_cancel=(this.options["cancel_button"]!==false)?INPUT({"type":"button","value":(this.options["cancel_button_text"]?this.options["cancel_button_text"]:"Cancel")}):null;Basis.signal_handler.connect(button_back,"onclick",bind(function(){this.render_step(this.current_step-1);},this));Basis.signal_handler.connect(button_next,"onclick",bind(function(){this.render_step(this.current_step+1);},this));Basis.signal_handler.connect(button_done,"onclick",bind(function(){this.done();},this));Basis.signal_handler.connect(button_cancel,"onclick",bind(function(){this.cancel();},this));var buttons=DIV({"style":"text-align: right; height: 30px;"},button_back,button_next,button_cancel,button_done);element.appendChild(Basis.dashboard.header_block(name,false));element.appendChild(table);element.appendChild(buttons);element.content=section;Basis.register_size_constraints(element.content,"100%","100%");Basis.register_size_constraints(element,"100%","100%");Basis.register_size_constraints(table,"100%","100%");return element;},destroy_background:function(fade){var fade=(fade===false)?false:true;var obj=MochiKit.DOM.getElement("background");if(obj){Basis.remove_element("wizard_container");MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().wizard_container_resize);MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().wizard_container_recenter);if(this.should_destroy_background){var after_finish=partial(function(obj){MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().background_resize);MochiKit.DOM.currentDocument().background_resize=null;Basis.remove_element(obj);},obj);if(fade){MochiKit.Visual.fade(obj,{"duration":0.5,"from":0.5,"afterFinish":after_finish});}else{after_finish();}}}},done:function(from_cancel){if((!from_cancel&&this.can_unload())||from_cancel){if(this.tiles.tiles&&this.tiles.tiles[this.tiles.tiles.length-1]){if(Basis.is_function(this.tiles.tiles[this.tiles.tiles.length-1].on_unload)){this.tiles.tiles[this.tiles.tiles.length-1].on_unload();}
if(Basis.is_function(this.tiles.tiles[this.tiles.tiles.length-1].after_unload)){this.tiles.tiles[this.tiles.tiles.length-1].after_unload();}}
this.tiles.clear_all_tiles();this.current_step=-1;this.destroy_background();Basis.state_handler.revert();if(from_cancel!==true){this.on_done();}}},redefine_tile_sizing:function(){this.tiles.resize_tiles=function(){if(Basis.is_live_dom_node(this.container_element)){var container_size=MochiKit.Style.getElementDimensions(this.container_element);if(container_size){for(var i=0;i<this.tiles.length;i++){var tile=this.tiles[i];Basis.set_style(tile,{"left":(i*container_size.w)+"px"});}
Basis.set_element_dimensions(this.child_tile_container_element,{"w":(container_size.w*this.tiles.length),"h":container_size.h});Basis.set_style(this.child_tile_container_element,{"left":(this.current_tile*container_size.w*-1)+"px"});}}};},render_step:function(index){if(this.current_step==index){return;}
if(this.can_unload()){this.current_step=index;if(this.tiles.tiles[index]){this.tiles.go_to(index);return;}
if(this.steps[index]){var name=this.steps[index].name;var content=this.steps[index].content;var options=this.steps[index].options;var options=Basis.is_object(options)?options:{};var tile=this.tiles.create_tile();tile.name=name;tile.appendChild(this.default_screen(name));tile.hide_when_sliding=tile.firstChild.content;tile.on_load=options["on_load"];tile.on_unload=options["on_unload"];tile.before_unload=options["before_unload"];tile.after_unload=options["after_unload"];tile.can_unload=options["can_unload"];var index=this.tiles.push_tile(tile);if(content){content=Basis.is_element(content)?content:SPAN(null,content);tile.firstChild.content.appendChild(content);}
MochiKit.Style.resizeConstrainedElements();this.create_wizard_container();Basis.updated_live_dom();this.tiles.go_to(index);return index;}}}};;Basis.grid_control.contact_list=function(options){this.__init__(options);};Basis.grid_control.contact_list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.contact_list_resource_id=null;this.grid_control.current_mode="individual";this.grid_control.contact_map={};this.grid_control.data_type="CONTACT_type";this.grid_control.root_class_name="Basis.contact_list";this.grid_control.fields_to_display={"individual":["first_name","last_name","company_name","phone_cell","email_address1"],"organization":["company_name","address1","address2","city","state","zip_code","county","notes"]};this.grid_control.countries={"":" ","US":"United States","AF":"Afghanistan","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua And Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia And Herzegowina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodia","CM":"Cameroon","CA":"Canada","CV":"Cape Verde","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos (Keeling) Islands","CO":"Colombia","KM":"Comoros","CG":"Congo","CD":"Congo, The Democratic Republic Of The","CK":"Cook Islands","CR":"Costa Rica","CI":"Cote D'Ivoire","HR":"Croatia (Local Name: Hrvatska)","CU":"Cuba","CY":"Cyprus","CZ":"Czech Republic","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","TP":"East Timor","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","ET":"Ethiopia","FK":"Falkland Islands (Malvinas)","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","FX":"France, Metropolitan","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard And Mc Donald Islands","VA":"Holy See (Vatican City State)","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran (Islamic Republic Of)","IQ":"Iraq","IE":"Ireland","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People'S Republic Of","KR":"Korea, Republic Of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People'S Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libyan Arab Jamahiriya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macau","MK":"Macedonia, Former Yugoslav Republic Of","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia, Federated States Of","MD":"Moldova, Republic Of","MC":"Monaco","MN":"Mongolia","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","AN":"Netherlands Antilles","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"Reunion","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","KN":"Saint Kitts And Nevis","LC":"Saint Lucia","VC":"Saint Vincent And The Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome And Principe","SA":"Saudi Arabia","SN":"Senegal","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SK":"Slovakia (Slovak Republic)","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia, South Sandwich Islands","ES":"Spain","LK":"Sri Lanka","SH":"St. Helena","PM":"St. Pierre And Miquelon","SD":"Sudan","SR":"Suriname","SJ":"Svalbard And Jan Mayen Islands","SZ":"Swaziland","SE":"Sweden","CH":"Switzerland","SY":"Syrian Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, United Republic Of","TH":"Thailand","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad And Tobago","TN":"Tunisia","TR":"Turkey","TM":"Turkmenistan","TC":"Turks And Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","UM":"United States Minor Outlying Islands","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands (British)","VI":"Virgin Islands (U.S.)","WF":"Wallis And Futuna Islands","EH":"Western Sahara","YE":"Yemen","YU":"Yugoslavia","ZM":"Zambia","ZW":"Zimbabwe"};this.grid_control.states={"":" ","AL":"Alabama","AK":"Alaska","AS":"American Samoa","AZ":"Arizona","AR":"Arkansas","AE":"Armed Forces - Europe","AP":"Armed Forces - Pacific","AA":"Armed Forces - USA/Canada","CA":"California","CO":"Colorado","CT":"Connecticut","DE":"Delaware","DC":"District of Columbia","FM":"Federated States of Micronesia","FL":"Florida","GA":"Georgia","GU":"Guam","HI":"Hawaii","ID":"Idaho","IL":"Illinois","IN":"Indiana","IA":"Iowa","KS":"Kansas","KY":"Kentucky","LA":"Louisiana","ME":"Maine","MH":"Marshall Islands","MD":"Maryland","MA":"Massachusetts","MI":"Michigan","MN":"Minnesota","MS":"Mississippi","MO":"Missouri","MT":"Montana","NE":"Nebraska","NV":"Nevada","NH":"New Hampshire","NJ":"New Jersey","NM":"New Mexico","NY":"New York","NC":"North Carolina","ND":"North Dakota","OH":"Ohio","OK":"Oklahoma","OR":"Oregon","PA":"Pennsylvania","PR":"Puerto Rico","RI":"Rhode Island","SC":"South Carolina","SD":"South Dakota","TN":"Tennessee","TX":"Texas","UT":"Utah","VT":"Vermont","VI":"Virgin Islands","VA":"Virginia","WA":"Washington","WV":"West Virginia","WI":"Wisconsin","WY":"Wyoming","AB":"Alberta","BC":"British Columbia","MB":"Manitoba","NB":"New Brunswick","NF":"Newfoundland","MP":"Northern Mariana Islandt","NT":"Northwest Territories","NS":"Nova Scotia","ON":"Ontario","PW":"Palau Island","PE":"Prince Edward Island","QC":"Quebec","SK":"Saskatchewan","YT":"Yukon Territory","Australian Capital Territory":"Australian Capital Territory","New South Wales":"New South Wales","Northern Territory":"Northern Territory","Queensland":"Queensland","South Australia":"South Australia","Tasmania":"Tasmania","Victoria":"Victoria","Western Australia":"Western Australia"};this.grid_control.counties={"MI":{"":" ","Alcona":"Alcona","Alger":"Alger","Allegan":"Allegan","Alpena":"Alpena","Antrim":"Antrim","Arenac":"Arenac","Baraga":"Baraga","Barry":"Barry","Bay":"Bay","Benzie":"Benzie","Berrien":"Berrien","Branch":"Branch","Calhoun":"Calhoun","Cass":"Cass","Charlevoix":"Charlevoix","Cheboygan":"Cheboygan","Chippewa":"Chippewa","Clare":"Clare","Clinton":"Clinton","Crawford":"Crawford","Delta":"Delta","Dickinson":"Dickinson","Eaton":"Eaton","Emmet":"Emmet","Genesee":"Genesee","Gladwin":"Gladwin","Gogebic":"Gogebic","Grand Traverse":"Grand Traverse","Gratiot":"Gratiot","Hillsdale":"Hillsdale","Houghton":"Houghton","Huron":"Huron","Ingham":"Ingham","Ionia":"Ionia","Iosco":"Iosco","Iron":"Iron","Isabella":"Isabella","Jackson":"Jackson","Kalamazoo":"Kalamazoo","Kalkaska":"Kalkaska","Kent":"Kent","Keweenaw":"Keweenaw","Lake":"Lake","Lapeer":"Lapeer","Leelanau":"Leelanau","Lenawee":"Lenawee","Livingston":"Livingston","Luce":"Luce","Mackinac":"Mackinac","Macomb":"Macomb","Manistee":"Manistee","Marquette":"Marquette","Mason":"Mason","Mecosta":"Mecosta","Menominee":"Menominee","Midland":"Midland","Missaukee":"Missaukee","Monroe":"Monroe","Montcalm":"Montcalm","Montmorency":"Montmorency","Muskegon":"Muskegon","Newaygo":"Newaygo","Oakland":"Oakland","Oceana":"Oceana","Ogemaw":"Ogemaw","Ontonagon":"Ontonagon","Osceola":"Osceola","Oscoda":"Oscoda","Otsego":"Otsego","Ottawa":"Ottawa","Presque Isle":"Presque Isle","Roscommon":"Roscommon","Saginaw":"Saginaw","St. Clair":"St. Clair","St. Joseph":"St. Joseph","Sanilac":"Sanilac","Schoolcraft":"Schoolcraft","Shiawassee":"Shiawassee","Tuscola":"Tuscola","Van Buren":"Van Buren","Washtenaw":"Washtenaw","Wayne":"Wayne","Wexford":"Wexford"},"OH":{"":" ","Adams":"Adams","Allen":"Allen","Ashland":"Ashland","Ashtabula":"Ashtabula","Athens":"Athens","Auglaize":"Auglaize","Belmont":"Belmont","Brown":"Brown","Butler":"Butler","Carroll":"Carroll","Champaign":"Champaign","Clark":"Clark","Clermont":"Clermont","Clinton":"Clinton","Columbiana":"Columbiana","Coshocton":"Coshocton","Crawford":"Crawford","Cuyahoga":"Cuyahoga","Darke":"Darke","Defiance":"Defiance","Delaware":"Delaware","Erie":"Erie","Fairfield":"Fairfield","Fayette":"Fayette","Franklin":"Franklin","Fulton":"Fulton","Gallia":"Gallia","Geauga":"Geauga","Greene":"Greene","Guernsey":"Guernsey","Hamilton":"Hamilton","Hancock":"Hancock","Hardin":"Hardin","Harrison":"Harrison","Henry":"Henry","Highland":"Highland","Hocking":"Hocking","Holmes":"Holmes","Huron":"Huron","Jackson":"Jackson","Jefferson":"Jefferson","Knox":"Knox","Lake":"Lake","Lawrence":"Lawrence","Licking":"Licking","Logan":"Logan","Lorain":"Lorain","Lucas":"Lucas","Madison":"Madison","Mahoning":"Mahoning","Marion":"Marion","Medina":"Medina","Meigs":"Meigs","Mercer":"Mercer","Miami":"Miami","Monroe":"Monroe","Montgomery":"Montgomery","Morgan":"Morgan","Morrow":"Morrow","Muskingum":"Muskingum","Noble":"Noble","Ottawa":"Ottawa","Paulding":"Paulding","Perry":"Perry","Pickaway":"Pickaway","Pike":"Pike","Portage":"Portage","Preble":"Preble","Putnam":"Putnam","Richland":"Richland","Ross":"Ross","Sandusky":"Sandusky","Scioto":"Scioto","Seneca":"Seneca","Shelby":"Shelby","Stark":"Stark","Summit":"Summit","Trumbull":"Trumbull","Tuscarawas":"Tuscarawas","Union":"Union","Van Wert":"Van Wert","Vinton":"Vinton","Warren":"Warren","Washington":"Washington","Wayne":"Wayne","Williams":"Williams","Wood":"Wood","Wyandot":"Wyandot"}};this.grid_control.grid_field_map={"type":{"text":"Type","type":"select","array":{"individual":"Individual","organization":"Organization"},"field":"CONTACT_type"},"company_name":{"text":"Company Name","type":"text","field":"company_name"},"first_name":{"text":"First Name","type":"text","field":"first_name"},"last_name":{"text":"Last Name","type":"text","field":"last_name"},"address1":{"text":"Address","type":"text","field":"address1"},"address2":{"text":"Address (cont'd)","type":"text","field":"address2"},"city":{"text":"City","type":"text","field":"city"},"state":{"text":"State","type":"select","array":this.grid_control.states,"field":"state"},"zip_code":{"text":"Zip Code","type":"text","field":"zip_code"},"county":{"text":"County","type":"select","array":{},"field":"county"},"country":{"text":"Country","type":"select","array":this.grid_control.countries,"field":"country"},"phone_business":{"text":"Business","type":"text","field":"phone_business"},"phone_home":{"text":"Home","type":"text","field":"phone_home"},"phone_cell":{"text":"Cell","type":"text","field":"phone_cell"},"phone_fax":{"text":"Fax","type":"text","field":"phone_fax"},"email_address1":{"text":"Email","type":"text","field":"email_address1"},"email_address2":{"text":"Email (other)","type":"text","field":"email_address2"},"url1":{"text":"Website","type":"text","field":"url1"},"url2":{"text":"Website (other)","type":"text","field":"url2"},"facebook_url":{"text":"Facebook","type":"text","field":"facebook_url"},"twitter_username":{"text":"Twitter","type":"text","field":"twitter_username"},"linkedin_url":{"text":"LinkedIn","type":"text","field":"linkedin_url"},"notes":{"text":"Notes","type":"text","field":"notes"}};this.grid_control.resource_types={"individual":"Individual","organization":"Organization"};this.grid_control.default_resource_type="individual";this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("CONTACT",{"grid_control":this.grid_control});},this);this.grid_control.elements["contact_list"]=null;this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:((this.current_mode=="organization")?"company_name":"first_name")),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(){if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.contact_list_resource_id]["associated_resources"]["CONTACT.V2"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}
return new MochiKit.Async.succeed();}else{var to_post={};to_post["contact_list_resource_id"]=this.contact_list_resource_id;var as=new Basis.ajax_scaffold;as.alias="get_raw_contact_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];this.list.contact_map=raw_data["contact_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.email_contacts=bind(function(resource_ids,method){var method=(method==null)?"client":method;switch(method){case"client":var mailto="";var addresses={};for(var i=0;i<this.currently_selected.length;i++){var resource_id=this.currently_selected[i];var email_address1=this.get_master_field_data("email_address1",this.raw_data[resource_id],true);var email_address2=this.get_master_field_data("email_address2",this.raw_data[resource_id],true);addresses[email_address1]=true;addresses[email_address2]=true;}
var keys=Basis.keys(addresses);for(var i=0;i<keys.length;i++){if(keys[i]){mailto+=keys[i]+";";}}
mailto=mailto?("mailto:"+mailto):"";if(mailto){window.onbeforeunload=null;window.location.href=mailto;}
break;case"sitequarters":if(confirm("Are you sure you want to send email to "+((this.grid_control.currently_selected.length>1)?"these":"this")+" contact"+((this.grid_control.currently_selected.length>1)?"s":"")+"?")){this.grid_control.dashboard.run_wizard("EMAIL_CONTACTS",{"currently_selected":this.grid_control.currently_selected});}
break;}},this);this.grid_control.invite_contacts_as_user=bind(function(){if(confirm("Are you sure you want to invite "+((this.grid_control.currently_selected.length>1)?"these":"this")+" contact"+((this.grid_control.currently_selected.length>1)?"s":"")+" to become "+((this.grid_control.currently_selected.length>1)?"users":"a user")+" of this site?")){this.grid_control.dashboard.run_wizard("INVITE_USERS",{"currently_selected":this.grid_control.currently_selected});}},this);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT({"id":Basis.anonymous_element_id()});Basis.select_add_option(with_selected,""," ");Basis.select_add_options(with_selected,{"delete":"Delete Contacts","email_client":"Email via Outlook","email_contacts":"Email via SiteQuarters","export_to_vcards":"Export to vCards","invite_contacts_as_user":"Invite as Users"});Basis.select_add_options(with_selected,{"print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"print_detail":"Print - Detail"});Basis.signal_handler.connect(with_selected,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"email_client":this.email_contacts(this.currently_selected,"client");Basis.select_select_item_by_value(element,"");break;case"email_contacts":this.email_contacts(this.currently_selected,"sitequarters");Basis.select_select_item_by_value(element,"");break;case"invite_contacts_as_user":this.invite_contacts_as_user();Basis.select_select_item_by_value(element,"");break;case"export_to_vcards":if(this.currently_selected.length==0){alert("Please choose some contacts to export in vCard format.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;case"print_line_item":case"print_detail":if(this.currently_selected.length>0){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT.V2&mode="+((element.options[element.selectedIndex].value=="print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=this.fields_to_display[this.current_mode];var header=TR();header.appendChild(TD({"width":"1"}));header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
header.appendChild(TD({"style":"white-space: nowrap;","class":this.root_class_name+".table.field_name"},"Linked To"));header.appendChild(TD({"width":"1"}));var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox");for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];this.grid_field_map["county"]["array"]=this.counties[row["state"]];var edit_button=IMG({"src":this.dashboard.get_view_association_icon("CONTACT.V2"),"style":"cursor: pointer;"});Basis.signal_handler.connect(edit_button,"onclick.greedy",bind(partial(function(resource_id,contact_list){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.tiles[index].contact_list=contact_list;this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id,this),this.dashboard),false);tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));tr.appendChild(TD(null,edit_button));for(var x=0;x<fields.length;x++){var td=TD(null,this.get_master_field_data(fields[x],row));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}
var associated_contacts=DIV();if(this.dashboard.resource_linker[resource_id]["associated_resources"]["CONTACT.V2"]){var resource_ids=Basis.keys(this.dashboard.resource_linker[resource_id]["associated_resources"]["CONTACT.V2"]);for(var x=0;x<resource_ids.length;x++){if(((this.dashboard.resource_linker[resource_id]["misc_vars"]["CONTACT_type"]=="individual")&&(this.dashboard.resource_linker[resource_ids[x]]["misc_vars"]["CONTACT_type"]=="organization"))||((this.dashboard.resource_linker[resource_id]["misc_vars"]["CONTACT_type"]=="organization")&&(this.dashboard.resource_linker[resource_ids[x]]["misc_vars"]["CONTACT_type"]=="individual"))){associated_contacts.appendChild(this.dashboard.render_view("DEFAULT","resource_with_icon",resource_ids[x],true));}}}
tr.appendChild(TD({"class":"linked_to"},associated_contacts));var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"Contact List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode,type){var mode=Basis.in_array(mode,["detail","edit","add"])?mode:"detail";var type=(type=="individual")?"individual":"organization";var resource_id=Basis.is_number(resource_id)?Math.round(resource_id):null;var data_row=(mode=="add")?{}:this.raw_data[resource_id];var contact=null;if(resource_id&&data_row){switch(mode){case"detail":var selected=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});selected.resource_id=resource_id;selected.checked=this.is_selected(resource_id);Basis.signal_handler.connect(selected,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},selected),this),false);var edit_button=INPUT({"type":"button","value":"Edit"});var groups=this.render_groups(resource_id,"detail");this.grid_field_map["county"]["array"]=this.counties[data_row["state"]];contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},this.get_master_field_data("company_name",data_row)),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,this.get_master_field_data("type",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},this.get_master_field_data("first_name",data_row)),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,this.get_master_field_data("phone_business",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,this.get_master_field_data("phone_home",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,this.get_master_field_data("phone_cell",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,this.get_master_field_data("phone_fax",data_row)))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,this.get_master_field_data("email_address1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,this.get_master_field_data("email_address2",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,this.get_master_field_data("url1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,this.get_master_field_data("url2",data_row)))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},this.get_master_field_data("last_name",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},this.get_master_field_data("address1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},this.get_master_field_data("address2",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},this.get_master_field_data("city",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},this.get_master_field_data("state",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},this.get_master_field_data("zip_code",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},this.get_master_field_data("county",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},this.get_master_field_data("country",data_row))),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},this.get_master_field_data("notes",data_row))),null)))),TR(null,TD({"align":"center"},edit_button,null)),null));Basis.signal_handler.connect(edit_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,type,contact){var edit_contact=this.render_resource(resource_id,"edit",type);MochiKit.DOM.swapDOM(contact,edit_contact);},resource_id,type,contact),this),false);break;case"edit":var selected=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});selected.resource_id=resource_id;selected.checked=this.is_selected(resource_id);Basis.signal_handler.connect(selected,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},selected),this),false);var groups=this.render_groups(resource_id,"edit");var type=SELECT();Basis.select_add_options(type,{"individual":"Individual","organization":"Organization"});Basis.select_select_item_by_value(type,this.get_master_field_data("type",data_row,true,true));Basis.make_text_element_dropdown(type,null,{"resource_id":resource_id.toString(),"field":"CONTACT_type","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"CONTACT_type",type),this)});var company_name=INPUT({"type":"text","value":this.get_master_field_data("company_name",data_row,true)});Basis.make_text_element_editable(company_name,{"resource_id":resource_id.toString(),"field":"company_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"company_name",company_name),this)});var first_name=INPUT({"type":"text","value":this.get_master_field_data("first_name",data_row,true)});Basis.make_text_element_editable(first_name,{"resource_id":resource_id.toString(),"field":"first_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"first_name",first_name),this)});var last_name=INPUT({"type":"text","value":this.get_master_field_data("last_name",data_row,true)});Basis.make_text_element_editable(last_name,{"resource_id":resource_id.toString(),"field":"last_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"last_name",last_name),this)});var address1=INPUT({"type":"text","value":this.get_master_field_data("address1",data_row,true)});Basis.make_text_element_editable(address1,{"resource_id":resource_id.toString(),"field":"address1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"address1",address1),this)});var address2=INPUT({"type":"text","value":this.get_master_field_data("address2",data_row,true)});Basis.make_text_element_editable(address2,{"resource_id":resource_id.toString(),"field":"address2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"address2",address2),this)});var city=INPUT({"type":"text","value":this.get_master_field_data("city",data_row,true)});Basis.make_text_element_editable(city,{"resource_id":resource_id.toString(),"field":"city","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"city",city),this)});var state=SELECT();Basis.select_add_options(state,this.states);Basis.select_select_item_by_value(state,this.get_master_field_data("state",data_row,true,true));Basis.make_text_element_dropdown(state,null,{"resource_id":resource_id.toString(),"field":"state","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"state",state),this)});var zip_code=INPUT({"type":"text","value":this.get_master_field_data("zip_code",data_row,true)});Basis.make_text_element_editable(zip_code,{"resource_id":resource_id.toString(),"field":"zip_code","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"zip_code",zip_code),this)});var county=SELECT();Basis.select_add_options(county,this.counties[this.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));Basis.make_text_element_dropdown(county,null,{"resource_id":resource_id.toString(),"field":"county","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"county",county),this)});Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(county,state,resource_id){county.options.length=0;var data_row=this.raw_data[resource_id];this.grid_field_map["county"]["array"]=this.counties[state.options[state.selectedIndex].value];Basis.select_add_options(county,this.grid_field_map["county"]["array"]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));},county,state,resource_id),this),false);var country=SELECT();Basis.select_add_options(country,this.countries);Basis.select_select_item_by_value(country,this.get_master_field_data("country",data_row,true,true));Basis.make_text_element_dropdown(country,null,{"resource_id":resource_id.toString(),"field":"country","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"country",country),this)});var phone_business=INPUT({"type":"text","value":this.get_master_field_data("phone_business",data_row,true)});Basis.make_text_element_editable(phone_business,{"resource_id":resource_id.toString(),"field":"phone_business","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_business",phone_business),this)});var phone_home=INPUT({"type":"text","value":this.get_master_field_data("phone_home",data_row,true)});Basis.make_text_element_editable(phone_home,{"resource_id":resource_id.toString(),"field":"phone_home","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_home",phone_home),this)});var phone_cell=INPUT({"type":"text","value":this.get_master_field_data("phone_cell",data_row,true)});Basis.make_text_element_editable(phone_cell,{"resource_id":resource_id.toString(),"field":"phone_cell","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_cell",phone_cell),this)});var phone_fax=INPUT({"type":"text","value":this.get_master_field_data("phone_fax",data_row,true)});Basis.make_text_element_editable(phone_fax,{"resource_id":resource_id.toString(),"field":"phone_fax","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_fax",phone_fax),this)});var email_address1=INPUT({"type":"text","value":this.get_master_field_data("email_address1",data_row,true)});Basis.make_text_element_editable(email_address1,{"resource_id":resource_id.toString(),"field":"email_address1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"email_address1",email_address1),this)});var email_address2=INPUT({"type":"text","value":this.get_master_field_data("email_address2",data_row,true)});Basis.make_text_element_editable(email_address2,{"resource_id":resource_id.toString(),"field":"email_address2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"email_address2",email_address2),this)});var url1=INPUT({"type":"text","value":this.get_master_field_data("url1",data_row,true)});Basis.make_text_element_editable(url1,{"resource_id":resource_id.toString(),"field":"url1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"url1",url1),this)});var url2=INPUT({"type":"text","value":this.get_master_field_data("url2",data_row,true)});Basis.make_text_element_editable(url2,{"resource_id":resource_id.toString(),"field":"url2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"url2",url2),this)});var notes=TEXTAREA(null,this.get_master_field_data("notes",data_row,true));Basis.make_text_element_editable(notes,{"resource_id":resource_id.toString(),"field":"notes","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"notes",notes),this)});var done_button=INPUT({"type":"button","value":"Done"});contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,type)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null)))),TR(null,TD({"align":"center"},done_button)),null));Basis.signal_handler.connect(done_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(contact,resource_id){var to_replace=this.render_resource(resource_id,"detail",this.current_mode);MochiKit.DOM.swapDOM(contact,to_replace);},contact,resource_id),this),false);break;case"add":var data_row={"CONTACT_type":"individual"};var groups=this.render_groups(resource_id,"add");var checks=MochiKit.DOM.getElementsByTagAndClassName("input",null,groups);for(var i=0;i<checks.length;i++){if(checks[i].type=="checkbox"){Basis.signal_handler.connect(checks[i],"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=this[element_name]?this[element_name]:[];if(element.checked){this[element_name].push(element.value);}else{this[element_name]=Basis.array_delete_index(this[element_name],Basis.index_of(this[element_name],element.value));}},checks[i],"groups"),data_row));}}
var type=SELECT();Basis.select_add_options(type,{"individual":"Individual","organization":"Organization"});Basis.signal_handler.connect(type,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},type,"CONTACT_type"),data_row));var company_name=INPUT({"type":"text","value":this.get_master_field_data("company_name",data_row,true)});Basis.signal_handler.connect(company_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},company_name,"company_name"),data_row));var first_name=INPUT({"type":"text","value":this.get_master_field_data("first_name",data_row,true)});Basis.signal_handler.connect(first_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},first_name,"first_name"),data_row));var last_name=INPUT({"type":"text","value":this.get_master_field_data("last_name",data_row,true)});Basis.signal_handler.connect(last_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},last_name,"last_name"),data_row));var address1=INPUT({"type":"text","value":this.get_master_field_data("address1",data_row,true)});Basis.signal_handler.connect(address1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},address1,"address1"),data_row));var address2=INPUT({"type":"text","value":this.get_master_field_data("address2",data_row,true)});Basis.signal_handler.connect(address2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},address2,"address2"),data_row));var city=INPUT({"type":"text","value":this.get_master_field_data("city",data_row,true)});Basis.signal_handler.connect(city,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},city,"city"),data_row));var state=SELECT();Basis.select_add_options(state,this.states);Basis.select_select_item_by_value(state,this.get_master_field_data("state",data_row,true,true));Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},state,"state"),data_row));var zip_code=INPUT({"type":"text","value":this.get_master_field_data("zip_code",data_row,true)});Basis.signal_handler.connect(zip_code,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},zip_code,"zip_code"),data_row));var county=SELECT();Basis.select_add_options(county,this.counties[this.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));Basis.signal_handler.connect(county,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},county,"county"),data_row));Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(county,state,resource_id){county.options.length=0;var data_row=this.raw_data[resource_id];this.grid_field_map["county"]["array"]=this.counties[state.options[state.selectedIndex].value];Basis.select_add_options(county,this.grid_field_map["county"]["array"]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));},county,state,resource_id),this),false);var country=SELECT();Basis.select_add_options(country,this.countries);Basis.select_select_item_by_value(country,this.get_master_field_data("country",data_row,true,true));Basis.signal_handler.connect(country,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},country,"country"),data_row));var phone_business=INPUT({"type":"text","value":this.get_master_field_data("phone_business",data_row,true)});Basis.signal_handler.connect(phone_business,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_business,"phone_business"),data_row));var phone_home=INPUT({"type":"text","value":this.get_master_field_data("phone_home",data_row,true)});Basis.signal_handler.connect(phone_home,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_home,"phone_home"),data_row));var phone_cell=INPUT({"type":"text","value":this.get_master_field_data("phone_cell",data_row,true)});Basis.signal_handler.connect(phone_cell,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_cell,"phone_cell"),data_row));var phone_fax=INPUT({"type":"text","value":this.get_master_field_data("phone_fax",data_row,true)});Basis.signal_handler.connect(phone_fax,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_fax,"phone_fax"),data_row));var email_address1=INPUT({"type":"text","value":this.get_master_field_data("email_address1",data_row,true)});Basis.signal_handler.connect(email_address1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},email_address1,"email_address1"),data_row));var email_address2=INPUT({"type":"text","value":this.get_master_field_data("email_address2",data_row,true)});Basis.signal_handler.connect(email_address2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},email_address2,"email_address2"),data_row));var url1=INPUT({"type":"text","value":this.get_master_field_data("url1",data_row,true)});Basis.signal_handler.connect(url1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},url1,"url1"),data_row));var url2=INPUT({"type":"text","value":this.get_master_field_data("url2",data_row,true)});Basis.signal_handler.connect(url2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},url2,"url2"),data_row));var notes=TEXTAREA(null,this.get_master_field_data("notes",data_row,true));Basis.signal_handler.connect(notes,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},notes,"notes"),data_row));var save_button=INPUT({"type":"button","value":"Save"});var cancel_button=INPUT({"type":"button","value":"Cancel"});contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,type)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null)))),TR(null,TD({"align":"center"},save_button,cancel_button)),null));var cancel_add_func=MochiKit.Base.bind(function(){MochiKit.Signal.disconnect(this.elements["add_new_resource"].center);MochiKit.DOM.removeElement(this.elements["add_new_resource"]);this.elements["add_new_resource"]=null;this.destroy_background();},this);Basis.signal_handler.connect(save_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(data_row,cancel_add_func){var a=this.add_new_resource("CONTACT",data_row);a.addCallback(cancel_add_func);},data_row,cancel_add_func),this),false);Basis.signal_handler.connect(cancel_button,"onclick",cancel_add_func,false);break;}}
return contact;},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.contact_list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.grid_control.generic_resource=function(options){this.__init__(options);};Basis.grid_control.generic_resource.prototype={__init__:function(options){this.resource_type="";this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.container=this;this.grid_control.current_mode="";this.grid_control.data_type="";this.grid_control.root_class_name="Basis.resource_list";this.grid_control.current_sorting={"field":"display_text","direction":"ASC"};this.grid_control.grid_field_map={"display_text":{"text":"Display Text","type":"text","field":"display_text"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard(this.resource_type,{"grid_control":this.grid_control});},this);this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:"display_text"),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(resource_type){if(this.dashboard){this.raw_data={};this.group_map={};var site_resource_id=null;var keys=Basis.keys(this.dashboard.available_resources["SITE"]);for(var i=0;i<keys.length;i++){if(Basis._int(this.dashboard.available_resources["SITE"][keys[i]]["misc_vars"]["id"])==Basis._int(this.dashboard.site_id)){site_resource_id=keys[i];}}
if(site_resource_id){var keys=Basis.keys(this.dashboard.resource_linker[site_resource_id]["associated_resources"][resource_type]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]&&this.dashboard.resource_linker[keys[i]]["associated_resources"]){this.raw_data[keys[i]]={"display_text":this.dashboard.resource_display_text(keys[i])};this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={"resource_type":resource_type};var as=new Basis.ajax_scaffold;as.alias="get_raw_resource_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.container.resource_type=="TASK_LIST"){Basis.select_add_options(with_selected,{"TASK_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"TASK_LIST_print_detail":"Print - Detail"});}
if(this.container.resource_type=="CONTACT_LIST"){Basis.select_add_options(with_selected,{"CONTACT_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"CONTACT_LIST_print_detail":"Print - Detail"});Basis.select_add_options(with_selected,{"CONTACT_LIST_email_contacts":"Email via SiteQuarters"});Basis.select_add_options(with_selected,{"CONTACT_LIST_import_from_vcard":"Import vCards"});Basis.select_add_options(with_selected,{"CONTACT_LIST_export_to_vcards":"Export to vCards"});}
Basis.select_add_options(with_selected,{"delete":"Delete Resources"});Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":if(this.currently_selected.length==0){alert("Please choose something to delete.");}else{this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");}
break;case"TASK_LIST_print_line_item":case"TASK_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a task list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK_LIST&mode="+((element.options[element.selectedIndex].value=="TASK_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)))+"&include_archived="+(confirm("Do you want to print archived tasks in this list as well?")?"true":"false");window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_print_line_item":case"CONTACT_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a contact list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT_LIST&mode="+((element.options[element.selectedIndex].value=="CONTACT_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)))+"&include_archived="+(confirm("Do you want to print archived contacts in this list as well?")?"true":"false");window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_email_contacts":if(this.currently_selected.length==0){alert("Please choose one or more contact lists to send email to.");}else{if(confirm("Are you sure you want to send email to "+((this.currently_selected.length>1)?"these":"this")+" entire contact list"+((this.currently_selected.length>1)?"s":"")+"?")){this.dashboard.run_wizard("EMAIL_CONTACTS",{"currently_selected":this.currently_selected});}}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_import_from_vcard":if(this.currently_selected.length==0){alert("Please choose a contact list to import vCards into.");}else if(this.currently_selected.length>1){alert("You can only import to one list at a time.");}else{this.dashboard.run_wizard("IMPORT_FROM_VCARD",{"contact_list_id":this.currently_selected[0]});}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_export_to_vcards":if(this.currently_selected.length==0){alert("Please choose a contact list to export in vCard format.");}else if(this.currently_selected.length>1){alert("You can only export one list at a time.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD(null,Basis.nbsp()));header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset?this.current_dataset:[]);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","browser_row",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);Basis.signal_handler.connect(td,"onclick.greedy",bind(function(){this.checked=this.checked?false:true;Basis.signal_handler.execute_interactive_element(this,"onclick");},row_selector),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN());},this.grid_control);},render:function(view){if(this.grid_control.dashboard&&this.grid_control.dashboard.render_view){switch(this.resource_type){case"USER":if(this.grid_control.dashboard.user_levels[this.grid_control.dashboard.current_user_level]<this.grid_control.dashboard.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){this.grid_control.can_add_new_resource=false;}
break;default:break;}
this.grid_control.render(view);}}};;Basis.grid_control.generic_resource.simplified=function(options){this.__init__(options);};Basis.grid_control.generic_resource.simplified.prototype={__init__:function(options){var options=options?options:{};options["num_per_page"]=options["num_per_page"]?options["num_per_page"]:10;this.generic_resource=new Basis.grid_control.generic_resource(options);this.generic_resource.grid_control.refresh_controls=function(){if(this.elements["filter_controls"]){if(this.num_per_page>Basis.array_length(this.raw_data)){this.elements["filter_controls"].parentNode.parentNode.style.display="none";}else{this.elements["filter_controls"].parentNode.parentNode.style.display="";}}
if(this.elements["page_controls"]){if(this.num_per_page>Basis.array_length(this.raw_data)){if(this.elements["page_controls"]&&this.elements["page_controls"].parentNode){this.elements["page_controls"].parentNode.parentNode.style.display="none";}}else{if(this.elements["page_controls"]&&this.elements["page_controls"].parentNode){this.elements["page_controls"].parentNode.parentNode.style.display="";}
MochiKit.Style.resizeConstrainedElements();}}};this.generic_resource.grid_control.render=function(view){this.elements["container_output"]=Basis.get_element(this.elements["container_output"]);if(this.elements["container_output"]&&Basis.is_element(this.elements["container_output"])){this.refresh_data();var first_render=(this.elements["container_output"]&&!this.elements["list_output"])?true:false;if(first_render){var search_text=INPUT({"type":"text","style":"width: 150px;"});Basis.signal_handler.connect(search_text,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){this.current_filter["search_text"]=element.value;},search_text),this),false);var search_text_go=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(search_text_go,"onclick",MochiKit.Base.bind(function(){this.refresh();},this),false);MochiKit.Signal.connect(search_text,"onkeydown",MochiKit.Base.partial(function(text_input,button,e){if(e.key().string=="KEY_ENTER"){Basis.signal_handler.execute_interactive_element(text_input,"onchange");Basis.signal_handler.execute_interactive_element(button,"onclick");}},search_text,search_text_go));this.refresh_pages();var dropdown_num_per_page=SELECT();Basis.select_add_options(dropdown_num_per_page,{10:"10 per Page",25:"25 per Page",50:"50 per Page",9999999:"All Results"});Basis.select_select_item_by_value(dropdown_num_per_page,this.num_per_page);Basis.signal_handler.connect(dropdown_num_per_page,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){this.num_per_page=element.options[element.selectedIndex].value;this.current_page=1;this.refresh();},dropdown_num_per_page),this),false);this.elements["filter_controls"]=TABLE({"width":"100%","cellpadding":"5"},TBODY(null,TR(null,TD({"width":"1"},"Search: "),TD({"width":"1"},search_text),TD({"width":"1"},search_text_go),TD({"style":"text-align: right;"},dropdown_num_per_page))));this.elements["list_output"]=DIV(null,"Grid Rows; if you see this, please refresh the page!");var container=TABLE({"border":"0","width":"100%","class":this.root_class_name+".container","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD(null,this.elements["filter_controls"])),TR(null,TD(null,this.elements["page_controls"])),TR(null,TD(null,this.elements["list_output"]))));this.refresh_controls();this.refresh_title();Basis.remove_children(this.elements["container_output"]);this.elements["container_output"].appendChild(container);Basis.updated_live_dom();}
this.refresh();MochiKit.Style.resizeConstrainedElements();}};this.generic_resource.grid_control.refresh=function(){this.current_filter_hash["all"]=this.filter_hash("all");this.refresh_controls();this.refresh_data();this.refresh_pages();this.refresh_title();this.refresh_table();};this.generic_resource.grid_control.refresh_table=function(){var table=TABLE({"class":this.root_class_name+".table"},TBODY());var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","resource_with_icon",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
if(this.elements["list_output"].parentNode){MochiKit.DOM.swapDOM(this.elements["list_output"],table);}
this.elements["list_output"]=table;Basis.updated_live_dom();};this.grid_control=this.generic_resource.grid_control;},render:function(view){if(this.grid_control.dashboard&&this.grid_control.dashboard.render_view){this.grid_control.render(view);}}};;Basis.grid_control.list=function(options){this.__init__(options);};Basis.grid_control.list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.container=this;this.grid_control.current_mode="";this.grid_control.data_type="";this.grid_control.root_class_name="Basis.list";this.grid_control.current_sorting={"field":"display_text","direction":"ASC"};this.grid_control.grid_field_map={"display_text":{"text":"Display Text","type":"text","field":"display_text"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("LIST_ITEM",{"grid_control":this.grid_control});},this);this.grid_control.elements["list"]=null;this.grid_control.fetch_raw_data=bind(function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.list_resource_id]["associated_resources"]["LIST_ITEM"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){if((!use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]!="yes"))||(use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]=="yes"))){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}}
return new MochiKit.Async.succeed();}else{}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.container.resource_type=="TASK_LIST"){Basis.select_add_options(with_selected,{"TASK_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"TASK_LIST_print_detail":"Print - Detail"});}
if(this.container.resource_type=="CONTACT_LIST"){Basis.select_add_options(with_selected,{"CONTACT_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"CONTACT_LIST_print_detail":"Print - Detail"});Basis.select_add_options(with_selected,{"CONTACT_LIST_import_from_vcard":"Import vCards"});Basis.select_add_options(with_selected,{"CONTACT_LIST_export_to_vcards":"Export to vCards"});}
Basis.select_add_options(with_selected,{"delete":"Delete Resources"});Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":if(this.currently_selected.length==0){alert("Please choose something to delete.");}else{this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");}
break;case"TASK_LIST_print_line_item":case"TASK_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a task list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK_LIST&mode="+((element.options[element.selectedIndex].value=="TASK_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_print_line_item":case"CONTACT_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a contact list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT_LIST&mode="+((element.options[element.selectedIndex].value=="CONTACT_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_import_from_vcard":if(this.currently_selected.length==0){alert("Please choose a contact list to import vCards into.");}else if(this.currently_selected.length>1){alert("You can only import to one list at a time.");}else{this.dashboard.run_wizard("IMPORT_FROM_VCARD",{"contact_list_id":this.currently_selected[0]});}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_export_to_vcards":if(this.currently_selected.length==0){alert("Please choose a contact list to export in vCard format.");}else if(this.currently_selected.length>1){alert("You can only export one list at a time.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD(null,Basis.nbsp()));header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset?this.current_dataset:[]);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","browser_row",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);Basis.signal_handler.connect(td,"onclick.greedy",bind(function(){this.checked=this.checked?false:true;Basis.signal_handler.execute_interactive_element(this,"onclick");},row_selector),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode){return DIV(null,"delete me");},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.grid_control.task_list=function(options){this.__init__(options);};Basis.grid_control.task_list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.task_list_resource_id=null;this.grid_control.current_mode="default";this.grid_control.contact_map={};this.grid_control.data_type="";this.grid_control.root_class_name="Basis.task_list";this.grid_control.fields_to_display={"default":["task_name","assigned_to","status","priority","date_due","percent_complete"]};this.grid_control.current_sorting={"field":"task_name","direction":"ASC"};this.grid_control.grid_field_map={"task_name":{"text":"Task Name","type":"text","field":"task_name"},"assigned_to":{"text":"Assigned To","type":"select","array":this.grid_control.dashboard.get_site_resource_list("CONTACT.V2"),"field":"assigned_to"},"status":{"text":"Status","type":"select","array":["Not Started","In Progress","Completed","Deferred","Waiting on someone else"],"field":"status"},"priority":{"text":"Priority","type":"select","array":["(1) High Priority","(2) Normal Priority","(3) Low Priority","(4) Scheduled"],"field":"priority","ivalue":1},"date_due":{"text":"Due Date","type":"text","field":"date_due"},"date_assigned":{"text":"Date Assigned","type":"text","field":"date_assigned"},"percent_complete":{"text":"Percent Complete","type":"select","array":["0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"],"field":"percent_complete"},"notes":{"text":"Notes","type":"text","field":"notes"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("TASK",{"grid_control":this.grid_control});},this);this.grid_control.elements["task_list"]=null;this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:"task_name"),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.task_list_resource_id]["associated_resources"]["TASK"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){if((!use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]!="yes"))||(use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]=="yes"))){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={};to_post["task_list_resource_id"]=this.task_list_resource_id;var as=new Basis.ajax_scaffold;as.alias="get_raw_task_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];this.list.contact_map=raw_data["contact_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.dashboard.resource_linker[this.task_list_resource_id]["resource_access"]["full_access"]){Basis.select_add_options(with_selected,{"archive":"Archive Tasks"});Basis.select_add_options(with_selected,{"unarchive":"Un-Archive Tasks"});}
Basis.select_add_options(with_selected,{"print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"print_detail":"Print - Detail"});if(this.dashboard.resource_linker[this.task_list_resource_id]["resource_access"]["full_access"]){Basis.select_add_options(with_selected,{"delete":"Delete Tasks"});}
Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"archive":this.archive_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"delete":this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"print_line_item":case"print_detail":if(this.currently_selected.length>0){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK&mode="+((element.options[element.selectedIndex].value=="print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"unarchive":this.unarchive_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=this.fields_to_display[this.current_mode];var header=TR();header.appendChild(TD({"width":"1"}));header.appendChild(TD({"width":"1"}));if(fields){for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}}
header.appendChild(TD({"width":"1"}));var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox");for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];var color_coding=null;if(this.get_master_field_data("priority",row,true)=="(1) High Priority"){color_coding=(this.root_class_name+".table.row.color_coding.high_priority");}
if(this.get_master_field_data("status",row,true)=="Completed"){color_coding=(this.root_class_name+".table.row.color_coding.completed");}
if(color_coding){MochiKit.DOM.addElementClass(tr,color_coding);}
var edit_button=IMG({"src":this.dashboard.get_view_association_icon("TASK"),"style":"cursor: pointer;"});Basis.signal_handler.connect(edit_button,"onclick.greedy",bind(partial(function(resource_id,task_list){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.tiles[index].task_list=task_list;this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id,this),this.dashboard),false);tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));tr.appendChild(TD(null,edit_button));if(fields){for(var x=0;x<fields.length;x++){var td=TD(null,this.get_master_field_data(fields[x],row));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}}
var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"Task List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode){return DIV(null,"delete me");},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.task_list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.discussion_board=function(){this.__init__();};Basis.discussion_board.prototype={__init__:function(){this.session_id=null;this.post_url=null;this.resource_id=null;this.load_offset=null;this.logged_in=false;this.is_admin=false;this.is_moderated=false;this.is_collapsible=true;this.mode="single-thread";this.content_element=null;this.board=null;this.topics={};this.title="Discussion Board";this.debug=true;this.cookie_name="";this.custom_ajax_actions={};this.set_up_custom_ajax_actions();},compile:function(){switch(this.mode){case"single-thread":var a=this.custom_ajax_action("get_topics_and_comments");a.addCallback(MochiKit.Base.bind(function(){var element=MochiKit.DOM.getElement(this.content_element);if(element){Basis.remove_element(this.board);if(this.is_admin){var moderate=SELECT({"name":"moderate"});Basis.select_add_options(moderate,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(moderate,(this.is_moderated?"yes":"no"));Basis.make_text_element_dropdown(moderate,null,{"field":this.resource_id,"custom_action":"discussion_board.perform_moderation","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(moderate){this.is_moderated=(moderate.options[moderate.selectedIndex].value=="yes")?true:false;this.compile();},moderate),this)});moderate=SPAN(null,["Do you want this discussion moderated? ",moderate]);}else{var moderate=null;}
var moderate=null;this.board=DIV({"style":"padding: 10px;"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"300"},H3(null,this.title+" ("+this.count_comments()+" comment"+((this.count_comments()>1)?"s":"")+")")),TD({"style":"vertical-align: top;"},moderate)))));for(var topic_id in this.topics){if(typeof(this.topics[topic_id])!="function"){var node=this.render_topic(topic_id);this.board.appendChild(node);}}
if(this.is_admin){var new_comment=DIV({"class":"Basis.discussion_board.new_comment"},H3(null,"Add New Comment"),this.comment_form());this.board.appendChild(new_comment);}
MochiKit.DOM.insertSiblingNodesAfter(element,this.board);if(this.is_collapsible){for(var topic_id in this.topics){if(typeof(this.topics[topic_id])!="function"){Basis.convert_nested_elements_to_tree(topic_id,"div",true,false,"Basis.discussion_board.comment");}}}
Basis.updated_live_dom();}},this));break;case"threaded":break;}},comment_form:function(parent_id,comment_id,blank){if(parent_id&&comment_id&&!blank){var subject=(this.topics[parent_id]["comments"][comment_id])?this.topics[parent_id]["comments"][comment_id]["subject"]:"";var comment=(this.topics[parent_id]["comments"][comment_id])?this.topics[parent_id]["comments"][comment_id]["comment"]:"";}else{var subject="";var comment="";}
var subject_field=INPUT({"type":"text","name":"subject","style":"width: 450px;","value":subject});var comment_field=TEXTAREA({"name":"comment","style":"width: 450px; height: 75px;"},comment);var save_button=INPUT({"type":"button","value":"Save"});Basis.signal_handler.connect(save_button,"onclick",MochiKit.Base.bind(function(){if(comment_field.value){this.custom_ajax_action("save_comment",subject_field.value,comment_field.value,comment_id,this.resource_id,parent_id,(!blank?false:true));}else{alert("Your comment is empty!");}},this),false);if(parent_id){var cancel_button=INPUT({"type":"button","value":"Cancel"});}else{var cancel_button=null;}
var form=DIV({"class":"Basis.discussion_board.comment_form"},TABLE({"width":"100%"},TBODY(null,TR(null,TD({"width":"75"},"Subject:"),TD(null,subject_field)),TR(null,TD({"width":"75"},"Comment:"),TD(null,comment_field)),TR(null,TD({"width":"75"}," "),TD(null,save_button,cancel_button)))));if(parent_id){Basis.signal_handler.connect(cancel_button,"onclick",MochiKit.Base.bind(function(){if(confirm("Are you sure you want to cancel this comment?")){this.board.topics[parent_id]["comments"][comment_id].replying=false;this.board.topics[parent_id]["comments"][comment_id].editing=false;Basis.remove_element(this.button.parent_form);}},{"button":cancel_button,"board":this}),false);cancel_button.parent_form=form;}
return form;},custom_ajax_action:function(alias){if(alias&&this.custom_ajax_actions[alias]&&(typeof(this.custom_ajax_actions[alias])=="function")){var args=[];for(var x=1;x<arguments.length;x++){args[x-1]=arguments[x];}
return this.custom_ajax_actions[alias].apply(null,args);}},count_comments:function(){var num=0;for(var i in this.topics){if(typeof(this.topics[i])!="function"){num+=Basis.array_length(this.topics[i]["comments"]);}}
return num;},render_comment:function(topic_id,comment_id){if(topic_id&&comment_id&&this.topics[topic_id]&&this.topics[topic_id]["comments"][comment_id]){var data=this.topics[topic_id]["comments"][comment_id];var date=new Date(Basis.parse_number(data["timestamp"])*1000);var comment_text=data["comment"]?data["comment"]:"";var avatar=data["avatar"]?IMG({"src":data["avatar"]}):null;if(this.logged_in){var reply_button=INPUT({"type":"button","value":"Reply to this"});Basis.signal_handler.connect(reply_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(anchor){if(!this.topics[topic_id]["comments"][comment_id].editing&&!this.topics[topic_id]["comments"][comment_id].replying){var form=this.comment_form(topic_id,comment_id,true);var div=anchor.parentNode.parentNode.parentNode.parentNode.parentNode;MochiKit.DOM.insertSiblingNodesAfter(div,form);this.topics[topic_id]["comments"][comment_id].replying=true;}},reply_button),this),false);}else{var reply_button=null;}
if(this.is_admin){var edit_button=INPUT({"type":"button","value":"Edit this"});Basis.signal_handler.connect(edit_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(anchor){if(!this.topics[topic_id]["comments"][comment_id].editing&&!this.topics[topic_id]["comments"][comment_id].replying){var form=this.comment_form(topic_id,comment_id,false);var div=anchor.parentNode.parentNode.parentNode.parentNode.parentNode;MochiKit.DOM.insertSiblingNodesAfter(div,form);this.topics[topic_id]["comments"][comment_id].editing=true;}},edit_button),this),false);if(this.is_moderated){var approve=SELECT({"name":"approve"});Basis.select_add_options(approve,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(approve,data["approved"]);Basis.make_text_element_dropdown(approve,null,{"field":comment_id,"custom_action":"discussion_board.perform_approval","after_success":MochiKit.Base.bind(function(){},this)});approve=SPAN(null,["Is this comment approved? ",approve]);}else{var archive=null;}
var archive=SELECT({"name":"archive"});Basis.select_add_options(archive,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(archive,data["archived"]);Basis.make_text_element_dropdown(archive,null,{"field":comment_id,"custom_action":"discussion_board.perform_archival","after_success":MochiKit.Base.bind(function(){this.compile();},this)});archive=SPAN(null,["Archive this comment? ",archive]);}else{var edit_button=null;var approve=null;var archive=null;}
var comment=DIV({"id":comment_id,"class":"Basis.discussion_board.comment"},DIV({"class":"Basis.discussion_board.comment_container"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"rowSpan":"4","class":"Basis.discussion_board.avatar","valign":"top"},avatar,DIV(null,(Basis.is_number(data["contact_resource_id"]))?A({"href":Basis.misc_vars.dashboard?("javascript:Basis.misc_vars.dashboard.show_resource("+data["contact_resource_id"]+");"):Basis.preserve_url_path()+"/find_page_by_type.php?type=CONTACT&resource_id="+data["contact_resource_id"]},STRONG(null,data["username"])):STRONG(null,data["username"]))),TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.subject"},data["subject"]))),TR(null,TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.comment_text"},comment_text))),TR(null,TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.created_by"},"Posted",Basis.nbsp(),Basis.english_timestamp(date,this.load_offset,true)))),TR(null,TD({"colSpan":"2","style":"text-align: right; white-space: nowrap;"},DIV({"class":"Basis.discussion_board.functions"},approve," ",archive," ",edit_button," ",reply_button)))))));return comment;}},render_topic:function(topic_id){var nodes=DIV({"class":"Basis.discussion_board"});if(topic_id&&this.topics[topic_id]&&this.topics[topic_id]["tree"]){this.render_topic_item=MochiKit.Base.bind(function(topic_id,comment_id,node){var element=this.render_comment(topic_id,comment_id);var keys=MochiKit.Base.keys(node);if(keys.length>0){for(var i=0;i<keys.length;i++){var key=keys[i];if(this.topics[topic_id]["comments"][key]){var child=this.render_topic_item(topic_id,key,node[key]);if(element&&child){element.appendChild(child);}}}}
return element;},this);var list=this.topics[topic_id]["tree"];for(var i in list){if(typeof(list[i])!="function"){nodes.appendChild(this.render_topic_item(topic_id,i,list[i]));}}}
return nodes;},set_custom_ajax_action:function(alias,func){if(alias&&func&&(typeof(func)=="function")){this.custom_ajax_actions[alias]=func;}},set_session_variables:function(vars){var to_post=MochiKit.Base.update({},vars);var as=new Basis.ajax_scaffold;as.alias="set_session_variables";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});},set_up_custom_ajax_actions:function(){this.set_custom_ajax_action("get_topics_and_comments",MochiKit.Base.bind(function(){var to_post={};to_post["resource_id"]=this.resource_id?this.resource_id:"";var as=new Basis.ajax_scaffold;as.alias="get_topics_and_comments";as.board=this;as.on_success=function(req){this.board.topics=MochiKit.Base.evalJSON(req.responseText);window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_comment",MochiKit.Base.bind(function(subject,comment,comment_id,resource_id,parent_id,replying){var to_post={};to_post["subject"]=subject?subject:"";to_post["comment"]=comment?comment:"";to_post["comment_id"]=comment_id?comment_id:"";to_post["resource_id"]=resource_id?resource_id:"";to_post["parent_id"]=parent_id?parent_id:"";to_post["replying"]=replying?"true":"false";var as=new Basis.ajax_scaffold;as.alias="save_comment";as.board=this;as.on_success=MochiKit.Base.partial(function(parent_id,req){if(req.responseText=="true"){this.board.compile(parent_id);}else{}
window.status="Done";},parent_id);return as.post({"to_post":to_post});},this));}};;try{if(typeof(Basis)=='undefined'){throw"";}}catch(e){throw"Basis.bcalendar depends on Basis!";}
if(typeof(Basis.bcalendar)=='undefined'){Basis.bcalendar={};}
Basis.bcalendar.NAME='Basis.bcalendar';Basis.bcalendar.VERSION='0.1';Basis.bcalendar.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};Basis.bcalendar.toString=function(){return this.__repr__();};Basis.bcalendar=function(){this.__init__();};Basis.bcalendar.instances=[];Basis.bcalendar.prototype={__init__:function(){this.mtend={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31};this.months={1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"};this.container_element;this.variable_name;this.date_element;this.append_to_element;this.month;this.day;this.year;this.original_month;this.original_day;this.original_year;this.loading_events;this.self_id;this.sid;this.events=new Object();this.has_events=false;this.show_selected_day=true;this.visible=false;this.linked_to_dropdown=true;this.logged_in=false;this.class_prefix="bcalendar";this.mode="calendar";this.output="";this.list_id=1;this.duration=0.00;this.index=Basis.bcalendar.instances.length;Basis.bcalendar.instances[this.index]=this;},add_event:function(month,day,year){if(month&&day&&year){var date_parts=this.date_parts((year+"-"+month+"-"+day),true);var to_post=new Object();to_post["date"]=date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];to_post["form_request"]=this.list_id;window.status="Fetching form...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_add_event_form";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.month=month;as.day=day;as.year=year;as.on_success=function(req){var response=req.responseText;if(response){var html=response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" onclick=\""+this.pvar.variable_name+".add_event_post('"+eval(this.year)+"-"+((eval(this.month)<10)?("0"+eval(this.month)):(eval(this.month)))+"-"+((eval(this.day)<10)?("0"+eval(this.day)):(eval(this.day)))+"');\"></div>";var obj=MochiKit.DOM.getElement("add_event");if(!obj){this.popup=Basis.popup({"id":"add_event","html":html,"window_title":"Add Event - "+this.pvar.months[eval(this.month)]+" "+eval(this.day)+", "+eval(this.year)});}else{this.popup.html_container.innerHTML=html;}
window.status="Done";}else{window.status="add_event(): ERROR!";}};as.post({"to_post":to_post});}},add_event_post:function(date){var element=MochiKit.DOM.getElement("add_event");if(element){var form_data=MochiKit.DOM.formContents("form_999999");form_data[0][form_data[0].length]="PHPSESSID";form_data[1][form_data[1].length]=this.sid;form_data[0][form_data[0].length]="date";form_data[1][form_data[1].length]=date;form_data[0][form_data[0].length]="form_request";form_data[1][form_data[1].length]=this.list_id;var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
window.status="Saving event...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_add_event_save";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("add_event");if(obj&&obj.close){obj.close();}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},append_output:function(){if(this.container_element){var element=MochiKit.DOM.getElement(this.container_element);if(element){var temp="";if(this.has_events){temp+="<div>";temp+="  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"margin-bottom: 10px; border: 1px solid #EBEBEB; background-color: #FFFFFF; padding: 10px;\">";temp+="    <tr>";temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".compile();\">Calendar View</span></td>";temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_mode();\">Project List View</span></td>";if(this.logged_in){temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_manage_categories();\"><b>Manage Project Categories</b></td>";}
temp+="    </tr>";temp+="  </table>";temp+="</div>";}
this.output=temp+this.output;element.innerHTML=this.output;Basis.execute_javascript(element);}
if(!this.linked_to_dropdown){element.style.display="block";element.style.position="static";element.style.zIndex=0;}}},bcalendar_td_out:function(element){if(MochiKit.DOM.getElement(element)){MochiKit.DOM.getElement(element).className=MochiKit.DOM.getElement(element).oclass;}},bcalendar_td_over:function(element){if(MochiKit.DOM.getElement(element)){MochiKit.DOM.getElement(element).oclass=MochiKit.DOM.getElement(element).className;MochiKit.DOM.getElement(element).className=this.class_prefix+"_td_over";}},calendar_mode:function(){this.calendar_render();},calendar_render:function(){if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
var tdate=new Date();if(!this.month){this.month=tdate.getMonth()+1;}
if(!this.day){this.day=tdate.getDay();}
if(!this.year){this.year=tdate.getFullYear();}
if(!this.original_month){this.original_month=this.month;}
if(!this.original_day){this.original_day=this.day;}
if(!this.original_year){this.original_year=this.year;}
if(this.variable_name&&(this.date_element||!this.linked_to_dropdown)){if(!MochiKit.DOM.getElement(this.container_element)){if(this.date_element){this.container_element="calendar_"+this.date_element.name+"_"+this.date_element.rrv+"_"+this.date_element.findex;}else{this.container_element="calendar_"+this.variable_name;}}
this.day=1;var grid={0:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},1:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},2:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},3:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},4:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},5:{0:"",1:"",2:"",3:"",4:"",5:"",6:""}};this.output="";if(this.month&&this.day&&this.year){var date_info=this.get_date_info();var t=date_info.day_of_week;var counter=1;if(date_info){for(y=0;y<6;y++){for(x=t;x<7;x++){if(counter<=date_info.days_in_month){grid[y][x]=counter;counter++;}}
t=0;}}
if((this.month-1)<=0){var pmonth=12;var pyear=this.year-1;}else{var pmonth=this.month-1;var pyear=this.year;}
if((this.month+1)>=13){var nmonth=1;var nyear=this.year+1;}else{var nmonth=this.month+1;var nyear=this.year;}
this.output+="<table id=\"bcalendar_table_"+this.variable_name+"\" class=\""+this.class_prefix+"_table\">\n";this.output+="  <tbody>";this.output+="    <tr>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_nav_left\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+pmonth+","+pyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/prev_on.gif\" border=\"0\"></a></td>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_month\" class=\""+this.class_prefix+"_month_year\" colspan=\"5\">"+this.months[this.month]+" "+this.year+"</td>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_nav_right\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+nmonth+","+nyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/next_on.gif\" border=\"0\"></a></td>\n";this.output+="    </tr>\n";this.output+="    <tr class=\""+this.class_prefix+"_tr\">\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Sun</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Mon</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Tue</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Wed</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Thu</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Fri</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Sat</td>\n";this.output+="    </tr>\n";var rows=6;if(!grid[5][0]){rows=5;}
for(y=0;y<rows;y++){this.output+="    <tr class=\""+this.class_prefix+"_tr\">\n";for(x=0;x<7;x++){var today=new Date();var td_js="";if((today.getDate()==grid[y][x])&&((today.getMonth()+1)==this.month)&&(today.getFullYear()==this.year)){today="_today";}else{if(!grid[y][x]){today="_outside_month";}else{today="";}}
if(this.show_selected_day){if(this.date_element){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){if((month_element.options[month_element.selectedIndex].value==this.month)&&(day_element.options[day_element.selectedIndex].text==grid[y][x])&&(year_element.options[year_element.selectedIndex].text==this.year)){today="_selected";}}}else{if((this.original_month==this.month)&&(this.original_year==this.year)&&(this.original_day==grid[y][x])){today="_selected";}}}
if(grid[y][x]){td_js=" onmouseover=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_over(this); }\" onmouseout=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_out(this); }\" ";if(this.linked_to_dropdown){td_js+=" onclick=\"if ("+this.variable_name+") {"+this.variable_name+".update_date_element('"+this.month+"','"+grid[y][x]+"','"+this.year+"',this); }\" ";}}
var add_event="";if(this.logged_in&&grid[y][x]){var add_event="<a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".add_event('"+this.month+"','"+grid[y][x]+"','"+this.year+"'); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/add_date_small.gif\" border=\"0\" style=\"cursor: pointer;\"></a>";}
this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_"+grid[y][x]+"\" class=\""+this.class_prefix+"_td"+today+"\" "+td_js+"><table width=\"100%\"><tr><td><span class=\""+this.class_prefix+"_td_date\">"+grid[y][x]+"</span></td><td align=\"right\">"+add_event+"</td></tr></table></td>\n";}
this.output+="    </tr>\n";}
this.output+="  </tbody>";this.output+="</table>";}
if(!MochiKit.DOM.getElement(this.container_element)){var container_element=new MochiKit.DOM.DIV({"id":this.container_element,"class":this.class_prefix+"_container"},null);if(this.date_element){var element=MochiKit.DOM.getElement("calendar_"+this.date_element.rrv+"_"+this.date_element.findex+"_placeholder");}else if(this.append_to_element&&MochiKit.DOM.getElement(this.append_to_element)){var element=MochiKit.DOM.getElement(this.append_to_element);}else{var element=document.body;}
element.appendChild(container_element);}
this.append_output();if(!this.date_element&&this.has_events){this.tasklist_get_categories();this.date_get_events(this.year+"-"+this.month);}
return this.output;}else{return false;}},compile:function(){switch(this.mode){case"calendar":this.calendar_mode();break;case"tasklist":this.tasklist_mode();break;default:this.calendar_mode();break;}},date_parts:function(date,padded){if(date){var date_parts=date.split("-");var year=date_parts[0];var month=date_parts[1];var day=date_parts[2];if(year&&(year.substring(0,1)=="0")){year=year.substring(1);}
if(month&&(month.substring(0,1)=="0")){month=month.substring(1);}
if(day&&(day.substring(0,1)=="0")){day=day.substring(1);}
if(year){year=eval(year);}
if(month){month=eval(month);}
if(day){day=eval(day);}
if(!padded){return{"y":year,"m":month,"d":day};}else{return{"y":(year<10)?("0"+year):(year),"m":(month<10)?("0"+month):(month),"d":(day<10)?("0"+day):(day)};}}},date_get_events:function(date){if(date&&!this.linked_to_dropdown){window.status="Fetching calendar events...";var to_post=new Object();to_post["date"]=date;to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="calendar_date_get_events";as.sid=this.sid;as.url=this.self_url;as.date=date;as.pvar=this;as.on_success=function(req){var response=req.responseText;if(response){this.pvar.events=MochiKit.Base.evalJSON(req.responseText);var date_parts=this.pvar.date_parts(this.date);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];if(day=="0"){day=null;}
if(year&&month&&!day){var date_info=this.pvar.get_date_info();for(x=1;x<=date_info["days_in_month"];x++){this.pvar.date_render_events(year+"-"+month+"-"+x);}}else{this.pvar.date_render_events(date);}
window.status="Done";}else{window.status="date_get_events(): ERROR!";}};as.post({"to_post":to_post});}},date_render_events:function(date,total_show,update_html){var date_parts=this.date_parts(date,true);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];date=year+"-"+month+"-"+day;if(this.events[date]){var events=this.events[date];if(events){var output="";var x=0;var total=0;var trim=false;var trimmed=false;if(!total_show){total_show=4;trim=true;}
if((year==this.year)&&(month==this.month)){for(var i in events){if(events[i]&&events[i]["event"]){if(x<total_show){var event_title=events[i]["event"];if(trim&&(event_title.length>15)){event_title=(event_title.substring(0,12)+"...");trimmed=true;}
output+="<div id=\"bcalendar_event_"+events[i]["id"]+"\" class=\""+this.class_prefix+"_event\" style=\"cursor: pointer;\" onmouseover=\"this.className='"+this.class_prefix+"_event_over';\" onmouseout=\"this.className='"+this.class_prefix+"_event';\" onclick=\""+this.variable_name+".event_render_details('"+events[i]["id"]+"');\">"+event_title+"</div>\n";x++;}
total++;}}
if(output&&(total>x)){output+="<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">..."+(total-x)+" more</a></div>";}else{if(trimmed){output+="<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">...more</a></div>";}}
if((update_html==null)||(update_html==true)){var element=MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day));if(element){element.innerHTML+=output;}}}
return output;}}},date_render_all_events:function(date){if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
var date_parts=this.date_parts(date);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];var events=this.date_render_events(date,1000,false);var html=events;var to_pos=MochiKit.Style.getElementPosition(MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day)));var obj=MochiKit.DOM.getElement("all_events");if(!obj){this.all_events_popup=Basis.popup({"id":"all_events","html":html,"center_element":false,"move_to":to_pos,"window_title":(this.months[eval(month)]+" "+eval(day)+", "+eval(year))});}else{this.all_events_popup.html_container.innerHTML=html;}},delete_event:function(event_id){if(confirm('Are you sure you want to delete this event?')==true){window.status="Deleting calendar event...";var to_post=new Object();to_post["event_id"]=event_id;var as=new Basis.ajax_scaffold;as.alias="calendar_date_delete_event";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){if(MochiKit.DOM.getElement("add_event")){MochiKit.DOM.removeElement("add_event");}
if(MochiKit.DOM.getElement("event_detail")){MochiKit.DOM.removeElement("event_detail");}
if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},edit_event:function(event_id,date){if(event_id&&date){var date_parts=this.date_parts(date,true);var to_post=new Object();to_post["event_id"]=event_id;to_post["date"]=date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];window.status="Fetching form...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_edit_event_form";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.event_id=event_id;as.on_success=function(req){var response=req.responseText;if(response){var html=response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" onclick=\""+this.pvar.variable_name+".save_event_post('"+this.event_id+"');\"></div>";var obj=MochiKit.DOM.getElement("event_detail");if(!obj){this.pvar.event_detail_popup=Basis.popup({"id":"event_detail","html":html,"window_title":"Edit Event"});}else{this.pvar.event_detail_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);Basis.center_element(obj,true);}
window.status="Done";}else{window.status="edit_event(): ERROR!";}};as.post({"to_post":to_post});}},event_get_details:function(id){if(this.events){for(var date in this.events){for(var i in this.events[date]){if(this.events[date][i]["id"]&&this.events[date][i]["id"]==id){return this.events[date][i];}}}}
return false;},event_render_details:function(id){var element=MochiKit.DOM.getElement("bcalendar_event_"+id);if(element){var html="<table cellpadding=\"5\">";var details=this.event_get_details(id);if(details&&details["assigned_date"]&&(details["assigned_date"]!="0000-00-00")){var date_parts=this.date_parts(details["assigned_date"]);var event_year=date_parts["y"];var event_month=date_parts["m"];var event_day=date_parts["d"];}
if(details&&details["event"]){html+="<tr><td><b>Name:</b></td><td>"+details["event"]+"</td></tr>\n";}
if(details&&details["category_id"]&&this.tasklist_categories&&this.tasklist_categories[details["category_id"]]){html+="<tr><td><b>Project:</b></td><td>"+this.tasklist_categories[details["category_id"]]+"</td></tr>\n";}
if(details&&details["due_date"]&&(details["due_date"]!="0000-00-00")){var date_parts=this.date_parts(details["due_date"]);var due_year=date_parts["y"];var due_month=date_parts["m"];var due_day=date_parts["d"];html+="<tr><td><b>Due Date:</b></td><td>"+this.months[due_month].substring(0,3)+" "+due_day+", "+due_year+"</td></tr>\n";}
if(details&&details["notes"]){html+="<tr><td><b>Notes:</b></td><td>"+details["notes"].replace(/\n/g,"<br>")+"</td></tr>\n";}
if(details&&details["notes2"]){html+="<tr><td><b>More notes:</b></td><td>"+details["notes2"].replace(/\n/g,"<br>")+"</td></tr>\n";}
html+="</table>";var delete_button="";var edit_button="";if(this.logged_in){edit_button="<input type=\"button\" value=\"Edit\" onclick=\""+this.variable_name+".edit_event('"+id+"','"+details["assigned_date"]+"');\">";delete_button="<input type=\"button\" value=\"Delete\" onclick=\""+this.variable_name+".delete_event('"+id+"');\">";}
html+="<div align=\"right\">"+edit_button+"&nbsp;"+delete_button+"</div>";var obj=MochiKit.DOM.getElement("event_detail");if(!obj){this.event_detail_popup=Basis.popup({"id":"event_detail","html":html,"center_element":false,"move_to":MochiKit.Style.getElementPosition(element),"window_title":"Event Detail"});}else{this.event_detail_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));}}},format_date_short:function(date_text){if(date_text){if(date_text!="0000-00-00"){var date_parts=this.date_parts(date_text);var y=date_parts["y"];var m=date_parts["m"];var d=date_parts["d"];return this.months[m].substring(0,3)+" "+d+", "+y;}else{return"&nbsp;";}}
return"&nbsp;";},format_date_long:function(date_text){if(date_text){if(date_text!="0000-00-00"){var date_parts=this.date_parts(date_text);var y=date_parts["y"];var m=date_parts["m"];var d=date_parts["d"];return this.months[m]+" "+d+", "+y;}else{return"&nbsp;";}}
return"&nbsp;";},get_date_info:function(){this.month=eval(this.month);this.day=eval(this.day);this.year=eval(this.year);var mtend=this.mtend[this.month];if((this.month==2)&&((this.year%4)==0)){mtend++;}
if(this.day<(mtend+1)){var c=new Date();c.setFullYear(this.year,(this.month-1),this.day);return{"day_of_week":c.getDay(),"days_in_month":mtend};}else{return false;}},navigate:function(m,y){if(!this.date_element){if(MochiKit.DOM.getElement("add_event")&&MochiKit.DOM.getElement("add_event").close){MochiKit.DOM.getElement("add_event").close();}
if(MochiKit.DOM.getElement("event_detail")&&MochiKit.DOM.getElement("event_detail").close){MochiKit.DOM.getElement("event_detail").close();}
if(MochiKit.DOM.getElement("all_events")&&MochiKit.DOM.getElement("all_events").close){MochiKit.DOM.getElement("all_events").close();}}
this.month=m;this.year=y;this.compile();if(MochiKit.DOM.getElement(this.container_element)){MochiKit.DOM.getElement(this.container_element).innerHTML=this.output;Basis.execute_javascript(this.container_element);}
if(this.date_element){var info=this.get_date_info();var days_in_month=info["days_in_month"];var element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);if(element){if(days_in_month!=element.options.length){var sindex=element.selectedIndex;element.options.length=0;for(var x=0;x<days_in_month;x++){element.options[x]=new Option(x+1,x);}
if(sindex){element.selectedIndex=sindex;}}}}},save_event_post:function(id){var element=MochiKit.DOM.getElement("event_detail");if(element){var form_data=MochiKit.DOM.formContents("form_888888");form_data[0][form_data[0].length]="PHPSESSID";form_data[1][form_data[1].length]=this.sid;form_data[0][form_data[0].length]="id";form_data[1][form_data[1].length]=id;var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
window.status="Saving event...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_edit_event_save";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("event_detail");if(obj&&obj.close){obj.close();}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},tasklist_edit_task:function(task_id){},tasklist_get_categories:function(on_complete){window.status="Fetching tasklist events...";if(!on_complete){on_complete=function(){};}
this.on_complete=on_complete;var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_get_categories";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){this.pvar.tasklist_categories=MochiKit.Base.evalJSON(req.responseText);var obj=MochiKit.DOM.getElement("category_id_999999");if(obj){MochiKit.Logging.log("category_id_999999");}
var obj=MochiKit.DOM.getElement("category_id_888888");if(obj){MochiKit.Logging.log("category_id_888888");}
this.pvar.on_complete();window.status="Done";};as.post({"to_post":to_post});},tasklist_get_events:function(on_complete){window.status="Fetching tasklist events...";if(!on_complete){on_complete=function(){};}
this.on_complete=on_complete;var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_get_events";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){this.pvar.tasklist_events=MochiKit.Base.evalJSON(req.responseText);this.pvar.on_complete();window.status="Done";};as.post({"to_post":to_post});},tasklist_manage_categories:function(){var obj=MochiKit.DOM.getElement("tasklist_manage_categories");if(obj&&obj.close){obj.close();}else{window.status="Fetching tasklist categories...";var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_manage_categories";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("tasklist_manage_categories");if(!obj){this.tasklist_manage_categories_popup=Basis.popup({"id":"tasklist_manage_categories","html":req.responseText,"window_title":"Manage Project Categories"});}else{this.tasklist_manage_categories_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));}
window.status="Done";};as.post({"to_post":to_post});}},tasklist_mode:function(){this.output="<img src=\"images/images/ajax_loading.gif\">";this.append_output();this.tasklist_get_categories(function(){this.tasklist_get_events(function(){this.tasklist_render_events();this.append_output();});});},tasklist_render_events:function(){if(this.tasklist_events&&this.tasklist_categories){this.output="<style>";this.output+="";this.output+="  .tasklist_row {";this.output+="  ";this.output+="    border: 1px solid #EBEBEB;";this.output+="    margin-bottom: 3px;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  .tasklist_row td {";this.output+="  ";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-left: 0px;";this.output+="    border-right: 0px;";this.output+="    background-color: #FFFFFF;";this.output+="    color: #626262;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  ";this.output+="  .tasklist_row td.left {";this.output+="  ";this.output+="    border-left: inherit;";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-right: 0px;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  .tasklist_row td.right {";this.output+="  ";this.output+="    border-right: inherit;";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-left: 0px;";this.output+="  ";this.output+="  }";this.output+="";this.output+="</style>";for(var i in this.tasklist_categories){if(typeof(this.tasklist_categories[i])!="function"){this.output+="<div style=\"display: inline; font-weight: bold; padding-right: 5px;\">"+this.tasklist_categories[i]+"</div>";if(this.logged_in){this.output+="<img src=\"images/images/add_date_small.gif\">";}
this.output+="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">";this.output+="  <tr>";this.output+="    <td width=\"18\" style=\"vertical-align: top; padding-top: 5px;\"><img border=\"0\" id=\""+this.variable_name+"_"+i+"_icon\" src=\"images/images/tree-node-open-end.gif\" style=\"cursor: pointer;\" width=\"18\" height=\"18\" onclick=\"Basis.toggle_visible('"+this.variable_name+"_"+i+"_td'); (Basis.is_visible('"+this.variable_name+"_"+i+"_td')) ? (this.src = 'images/images/tree-node-open-end.gif') : (this.src = 'images/images/tree-node-end.gif');\"></td>";this.output+="    <td id=\""+this.variable_name+"_"+i+"_td\" style=\"padding: 5px;\">";this.output+="      <table border=\"0\" cellpadding=\"5\" width=\"100%\" style=\"border-spacing: 0px 5px;\" class=\"\">";this.output+="        <tr class=\"tasklist_row\">";this.output+="          <td width=\"100\" class=\"left\"><b>Date</b></td>";this.output+="          <td><b>Task Name</b></td>";this.output+="          <td width=\"100\"><b>Due</b></td>";this.output+="          <td width=\"125\"><b>Assigned To</b></td>";this.output+="          <td width=\"125\"><b>Status</b></td>";this.output+="          <td width=\"100\" align=\"center\"><b>More Detail</b></td>";this.output+="          <td width=\"100\" align=\"center\" class=\"right\"><b>Archive Task</b></td>";this.output+="        </tr>";for(var j in this.tasklist_events[i]){if(typeof(this.tasklist_events[i][j])!="function"){for(var k in this.tasklist_events[i][j]){if(this.tasklist_events[i][j][k]==""){this.tasklist_events[i][j][k]="&nbsp;";}}
this.output+="        <tr class=\"tasklist_row\">";this.output+="          <td width=\"100\" class=\"left\">"+this.format_date_long(this.tasklist_events[i][j]["assigned_date"])+"</td>";this.output+="          <td>"+this.tasklist_events[i][j]["event"]+"</td>";this.output+="          <td width=\"100\">"+this.format_date_long(this.tasklist_events[i][j]["due_date"])+"</td>";this.output+="          <td width=\"125\">"+this.tasklist_events[i][j]["assigned_to"]+"</td>";this.output+="          <td width=\"125\">"+this.tasklist_events[i][j]["status"]+"</td>";this.output+="          <td width=\"100\" align=\"center\">m.detail</td>";this.output+="          <td width=\"100\" align=\"center\" class=\"right\">a.task</td>";this.output+="        </tr>";}}
this.output+="      </table>";this.output+="    </td>";this.output+="  </tr>";this.output+="</table>";}}}},toggle:function(button_element){if(MochiKit.DOM.getElement(this.container_element)&&MochiKit.DOM.getElement(button_element)){if(!this.visible){this.month=this.original_month;this.day=this.original_day;this.year=this.original_year;this.compile();var from_pos=MochiKit.Style.getElementPosition(button_element);var from_dim=MochiKit.Style.getElementDimensions(button_element);var to_dim=MochiKit.Style.getElementDimensions(this.container_element);var to_pos=new Object;to_pos.x=from_pos.x+from_dim.w+5;to_pos.y=from_pos.y-to_dim.h;if(MochiKit.DOM.isChildNode(button_element,"add_event")){var minus_pos=MochiKit.Style.getElementPosition("add_event");to_pos.x-=minus_pos.x;to_pos.y-=minus_pos.y;}else if(MochiKit.DOM.isChildNode(button_element,"event_detail")){var minus_pos=MochiKit.Style.getElementPosition("event_detail");to_pos.x-=minus_pos.x;to_pos.y-=minus_pos.y;}
MochiKit.Style.setElementPosition(this.container_element,to_pos);}
if(!this.visible){this.visible=true;}else{this.visible=false;}
MochiKit.DOM.getElement(this.container_element).style.display=(MochiKit.DOM.getElement(this.container_element).style.display=="none")?"inline":"none";}},update_calendar:function(){if(this.date_element&&this.date_element.name&&this.date_element.rrv){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){this.month=month_element.options[month_element.selectedIndex].value;this.day=day_element.options[day_element.selectedIndex].text;this.year=year_element.options[year_element.selectedIndex].text;this.original_month=this.month;this.original_day=this.day;this.original_year=this.year;this.compile();}}},update_date_element:function(month,day,year,button_element){if(this.date_element&&this.date_element.name&&this.date_element.rrv&&month&&day&&year){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){for(var i in month_element.options){if((month_element.options[i])&&(month_element.options[i].value)&&(month_element.options[i].value==month)){month_element.options[i].selected=true;this.original_month=month_element.options[i].value;}}
for(var i in day_element.options){if((day_element.options[i])&&(day_element.options[i].text)&&(day_element.options[i].text==day)){day_element.options[i].selected=true;this.original_day=day_element.options[i].text;}}
for(var i in year_element.options){if((year_element.options[i])&&(year_element.options[i].text)&&(year_element.options[i].text==year)){year_element.options[i].selected=true;this.original_year=year_element.options[i].text;}}
if(button_element&&MochiKit.DOM.getElement(button_element)){this.toggle(button_element);}}}}};;Basis.color_chooser_popup=function(initial_hex,insert_after){var color_chooser=new Basis.color_chooser();color_chooser.set_color_from_hex(initial_hex);var popup=DIV({"class":"bcalendar_container","style":"position: absolute; top: 0px; left: 0px; display: block;"});popup.color_chooser=color_chooser;popup.insert_after=insert_after;popup.compile=bind(function(){Basis.remove_children(this);this.color_chooser.compile();this.color_chooser.elements["container"].style.display="";this.color_chooser.update_handles();this.color_chooser.on_change();document.body.appendChild(this.color_chooser.elements["container"]);Basis.updated_live_dom();},popup);return popup;};Basis.CSS=function(){this.__init__();};Basis.CSS.prototype={__init__:function(){this.css={};this.selectors={};this.advanced_fields=false;},compile:function(){this.css=Basis.is_object(this.css)?this.css:{};var save_button=INPUT({"type":"button","value":"Save All Changes"});Basis.signal_handler.connect(save_button,"onclick",bind(function(){if(Basis.misc_vars.dashboard){Basis.misc_vars.dashboard.custom_ajax_action("save_site_custom_css",this.get_raw_css(),this.get_css());}},this),false);var menu_content=TD({"width":"181"});var css_content=DIV();var advanced_fields=INPUT({"type":"checkbox"});advanced_fields.checked=this.advanced_fields?true:false;MochiKit.Signal.connect(advanced_fields,"onclick",partial(function(advanced_fields,css_options,css_content){css_options.advanced_fields=advanced_fields.checked;Basis.remove_children(css_content);Basis.signal_handler.execute_interactive_element(css_options.menu.menu_items[css_options.menu.currently_selected].element,"onclick");},advanced_fields,this,css_content));var output=TABLE({"cellpadding":"0","cellspacing":"0","class":"Basis\.CSS"},TBODY(null,TR(null,menu_content,TD(null,TABLE({"width":"100%","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-left: 20px;"},save_button),TD({"style":"text-align: right;"},"Advanced options? ",advanced_fields)))),css_content))));var menu_items=DIV({"class":"Basis.CSS.menu"});this.menu=new Basis.simple_css_menu();;for(var i in this.selectors){if(i&&!Basis.is_function(this.selectors[i])){var menu_item=DIV({"class":"Basis.CSS.menu.item"},this.selectors[i]);menu_items.appendChild(menu_item);this.menu.add_menu_item(menu_item,{"onmouseover_class":"Basis.CSS.menu.item.hover","selected_class":"Basis.CSS.menu.item.selected"});menu_item.css_options=new Basis.CSS.default_options(i,this.css[i.replace(/\\\\/g,"\\")],this.selectors[i]);Basis.signal_handler.connect(menu_item,"onclick",partial(function(menu_item,css_options,css_content){Basis.remove_children(css_content);menu_item.css_options.advanced_fields=css_options.advanced_fields;css_content.appendChild(menu_item.css_options.compile());},menu_item,this,css_content),false);}}
this.menu.compile();Basis.signal_handler.execute_interactive_element(this.menu.menu_items[0].element,"onclick");menu_content.appendChild(menu_items);return output;},get_css:function(){var css={};for(var i=0;i<this.menu.menu_items.length;i++){css[this.menu.menu_items[i].element.css_options.base_selector]=this.menu.menu_items[i].element.css_options.css;}
return css;},get_raw_css:function(){var css="";for(var i=0;i<this.menu.menu_items.length;i++){css+=this.menu.menu_items[i].element.css_options.get_css();}
return css;}};Basis.CSS.default_options=function(base_selector,css,name){this.__init__(base_selector,css,name);};Basis.CSS.default_options.prototype={__init__:function(base_selector,css,name){this.css=css?css:{};this.name=name?name:base_selector;this.base_selector=base_selector?base_selector:"";this.preview_element=null;this.advanced_fields=false;},bind_default_action:function(field,css_property,optional_evaluation_function){var default_action=bind(partial(function(field,css_property,optional_evaluation_function){if(Basis.is_element(field)&&css_property){if(!Basis.is_function(optional_evaluation_function)){this.css[css_property]=Basis.get_formfield_value(field);}else{this.css[css_property]=optional_evaluation_function();}}
this.update_preview_element();},field,css_property,optional_evaluation_function),this);MochiKit.Signal.connect(field,"onchange",default_action);default_action();},compile:function(){var content=DIV({"class":"Basis.CSS.default_options"},H3({"style":"margin-top: 0px; border-bottom: 1px solid #c0c0c0; padding-bottom: 10px;"},this.name));this.preview_element=DIV({"style":"width: 300px; height: 300px;"},"This is a preview of what this section will look like");var background_color_chooser=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});background_color_chooser.color_popup=new Basis.color_chooser_popup(null,background_color_chooser);background_color_chooser.open=false;background_color_chooser.color_popup.color_chooser.set_color_from_hex(this.value("background-color"));Basis.signal_handler.connect(background_color_chooser,"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},background_color_chooser),false);var background_color_hex=INPUT({"type":"text","value":this.value("background-color"),"style":"width: 70px;"});MochiKit.Signal.connect(background_color_hex,"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":background_color_chooser,"element":background_color_hex}));var background_color_block=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());background_color_block.style.backgroundColor=this.value("background-color");Basis.signal_handler.connect(background_color_block,"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":background_color_chooser,"element":background_color_block}),false);background_color_chooser.color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css["background-color"]=chooser.color_hex();this.update_preview_element();},background_color_chooser.color_popup.color_chooser,background_color_block,background_color_hex),this);var background_image_chooser=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});var background_image_link=INPUT({"type":"text","value":this.value("background-image").substring(4).substring(0,this.value("background-image").length-5)});Basis.signal_handler.connect(background_image_chooser,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element);},background_image_link),Basis.misc_vars.dashboard),false);var background_image_preview=IMG({"src":"images/images/spacer.gif"});MochiKit.Signal.connect(background_image_link,"onchange",partial(function(link,preview){var img=new Image();img.onload=partial(function(img,preview){preview.src=img.src;var dim={"h":img.height,"w":img.width};if(dim.h>200){var ratio=(dim.h/200);var dim={"h":200,"w":Math.round(dim.w/ratio)};}
if(dim.w>200){var ratio=(dim.w/200);var dim={"h":Math.round(dim.h/ratio),"w":200};}
MochiKit.DOM.setElementDimensions(preview,dim);},img,preview);img.src=link.value;},background_image_link,background_image_preview));var background_repeat=SELECT();Basis.select_add_options(background_repeat,{"":" ","repeat":"Tile","repeat-x":"Repeat Horizontally","repeat-y":"Repeat Vertically","no-repeat":"Don't Repeat","inherit":"Inherit"});Basis.select_select_item_by_value(background_repeat,this.value("background-repeat"));var background_position=SELECT();Basis.select_add_options(background_position,{"":" ","top left":"Top Left","top center":"Top Center","top right":"Top Right","center left":"Center Left","center center":"Center Center","center right":"Center Right","bottom left":"Bottom Left","bottom center":"Bottom Center","bottom right":"Bottom Right","inherit":"Inherit"});Basis.select_select_item_by_value(background_repeat,this.value("background-position"));var override_value=this.value("background-position").split(" ");var background_position_override_x=INPUT({"type":"text","style":"width: 35px;","value":override_value[0]?override_value[0]:""});var background_position_override_y=INPUT({"type":"text","style":"width: 35px;","value":override_value[1]?override_value[1]:""});var background_attachment=SELECT();Basis.select_add_options(background_attachment,{"":" ","scroll":"Scroll","fixed":"Fixed","inherit":"Inherit"});Basis.select_select_item_by_value(background_attachment,this.value("background-attachment"));var font_family=SELECT();Basis.select_add_options(font_family,{"":" ","Arial":"Arial","Courier New":"Courier New","Tahoma":"Tahoma","Times New Roman":"Times New Roman","Verdana":"Verdana"});Basis.select_select_item_by_value(font_family,this.value("font-family"));var font_size=SELECT();Basis.select_add_options(font_size,{"":" ","8pt":"1 ( 8pt)","10pt":"2 (10pt)","12pt":"3 (12pt)","14pt":"4 (14pt)","18pt":"5 (18pt)","24pt":"6 (24pt)","36pt":"7 (36pt)"});Basis.select_select_item_by_value(font_size,this.value("font-size"));var font_size_override=INPUT({"type":"text","style":"width: 45px;","value":((this.value("font-size")!=Basis.get_formfield_value(font_size))?this.value("font-size"):"")});var font_color_chooser=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});font_color_chooser.color_popup=new Basis.color_chooser_popup(null,font_color_chooser);font_color_chooser.open=false;font_color_chooser.color_popup.color_chooser.set_color_from_hex(this.value("color"));Basis.signal_handler.connect(font_color_chooser,"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},font_color_chooser),false);var font_color_hex=INPUT({"type":"text","value":this.value("color"),"style":"width: 70px;"});MochiKit.Signal.connect(font_color_hex,"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":font_color_chooser,"element":font_color_hex}));var font_color_block=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());font_color_block.style.backgroundColor=this.value("color");Basis.signal_handler.connect(font_color_block,"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":font_color_chooser,"element":font_color_block}),false);font_color_chooser.color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css["color"]=chooser.color_hex();this.update_preview_element();},font_color_chooser.color_popup.color_chooser,font_color_block,font_color_hex),this);var fields={};var list=["border","border-top","border-left","border-bottom","border-right"];var menu_borders=Basis.misc_vars.dashboard.create_menu(this.base_selector+".borders");var menu_margins=Basis.misc_vars.dashboard.create_menu(this.base_selector+".margins");var menu_padding=Basis.misc_vars.dashboard.create_menu(this.base_selector+".padding");for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});fields[list[i]]["type"]=SELECT();Basis.select_add_options(fields[list[i]]["type"],{"":" ","solid":"Solid","dotted":"Dotted","dashed":"Dashed","double":"Double","groove":"Groove","ridge":"Ridge","inset":"Inset","outset":"Outset","hidden":"Hidden","inherit":"Inherit","none":"No Border"});Basis.select_select_item_by_value(fields[list[i]]["type"],this.value(list[i]+"-style"));fields[list[i]]["color_chooser"]=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});fields[list[i]]["color_chooser"].color_popup=new Basis.color_chooser_popup(null,fields[list[i]]["color_chooser"]);fields[list[i]]["color_chooser"].open=false;fields[list[i]]["color_chooser"].color_popup.color_chooser.set_color_from_hex(this.value(list[i]+"-color"));Basis.signal_handler.connect(fields[list[i]]["color_chooser"],"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},fields[list[i]]["color_chooser"]),false);fields[list[i]]["color_hex"]=INPUT({"type":"text","value":this.value(list[i]+"-color"),"style":"width: 70px;"});MochiKit.Signal.connect(fields[list[i]]["color_hex"],"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":fields[list[i]]["color_chooser"],"element":fields[list[i]]["color_hex"]}));fields[list[i]]["color_block"]=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());fields[list[i]]["color_block"].style.backgroundColor=this.value(list[i]+"-color");Basis.signal_handler.connect(fields[list[i]]["color_block"],"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":fields[list[i]]["color_chooser"],"element":fields[list[i]]["color_block"]}),false);fields[list[i]]["color_chooser"].color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element,property){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css[property+"-color"]=chooser.color_hex();this.update_preview_element();},fields[list[i]]["color_chooser"].color_popup.color_chooser,fields[list[i]]["color_block"],fields[list[i]]["color_hex"],list[i]),this);}
var list=["margin","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});}
var list=["padding","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});}
this.bind_default_action(background_image_link,"background-image",bind(function(){var url=Basis.get_formfield_value(this);return url?("url("+url+")"):"";},background_image_link));this.bind_default_action(background_repeat,"background-repeat");var list=[background_position,background_position_override_x,background_position_override_y];for(var i=0;i<list.length;i++){this.bind_default_action(list[i],"background-position",partial(function(background_position,background_position_override_x,background_position_override_y){if(background_position_override_x.value||background_position_override_y.value){return(Basis.get_formfield_value(background_position_override_x)+" "+Basis.get_formfield_value(background_position_override_y));}else{return Basis.get_formfield_value(background_position);}},background_position,background_position_override_x,background_position_override_y));}
this.bind_default_action(background_attachment,"background-attachment");this.bind_default_action(font_family,"font-family");var list=[font_size,font_size_override];for(var i=0;i<list.length;i++){this.bind_default_action(list[i],"font-size",partial(function(font_size,font_size_override){if(font_size_override.value){return Basis.get_formfield_value(font_size_override);}else{return Basis.get_formfield_value(font_size);}},font_size,font_size_override));}
var list=["border","border-top","border-left","border-bottom","border-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],(list[i]+"-width"),partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));this.bind_default_action(fields[list[i]]["type"],(list[i]+"-style"));}
var list=["margin","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],list[i],partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));}
var list=["padding","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],list[i],partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));}
var list=["all","border-top","border-left","border-bottom","border-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_borders.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","border",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("border_"+section.toLowerCase()))?"":"none";}},name),content));}
var list=["all","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_margins.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","margin",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("margin_"+section.toLowerCase()))?"":"none";}},name),content));}
var list=["all","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_padding.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","padding",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("padding_"+section.toLowerCase()))?"":"none";}},name),content));}
MochiKit.DOM.appendChildNodes(content,TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"400"},H4(null,"Background"),DIV({"style":"border: 1px solid #c0c0c0; padding: 5px;"},TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},background_color_hex),TD(null,background_color_block))))),TD({"width":"16"},background_color_chooser),TD({"rowSpan":"5"},background_image_preview)),TR(null,TD({"width":"25"},"Image:"),TD(null,background_image_link),TD({"width":"16"},background_image_chooser)),(this.advanced_fields)?[TR(null,TD({"width":"25"},"Repeat:"),TD({"colSpan":"2"},background_repeat)),TR(null,TD({"width":"25"},"Position:"),TD({"colSpan":"2"},TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},background_position),TD({"style":"padding-right: 5px;"}," or "),TD({"style":"padding-right: 5px;"},background_position_override_x),TD(null,background_position_override_y)))))),TR(null,TD({"width":"25"},"Attachment:"),TD({"colSpan":"2"},background_attachment))]:null))),H4(null,"Font"),DIV({"style":"border: 1px solid #c0c0c0; padding: 5px;"},TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Font:"),TD(null,font_family)),TR(null,TD({"width":"25"},"Size:"),TD(null,font_size,(this.advanced_fields)?[" or ",font_size_override]:null)),TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},font_color_hex),TD(null,font_color_block))))),TD({"width":"16"},font_color_chooser))))),(this.advanced_fields)?[H4(null,"Borders"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_borders,DIV({"style":"padding: 5px;"},TABLE({"class":"border border_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border"]["color_hex"]),TD(null,fields["border"]["color_block"]))))),TD({"width":"16"},fields["border"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border"]["type"])))),TABLE({"class":"border border_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-top"]["color_hex"]),TD(null,fields["border-top"]["color_block"]))))),TD({"width":"16"},fields["border-top"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-top"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-top"]["type"])))),TABLE({"class":"border border_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-left"]["color_hex"]),TD(null,fields["border-left"]["color_block"]))))),TD({"width":"16"},fields["border-left"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-left"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-left"]["type"])))),TABLE({"class":"border border_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-bottom"]["color_hex"]),TD(null,fields["border-bottom"]["color_block"]))))),TD({"width":"16"},fields["border-bottom"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-bottom"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-bottom"]["type"])))),TABLE({"class":"border border_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-right"]["color_hex"]),TD(null,fields["border-right"]["color_block"]))))),TD({"width":"16"},fields["border-right"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-right"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-right"]["type"])))))),H4(null,"Margins"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_margins,DIV({"style":"padding: 5px;"},TABLE({"class":"margin margin_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin"]["width"]," pixels")))),TABLE({"class":"margin margin_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-top"]["width"]," pixels")))),TABLE({"class":"margin margin_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-left"]["width"]," pixels")))),TABLE({"class":"margin margin_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-bottom"]["width"]," pixels")))),TABLE({"class":"margin margin_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-right"]["width"]," pixels")))))),H4(null,"Padding"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_padding,DIV({"style":"padding: 5px;"},TABLE({"class":"padding padding_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding"]["width"]," pixels")))),TABLE({"class":"padding padding_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-top"]["width"]," pixels")))),TABLE({"class":"padding padding_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-left"]["width"]," pixels")))),TABLE({"class":"padding padding_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-bottom"]["width"]," pixels")))),TABLE({"class":"padding padding_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-right"]["width"]," pixels"))))))]:null),TD(null,this.preview_element)))));menu_borders.select_menu_item(0);menu_margins.select_menu_item(0);menu_padding.select_menu_item(0);return content;},value:function(property){var value=this.css[property];return value?value:"";},get_css:function(return_obj){var return_obj=(return_obj===true)?true:false;var order_to_combine=["background-color","background-image","background-repeat","background-position","background-attachment","border-style","border-width","border-color","border-top-style","border-top-width","border-top-color","border-left-style","border-left-width","border-left-color","border-bottom-style","border-bottom-width","border-bottom-color","border-right-style","border-right-width","border-right-color","font-family","font-size","color","margin","margin-top","margin-left","margin-bottom","margin-right","padding","padding-top","padding-left","padding-bottom","padding-right"];var css=return_obj?{}:"";for(var i=0;i<order_to_combine.length;i++){if(!Basis.is_function(this.css[order_to_combine[i]])&&this.css[order_to_combine[i]]){if(return_obj){css[order_to_combine[i]]=this.css[order_to_combine[i]];}else{css+=(order_to_combine[i]+": "+this.css[order_to_combine[i]]+";\n");}}}
if(css&&!return_obj){css=this.base_selector+" { \n"+css+"}\n";}
return css;},update_preview_element:function(){if(Basis.is_element(this.preview_element)){MochiKit.Style.setStyle(this.preview_element,this.get_css(true));}}};Basis.dashboard=function(){this.__init__();};Basis.dashboard.prototype={__init__:function(){this.show_v2_page_permissions=function(){var path=Basis.preserve_url_path();path=path.substring(((path.substring(0,("http://").length)=="http://")?("http://").length:((path.substring(0,("http2://").length)=="http2://")?("http2://").length:0)),(path.length-("/admin").length));if(Basis.array_search(this.v2_perms_domains,path)!=null){return true;}
if(this.site_id>this.v2_perms_site_id_threshold){return true;}
return false;};MochiKit.Position.includeScrollOffsets=true;this.organization_id=null;this.site_id=null;this.cookie_name=null;this.session_id=null;this.post_url=null;this.is_admin=false;this.initialized=false;this.ok_to_initialize=true;this.debug=false;this.load_timestamp=0;this.load_offset=0;this.timestamp_refresh_rate=60;this.custom_ajax_actions={};this.custom_view_renderers={};this.site_billing_info={};this.site_settings={};this.available_resources={};this.resource_id=null;this.resource_linker={};this.elements={};this.tiles={"ui":new Basis.tile_manager(),"wizard":new Basis.tile_manager()};this.tiles.wizard.current_tile=null;this.wizards={};this.menus={};this.resource_history={};this.pending_requests={};this.custom_css={};this.file_manager_only=false;this.max_diskspace=0;this.diskspace_used=0;this.files={};this.folders={};this.file_browser_current_folder=null;this.file_browser_drags={"folder":new multipleDraggables(),"file":new multipleDraggables()};this.file_browser_drags["folder"].force_single_selection=true;this.file_browser_drags["folder"].disable_clickoff=true;this.file_browser_drags["folder"].commit=false;this.file_browser_drags["folder"].drag_and_drop=false;this.file_browser_drags["folder"].selected_class="Basis.file_explorer.selected";this.file_browser_drags["folder"].selectable_class="Basis.file_explorer.selectable";this.file_browser_drags["file"].commit=false;this.file_restrictions={};this.original_file_restrictions={};this.original_page_restrictions={};this.page_restrictions={};this.system_log_history=[];this.countdown_to_save={"cancel":function(){}};this.duration_to_save=1.5;this.refresh_rate=(60*10);this.user_levels={"USER_LEVEL_PUBLIC":0,"USER_LEVEL_BASIC":2,"USER_LEVEL_PRIVATE":4,"USER_LEVEL_SITE_ADMINISTRATOR":5,"USER_LEVEL_ORGANIZATION_ADMINISTRATOR":6,"USER_LEVEL_SUPERUSER":999};this.user_levels_text={"USER_LEVEL_PUBLIC":"Public","USER_LEVEL_BASIC":"Basic","USER_LEVEL_PRIVATE":"Private","USER_LEVEL_SITE_ADMINISTRATOR":"Site Administrator","USER_LEVEL_ORGANIZATION_ADMINISTRATOR":"Organization Administrator","USER_LEVEL_SUPERUSER":"Superuser"};this.page_levels_text={"PUBLIC":"Public","BASIC":"Basic","PRIVATE":"Private","ADMIN":"Admin Only"};this.resource_types=["ALERT","CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","EMAIL","FILE","FOLDER","FORUM","GROUP","IMAGE_GALLERY","LIST","LIST_ITEM","PAGE","POLL","SITE","TASK","TASK_LIST","USER"];this.resource_types_text=["Alert / Reminder","Contact (old)","Contact","Contact List","Custom Form","Custom Form Row","Discussion","Email","File","Folder","Forum","Group","Image Gallery","List","List Item","Page","Poll","Site","Task","Task List","User"];if(!window.resizeConstrainedElements_signal){window.resizeConstrainedElements_signal=MochiKit.Signal.connect(window,"onresize",MochiKit.Style.resizeConstrainedElements);}
window.onbeforeunload=function(e){var e=(e||window.event);if(e){e.returnValue="Any unsaved data will be lost!";}
return"Any unsaved data will be lost!";};window.onbeforeunload=function(){};},alert:function(message,title,action_on_ok,width,height){if(message){this.run_wizard("ERROR_MESSAGE",{"error_message":message,"cancel_button":false,"done_button_text":"Ok","title":title,"width":width,"height":height,"action_on_ok":Basis.is_function(action_on_ok)?action_on_ok:function(){}});}},attempt_save:function(func){var func=(typeof(func)=="function")?func:function(){};if(this.countdown_to_save&&this.countdown_to_save.cancel){this.countdown_to_save.cancel();this.countdown_to_save=MochiKit.Async.callLater(this.duration_to_save,func);}},bind_form_element:function(element,element_name,data_row,ivalue){if(Basis.get_element(element)&&element_name&&data_row){switch(element.tagName.toUpperCase()){case"INPUT":switch(element.type.toLowerCase()){case"text":case"password":case"hidden":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.value;},element,element_name),data_row),false);data_row[element_name]=element.value?element.value:ivalue;break;}
break;case"TEXTAREA":if(element&&element.id&&tinyMCE&&tinyMCE.get(element.id)){var editor=tinyMCE.get(element.id);editor.onChange.add(bind(partial(function(element,element_name){this[element_name]=tinyMCE.get(element.id).getContent();},element,element_name),data_row));}else{Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.value;},element,element_name),data_row),false);}
data_row[element_name]=element.value?element.value:ivalue;break;case"SELECT":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},element,element_name),data_row),false);Basis.select_select_item_by_value(element,data_row[element_name]?data_row[element_name]:ivalue);data_row[element_name]=(element.selectedIndex>-1)?element.options[element.selectedIndex].value:"";break;case"DIV":switch(element.type.toLowerCase()){case"date":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.get_date();},element,element_name),data_row));data_row[element_name]=element.get_date();break;}
break;}}},compile:function(mode,options,func_to_exec_after_compile){alert("compile(): i am obselete!");},create_menu:function(menu_name,float_right,should_highlight){var float_right=(float_right===true)?true:false;var should_highlight=(should_highlight===false)?false:true;if(menu_name){var menu=DIV({"id":menu_name+".menu."+menu_name,"class":"Basis.dashboard.resource_associator.menu"});this.menus[menu_name]=menu;menu.dashboard=this;menu.menu_items=[];menu.menu_item_ids=[];menu.selected_index=0;menu.float_right=float_right;menu.should_highlight=should_highlight;menu.add_menu_item=function(item_alias,item_text,onclick){if(item_alias&&item_text&&(typeof(onclick)=="function")){var item=DIV({"id":(menu_name+".menu_item."+item_alias),"class":"Basis.dashboard.resource_associator.menu_item tab_off","style":"cursor: pointer;"+(this.float_right?" float: right;":"")},item_text);item.menu=this;this.menu_items.push(item);this.menu_item_ids.push(item.id);Basis.signal_handler.connect(item,"onclick",bind(partial(function(func){this.menu.select_menu_item(item_alias);func();},onclick),item),false);if(this.float_right){menu.insertBefore(item,menu.firstChild);}else{menu.appendChild(item);}
return item;}};menu.highlight_item=function(item_index){if(this.should_highlight){var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){MochiKit.DOM.removeElementClass(item_id,"tab_off");MochiKit.DOM.addElementClass(item_id,"tab_on");}}};menu.item_index=function(item_text){var id=(menu_name+".menu_item."+item_text);if(id){var index=MochiKit.Base.findValue(this.menu_item_ids,id);return(index>-1)?index:null;}
return null;};menu.remove_menu_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){this.menu_items.splice(item_index,1);Basis.remove_element(item_id);}};menu.select_menu_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){this.unhighlight_all_items();this.highlight_item(item_index);this.selected_index=item_index;}};menu.unhighlight_all_items=function(){for(var i=0;i<this.menu_items.length;i++){this.unhighlight_item(i);}};menu.unhighlight_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){MochiKit.DOM.removeElementClass(item_id,"tab_on");MochiKit.DOM.addElementClass(item_id,"tab_off");}};}
return menu;},custom_ajax_action:function(alias){if(alias&&this.custom_ajax_actions[alias]&&(typeof(this.custom_ajax_actions[alias])=="function")){if(this.debug){this.debug_log("custom_ajax_action(): "+alias);}
var args=[];for(var x=1;x<arguments.length;x++){args[x-1]=arguments[x];}
return this.custom_ajax_actions[alias].apply(null,args);}},data:function(data){return data?data:"";},debug_log:function(message){if(message&&this.debug){this.system_log(message,false);}},default_screen:function(name,go_back,go_back_text,go_back_icon){var go_back=(go_back!==null)?go_back:false;var section=DIV({"style":"overflow: auto;","class":"section"});var element=DIV({"class":"element"});var table=TABLE({"cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"style":"border-left: 1px solid #d7d7d7; border-right: 1px solid #d7d7d7; background-color: #f5f5f5; background-image: url(images/images/dashboard/v2/submenu_shadow.png); background-repeat: repeat-x;"},section))));var header=Basis.dashboard.header_block(name,go_back,go_back_text,go_back_icon);element.appendChild(header);element.appendChild(table);element.content=section;element.header=header;Basis.register_size_constraints(element.content,"100%","100%");Basis.register_size_constraints(element,"100% - 40","100%",null,false);Basis.register_size_constraints(table,"100%","100%");return element;},determine_missing_resources:function(root){if(root&&(Basis.array_length(root)>0)){var assorted_resources=[];var resources_to_check=Basis.keys(root,true);for(var x=0;x<resources_to_check.length;x++){if(!this.resource_linker[resources_to_check[x]]){assorted_resources[assorted_resources.length]=resources_to_check[x];}}
return assorted_resources;}
return[];},determine_missing_resources_from_xml:function(root){if(root&&root.childNodes){var assorted_resources=[];var resources_to_check=this.determine_resources_from_xml_node(root);for(var x=0;x<resources_to_check.length;x++){if(!this.resource_linker[resources_to_check[x]]){assorted_resources[assorted_resources.length]=resources_to_check[x];}}
return assorted_resources;}
return[];},determine_resources_from_xml_node:function(root,children_only){var children_only=(children_only!=null)?children_only:false;if(root&&root.childNodes){var resource_ids=[];if(!children_only){MochiKit.Base.nodeWalk(root,function(node){var resource_id=Basis.filter_number(node.tagName);if(resource_id){resource_ids.push(resource_id);}
return node.childNodes;});}else{for(var i=0;i<root.childNodes.length;i++){var resource_id=Basis.filter_number(root.childNodes[i].tagName);if(resource_id){resource_ids.push(resource_id);}}}
return resource_ids;}
return[];},english_timestamp:function(timestamp,return_self_updating_element){return Basis.english_timestamp(timestamp,this.load_offset,return_self_updating_element);},error_message:function(message,action_on_ok,width,height){if(message){this.run_wizard("ERROR_MESSAGE",{"error_message":message,"cancel_button":false,"done_button_text":"Ok","width":width,"height":height,"action_on_ok":Basis.is_function(action_on_ok)?action_on_ok:function(){}});}},get_alerts_and_reminders_for_resource:function(resource_id){var to_return={"alert":[],"reminder":[]};if(resource_id&&this.resource_linker[resource_id]){var alerts=this.available_resources["ALERT"];if(alerts&&(Basis.array_length(alerts)>0)){for(var i in alerts){if(this.resource_is_associated_with_resource(resource_id,i)){to_return[this.resource_linker[i]["misc_vars"]["type"]].push(i);}else{var groups=Basis.keys(this.resource_linker[i]["associated_resources"]["GROUP"]);if(groups){for(var x=0;x<groups.length;x++){if(this.resource_is_associated_with_resource(resource_id,groups[x])){to_return[this.resource_linker[i]["misc_vars"]["type"]].push(i);}}}}}}}
return to_return;},get_assorted_resources:function(resource_ids){if(Basis.array_length(resource_ids)>0){var to_post={};to_post["resource_ids"]=resource_ids;to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_assorted_resources";as.resource_ids=resource_ids;as.dashboard=this;as.on_success=function(req){for(var i in this.resource_ids){if(Basis.is_number(this.resource_ids[i])){var resource_id=this.resource_ids[i];if(this.dashboard.resource_linker[resource_id]&&this.dashboard.resource_linker[resource_id]["type"]&&this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]]&&this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]][resource_id]){delete this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]][resource_id];}
if(this.dashboard.resource_linker[resource_id]){delete this.dashboard.resource_linker[resource_id];}}}
var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.updatetree(this.dashboard.resource_linker,resources);for(var i in resources){if(typeof(resources[i])!="function"){var update={};update[i]=resources[i];if(!this.dashboard.available_resources[resources[i]["type"]]){this.dashboard.available_resources[resources[i]["type"]]={};}
MochiKit.Base.updatetree(this.dashboard.available_resources[resources[i]["type"]],update);}}
window.status="Done";};return as.post({"to_post":to_post});}else{return new MochiKit.Async.succeed();}},get_available_amount_of:function(resource_type){if(this.site_billing_info[this.site_id]){this.site_billing_info[this.site_id]["site"]["num_contacts"]}
if(resource_type&&this.site_billing_info[this.site_id]){var resource_type=resource_type.toUpperCase();switch(resource_type){case"PAGE":return this.site_billing_info[this.site_id]["site"]["num_pages"];break;case"GROUP":return this.site_billing_info[this.site_id]["site"]["num_groups"];break;case"TASK":return this.site_billing_info[this.site_id]["site"]["num_tasks"];break;case"CONTACT":return this.site_billing_info[this.site_id]["site"]["num_contacts"];break;case"LIST":return this.site_billing_info[this.site_id]["site"]["num_lists"];break;case"DISCUSSION":return this.site_billing_info[this.site_id]["site"]["num_discussions"];break;case"EMAIL":return this.site_billing_info[this.site_id]["site"]["num_emails"];break;case"USER_BASIC":case"USER_POWER":this.debug_log(["site_can_create_new()",resource_type,"make me do something"]);break;}}
return-1;},get_resource_id_by_type_and_id:function(type,id){var list=this.available_resources[type];if(list){for(var i in list){if(!Basis.is_function(list[i])){if(list[i]["misc_vars"]["id"]==id){return i;}}}}
return null;},get_resource_ids_that_resource_inherits_permissions_from:function(resource_id){var resource_ids=[];if(Basis.is_number(resource_id)){switch(this.resource_linker[resource_id]["type"]){case"CONTACT.V2":var list=this.resource_linker[resource_id]["associated_resources"]["CONTACT_LIST"];if(list){var resource_ids=Basis.keys(list);}
break;case"TASK":var list=this.resource_linker[resource_id]["associated_resources"]["TASK_LIST"];if(list){var resource_ids=Basis.keys(list);}
break;case"FILE":case"FOLDER":var list=this.resource_linker[resource_id]["misc_vars"]["path_parent_resources"];if(list&&list.length){for(var i=0;i<list.length;i++){if(this.resource_linker[list[i]]&&this.resource_linker[list[i]]["restrictions"]){(Basis.keys(this.resource_linker[list[i]]["restrictions"]).length==0)?null:resource_ids.push(list[i]);}else{this.debug_log("Can't find resource #"+list[i]);}}}
break;}}
return resource_ids;},get_site_resource_id:function(){var list=this.available_resources["SITE"];for(var i in list){if(!Basis.is_function(list[i])){if(list[i]["misc_vars"]["id"]==this.site_id){return i;}}}
return null;},get_site_resource_list:function(type){if(type&&this.available_resources[type]){var resources={};var list=this.available_resources[type];list=list?Basis.keys(list):[];for(var i=0;i<list.length;i++){var display_text=this.resource_display_text(list[i]);if(this.in_site(list[i])&&display_text.trim()){resources[list[i]]=display_text;}}
return resources;}
return false;},get_user_restrictions:function(user_id){var user_id=Basis._int(user_id);var restrictions={"read_only":[],"full_access":[]};if(Basis.is_number(user_id)){for(var i in this.resource_linker){if(this.resource_linker[i]&&this.resource_linker[i]["restrictions"]&&this.resource_linker[i]["restrictions"]["user_specific"]){var list=this.resource_linker[i]["restrictions"]["user_specific"];if(list["read_only"]&&(Basis.array_search(list["read_only"],user_id)!=null)){restrictions["read_only"].push(i);}
if(list["full_access"]&&(Basis.array_search(list["full_access"],user_id)!=null)){restrictions["full_access"].push(i);}}}}
return restrictions;},get_view_association_icon:function(type,use_grey){var icon="";var otype="";var use_grey=(use_grey===true)?true:false;if(Basis.is_number(type)&&this.resource_linker[Basis._int(type)]){var resource_id=Basis._int(type);var type=this.resource_linker[resource_id]["type"].toUpperCase();}else{var resource_id=null;}
switch(type){case"CALENDAR":case"PROJECT_LIST":case"ISSUE_TRACKER":case"RICHTEXTAREA":case"POLL":case"RSS_FEED":case"FILE_UPLOAD":case"FILE_LISTING":case"ADVANCED_FILE_LISTING":case"FILE_UPLOAD_AND_LISTING":case"RICHTEXT_AND_HTML":case"PLACEHOLDER":case"LINK_TO_FILE":case"LINK_TO_URL":case"CAHILL_CONSTRUCTION_DAILY_LOG":case"CUSTOM_SCRIPT":case"HOMEPAGE":otype="PAGE";break;default:otype=type?type:"UNKNOWN";break;}
switch(otype){case"FORUM":case"DISCUSSION":icon="images/images/default_icons/png/user_comment.png";break;case"ALERT":if(resource_id&&this.resource_linker[resource_id]&&(this.resource_linker[resource_id]["misc_vars"]["sent_notification"]=="1")){icon=(this.resource_linker[resource_id]["misc_vars"]["disabled"]=="yes")?"images/images/default_icons/png/email_error.grey.png":"images/images/default_icons/png/email_error.png";}else{icon=(this.resource_linker[resource_id]["misc_vars"]["disabled"]=="yes")?"images/images/default_icons/png/error.grey.png":"images/images/default_icons/png/error.png";}
break;case"TASK_LIST":icon="images/images/default_icons/png/note_edit.png";break;case"TASK":icon="images/images/default_icons/png/note.png";break;case"LIST":icon="images/images/default_icons/png/table_multiple.png";break;case"LIST_ITEM":icon="images/images/default_icons/png/table_row.png";break;case"CONTACT_LIST":case"CONTACT":case"CONTACT.V2":icon="images/images/default_icons/png/vcard.png";break;case"IMAGE_GALLERY":icon="images/images/default_icons/png/pictures.png";break;case"POLL":icon="images/images/default_icons/png/page_white_paste.png";break;case"GROUP":icon="images/images/default_icons/png/group.png";break;case"EMAIL":icon="images/images/default_icons/png/email.png";break;case"FILE":case"FOLDER":icon="images/images/default_icons/tree/tree-folder.gif";break;case"PAGE":switch(type){case"HOMEPAGE":icon="images/images/home.gif";break;case"PLACEHOLDER":icon="images/images/default_icons/folder.gif";break;case"LINK_TO_FILE":case"LINK_TO_URL":icon="images/images/default_icons/link_go.gif";break;case"CALENDAR":case"PROJECT_LIST":case"ISSUE_TRACKER":case"CONTACT_LIST":case"IMAGE_GALLERY":case"RICHTEXTAREA":case"POLL":case"RSS_FEED":case"FILE_UPLOAD":case"FILE_LISTING":case"ADVANCED_FILE_LISTING":case"FILE_UPLOAD_AND_LISTING":case"RICHTEXT_AND_HTML":case"CAHILL_CONSTRUCTION_DAILY_LOG":case"CUSTOM_SCRIPT":default:icon="images/images/page.gif";break;}
break;case"SITE":icon="images/images/site.gif";break;case"USER":icon="images/images/user.gif";break;case"UNKNOWN":icon="images/images/default_icons/help.gif";break;default:icon="images/images/default_icons/help.gif";break;}
if(icon&&(icon.substring(icon.length-3)=="png")&&use_grey){icon=icon.substring(0,(icon.length-3))+"grey.png";}
return icon;},in_site:function(resource_id){return((resource_id&&this.resource_linker[resource_id]&&this.resource_linker[resource_id]["site_ids"]&&this.resource_linker[resource_id]["site_ids"]["direct"]&&((MochiKit.Base.findValue(this.resource_linker[resource_id]["site_ids"]["direct"],this.site_id)>-1)||this.resource_linker[resource_id]["site_ids"]["direct"][this.site_id]))||(resource_id&&this.resource_linker[resource_id]&&(this.resource_linker[resource_id]["type"]=="SITE")&&(this.resource_linker[resource_id]["misc_vars"]["id"]==this.site_id)))?true:false;},initialize:function(){this.set_up_custom_renderers();this.set_up_custom_ajax_actions();this.set_up_wizards();if((BrowserDetect.browser=="Firefox")&&(BrowserDetect.version<3.5)&&!Basis.get_cookie("firefox_3.5_upgrade")){this.ok_to_initialize=false;this.alert(DIV(null,P({"style":"text-align: center;"},"We highly recommend that you upgrade Firefox to version 3.5 or greater!"),P({"style":"text-align: center; margin-top: 20px;"},A({"href":"http://www.mozilla.com/en-US/?from=sfx&amp;uid=0&amp;t=449","target":"get_firefox"},IMG({"src":"http://sfx-images.mozilla.org/affiliates/Buttons/Firefox3.5/468x60.png","alt":"Spread Firefox Affiliate Button","border":"0"})))),"Your browser is out of date!",bind(function(){Basis.set_cookie("firefox_3.5_upgrade","alerted",5);this.ok_to_initialize=true;this.initialize();},this),600,275);this.wizards["ERROR_MESSAGE"].should_destroy_background=false;return;}
if(!this.initialized&&this.ok_to_initialize){this.wizards["ERROR_MESSAGE"].should_destroy_background=true;this.system_log("Please wait while the dashboard loads...",true);this.tiles.ui.container_element=this.elements["container"];this.tiles.ui.compile();MochiKit.Style.resizeConstrainedElements();var wiz=new Basis.wizard();wiz.create_background(0.50);var loading_screen=DIV({"style":"width: 370px; height: 105px; background-color: #FFFFFF; position: absolute; z-index: 1010; padding: 10px;"},DIV({"style":"text-align: center; vertical-align: middle; height: 80px; padding: 10px;"},P({"style":"font-size : 7pt; color: #2B4D70; font-weight: bold;"},"Please wait while the "+(this.file_manager_only?"file manager":"dashboard")+" loads..."),P(null,IMG({"src":"images/images/dashboard_loader.gif"}))));document.body.appendChild(loading_screen);Basis.convert_div_to_box(loading_screen.firstChild);Basis.align_element_to_element(loading_screen,this.elements["container"],"center");var loading_callback=MochiKit.Style.resizeConstrainedElements.callbacks.push(partial(function(loading_screen,dashboard){if(Basis.is_live_dom_node(loading_screen)&&dashboard){Basis.align_element_to_element(loading_screen,dashboard.elements["container"],"center",null,true);}},loading_screen,this));this.set_up_custom_renderers();this.set_up_custom_ajax_actions();this.set_up_wizards();var dlist=new MochiKit.Async.DeferredList([this.custom_ajax_action("dashboard_initialize",!this.file_manager_only?["ALERT","CONTACT.V2","CONTACT_LIST","DISCUSSION","EMAIL","FOLDER","FORUM","GROUP","IMAGE_GALLERY","LIST","LIST_ITEM","PAGE","POLL","SITE","TASK","TASK_LIST","USER"]:["FOLDER","GROUP","SITE","USER"])],false,false,true);dlist.addCallback(partial(function(loading_screen,dashboard,wiz,loading_callback){Basis.remove_element(loading_screen);wiz.destroy_background(false);MochiKit.Style.resizeConstrainedElements.callbacks[loading_callback]=function(){};dashboard.system_log("Dashboard loaded successfully",true);dashboard.initialized=true;MochiKit.Async.callLater(dashboard.refresh_rate,bind(function(){},dashboard));MochiKit.Async.callLater(this.timestamp_refresh_rate,bind(function(){this.refresh_timestamps();},dashboard));Basis.state_handler.add_state("dashboard");Basis.state_handler.enter_state("dashboard");switch(Basis.get_GET("load")){case"add_a_page":if(graphic_menu){graphic_menu.select(2);}
dashboard.render_view("WEBSITE","default");dashboard.run_wizard("PAGE");break;case"add_a_user":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","users");dashboard.run_wizard("USER");break;case"website_look_and_feel":if(graphic_menu){graphic_menu.select(2);}
dashboard.render_view("WEBSITE","look_and_feel");break;case"file_manager":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","files",true);break;case"contact_lists":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","contacts");break;case"task_lists":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","tasks");break;case"discussions":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","discussions");break;case"resource":var resource_id=Basis.get_GET("id");if(Basis.is_number(resource_id)){if(dashboard.resource_linker[resource_id]){switch(dashboard.resource_linker[resource_id]["type"]){case"PAGE":dashboard.render_view("WEBSITE","default");break;case"FILE":case"FOLDER":log("NEED TO IMPLEMENT FUNCTION TO LOAD FILE MANAGER AND AUTO-SELECT REFERENCED FILE OR FOLDER");break;default:dashboard.show_resource(resource_id,true);break;}}}
break;default:if(dashboard.file_manager_only){dashboard.render_view("COLLABORATE","files",true);}else{dashboard.render_view("COLLABORATE","default");}
break;}
MochiKit.Async.callLater(5,bind(function(){this.verify_login(true);},dashboard));MochiKit.Async.callLater(30,bind(function(){this.refresh_history(true);},dashboard));},loading_screen,this,wiz,loading_callback));}},link_resources:function(list){if(list){for(var type in list){if(typeof(list[type])!="function"){for(var i in list[type]){if(typeof(list[type][i])!="function"){var id=parseInt(list[type][i]["resource_id"]);if(id>0){this.resource_linker[id]=list[type][i];}}}}}}},please_wait_this_could_take_a_while:function(){alert("Please be patient - the action you're trying to perform could take a while!");},populate_submenu:function(parent_item,submenu_index){var items=[];switch(parent_item){case"home":break;case"collaborate":var items=[{"name":"What's New","alias":"whats_new","onclick":bind(function(){this.render_view("COLLABORATE","default");},this)},{"name":"Contact Lists","alias":"contact_lists","onclick":bind(function(){this.render_view("COLLABORATE","contacts");},this)},{"name":"Task Lists","alias":"task_lists","onclick":bind(function(){this.render_view("COLLABORATE","tasks");},this)},{"name":"Discussions","alias":"discussions","onclick":bind(function(){this.render_view("COLLABORATE","discussions");},this)},(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:{"name":"Users","alias":"users","onclick":bind(function(){this.render_view("COLLABORATE","users");},this)},{"name":"Groups","alias":"groups","onclick":bind(function(){this.render_view("COLLABORATE","groups");},this)},{"name":"Email","alias":"email","onclick":bind(function(){this.render_view("COLLABORATE","emails");},this)},{"name":"Alerts & Reminders","alias":"alerts_and_reminders","onclick":bind(function(){this.render_view("COLLABORATE","alerts_and_reminders");},this)},{"name":"Lists","alias":"lists","onclick":bind(function(){this.render_view("COLLABORATE","lists");},this)},{"name":"Polls / RSVPs","alias":"polls_and_rsvps","onclick":bind(function(){this.render_view("DEFAULT","coming_soon","Polls / RSVPs");},this)}];break;case"files":break;case"website":var items=[{"name":"Pages","alias":"pages","onclick":bind(function(){this.render_view("WEBSITE","default");},this)},{"name":"Look and Feel","alias":"look_and_feel","onclick":bind(function(){this.render_view("WEBSITE","look_and_feel");},this)}];break;}
var titems=[];for(var i=0;i<items.length;i++){if(items[i]){titems.push(items[i]);}}
items=titems;if(!Basis.is_number(submenu_index)){for(var i=0;i<items.length;i++){if(items[i]["name"]==submenu_index){submenu_index=i;}}}
var menu=TABLE({"cellspacing":"0","cellpadding":"0","style":""},TBODY(null,TR()));var simple_graphic_menu=new Basis.simple_graphic_menu();for(var i=0;i<items.length;i++){var menu_item=IMG({"style":"cursor: pointer;","src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".off.png"});Basis.signal_handler.connect(menu_item,"onclick",items[i]["onclick"],false);var td=TD({"style":"padding: 0px;"},menu_item);simple_graphic_menu.add_menu_item(menu_item,{"onmouseover_src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".hover.png","selected_src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".on.png"});MochiKit.DOM.getElementsByTagAndClassName("tr",null,menu)[0].appendChild(td);}
simple_graphic_menu.compile();simple_graphic_menu.select(submenu_index?submenu_index:0);Basis.temp=simple_graphic_menu;var obj=Basis.get_element("sub_menu");if(obj){Basis.remove_children(obj);if(items.length>0){obj.appendChild(menu);Basis.updated_live_dom();}}},purge_resource:function(resource_id){if(resource_id&&this.resource_linker[resource_id]){var type=this.resource_linker[resource_id]["type"];delete this.resource_linker[resource_id];if(this.available_resources[type]){delete this.available_resources[type][resource_id];}}},refresh_data:function(loop){var dlist=new MochiKit.Async.DeferredList([this.custom_ajax_action("get_site_resource_history",this.site_id),this.custom_ajax_action("get_available_resources",["CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","FOLDER","FORUM","GROUP","IMAGE_GALLERY","PAGE","POLL","SITE","TASK","TASK_LIST","USER"])],false,false,true);if(loop){dlist.addCallback(bind(function(){MochiKit.Async.callLater(this.refresh_rate,bind(function(){this.refresh_data(true);},this));},this));}},refresh_history:function(loop){var check=this.custom_ajax_action("get_site_resource_history");if(loop){check.addCallback(bind(function(){MochiKit.Async.callLater(30,bind(function(){this.refresh_history(true);},this));},this));}
return check;},refresh_timestamps:function(){var elements=MochiKit.DOM.getElementsByTagAndClassName("span","Basis.english_timestamp");for(var x=0;x<elements.length;x++){var element=Basis.get_element(elements[x]);if(element&&element.time){var timestamp=this.english_timestamp(element.time);if(timestamp!=element.firstChild.textContent){element.firstChild.textContent=timestamp;appear(element,{"duration":0.5,"from":0,"to":1});}}}
MochiKit.Async.callLater(this.timestamp_refresh_rate,bind(function(){this.refresh_timestamps();},this));},render_view:function(view,alias){if(this.initialized){alias=alias?alias:"view";if(this.custom_view_renderers[view]&&this.custom_view_renderers[view][alias]&&(typeof(this.custom_view_renderers[view][alias])=="function")){var args=[];for(var x=2;x<arguments.length;x++){args[x-2]=arguments[x];}
this.debug_log("render_view("+[view,alias]+")");return this.custom_view_renderers[view][alias].apply(null,args);}}},reset_states:function(){Basis.state_handler.clear_states();Basis.state_handler.enter_state("dashboard");},resource_display_text:function(resource_id){if(resource_id&&this.resource_linker[resource_id]){var resource=this.resource_linker[resource_id];switch(resource["type"]){case"CONTACT":case"CONTACT.V2":switch(this.data(resource["misc_vars"]["CONTACT_type"])){case"organization":return this.data(resource["misc_vars"]["company_name"]).trim();break;default:return(this.data(resource["misc_vars"]["first_name"])+" "+this.data(resource["misc_vars"]["last_name"])).trim();break;}
break;default:return this.data(resource["display_text"]);break;}}
return"";},resource_get_existing_alert_resource_id_for:function(resource_id){if(Basis.is_number(resource_id)){if(this.available_resources["ALERT"]&&(Basis.array_length(this.available_resources["ALERT"])>0)){var keys=Basis.keys(this.available_resources["ALERT"]);for(var i=0;i<keys.length;i++){var alert_resource_id=keys[i];if(this.resource_linker[alert_resource_id]&&(this.resource_linker[alert_resource_id]["misc_vars"]["type"]=="alert")&&(Basis._int(this.resource_linker[alert_resource_id]["misc_vars"]["attached_to_resource_id"])==Basis._int(resource_id))){return Basis._int(alert_resource_id);}}}}
return false;},resource_has_existing_alerts:function(resource_id){return(this.resource_get_existing_alert_resource_id_for(resource_id)>0)?true:false;},resource_has_inherited_permissions:function(resource_id){if(Basis.is_number(resource_id)){switch(this.resource_linker[resource_id]["type"]){case"CONTACT.V2":var list=this.resource_linker[resource_id]["associated_resources"]["CONTACT_LIST"];if(list){var keys=Basis.keys(list);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]&&this.resource_linker[keys[i]]["restrictions"]){return(Basis.keys(this.resource_linker[keys[i]]["restrictions"]).length==0)?false:true;}else{this.debug_log("Can't find resource #"+keys[i]);}}}
break;case"TASK":var list=this.resource_linker[resource_id]["associated_resources"]["TASK_LIST"];if(list){var keys=Basis.keys(list);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]&&this.resource_linker[keys[i]]["restrictions"]){return(Basis.keys(this.resource_linker[keys[i]]["restrictions"]).length==0)?false:true;}else{this.debug_log("Can't find resource #"+keys[i]);}}}
break;case"FILE":case"FOLDER":var inherited=false;var list=this.resource_linker[resource_id]["misc_vars"]["path_parent_resources"];if(list&&list.length){for(var i=0;i<list.length;i++){if(this.resource_linker[list[i]]&&this.resource_linker[list[i]]["restrictions"]){inherited=(Basis.keys(this.resource_linker[list[i]]["restrictions"]).length==0)?inherited:true;}else{this.debug_log("Can't find resource #"+list[i]);}}}
return inherited;break;}}
return false;},resource_is_associated_with_resource:function(resource_id_a,resource_id_b){if(resource_id_a&&this.resource_linker[resource_id_a]&&resource_id_b&&this.resource_linker[resource_id_b]){return(this.resource_linker[resource_id_a]["associated_resources"][this.resource_linker[resource_id_b]["type"]]&&this.resource_linker[resource_id_a]["associated_resources"][this.resource_linker[resource_id_b]["type"]][resource_id_b]&&this.resource_linker[resource_id_b]["associated_resources"][this.resource_linker[resource_id_a]["type"]]&&this.resource_linker[resource_id_b]["associated_resources"][this.resource_linker[resource_id_a]["type"]][resource_id_a])?true:false;}
return false;},resource_type_text:function(resource_id_or_type){if(resource_id_or_type){var type=Basis.is_number(resource_id_or_type)?this.resource_linker[resource_id_or_type]["type"]:resource_id_or_type;var index=this.resource_types.indexOf(type);if(index>-1){return this.resource_types_text[index];}}},run_wizard:function(alias,options){if(Basis.state_handler.current_state!="wizard"){var options=options?options:{};if(alias&&this.wizards[alias]&&Basis.is_function(this.wizards[alias].compile)&&Basis.is_function(this.wizards[alias].setup)){this.wizards[alias].options=options;this.wizards[alias].setup();this.wizards[alias].compile();}}},set_custom_ajax_action:function(alias,func){this.debug_log(["set_custom_ajax_action()",alias]);if(alias&&func&&(typeof(func)=="function")){this.custom_ajax_actions[alias]=func;}},set_custom_view_renderer:function(view,alias,func){this.debug_log(["set_custom_view_renderer()",view,alias]);if(view&&alias&&func&&(typeof(func)=="function")){var to_update={};to_update[view]={};to_update[view][alias]=func;MochiKit.Base.updatetree(this.custom_view_renderers,to_update);}},set_up_custom_ajax_actions:function(){this.set_custom_ajax_action("get_site_diskspace",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_site_diskspace";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["total"]){this.dashboard.max_diskspace=response["total"];}
if(response["used"]){this.dashboard.diskspace_used=response["used"];}
var obj=Basis.get_element("diskspace_meter");if(obj){obj.innerHTML=this.dashboard.render_view("FILE","diskspace").innerHTML;}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("dashboard_initialize",bind(function(get_available_resources_types){var to_post={};to_post["get_available_resources_types"]=get_available_resources_types?get_available_resources_types:{};var as=new Basis.ajax_scaffold;as.alias="dashboard_initialize";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["get_site_settings"]){this.dashboard.site_settings[this.dashboard.site_id]=response["get_site_settings"];}
if(response["get_site_billing_info"]){this.dashboard.site_billing_info[this.dashboard.site_id]=response["get_site_billing_info"];}
if(response["get_site_folders"]){if(window.DOMParser){var parser=new DOMParser();var xmlDoc=parser.parseFromString(response["get_site_folders"],"text/xml");}else{var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.loadXML(response["get_site_folders"]);}
var root=xmlDoc.getElementsByTagName("root")[0];if(root){this.dashboard.folders={"files":root.getElementsByTagName("files")[0],"gallery_files":root.getElementsByTagName("gallery_files")[0]};}}
if(response["get_site_resource_history"]){this.dashboard.resource_history[this.dashboard.site_id]=response["get_site_resource_history"];}
if(response["get_site_pending_requests"]){this.dashboard.pending_requests[this.dashboard.site_id]=response["get_site_pending_requests"];}
if(response["get_site_custom_css"]){this.dashboard.custom_css[this.dashboard.site_id]=response["get_site_custom_css"];}
if(response["get_available_resources"]){MochiKit.Base.update(this.dashboard.available_resources,response["get_available_resources"]);this.dashboard.link_resources(this.dashboard.available_resources);}
if(response["get_site_diskspace"]){this.dashboard.max_diskspace=response["get_site_diskspace"]["total"];this.dashboard.diskspace_used=response["get_site_diskspace"]["used"];}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("set_resource_permissions",bind(function(resource_id,permissions,append_permissions,lock_icon){var to_post={};to_post["resource_id"]=resource_id;to_post["permissions"]=permissions;to_post["append"]=(append_permissions==true)?true:false;var as=new Basis.ajax_scaffold;as.alias="set_resource_permissions";as.dashboard=this;as.resource_id=resource_id;as.lock_icon=lock_icon;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["success"]==true){this.dashboard.resource_linker[this.resource_id]["has_restrictions"]=response["has_restrictions"];this.dashboard.resource_linker[this.resource_id]["restrictions"]=response["restrictions"];if(this.lock_icon&&Basis.get_element(this.lock_icon)){this.lock_icon.src=response["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(this.resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png");}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("clear_resource_permissions",bind(function(resource_id,lock_icon){var to_post={};to_post["resource_id"]=resource_id;var as=new Basis.ajax_scaffold;as.alias="clear_resource_permissions";as.dashboard=this;as.resource_id=resource_id;as.lock_icon=lock_icon;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["has_restrictions"]=false;this.dashboard.resource_linker[this.resource_id]["restrictions"]={};if(this.lock_icon&&Basis.get_element(this.lock_icon)){this.lock_icon.src=this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png";}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("import_contacts_from_vcard",bind(function(options){var to_post=options?options:{};var as=new Basis.ajax_scaffold;as.alias="import_contacts_from_vcard";as.dashboard=this;as.on_success=function(req){var resources_to_load=MochiKit.Base.evalJSON(req.responseText);if(resources_to_load&&resources_to_load.length&&(resources_to_load.length>0)){alert((resources_to_load.length-2)+" contact"+(((resources_to_load.length-2)==1)?"":"s")+" were successfully imported!");if((resources_to_load.length-2)>0){this.dashboard.get_assorted_resources(resources_to_load);}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("email_contacts",bind(function(options){var options=options?options:{};var to_post=options["data_row"];to_post["resource_ids"]=options["currently_selected"];var as=new Basis.ajax_scaffold;as.alias="email_contacts";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(Basis.is_number(response["email_resource_id"])){if(Basis.is_number(response["total_to_send"])&&Basis.is_number(response["total_sent"])&&(Basis._int(response["total_sent"])==Basis._int(response["total_to_send"]))){alert("The email was successfully sent!");}else{var num_sent=Basis._int(response["total_sent"]);alert("Only "+num_sent+" email"+((num_sent==1)?" was ":"s were ")+"sent - you may have run out of available email blasts for this month!");}
this.dashboard.get_assorted_resources([response["email_resource_id"],this.dashboard.get_site_resource_id()]);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("verify_login",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="verify_login";as.url=Basis.preserve_url_path().substring(0,(Basis.preserve_url_path().length-5))+"is_logged.php";as.dashboard=this;as.on_success=function(req){if(req.responseText=="false"){var message=[P(null,"You've somehow become logged out!"),P(null,"Click OK to log back in.")];this.dashboard.error_message(message,function(){window.onbeforeunload=null;window.location.href=(""+window.location.href);});}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("log_browsing_environment",function(){var to_post={};to_post["os"]=BrowserDetect.OS+" / "+navigator.oscpu;to_post["browser"]=BrowserDetect.browser+" "+BrowserDetect.version;to_post["resolution"]=screen.width+"x"+screen.height;to_post["viewport"]=MochiKit.DOM.getViewportDimensions().w+"x"+MochiKit.DOM.getViewportDimensions().h;to_post["color_depth"]=screen.colorDepth;to_post["flash_version"]=Basis.get_flash_version();to_post["cookies_enabled"]=Basis.check_for_cookies()?"true":"false";var as=new Basis.ajax_scaffold;as.alias="log_browsing_environment";as.on_success=function(){window.status="Done";};return as.post({"to_post":to_post});});this.set_custom_ajax_action("save_site_custom_css",bind(function(raw_css,css){var to_post={};to_post["css"]=css;to_post["raw_css"]=raw_css;var as=new Basis.ajax_scaffold;as.alias="save_site_custom_css";as.dashboard=this;as.css={"css":css,"raw_css":raw_css};as.on_success=function(){this.dashboard.custom_css[this.dashboard.site_id].css=this.css.css;this.dashboard.custom_css[this.dashboard.site_id].raw_css=this.css.raw_css;window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_custom_css",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_site_custom_css";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){this.dashboard.custom_css[this.dashboard.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("complete_pending_request",bind(function(request_id,request_status,element_to_delete){if(request_id&&request_status&&element_to_delete){var to_post={};to_post["request_id"]=request_id?request_id:"";to_post["request_status"]=request_status?request_status:"";var as=new Basis.ajax_scaffold;as.alias="complete_pending_request";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.pending_requests[this.dashboard.site_id];for(var i in list){if(list[i]["id"]==this.request_id){delete list[i];var obj=Basis.get_element(this.element_to_delete);if(obj){MochiKit.Visual.fade(obj,{"duration":0.50,"afterFinish":function(){Basis.remove_element(obj);}});}}}},{"dashboard":this,"element_to_delete":element_to_delete,"request_id":request_id});return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_site_pending_requests",bind(function(site_id){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_pending_requests";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.pending_requests;list[this.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as,"site_id":site_id});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("user_change_password",bind(function(resource_id,password){var to_post={};to_post["resource_id"]=resource_id;to_post["password"]=password;var as=new Basis.ajax_scaffold;as.alias="user_change_password";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("add_site_product",bind(function(product_id){var to_post={};to_post["site_id"]=this.site_id;to_post["product_id"]=product_id?product_id:"";var as=new Basis.ajax_scaffold;as.alias="add_site_product";as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){var a=this.dashboard.custom_ajax_action("get_site_billing_info");a.addCallback(partial(function(dashboard){dashboard.render_view("WEBSITE","settings");},this.dashboard));}else{}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("renew_site",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_renew_url";as.on_success=function(req){if(req.responseText){window.onbeforeunload=null;window.location.href=req.responseText;}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_site_template_configuration",bind(function(site_id){if(site_id){var to_post=new Object();to_post["site_id"]=site_id;to_post["custom_css"]=encodeBase64(MochiKit.DOM.getElement("custom_css_999999").value);if(this.manage_template_overrides&&(this.manage_template_overrides.length>0)){to_post["overrides"]=new Array();for(var x=0;x<this.manage_template_overrides.length;x++){var o_value=MochiKit.DOM.getElement("value_"+this.manage_template_overrides[x]+"_999999");var o_link=MochiKit.DOM.getElement("link_value_"+this.manage_template_overrides[x]+"_999999");var o_type=MochiKit.DOM.getElement("type_"+this.manage_template_overrides[x]+"_999999");if(this.manage_template_overrides[x]){to_post["overrides"][to_post["overrides"].length]={"replacement_id":this.manage_template_overrides[x],"value":((o_value)?(o_value.value):""),"link":((o_link)?(o_link.value):""),"type":((o_type&&o_type.options)?(o_type.options[o_type.selectedIndex].value):"")};}}}
var objs=MochiKit.DOM.getElementsByTagAndClassName("input","manage_template_template_id");if(objs){for(var i in objs){if(objs[i]&&objs[i].checked){to_post["template_id"]=objs[i].value;}}}
if(this.color_chooser&&this.color_chooser.color&&this.color_chooser.color.toHexString){to_post["color"]=this.color_chooser.color.toHexString();}
var obj=MochiKit.DOM.getElement("restore_template_999999_0");if(obj&&obj.checked){to_post["restore_default_color"]="true";}
window.status="Applying changes to site template...";var as=new Basis.ajax_scaffold;as.alias="save_site_template_configuration";as.sid=this.session_id;as.url=this.post_url;as.site_id=site_id;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){window.status="Done";}else{window.status="save_site_template_configuration(): ERROR!";}};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_site_template_configuration",bind(function(site_id){var site_id=Basis.is_number(site_id)?site_id:this.site_id;if(site_id){var to_post={};to_post["site_id"]=site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_template_configuration";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("invite_contacts_as_user",bind(function(options){var options=options?options:{};var to_post=options["data_row"];to_post["resource_ids"]=options["currently_selected"];var as=new Basis.ajax_scaffold;as.alias="invite_contacts_as_user";as.on_success=function(req){if(req.responseText=="true"){alert("The requested user(s) have been invited to join the site!");}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_resource_history",bind(function(){var to_post={};to_post["site_id"]=this.site_id;to_post["level_of_detail"]="HIGH";var as=new Basis.ajax_scaffold;as.alias="get_site_resource_history";as.dashboard=this;as.on_success=function(req){if(req.responseText){this.dashboard.resource_history[this.dashboard.site_id]=evalJSON(req.responseText);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("associate_resources",bind(function(resource_id,resources,execute_after_reload){var to_post={};to_post["resource_id"]=resource_id;to_post["resources"]=resources;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="associate_resources";as.dashboard=this;as.resource_id=resource_id;as.resources=resources;as.execute_after_reload=execute_after_reload;as.on_success=function(req){if(req.responseText!="false"){var a=this.dashboard.get_assorted_resources(flattenArray([this.resource_id,this.resources]));if(Basis.is_function(this.execute_after_reload)){a.addCallback(bind(this.execute_after_reload,a));}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("unassociate_resources",bind(function(resource_id,resources,execute_after_reload){if(Basis.is_number(resources)){var resources=[resources];}
var to_post={};to_post["resource_id"]=resource_id;to_post["resources"]=resources;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="unassociate_resources";as.dashboard=this;as.resource_id=resource_id;as.resources=resources;as.execute_after_reload=execute_after_reload;as.on_success=function(req){if(req.responseText!="false"){var a=this.dashboard.get_assorted_resources(flattenArray([this.resource_id,this.resources]));if(Basis.is_function(this.execute_after_reload)){a.addCallback(bind(this.execute_after_reload,a));}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_settings",bind(function(site_id){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_settings";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.site_settings;list[this.site_id]=evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as,"site_id":site_id});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_billing_info",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_billing_info";as.dashboard=this;as.on_success=function(req){if(req.responseText){this.dashboard.site_billing_info[this.dashboard.site_id]=evalJSON(req.responseText);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_resource_alerts",bind(function(resource_id,alerts){if(resource_id&&alerts){var to_post={};to_post["resource_id"]=resource_id;to_post["alerts"]=alerts;window.status="save_resource_alerts()...";var as=new Basis.ajax_scaffold;as.alias="save_resource_alerts";as.resource_id=resource_id;as.alerts=alerts;as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["alerts"]=this.alerts;window.status="Done";}else{window.status="save_resource_alerts(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_resource_consent",bind(function(resource_id,permissions){if(resource_id&&permissions){var to_post={};to_post["resource_id"]=resource_id;to_post["permissions"]=permissions;window.status="save_resource_consent()...";var as=new Basis.ajax_scaffold;as.alias="save_resource_consent";as.resource_id=resource_id;as.permissions=permissions;as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["permissions"]=this.permissions;window.status="Done";}else{window.status="save_resource_consent(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("add_page",bind(function(name,type,url,comments,content,page_where,page_id){if(this.site_id&&name&&type){var to_post={};to_post["site_id"]=this.site_id;to_post["page_name"]=name;to_post["page_type"]=type;to_post["url"]=url?url:"";to_post["comments"]=comments?comments:"";to_post["content"]=content?content:"";to_post["page_where"]=page_where?page_where:"";to_post["page_id"]=page_id?page_id:"";window.status="Adding page to site...";var as=new Basis.ajax_scaffold;as.alias="add_page";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var a=this.dashboard.get_assorted_resources(flattenArray([Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["PAGE"]),response["resource_id"],this.dashboard.site_resource_id]));a.addCallback(bind(function(){this.render_view("WEBSITE","default");},this.dashboard));window.status="Done";}else{window.status="add_page(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("move_page",bind(function(page_id,page_where,before_after_under_page_id){if(page_id&&page_where&&before_after_under_page_id){var to_post={};to_post["site_id"]=this.site_id;to_post["page_id"]=page_id?page_id:"";to_post["page_where"]=page_where?page_where:"";to_post["before_after_under_page_id"]=before_after_under_page_id?before_after_under_page_id:"";window.status="Moving page within site...";var as=new Basis.ajax_scaffold;as.alias="move_page";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var a=this.dashboard.get_assorted_resources(flattenArray([Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["PAGE"]),this.dashboard.site_resource_id]));a.addCallback(bind(function(){this.render_view("WEBSITE","default");},this.dashboard));window.status="Done";}else{window.status="move_page(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_page_order",bind(function(element){var element=MochiKit.DOM.getElement(element);if(element){var final_site=[];if(!element.childNodes||element.childNodes.length==0){return false;}
var pages=Basis.get_direct_child_elements_by_tag_and_class_name(this.ns.li_tag,this.ns.li_class,element);for(var i=0;i<pages.length;i++){var resource_id=pages[i].id.replace(/[^0-9]/g,"");var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];final_site.push(page_id);}
var resource_id=element.id.replace(/[^0-9]/g,"");var parent_type=resource_id?"page":"site";var parent_id=resource_id?this.resource_linker[resource_id]["misc_vars"]["id"]:this.site_id;for(var i=0;i<pages.length;i++){var resource_id=pages[i].id.replace(/[^0-9]/g,"");this.resource_linker[resource_id]["misc_vars"]["rank"]=i;this.resource_linker[resource_id]["misc_vars"]["parent_page_id"]=(parent_id!=this.site_id)?parent_id:0;}
var final_order={"parent_id":parent_id,"type":parent_type,"order":final_site};}
var to_post=new Object();to_post.final_order=final_order;window.status="Auto-saving page rankings...";var as=new Basis.ajax_scaffold;as.alias="save_page_order";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){this.dashboard.render_view("WEBSITE","default");window.status="Done";}else{window.status="save_page_order(): ERROR!";}};as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_documents",bind(function(site_id,dropdown){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_documents";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){this.dashboard.site_documents=this.dashboard.site_documents?this.dashboard.site_documents:{};var list=this.dashboard.site_documents;list[this.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);if(this.dropdown){this.dropdown.options.length=0;}
for(var i in list[this.site_id]){var group=new OPTGROUP(i);for(var j in list[this.site_id][i]){if(Basis.is_number(j)){group.appendChild(new Option(list[this.site_id][i][j],j));}}
if(this.dropdown){this.dropdown.appendChild(group);}}},{"dashboard":this,"scaffold":as,"site_id":site_id,"dropdown":dropdown});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("add_new_resource",bind(function(type,data_row,list,what_to_return){var what_to_return=(what_to_return=="data_row")?"data_row":"display_text";if(type&&data_row&&what_to_return){this.system_log("Adding new "+type+"...",true);var to_post={};to_post["type"]=type;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="add_new_resource";as.list=list;as.data_row=data_row;as.what_to_return=what_to_return;as.dashboard=this;as.on_success=partial(function(type,req){var response=MochiKit.Base.evalJSON(req.responseText);switch(type){case"USER":if(response&&response["user"]&&response["contact"]){this.dashboard.resource_linker[response["user"]["resource_id"]]=response["user"]["data_row"];this.dashboard.resource_linker[response["contact"]["resource_id"]]=response["contact"]["data_row"];if(this.list){this.list.clear_cached_datasets(true);this.list.raw_data[response["user"]["resource_id"]]=(this.what_to_return=="data_row")?response["user"]["data_row"]["misc_vars"]:{"display_text":response["user"]["data_row"]["display_text"]};this.list.group_map[response["user"]["resource_id"]]=this.data_row["groups"];this.list.refresh();}
if(!this.dashboard.available_resources[response["data_row"]["type"]]){this.dashboard.available_resources[response["data_row"]["type"]]={};}
this.dashboard.available_resources[response["user"]["data_row"]["type"]][response["user"]["resource_id"]]=response["user"]["data_row"];var to_refresh=Basis.filter_numbers(Basis.keys(this.dashboard.resource_linker[response["user"]["resource_id"]]["associated_resources"],true));this.dashboard.get_assorted_resources(to_refresh);this.dashboard.system_log("Success!",true);}
break;default:if(response&&response["data_row"]&&response["resource_id"]){this.dashboard.resource_linker[response["resource_id"]]=response["data_row"];if(this.list){this.list.clear_cached_datasets(true);this.list.raw_data[response["resource_id"]]=(this.what_to_return=="data_row")?response["data_row"]["misc_vars"]:{"display_text":response["data_row"]["display_text"]};this.list.group_map[response["resource_id"]]=this.data_row["groups"];this.list.refresh();}
if(!this.dashboard.available_resources[response["data_row"]["type"]]){this.dashboard.available_resources[response["data_row"]["type"]]={};}
this.dashboard.available_resources[response["data_row"]["type"]][response["resource_id"]]=response["data_row"];if(!this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]]){this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]]={};}
this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]][response["resource_id"]]={};var to_refresh=Basis.filter_numbers(Basis.keys(this.dashboard.resource_linker[response["resource_id"]]["associated_resources"],true));this.dashboard.get_assorted_resources(to_refresh);this.dashboard.system_log("Success!",true);}
break;}
window.status="Done";},type);return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_resources",bind(function(resource_ids){if(resource_ids&&(resource_ids.length>0)&&confirm("Are you sure you want to PERMANENTLY DELETE "+((resource_ids.length>1)?"these":"this")+" resource"+((resource_ids.length>1)?"s":"")+"?")){this.system_log("Deleting resources...",true);if(resource_ids.length>25){this.please_wait_this_could_take_a_while();}
var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="delete_resources";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response&&(response.length>0)){for(var i=0;i<response.length;i++){var resource_id=Basis.filter_number(response[i]);var type=this.dashboard.resource_linker[resource_id]["type"];delete this.dashboard.available_resources[type][resource_id];delete this.dashboard.resource_linker[resource_id];}
this.dashboard.custom_ajax_action("get_available_resources",["CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","FOLDER","FORUM","GROUP","IMAGE_GALLERY","PAGE","POLL","SITE","TASK","TASK_LIST","USER"]);this.dashboard.system_log("Success!",true);}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_resource",bind(function(resource_id,data_row,list,what_to_return){var what_to_return=(what_to_return=="data_row")?"data_row":"display_text";if(resource_id&&data_row&&list&&what_to_return){this.system_log("Saving resource "+resource_id+"...",true);var to_post={};to_post["resource_id"]=resource_id;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="save_resource";as.list=list;as.resource_id=resource_id;as.data_row=data_row;as.what_to_return=what_to_return;as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(Basis.is_number(response["resource_id"])&&response["data_row"]){this.dashboard.resource_linker[response["resource_id"]]=response["data_row"];if(Basis.array_length(this.list.raw_data)>0){this.list.clear_cached_datasets(true);this.list.raw_data[response["resource_id"]]=(this.what_to_return=="data_row")?response["data_row"]["misc_vars"]:{"display_text":response["data_row"]["display_text"]};this.list.group_map[response["resource_id"]]=this.data_row["groups"];this.list.refresh();}
this.dashboard.system_log("Success!",true);}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_assorted_resources",bind(function(resource_ids){if(Basis.array_length(resource_ids)>0){var to_post={};to_post["resource_ids"]=resource_ids;to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_assorted_resources";as.dashboard=this;as.on_success=function(req){var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.updatetree(this.dashboard.resource_linker,resources);for(var i in resources){if(typeof(resources[i])!="function"){var update={};update[i]=resources[i];MochiKit.Base.updatetree(this.dashboard.available_resources[resources[i]["type"]],update);}}
window.status="Done";};return as.post({"to_post":to_post});}else{return new MochiKit.Async.succeed();}},this));this.set_custom_ajax_action("get_available_resources",bind(function(types){if((this.view||types)&&this.organization_id){var to_post={};to_post["types"]=(!types)?[this.view]:((Basis.array_length(types)>0)?types:this.view_associations[types]);to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_available_resources";as.dashboard=this;as.on_success=function(req){var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.update(this.dashboard.available_resources,resources);this.dashboard.link_resources(this.dashboard.available_resources);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("create_new_folder",bind(function(parent_folder_path_reference){if(!parent_folder_path_reference){return false;}
if(confirm("Are you sure you want to create a new folder?")){var to_post={};to_post["folder_path_reference"]=parent_folder_path_reference;var as=new Basis.ajax_scaffold;as.alias="create_new_folder";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);var new_folder_resource_id=response["new_folder_resource_id"];var parent_folder_resource_id=response["parent_folder_resource_id"];if(new_folder_resource_id&&parent_folder_resource_id){var a=this.dashboard.get_assorted_resources([new_folder_resource_id]);a.addCallback(bind(function(){var parent=this.folders["files"].getElementsByTagName("resource_id_"+parent_folder_resource_id)[0];if(parent){if(BrowserDetect.browser=="Explorer"){var xmlDocument=new ActiveXObject('Microsoft.XMLDOM');var node=xmlDocument.createElement("resource_id_"+new_folder_resource_id);MochiKit.DOM.addElementClass(node,"resource");parent.appendChild(node);}else{parent.appendChild(MochiKit.DOM.createDOM(("resource_id_"+new_folder_resource_id),{"class":"resource"}));}}
this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onclick");},this.dashboard));}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("create_new_root_folder",bind(function(type){switch(type){case"files":case"gallery":break;default:type=null;break;}
if(!type){return false;}
if(confirm("Are you sure you want to create a new folder?")){var to_post={};to_post["type"]=type;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="create_new_root_folder";as.dashboard=this;as.on_success=function(req){var new_folder_resource_id=req.responseText;if(Basis.is_number(new_folder_resource_id)){var a=this.dashboard.custom_ajax_action("get_assorted_resources",[new_folder_resource_id]);a.addCallback(bind(partial(function(type,new_folder_resource_id){if(BrowserDetect.browser=="Explorer"){var xmlDocument=new ActiveXObject('Microsoft.XMLDOM');var node=xmlDocument.createElement("resource_id_"+new_folder_resource_id);MochiKit.DOM.addElementClass(node,"resource");this.folders["files"].appendChild(node);}else{this.folders["files"].appendChild(MochiKit.DOM.createDOM(("resource_id_"+new_folder_resource_id),{"class":"resource"}));}
this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onclick");},type,new_folder_resource_id),this.dashboard));}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_files",bind(function(files_to_delete){if(Basis.array_length(files_to_delete)<1){alert("You haven't selected any files to delete!");return false;}
if(confirm("Are you sure you want to delete the selected files?")){var to_post={};to_post["files_to_delete"]=files_to_delete;var as=new Basis.ajax_scaffold;as.alias="delete_files";as.dashboard=this;as.on_success=function(req){var successfully_deleted=MochiKit.Base.evalJSON(req.responseText);var effects=[];var is_folder=false;for(var i in successfully_deleted){if(typeof(successfully_deleted[i])!="function"){if(as.dashboard.resource_linker[i]["type"]=="FOLDER"){is_folder=true;}
effects.push(new MochiKit.Visual.fade(("resource_"+i),{"duration":0.50,"afterFinish":bind(function(){Basis.remove_element(("resource_"+i));delete this.resource_linker[i];},as.dashboard)}));}}
as.dashboard.custom_ajax_action("get_site_diskspace");new MochiKit.Visual.Parallel(effects,{"duration":0.50,"afterFinish":bind(function(){if(is_folder){this.compile("file_explorer",this.mode);}},as.dashboard)});window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_folder",bind(function(parent_folder_path_reference){if(!parent_folder_path_reference){return false;}
if(confirm("Are you sure you want to PERMANENTLY DELETE this folder and all of its contents?")){var to_post={};to_post["folder_path_reference"]=parent_folder_path_reference;var as=new Basis.ajax_scaffold;as.alias="delete_folder";as.dashboard=this;as.on_success=function(req){var resource_id=req.responseText;if(resource_id){var node=this.dashboard.folders["files"].getElementsByTagName("resource_id_"+resource_id)[0];if(node){MochiKit.Visual.fade(("resource_"+resource_id),{"duration":0.50,"afterFinish":partial(function(node,resource_id,dashboard){Basis.remove_element("resource_"+resource_id);var parent_id=Basis.filter_number(node.parentNode.tagName);Basis.remove_element(node);dashboard.elements["file_explorer"].render_again(("resource_"+parent_id));dashboard.custom_ajax_action("get_site_diskspace");},node,resource_id,this.dashboard)});}}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_folder_files",bind(function(resource_id){var to_post={};to_post["resource_id"]=resource_id;var as=new Basis.ajax_scaffold;as.alias="get_folder_files";as.dashboard=this;as.on_success=function(req){var root=req.responseXML.getElementsByTagName("root")[0];if(root){this.dashboard.files=root.getElementsByTagName("files")[0];}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_folders",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_folders";as.dashboard=this;as.on_success=function(req){var root=req.responseXML.getElementsByTagName("root")[0];if(root){this.dashboard.folders={"files":root.getElementsByTagName("files")[0],"gallery_files":root.getElementsByTagName("gallery_files")[0]};}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("move_files",bind(function(folder_path_reference,files_to_move,section){var section=(!section||(section=="files"))?"files":"gallery_files";var to_post={};to_post["folder_path_reference"]=folder_path_reference;to_post["files_to_move"]=files_to_move;var as=new Basis.ajax_scaffold;as.alias="move_files";as.dashboard=this;as.on_success=function(req){var successfully_moved=MochiKit.Base.evalJSON(req.responseText);var effects=[];var to_load=[];var is_folder=false;for(var i in successfully_moved){if(typeof(successfully_moved[i])!="function"){var old_file_resource_id=successfully_moved[i]["old_file_resource_id"];var new_file_resource_id=successfully_moved[i]["new_file_resource_id"];if(this.dashboard.resource_linker[old_file_resource_id]&&(this.dashboard.resource_linker[old_file_resource_id]["type"]=="FOLDER")){is_folder=true;}
if(old_file_resource_id!=new_file_resource_id){delete this.dashboard.resource_linker[old_file_resource_id];}
to_load.push(new_file_resource_id);effects.push(new MochiKit.Visual.fade(getElement("resource_"+old_file_resource_id),{"duration":0.50,"afterFinish":partial(function(resource_id,is_folder,dashboard,successfully_moved,section){Basis.remove_element("resource_"+resource_id);if(is_folder){var old_parent_resource_id=successfully_moved[i]["old_parent_resource_id"];var new_parent_resource_id=successfully_moved[i]["new_parent_resource_id"];if(old_parent_resource_id&&new_parent_resource_id){var old_parent=dashboard.folders[section].getElementsByTagName("resource_id_"+old_parent_resource_id)[0];var new_parent=dashboard.folders[section].getElementsByTagName("resource_id_"+new_parent_resource_id)[0];var old_node=dashboard.folders[section].getElementsByTagName("resource_id_"+resource_id)[0];if(old_parent&&new_parent&&(old_parent!=new_parent)&&old_node){new_parent.appendChild(old_node);}}}},old_file_resource_id,is_folder,this.dashboard,successfully_moved,section)}));}}
var a=this.dashboard.custom_ajax_action("get_assorted_resources",[new_file_resource_id]);a.addCallback(partial(function(is_folder,dashboard,resource_id){new MochiKit.Visual.Parallel(effects,{"duration":0.50,"afterFinish":bind(partial(function(is_folder,resource_id){if(is_folder){this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onclick");}},is_folder,resource_id),dashboard)});},is_folder,this.dashboard,new_file_resource_id));window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("configure_access_restrictor",bind(function(mode,key){var lists=["full_access","read_only","no_access"];for(var x in lists){if(typeof(lists[x])!="function"){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);if(ul&&ul.childNodes){for(var i in ul.childNodes){var obj=MochiKit.DOM.getElement(ul.childNodes[i]);if(obj&&Basis.is_element(obj)){obj.signals=obj.signals?obj.signals:[];obj.signals.push(new MochiKit.DragAndDrop.Draggable(obj,{"revert":true,"reverteffect":function(innerelement,top_offset,left_offset){return new MochiKit.Visual.Move(innerelement,{"x":-left_offset,"y":-top_offset,"duration":0});}}));}}}
if(Basis.is_element(ul)){ul.signals=ul.signals?ul.signals:[];ul.signals.push(new MochiKit.DragAndDrop.Droppable(ul,{"hoverclass":"drop-hover","ondrop":bind(partial(function(mode,key,element,dropped_on){var resource_id=element.id.replace(/[^0-9]/g,"");var from_ul=element.id.split("|")[0];if(mode=="page"){if(this.page_restrictions[key]&&this.page_restrictions[key][from_ul]){var list=this.page_restrictions[key][from_ul];var index=MochiKit.Base.findValue(list,resource_id);if(index>-1){list.splice(index,1);}
var id=dropped_on.id.split(".");var list=this.page_restrictions[key][id[id.length-1]];if(list){list.push(resource_id);}}}else{if(this.file_restrictions[key]&&this.file_restrictions[key][from_ul]){var list=this.file_restrictions[key][from_ul];var index=MochiKit.Base.findValue(list,resource_id);if(index>-1){list.splice(index,1);}
var id=dropped_on.id.split(".");var list=this.file_restrictions[key][id[id.length-1]];if(list){list.push(resource_id);}}}
dropped_on.appendChild(element);Basis.sort_ul(dropped_on,function(nodes,a){if(nodes[a]){var text=MochiKit.DOM.scrapeText(nodes[a].firstChild.firstChild.firstChild.childNodes[1]);return text;}});this.attempt_save(bind(partial(function(mode,key){(mode=="page")?this.custom_ajax_action("save_page_restrictions",key):this.custom_ajax_action("save_file_restrictions",key);},mode,key),this));},mode,key),this)}));}}}},this));this.set_custom_ajax_action("get_file_restrictions",bind(function(path_reference){if(path_reference){var to_post={};to_post["path_reference"]=path_reference;var as=new Basis.ajax_scaffold;as.alias="get_file_restrictions";as.dashboard=this;as.on_success=function(req){var restrictions=MochiKit.Base.evalJSON(decodeBase64(req.responseText));var update={};update[path_reference]=restrictions;MochiKit.Base.updatetree(as.dashboard.file_restrictions,update);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_page_restrictions",bind(function(page_id){if(page_id){var to_post={};to_post["page_id"]=page_id;var as=new Basis.ajax_scaffold;as.alias="get_page_restrictions";as.dashboard=this;as.on_success=function(req){var restrictions=MochiKit.Base.evalJSON(decodeBase64(req.responseText));var update={};update[page_id]=restrictions;MochiKit.Base.updatetree(as.dashboard.page_restrictions,update);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("populate_access_restrictor",bind(function(users){var lists=["full_access","read_only","no_access"];var users=MochiKit.Base.updatetree({"full_access":[],"read_only":[],"no_access":[]},users);var to_populate=[];for(var x in lists){for(var y in users[lists[x]]){if(typeof(users[lists[x]])!="function"){if(typeof(users[lists[x]][y])!="function"){var resource_id=users[lists[x]][y];if(!this.resource_linker[resource_id]){to_populate.push(resource_id);}}}}}
to_populate=Basis.clone(to_populate);var a=(Basis.array_length(to_populate)>0)?this.get_assorted_resources(to_populate):new MochiKit.Async.succeed();a.addCallback(bind(function(){for(var x in lists){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);if(ul){var lis=Basis.get_direct_child_elements_by_tag_and_class_name("LI",null,ul);for(var i=0;i<lis.length;i++){Basis.remove_element(lis[i]);}
Basis.updated_live_dom();}}
for(var x in lists){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);for(var y in users[lists[x]]){var resource_id=users[lists[x]][y];if((typeof(resource_id)!="function")&&this.in_site(resource_id)){if(ul){var li=LI({"id":(lists[x]+"|"+resource_id),"style":"margin: 0px; padding-left: 0px; cursor: move;"},TABLE({"width":"100%","border":"0","cellpadding":"2","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"20","style":"padding-bottom: 3px;"},IMG({"src":this.get_view_association_icon("USER")})),TD({"width":"75"},(this.resource_linker[resource_id]["display_text"])),TD({"style":"color: #808080;"},null)))));ul.appendChild(li);}}}
if(ul){Basis.sort_ul(ul,function(nodes,a){if(nodes[a]){var text=MochiKit.DOM.scrapeText(nodes[a].firstChild.firstChild.firstChild.childNodes[1]);return text;}});}}},this));return a;},this));this.set_custom_ajax_action("populate_preset",bind(function(mode,preset){var list=this.available_resources["USER"];var key=(mode=="page")?this.resource_linker[this.resource_id]["misc_vars"]["id"]:this.resource_linker[this.resource_id]["misc_vars"]["path_reference"];if(preset&&list){var users={"full_access":[],"read_only":[],"no_access":[]};switch(preset){case"RESET":users=(mode=="page")?this.original_page_restrictions[key]:this.original_file_restrictions[key];break;case"ALL_BASIC":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)&&list[resource_id]["misc_vars"]["site_levels"]){var level=list[resource_id]["misc_vars"]["site_levels"][this.site_id];if(level){switch(level){case"USER_LEVEL_BASIC_READ_ONLY":users["read_only"].push(resource_id);break
case"USER_LEVEL_BASIC":users["full_access"].push(resource_id);break
default:users["no_access"].push(resource_id);break}}}}
break;case"ALL_PRIVATE":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)&&list[resource_id]["misc_vars"]["site_levels"]){var level=list[resource_id]["misc_vars"]["site_levels"][this.site_id];if(level){switch(level){case"USER_LEVEL_PRIVATE_READ_ONLY":users["read_only"].push(resource_id);break
case"USER_LEVEL_PRIVATE":users["full_access"].push(resource_id);break
default:users["no_access"].push(resource_id);break}}}}
break;case"ALL_READ_ONLY":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){(this.user_levels[level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?users["full_access"].push(resource_id):users["read_only"].push(resource_id);}}
break;case"ALL_FULL_ACCESS":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){users["full_access"].push(resource_id);}}
break;case"ALL_NO_ACCESS":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){(this.user_levels[level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?users["full_access"].push(resource_id):users["no_access"].push(resource_id);}}
break;}
if(mode=="page"){this.page_restrictions[key]=users;}else{this.file_restrictions[key]=users;}
this.custom_ajax_action("populate_access_restrictor",mode,users);this.custom_ajax_action("configure_access_restrictor",mode,key);if(mode=="page"){this.custom_ajax_action("save_page_restrictions",key);}else if(mode=="file"){this.custom_ajax_action("save_file_restrictions",key);}}},this));this.set_custom_ajax_action("save_file_restrictions",bind(function(path_reference){if(path_reference){var restrictions=Basis.clone(this.file_restrictions[path_reference]);delete restrictions["no_access"];var to_post={};to_post["path_reference"]=path_reference;to_post["restrictions"]=restrictions;var as=new Basis.ajax_scaffold;as.alias="save_file_restrictions";as.dashboard=this;as.on_success=function(req){var list=as.dashboard.resource_linker;for(var i in list){if(typeof(list[i])!="function"){switch(list[i]["type"]){case"FILE":case"FOLDER":if(list[i]["misc_vars"]["path_reference"]==path_reference){if((Basis.array_length(restrictions["full_access"])+Basis.array_length(restrictions["read_only"]))==0){list[i]["has_restrictions"]=false;var icon=Basis.get_element("resource_id_"+i+"_access_restrictor");if(icon){icon.src=(as.dashboard.resource_has_inherited_permissions(i)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png");}}else{list[i]["has_restrictions"]=true;var icon=Basis.get_element("resource_id_"+i+"_access_restrictor");if(icon){icon.src="images/images/default_icons/png/lock.png";}}}
break;}}}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_page_restrictions",bind(function(page_id){if(page_id){var restrictions=Basis.clone(this.page_restrictions[page_id]);delete restrictions["no_access"];var to_post={};to_post["page_id"]=page_id;to_post["restrictions"]=restrictions;var as=new Basis.ajax_scaffold;as.alias="save_page_restrictions";as.dashboard=this;as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});}},this));},set_up_custom_renderers:function(){Basis.state_handler.add_state("DEFAULT_my_profile");this.set_custom_view_renderer("DEFAULT","my_profile",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("DEFAULT_my_profile");this.populate_submenu("default","Default");this.tiles.ui.clear_all_tiles();var content=this.render_view("DEFAULT","resource_detail",this.current_user_resource_id);var index=this.render_view("DEFAULT","default","My Profile",content);content.menu.highlight_item(0);this.tiles.ui.go_to(index);if(Basis.get_cookie("do_not_show_user_profile_contacts_location")!="true"){var element=getElement(("CONTACT.V2_connected_to_"+this.current_user_resource_id));var custom_animation=partial(function(obj){Basis.misc_vars.edit_bar_alert_box=Basis.create_edit_bar_alert_box("<div style=\"white-space: nowrap; text-align: center;\"><div style=\"padding-bottom: 5px;\">These are your contacts.</div><div>You can edit one by clicking on it.</div>","white",200,null,true);Basis.align_element_to_element(Basis.misc_vars.edit_bar_alert_box,obj,"left_to_left",{"x":8});Basis.misc_vars.edit_bar_alert_box.style.top=null;Basis.misc_vars.edit_bar_alert_box.style.position="fixed";var bottom=(getViewportDimensions().h+document.body.scrollTop-getElementPosition(obj).y+5);document.body.appendChild(Basis.misc_vars.edit_bar_alert_box);appear(Basis.misc_vars.edit_bar_alert_box);var starting_point=getViewportDimensions().h;var t1=new Tween(Basis.misc_vars.edit_bar_alert_box.style,"bottom",Tween.bounceEaseOut,starting_point,bottom,1.0,"px");t1.onMotionFinished=function(){MochiKit.Async.callLater(3,function(){if(Basis.misc_vars.edit_bar_alert_box.fader&&Basis.misc_vars.edit_bar_alert_box.fader.cancel){Basis.misc_vars.edit_bar_alert_box.fader.cancel();}
Basis.misc_vars.edit_bar_alert_box.fader=fade(Basis.misc_vars.edit_bar_alert_box,{"afterFinish":function(){if(Basis.misc_vars.edit_bar_alert_box.fader.state=="finished"){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);Basis.misc_vars.edit_bar_alert_box=null;Basis.destroy_modal_background();Basis.set_cookie("do_not_show_user_profile_contacts_location","true",365);}}});});};t1.start();},element);Basis.create_modal_background(null,null,{"afterFinish":custom_animation});}},this));this.set_custom_view_renderer("DEFAULT","profile_content",bind(function(){var receives_emails=SELECT();Basis.select_add_options(receives_emails,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(receives_emails,(this.resource_linker[this.current_user_resource_id]["misc_vars"]["receives_emails"]?"yes":"no"));Basis.make_text_element_dropdown(receives_emails,null,{"resource_id":this.current_user_resource_id,"field":"receives_emails","after_success":partial(function(dashboard,resource_id,element,req){dashboard.resource_linker[resource_id]["misc_vars"]["receives_emails"]=element.options[element.selectedIndex].value;},this,this.current_user_resource_id,receives_emails)});var profile=DIV({"style":"padding: 10px"},TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"100","style":"font-weight: bold;"},"Receive emails?"),TD(null,receives_emails)))));return profile;},this));this.set_custom_view_renderer("DEFAULT","resource_alerts_button",bind(function(resource_id){var content=DIV();if(resource_id&&this.resource_linker[resource_id]){if(!this.resource_has_existing_alerts(resource_id)){if(this.resource_linker[resource_id]["resource_access"]["full_access"]){var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/error.png);","value":"Click here to set an Alert for when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){this.run_wizard("ALERT",{"data_row":{},"target_resource_id":target_resource_id,"mode":"add"});},resource_id),this),false);content=button;}}else{var delete_button=Basis.nbsp();if(this.resource_linker[resource_id]["resource_access"]["full_access"]){var delete_button=IMG({"src":"images/images/default_icons/png/delete.png","style":"cursor: pointer;"});Basis.signal_handler.connect(delete_button,"onclick",bind(partial(function(resource_id,alert_resource_id){var a=this.custom_ajax_action("delete_resources",[alert_resource_id]);if(a){a.addCallback(bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id),this));}},resource_id,this.resource_get_existing_alert_resource_id_for(resource_id)),this),false);Basis.attach_tooltip(delete_button,"Delete this "+this.resource_type_text(this.resource_get_existing_alert_resource_id_for(resource_id)),null,false);}
var alert_link=this.render_view("DEFAULT","resource_with_icon",this.resource_get_existing_alert_resource_id_for(resource_id),true,"Click here to change who should be alerted");content=DIV(null,alert_link,Basis.nbsp(),delete_button);alert_link.style.display="inline";delete_button.style.display="inline";content.style.display="inline";}
var button=null;if(!this.resource_is_associated_with_resource(this.current_user_resource_id,this.resource_get_existing_alert_resource_id_for(resource_id))){var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.png);","value":"I want to be alerted when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){if(!this.resource_has_existing_alerts(resource_id)){var data_row={"type":"alert","attached_to_resource_id":target_resource_id,"auto_associate_user_resource_id":this.current_user_resource_id};var a=this.custom_ajax_action("add_new_resource","ALERT",data_row);a.addCallback(bind(partial(function(dashboard){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=Basis._int(response["data_row"]["misc_vars"]["attached_to_resource_id"]);if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this),a));}else{var after_reload=partial(function(dashboard,target_resource_id){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)&&dashboard.tiles.ui.tiles[0].list){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var resource_id=target_resource_id;if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this,target_resource_id);this.custom_ajax_action("associate_resources",this.current_user_resource_id,[this.resource_get_existing_alert_resource_id_for(resource_id)],after_reload);}},resource_id),this),false);}else{var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/stop.png);","value":"Stop alerting me when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){var after_reload=partial(function(dashboard,target_resource_id){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)&&dashboard.tiles.ui.tiles[0].list){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=target_resource_id;if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this,target_resource_id);this.custom_ajax_action("unassociate_resources",this.resource_get_existing_alert_resource_id_for(target_resource_id),this.current_user_resource_id,after_reload);},resource_id),this),false);}
if(button){content=DIV(null,DIV(null,content),DIV(null,button));}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_type_associator",bind(function(resource_type,resource_id){var resource_type=resource_type?resource_type.toUpperCase():"";var content=DIV();if(resource_id&&this.resource_linker[resource_id]&&this.resource_types.indexOf(resource_type)>-1){var button=IMG({"src":"images/images/default_icons/png/add.png","style":"cursor: pointer;"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(resource_type,resource_id){this.render_view("DEFAULT","resource_associate_from_list",resource_type,resource_id);},resource_type,resource_id),this),false);Basis.attach_tooltip(button,"Click here to connect "+Basis.pluralize(this.resource_type_text(resource_type)).toLowerCase()+" to "+this.resource_display_text(resource_id),false,false);var content=DIV(null,TABLE({"width":"100%","style":"border-bottom: 1px solid #c0c0c0; margin-bottom: 5px; padding-bottom: 5px;"},TBODY(null,TR(null,TD(null,STRONG(null,Basis.pluralize(this.resource_type_text(resource_type)))),TD({"width":"16"},button)))),this.render_view("DEFAULT","resource_type_associator_list",resource_type,"unassociate",resource_id));return content;}},this));Basis.state_handler.add_state("resource_associate_from_list");this.set_custom_view_renderer("DEFAULT","resource_associate_from_list",bind(function(resource_type,resource_id){Basis.state_handler.enter_state("resource_associate_from_list");var content=DIV({"style":"width: 400px; display: inline;"},this.render_view("DEFAULT","resource_type_associator_list",resource_type,"associate",resource_id));var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_type_associator_list",bind(function(resource_type,associate_or_unassociate,resource_id){var resource_type=resource_type?resource_type.toUpperCase():"";var associate_or_unassociate=(associate_or_unassociate=="unassociate")?"unassociate":"associate";var content=TBODY();if(resource_id&&this.resource_linker[resource_id]&&this.resource_types.indexOf(resource_type)>-1){var list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});list.resource_type=resource_type;list.grid_control.num_per_page=9999999;list.grid_control.fetch_raw_data(list.resource_type);list.grid_control.refresh_data();var list=Basis.keys(list.grid_control.current_dataset);if(list&&(list.length>0)){for(var i=0;i<list.length;i++){if(((associate_or_unassociate=="associate")&&!this.resource_is_associated_with_resource(resource_id,list[i]))||((associate_or_unassociate=="unassociate")&&this.resource_is_associated_with_resource(resource_id,list[i]))){var button=IMG({"src":(associate_or_unassociate=="associate")?"images/images/default_icons/png/add.png":"images/images/default_icons/png/decline.png","style":"cursor: pointer;"});var row=TR(null,TD(null,this.render_view("DEFAULT","resource_with_icon",list[i],true)),TD({"width":"16"},button));Basis.signal_handler.connect(button,"onclick",bind(partial(function(resource_id,resource_id_to_associate_or_unassociate,associate_or_unassociate,row){var btype=this.resource_linker[resource_id_to_associate_or_unassociate]["type"];var atype=this.resource_linker[resource_id]["type"];if(atype&&btype&&confirm("Are you sure you want to "+((associate_or_unassociate=="associate")?"connect":"disconnect")+" "+this.resource_display_text(resource_id_to_associate_or_unassociate)+" "+((associate_or_unassociate=="associate")?"with":"from")+" "+this.resource_display_text(resource_id)+"?")){switch(associate_or_unassociate){case"associate":this.resource_linker[resource_id]["associated_resources"][btype]=this.resource_linker[resource_id]["associated_resources"][btype]?this.resource_linker[resource_id]["associated_resources"][btype]:{};this.resource_linker[resource_id]["associated_resources"][btype][resource_id_to_associate_or_unassociate]=[];this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]=this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]?this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]:{};this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype][resource_id]=[];fade(row,{"duration":0.50,"afterFinish":bind(partial(function(dashboard){Basis.signal_handler.execute_interactive_element(dashboard.tiles.ui.tiles[dashboard.tiles.ui.current_tile-1].getElementsByTagName("table")[3].menu.menu_items[0],"onclick");Basis.remove_element(this);},this),row)});break;case"unassociate":delete(this.resource_linker[resource_id]["associated_resources"][btype][resource_id_to_associate_or_unassociate]);delete(this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype][resource_id]);fade(row,{"duration":0.50,"afterFinish":bind(partial(function(dashboard){Basis.remove_element(this);},this),row)});break;}
this.custom_ajax_action("associate_resources",resource_id,Basis.filter_numbers(Basis.keys(this.resource_linker[resource_id]["associated_resources"],true)));}},resource_id,list[i],associate_or_unassociate,row),this),false);content.appendChild(row);}}
content=TABLE({"width":"300"},content);}else{content=DIV();}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_permissions_rendering",bind(function(resource_id){if(!this.resource_linker[resource_id]["has_restrictions"]&&this.resource_has_inherited_permissions(resource_id)){var resource_ids=this.get_resource_ids_that_resource_inherits_permissions_from(resource_id);var rendered_permissions=[];for(var i=0;i<resource_ids.length;i++){rendered_permissions.push(DIV({"style":"border: 1px solid #c0c0c0; padding: 10px;"},TABLE(null,TBODY(null,TR(null,TD(null,H3({"style":"padding: 0px; margin: 0px;"},"Permissions inherited from ")),TD(null,this.render_view("DEFAULT","resource_with_icon",resource_ids[i],true))))),this.render_view("DEFAULT","resource_permissions_rendering",resource_ids[i])));}
return rendered_permissions;}else{var content=DIV();var list=this.resource_linker[resource_id]["restrictions"];list=list?list:{};if(list["user_specific"]||list["group"]){if(list["user_specific"]){content.appendChild(H3(null,"User-Specific Permissions"));if(list["user_specific"]["read_only"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Read-Only Access"));for(var i=0;i<list["user_specific"]["read_only"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",this.get_resource_id_by_type_and_id("USER",list["user_specific"]["read_only"][i]),true)));}}
if(list["user_specific"]["full_access"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Full Access"));for(var i=0;i<list["user_specific"]["full_access"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",this.get_resource_id_by_type_and_id("USER",list["user_specific"]["full_access"][i]),true)));}}}
if(list["group"]){content.appendChild(H3(null,"Group Permissions"));if(list["group"]["read_only"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Read-Only Access"));for(var i=0;i<list["group"]["read_only"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",list["group"]["read_only"][i],true)));}}
if(list["group"]["full_access"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Full Access"));for(var i=0;i<list["group"]["full_access"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",list["group"]["read_only"][i],true)));}}}}else if(list["user_level"]){content.appendChild(H3(null,"User-Level Permissions"));if(list["user_level"]["read_only"]){content.appendChild(STRONG({"style":"display: block;"},"Read-Only Access"));for(var i=0;i<list["user_level"]["read_only"].length;i++){if(list["user_level"]["read_only"][i]["site_id"]==this.site_id){content.appendChild(P({"style":"padding-left: 10px;"},this.user_levels_text[list["user_level"]["read_only"][i]["user_level"]]));}}}
if(list["user_level"]["full_access"]){content.appendChild(STRONG({"style":"display: block;"},"Full Access"));for(var i=0;i<list["user_level"]["full_access"].length;i++){if(list["user_level"]["full_access"][i]["site_id"]==this.site_id){content.appendChild(P({"style":"padding-left: 10px;"},this.user_levels_text[list["user_level"]["full_access"][i]["user_level"]]));}}}}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_permissions_1_tile",bind(function(resource_id,lock_icon){var button_manage_permissions=INPUT({"type":"button","value":this.resource_linker[resource_id]["has_restrictions"]?"Click here to change permissions":(this.resource_has_inherited_permissions(resource_id)?"Click here to set permissions that override any inherited permissions":"Click here to set permissions")});Basis.signal_handler.connect(button_manage_permissions,"onclick",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_2",resource_id,lock_icon);},resource_id,lock_icon),this),false);var button_remove_permissions=INPUT({"type":"button","value":this.resource_has_inherited_permissions(resource_id)?"Click here to remove these permissions and re-inherit from above":"Click here to make this public again"});Basis.signal_handler.connect(button_remove_permissions,"onclick",bind(partial(function(resource_id,lock_icon){var message=this.resource_has_inherited_permissions(resource_id)?"Are you sure you want to remove permissions from this "+this.resource_type_text(resource_id).toLowerCase()+" and re-inherit from above?":"Are you sure you want to make this "+this.resource_type_text(resource_id).toLowerCase()+" public again?";if(confirm(message)){var a=this.custom_ajax_action("clear_resource_permissions",resource_id,lock_icon);a.addCallback(bind(function(){this.tiles.ui.back();},this));}},resource_id,lock_icon),this),false);var rendered_permissions=this.render_view("DEFAULT","resource_permissions_rendering",resource_id);var content=DIV(null,P({"style":"text-align: center;"},this.resource_linker[resource_id]["has_restrictions"]?"This "+this.resource_type_text(resource_id).toLowerCase()+" has permissions set for it. ":(this.resource_has_inherited_permissions(resource_id)?"This "+this.resource_type_text(resource_id).toLowerCase()+" has permissions inherited from above. ":"This "+this.resource_type_text(resource_id).toLowerCase()+" is public and can be viewed by anybody. ")),TABLE({"style":"margin-left: auto; margin-right: auto;","align":"center"},TBODY(null,TR(null,TD(null,rendered_permissions)))),this.resource_linker[resource_id]["has_restrictions"]?[P({"style":"text-align: center;"},button_manage_permissions),P({"style":"text-align: center;"},button_remove_permissions)]:P({"style":"text-align: center;"},button_manage_permissions));return content;},this));Basis.state_handler.add_state("DEFAULT_resource_permissions_1");this.set_custom_view_renderer("DEFAULT","resource_permissions_1",bind(function(resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_permissions_1");var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("DEFAULT_resource_permissions_2");this.set_custom_view_renderer("DEFAULT","resource_permissions_2",bind(function(resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_permissions_2");var read_only_access=SELECT();var full_access=SELECT();var button_advanced=INPUT({"type":"button","value":"Click here to set permissions for users and groups"});Basis.select_add_options(read_only_access,this.user_levels_text);Basis.select_add_options(full_access,this.user_levels_text);if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){Basis.select_select_item_by_value(read_only_access,list[i]["user_level"]);}}}
if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){Basis.select_select_item_by_value(full_access,list[i]["user_level"]);}}}
Basis.signal_handler.connect(button_advanced,"onclick",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_consent_tile",null,resource_id,lock_icon);},resource_id,lock_icon),this),false);read_only_access.onchange=bind(partial(function(resource_id,read_only_access,full_access,lock_icon,save_via_ajax){var save_via_ajax=(save_via_ajax==false)?false:true;var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id].restrictions)?{}:this.resource_linker[resource_id].restrictions;permissions["user_level"]=permissions["user_level"]?permissions["user_level"]:{};permissions["user_level"]["read_only"]=permissions["user_level"]["read_only"]?permissions["user_level"]["read_only"]:[];var found=false;for(var i=0;i<permissions["user_level"]["read_only"].length;i++){if(permissions["user_level"]["read_only"][i]["site_id"]==this.site_id){permissions["user_level"]["read_only"]=Basis.array_delete_index(permissions["user_level"]["read_only"],i);continue;}}
permissions["user_level"]["read_only"].push({"site_id":this.site_id,"user_level":read_only_access.options[read_only_access.selectedIndex].value});this.resource_linker[resource_id].restrictions=permissions;if(this.user_levels[Basis.select_get_selected_value(full_access)]<this.user_levels[Basis.select_get_selected_value(read_only_access)]){full_access.selectedIndex=read_only_access.selectedIndex;full_access.onchange(false);var permissions=this.resource_linker[resource_id].restrictions;}
if(save_via_ajax){var a=this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);a.addCallback(bind(partial(function(resource_id,lock_icon){var content=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].firstChild.content;Basis.remove_children(content);content.appendChild(this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));},resource_id,lock_icon),this));}},resource_id,read_only_access,full_access,lock_icon),this);full_access.onchange=bind(partial(function(resource_id,read_only_access,full_access,lock_icon,save_via_ajax){var save_via_ajax=(save_via_ajax==false)?false:true;var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id].restrictions)?{}:this.resource_linker[resource_id].restrictions;permissions["user_level"]=permissions["user_level"]?permissions["user_level"]:{};permissions["user_level"]["full_access"]=permissions["user_level"]["full_access"]?permissions["user_level"]["full_access"]:[];var found=false;for(var i=0;i<permissions["user_level"]["full_access"].length;i++){if(permissions["user_level"]["full_access"][i]["site_id"]==this.site_id){permissions["user_level"]["full_access"]=Basis.array_delete_index(permissions["user_level"]["full_access"],i);continue;}}
permissions["user_level"]["full_access"].push({"site_id":this.site_id,"user_level":full_access.options[full_access.selectedIndex].value});this.resource_linker[resource_id].restrictions=permissions;if(this.user_levels[Basis.select_get_selected_value(full_access)]<this.user_levels[Basis.select_get_selected_value(read_only_access)]){read_only_access.selectedIndex=full_access.selectedIndex;read_only_access.onchange(false);var permissions=this.resource_linker[resource_id].restrictions;}
if(save_via_ajax){var a=this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);a.addCallback(bind(partial(function(resource_id,lock_icon){var content=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].firstChild.content;Basis.remove_children(content);content.appendChild(this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));},resource_id,lock_icon),this));}},resource_id,read_only_access,full_access,lock_icon),this);var content=DIV(null,P({"style":"text-align: center;"},"Users will need to be at least this user level to access this "+this.resource_type_text(resource_id).toLowerCase()+":"),P({"style":"text-align: center;"},read_only_access),P({"style":"text-align: center;"},"Users will need to be at least this user level to modify or delete this "+this.resource_type_text(resource_id).toLowerCase()+":"),P({"style":"text-align: center;"},full_access),P({"style":"text-align: center;"},"Or"),P({"style":"text-align: center;"},button_advanced));var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_alerts",bind(function(mode,resource_id){var mode=(mode!==null)?mode:"page";if(mode&&resource_id){var alerts=this.resource_linker[resource_id]["alerts"];var users_list_tab=INPUT({"type":"button","value":"Users"});var groups_list_tab=INPUT({"type":"button","value":"Groups"});var contacts_list_tab=INPUT({"type":"button","value":"Contacts"});var search_list_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var to_alert_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var users_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});users_list.resource_type="USER";users_list.grid_control.elements["container_output"]=search_list_contents;users_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),users_list);var groups_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});groups_list.resource_type="GROUP";groups_list.grid_control.elements["container_output"]=search_list_contents;groups_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),groups_list);var contacts_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});contacts_list.resource_type="CONTACT.V2";contacts_list.grid_control.elements["container_output"]=search_list_contents;contacts_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),contacts_list);var to_alert=new Basis.grid_control.generic_resource.simplified({"dashboard":this});to_alert.grid_control.elements["container_output"]=to_alert_contents;to_alert.render();var users_list_ajax=users_list.grid_control.fetch_raw_data("USER");var groups_list_ajax=groups_list.grid_control.fetch_raw_data("GROUP");var contacts_list_ajax=contacts_list.grid_control.fetch_raw_data("CONTACT.V2");var after_fetch=new MochiKit.Async.DeferredList([users_list_ajax,groups_list_ajax,contacts_list_ajax]);if(alerts&&alerts.length){after_fetch.addCallback(partial(function(alerts,to_alert,users_list,groups_list,contacts_list){for(var i=0;i<alerts.length;i++){var resource_id=Basis._int(alerts[i]);var lists=[users_list,groups_list,contacts_list];for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[resource_id]){to_alert.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}
for(var x=0;x<lists.length;x++){lists[x].grid_control.currently_selected=[];lists[x].grid_control.clear_cached_datasets();to_alert.grid_control.clear_cached_datasets();lists[x].grid_control.refresh();to_alert.grid_control.refresh();}},alerts,to_alert,users_list,groups_list,contacts_list));}
after_fetch.addCallback(bind(function(){this.onclick();},users_list_tab));var button_to_alert=INPUT({"type":"button","value":"Add To Alerts"});var button_to_alert_remove_selected=INPUT({"type":"button","value":"Remove Selected"});to_alert.render();var dummy={};MochiKit.Signal.connect(dummy,"save",bind(partial(function(resource_id,to_alert){var alerts=[];var keys=Basis.keys(to_alert.grid_control.raw_data);for(var i=0;i<keys.length;i++){alerts.push(keys[i]);}
this.attempt_save(bind(partial(function(resource_id,alerts){this.custom_ajax_action("save_resource_alerts",resource_id,alerts);},resource_id,alerts),this));},resource_id,to_alert),this));Basis.signal_handler.connect(button_to_alert,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,to_alert){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){to_alert.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();to_alert.grid_control.clear_cached_datasets();list.grid_control.refresh();to_alert.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,to_alert),this),false);Basis.signal_handler.connect(button_to_alert_remove_selected,"onclick",bind(partial(function(dummy,search_list_contents,to_alert){var list=to_alert;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){search_list_contents.list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,to_alert),this),false);var table=TABLE({"width":"100%","cellpadding":"10"},TBODY(null,TR(null,TD({"width":"50%","style":"vertical-align: top;"},DIV(null,users_list_tab,groups_list_tab,contacts_list_tab),search_list_contents,DIV({"style":"text-align: center;"},button_to_alert)),TD({"width":"50%","style":"vertical-align: top;"},DIV({"style":"padding: 3px;"},STRONG(null,"Will be alerted when anything about this changes:")),to_alert_contents,DIV({"style":"text-align: center;"},button_to_alert_remove_selected)))));var ui=table;Basis.register_size_constraints(table,"100%","100%");Basis.register_size_constraints(search_list_contents,"100%","100%");Basis.register_size_constraints(to_alert_contents,"100%","100%");return ui;}},this));Basis.state_handler.add_state("DEFAULT_resource_consent_tile");this.set_custom_view_renderer("DEFAULT","resource_consent_tile",bind(function(mode,resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_consent_tile");Basis.block_updating_live_dom();var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),this.render_view("DEFAULT","resource_consent",mode,resource_id,lock_icon));Basis.unblock_updating_live_dom();this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_consent",bind(function(mode,resource_id,lock_icon){var mode=(mode!==null)?mode:"page";if(mode&&resource_id){var permissions=this.resource_linker[resource_id]["restrictions"];var users_list_tab=INPUT({"type":"button","value":"Users"});var groups_list_tab=INPUT({"type":"button","value":"Groups"});var search_list_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var read_only_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var full_access_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var users_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});users_list.resource_type="USER";users_list.grid_control.elements["container_output"]=search_list_contents;users_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),users_list);var groups_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});groups_list.resource_type="GROUP";groups_list.grid_control.elements["container_output"]=search_list_contents;groups_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),groups_list);var read_only=new Basis.grid_control.generic_resource.simplified({"dashboard":this});read_only.grid_control.elements["container_output"]=read_only_contents;var full_access=new Basis.grid_control.generic_resource.simplified({"dashboard":this});full_access.grid_control.elements["container_output"]=full_access_contents;var users_list_ajax=users_list.grid_control.fetch_raw_data("USER");var groups_list_ajax=groups_list.grid_control.fetch_raw_data("GROUP");var after_fetch=new MochiKit.Async.DeferredList([users_list_ajax,groups_list_ajax]);after_fetch.addCallback(bind(function(){this.onclick();},users_list_tab));if(permissions){after_fetch.addCallback(bind(partial(function(permissions,read_only,full_access,users_list,groups_list,dashboard){var lists=[users_list,groups_list];if(permissions["user_specific"]&&permissions["user_specific"]["read_only"]){var list=permissions["user_specific"]["read_only"];for(var i=0;i<list.length;i++){var user_resource_id=Basis._int(this.get_resource_id_by_type_and_id("USER",list[i]));if(Basis.is_number(user_resource_id)){for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[user_resource_id]){read_only.grid_control.raw_data[user_resource_id]=lists[x].grid_control.raw_data[user_resource_id];delete lists[x].grid_control.raw_data[user_resource_id];}}}}}
if(permissions["user_specific"]&&permissions["user_specific"]["full_access"]){var list=permissions["user_specific"]["full_access"];for(var i=0;i<list.length;i++){var user_resource_id=Basis._int(this.get_resource_id_by_type_and_id("USER",list[i]));if(Basis.is_number(user_resource_id)){for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[user_resource_id]){full_access.grid_control.raw_data[user_resource_id]=lists[x].grid_control.raw_data[user_resource_id];delete lists[x].grid_control.raw_data[user_resource_id];}}}}}
if(permissions["group"]&&permissions["group"]["read_only"]){var list=permissions["group"]["read_only"];for(var i=0;i<list.length;i++){for(var x=0;x<lists.length;x++){var resource_id=list[i];if(lists[x].grid_control.raw_data[resource_id]){read_only.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}}
if(permissions["group"]&&permissions["group"]["full_access"]){var list=permissions["group"]["full_access"];for(var i=0;i<list.length;i++){var resource_id=list[i];for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[resource_id]){full_access.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}}
for(var x=0;x<lists.length;x++){lists[x].grid_control.currently_selected=[];lists[x].grid_control.clear_cached_datasets();read_only.grid_control.clear_cached_datasets();full_access.grid_control.clear_cached_datasets();lists[x].grid_control.refresh();read_only.grid_control.refresh();full_access.grid_control.refresh();}},permissions,read_only,full_access,users_list,groups_list),this));}
var button_full_access=INPUT({"type":"button","value":"Full Access"});var button_read_only=INPUT({"type":"button","value":"Read Only"});var button_remove_all=INPUT({"type":"button","value":"Remove All Permissions","style":"width: 100%;"});var button_read_only_remove_selected=INPUT({"type":"button","value":"Remove Selected"});var button_full_access_remove_selected=INPUT({"type":"button","value":"Remove Selected"});read_only.render();full_access.render();var dummy={};MochiKit.Signal.connect(dummy,"save",bind(partial(function(resource_id,full_access,read_only,lock_icon){var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id]["restrictions"])?{}:this.resource_linker[resource_id]["restrictions"];permissions=Basis.is_object(permissions)?permissions:{};var keys=Basis.keys(read_only.grid_control.raw_data);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]){switch(this.resource_linker[keys[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["read_only"]=permissions["user_specific"]["read_only"]?permissions["user_specific"]["read_only"]:[];if(Basis.array_search(permissions["user_specific"]["read_only"],this.resource_linker[keys[i]]["misc_vars"]["id"])==null){permissions["user_specific"]["read_only"].push(this.resource_linker[keys[i]]["misc_vars"]["id"]);}
break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["read_only"]=permissions["group"]["read_only"]?permissions["group"]["read_only"]:[];if(Basis.array_search(permissions["group"]["read_only"],keys[i])==null){permissions["group"]["read_only"].push(keys[i]);}
break;}}}
var keys=Basis.keys(full_access.grid_control.raw_data);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]){switch(this.resource_linker[keys[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["full_access"]=permissions["user_specific"]["full_access"]?permissions["user_specific"]["full_access"]:[];if(Basis.array_search(permissions["user_specific"]["full_access"],this.resource_linker[keys[i]]["misc_vars"]["id"])==null){permissions["user_specific"]["full_access"].push(this.resource_linker[keys[i]]["misc_vars"]["id"]);}
break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["full_access"]=permissions["group"]["full_access"]?permissions["group"]["full_access"]:[];if(Basis.array_search(permissions["group"]["full_access"],keys[i])==null){permissions["group"]["full_access"].push(keys[i]);}
break;}}}
this.attempt_save(bind(partial(function(resource_id,permissions,lock_icon){this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);},resource_id,permissions,lock_icon),this));},resource_id,full_access,read_only,lock_icon),this));Basis.signal_handler.connect(button_full_access,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,full_access){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){full_access.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();full_access.grid_control.clear_cached_datasets();list.grid_control.refresh();full_access.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,full_access),this),false);Basis.signal_handler.connect(button_read_only,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,read_only){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){read_only.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();read_only.grid_control.clear_cached_datasets();list.grid_control.refresh();read_only.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,read_only),this),false);Basis.signal_handler.connect(button_full_access_remove_selected,"onclick",bind(partial(function(dummy,resource_id,search_list_contents,full_access,users_list,groups_list){var permissions=this.resource_linker[resource_id]["restrictions"];var list=full_access;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){switch(this.resource_linker[resources[i]]["type"]){case"USER":users_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;case"GROUP":groups_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;}
delete list.grid_control.raw_data[resources[i]];if(this.resource_linker[resource_id]){switch(this.resource_linker[resources[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["full_access"]=permissions["user_specific"]["full_access"]?permissions["user_specific"]["full_access"]:[];permissions["user_specific"]["full_access"]=Basis.array_delete_value(permissions["user_specific"]["full_access"],this.resource_linker[resources[i]]["misc_vars"]["id"]);break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["full_access"]=permissions["group"]["full_access"]?permissions["group"]["full_access"]:[];permissions["group"]["full_access"]=Basis.array_delete_value(permissions["group"]["full_access"],resources[i]);break;}}}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();users_list.grid_control.clear_cached_datasets();groups_list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
this.resource_linker[resource_id]["restrictions"]=permissions;MochiKit.Signal.signal(dummy,"save");},dummy,resource_id,search_list_contents,full_access,users_list,groups_list),this),false);Basis.signal_handler.connect(button_read_only_remove_selected,"onclick",bind(partial(function(dummy,resource_id,search_list_contents,read_only,users_list,groups_list){var permissions=this.resource_linker[resource_id]["restrictions"];var list=read_only;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){switch(this.resource_linker[resources[i]]["type"]){case"USER":users_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;case"GROUP":groups_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;}
delete list.grid_control.raw_data[resources[i]];if(this.resource_linker[resources[i]]){switch(this.resource_linker[resources[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["read_only"]=permissions["user_specific"]["read_only"]?permissions["user_specific"]["read_only"]:[];permissions["user_specific"]["read_only"]=Basis.array_delete_value(permissions["user_specific"]["read_only"],this.resource_linker[resources[i]]["misc_vars"]["id"]);break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["read_only"]=permissions["group"]["read_only"]?permissions["group"]["read_only"]:[];permissions["group"]["read_only"]=Basis.array_delete_value(permissions["group"]["read_only"],resources[i]);break;}}}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();users_list.grid_control.clear_cached_datasets();groups_list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
this.resource_linker[resource_id]["restrictions"]=permissions;MochiKit.Signal.signal(dummy,"save");},dummy,resource_id,search_list_contents,read_only,users_list,groups_list),this),false);var table=TABLE({"width":"100%","cellpadding":"10"},TBODY(null,TR(null,TD({"width":"50%","style":"vertical-align: top;"},DIV(null,users_list_tab,groups_list_tab),search_list_contents,DIV({"style":"text-align: center;"},"Give: ",button_full_access,button_read_only)),TD({"width":"50%","style":"vertical-align: top;"},DIV({"style":"padding: 3px;"},STRONG(null,"Full Access")),full_access_contents,DIV({"style":"text-align: center;"},button_full_access_remove_selected),DIV({"style":"padding: 3px;"},STRONG(null,"Read Only")),read_only_contents,DIV({"style":"text-align: center;"},button_read_only_remove_selected),null))));var maximize=IMG({"src":"images/images/default_icons/png/arrow_out.png","style":"cursor: pointer"});var ui=DIV(null,DIV({"style":"text-align: right; padding: 0px; padding-right: 10px; padding-top: 10px;"},maximize),table);Basis.signal_handler.connect(maximize,"onclick",partial(function(element){Basis.make_element_fullscreen(element);},table),false);Basis.register_size_constraints(ui,"100%","100%");Basis.register_size_constraints(table,"100%","100%");Basis.register_size_constraints(search_list_contents,"100%","100%");Basis.register_size_constraints(full_access_contents,"100%","50%");Basis.register_size_constraints(read_only_contents,"100%","100%");return ui;}},this));this.set_custom_view_renderer("DEFAULT","resource_with_icon",bind(function(resource_id,clickable,overriding_resource_name){var clickable=(clickable===true)?((this.resource_linker[resource_id]&&this.resource_linker[resource_id]["resource_access"]&&(this.resource_linker[resource_id]["resource_access"]["read_only"]||this.resource_linker[resource_id]["resource_access"]["full_access"]))?true:false):false;var resource=this.resource_linker[resource_id];if(resource){switch(resource["type"]){case"FILE":var icon=resource["misc_vars"]["icon"];break;default:var icon=this.get_view_association_icon(resource_id);break;}
var resource_name=SPAN({"id":("resource_"+resource_id)},overriding_resource_name?overriding_resource_name:this.resource_display_text(resource_id));var resource_link=TABLE({"border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD({"width":"20"},IMG({"src":icon})),TD({},resource_name))));if(clickable){if(resource_link&&resource_link.style){resource_link.style.cursor="pointer";}
Basis.signal_handler.connect(resource_link,"onclick.greedy.swallow",bind(partial(function(resource_id){this.show_resource(resource_id);},resource_id),this),false);}
return resource_link;}
return null;},this));this.set_custom_view_renderer("DEFAULT","coming_soon",bind(function(section_name){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("DEFAULT_coming_soon");this.populate_submenu("collaborate",section_name);this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Coming Soon!",DIV(null,"Coming soon!"));this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","deleted_resource_with_icon",bind(function(resource_type,resource_text){if(resource_type&&resource_text){var icon=this.get_view_association_icon(resource_type,true);return TABLE({"border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD({"width":"20"},IMG({"src":icon})),TD({"style":"color: #999999;"},resource_text))));}
return null;},this));this.set_custom_view_renderer("DEFAULT","browser_row",bind(function(resource_id,options){var options=options?options:{};var resource=this.resource_linker[resource_id];if(resource){var id=resource_id+"_browser_row";var resource_name=this.render_view("DEFAULT","resource_with_icon",resource_id);var manage_resources=null;var associate_button=null;var item=DIV({"id":id,"class":"Basis.dashboard.resource_browser.resource"},TABLE({"width":"100%","border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD(null,resource_name),TD({"width":"20","style":"text-align: right; cursor: pointer;"},manage_resources),TD({"width":"20","style":"text-align: right; cursor: pointer;"},associate_button)))));Basis.signal_handler.connect(item,"onmouseenter",bind(function(){MochiKit.DOM.addElementClass(this,"Basis.dashboard.resource_browser.resource.selected");},item),false);Basis.signal_handler.connect(item,"onmouseleave",bind(function(){MochiKit.DOM.removeElementClass(this,"Basis.dashboard.resource_browser.resource.selected");},item),false);Basis.set_style(resource_name,{"cursor":"pointer"});Basis.signal_handler.connect(resource_name,"onclick.greedy",bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id),this),false);return item;}},this));this.set_custom_view_renderer("DEFAULT","default",bind(function(tile_name,tile_contents,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var go_back=(this.tiles[ui_or_wizard].tiles.length>0)?true:false;var go_back_text=(go_back)?this.tiles[ui_or_wizard].tiles[this.tiles[ui_or_wizard].tiles.length-1].name:null;var go_back_icon="images/images/default_icons/png/resultset_previous.png";var tile=this.tiles[ui_or_wizard].create_tile();tile.name=tile_name;var default_screen=this.default_screen(tile.name,go_back,go_back_text,go_back_icon);Basis.signal_handler.connect(default_screen.header.go_back_icon,"onclick.greedy.swallow",bind(function(){this.tiles[ui_or_wizard].back();},this),false);Basis.signal_handler.connect(default_screen.header.go_back,"onclick.greedy.swallow",bind(function(){this.tiles[ui_or_wizard].back();},this),false);tile.appendChild(default_screen);var index=this.tiles[ui_or_wizard].push_tile(tile);tile.hide_when_sliding=tile.firstChild.content;Basis.convert_div_to_box(tile.firstChild.content);if(tile_contents){tile.firstChild.content.appendChild(tile_contents);}
MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();return index;},this));this.set_custom_view_renderer("DEFAULT","resource_detail",bind(function(resource_id,return_content_only,content_container){var return_content_only=(return_content_only!==null)?return_content_only:false;if(resource_id&&this.resource_linker[resource_id]){var resource=this.resource_linker[resource_id];this.resource_id=resource_id;if(!return_content_only){var menu=this.create_menu(resource_id+"_resource_detail");var menu_right=this.create_menu(resource_id+"_resource_detail_right",true,false);menu_right.add_menu_item("button_link","Link to This",bind(partial(function(resource_id){var url=(Basis.preserve_url_path()+"/dashboard.php?load=resource&id="+resource_id);prompt("The text below is a direct link to this "+this.resource_type_text(resource_id)+". (Ctrl-C to Copy, Ctrl-V to Paste)",url);},resource_id),this));var button_history=INPUT({"type":"button","value":"History"});button_history.disabled=true;var button_remove=INPUT({"type":"button","value":"Remove"});button_remove.disabled=true;var button_delete=INPUT({"type":"button","value":"Delete"});button_delete.disabled=true;var content_container=content_container?content_container:DIV({"style":"overflow-y: auto; border-bottom: 1px solid #c8c8c8;"},content);switch(this.resource_linker[resource_id]["type"]){case"TASK_LIST":case"CONTACT_LIST":menu.add_menu_item("button_list","List",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=this.render_view("DEFAULT","resource_detail",resource_id,true,container);container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));menu.add_menu_item("button_info","Info",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"border-bottom: 1px solid #c0c0c0;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},Basis.nbsp())),TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));break;default:menu.add_menu_item("button_info","Info",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=this.render_view("DEFAULT","resource_detail",resource_id,true,container);container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));break;}
if(this.resource_linker[resource_id]["type"]!="DISCUSSION"){menu.add_menu_item("button_notes","Notes",bind(partial(function(resource_id,dashboard){Basis.remove_children(this);var header=DIV();this.appendChild(header);notes=new Basis.discussion_board();notes.resource_id=resource_id;notes.logged_in=true;notes.is_collapsible=false;notes.is_admin=true;notes.is_moderated=false;notes.title="Notes";notes.content_element=header;notes.compile();},resource_id,this),content_container));}}
switch(this.resource_linker[resource_id]["type"]){case"CONTACT_LIST":var content=SPAN();var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});contact_list.grid_control.contact_list_resource_id=resource_id;contact_list.grid_control.elements["container_output"]=content_container;var a=contact_list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Contact list loaded successfully",true);},this),contact_list));content_container.contact_list=contact_list;break;case"DISCUSSION":var content=DIV();notes=new Basis.discussion_board();notes.resource_id=resource_id;notes.logged_in=true;notes.is_collapsible=false;notes.is_admin=true;notes.is_moderated=false;notes.content_element=content;notes.compile();break;case"TASK_LIST":var content=SPAN();var task_list=new Basis.grid_control.task_list({"dashboard":this,"num_per_page":50});task_list.grid_control.task_list_resource_id=resource_id;task_list.grid_control.elements["container_output"]=content_container;var a=task_list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Task list '[NAME]' loaded successfully",true);},this),task_list));content_container.task_list=task_list;break;case"LIST":var content=SPAN();var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.fetch_raw_data=bind(partial(function(resource_type){if(this.dashboard){this.raw_data={};this.group_map={};var site_resource_id=null;var keys=Basis.keys(this.dashboard.available_resources["SITE"]);for(var i=0;i<keys.length;i++){if(Basis._int(this.dashboard.available_resources["SITE"][keys[i]]["misc_vars"]["id"])==Basis._int(this.dashboard.site_id)){site_resource_id=keys[i];}}
if(site_resource_id){var keys=Basis.keys(this.dashboard.resource_linker[site_resource_id]["associated_resources"][resource_type]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]&&this.dashboard.resource_linker[keys[i]]["associated_resources"]){this.raw_data[keys[i]]={"display_text":this.dashboard.resource_display_text(keys[i])};this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={"resource_type":resource_type};var as=new Basis.ajax_scaffold;as.alias="get_raw_resource_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];window.status="Done";};return as.post({"to_post":to_post});}},"LIST_ITEM"),list.grid_control);list.resource_type="LIST_ITEM";list.grid_control.list_resource_id=resource_id;list.grid_control.elements["container_output"]=content_container;var a=list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("List list '[NAME]' loaded successfully",true);},this),list));content_container.list=list;break;case"IMAGE_GALLERY":var content=SPAN(null,"I will load an image gallery.");break;case"ALERT":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id,menu){var list=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].list;if(!list){var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.grid_field_map={"type":{"text":"Type","type":"text","field":"type"},"date_from":{"text":"Remind Me On","type":"text","field":"date_from"},"date_to":{"text":"Through This Date","type":"text","field":"date_to"},"time":{"text":"At This Time","type":"text","field":"time"},"notes":{"text":"Notes","type":"text","field":"notes"},"disabled":{"text":"Disabled","type":"select","array":{"yes":"Yes","no":"No"},"field":"disabled"}};}
this.run_wizard("ALERT",{"grid_control":list.grid_control,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"target_resource_id":this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"],"mode":"edit"});},resource_id,menu),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.grid_field_map={"type":{"text":"Type","type":"text","field":"type"},"date_from":{"text":"Remind Me On","type":"text","field":"date_from"},"date_to":{"text":"Through This Date","type":"text","field":"date_to"},"time":{"text":"At This Time","type":"text","field":"time"},"notes":{"text":"Notes","type":"text","field":"notes"},"disabled":{"text":"Disabled","type":"select","array":{"yes":"Yes","no":"No"},"field":"disabled"}};var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);switch(this.resource_linker[resource_id]["misc_vars"]["type"]){case"alert":var attached_to=this.render_view("DEFAULT","resource_with_icon",this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"],true);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Attached to"),Basis.nbsp(),Basis.nbsp()),TD(null,attached_to))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Optional Notes:"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("notes"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Disabled?"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("disabled"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Should Be Alerted When ",SPAN({"style":"font-style: italic;"},this.resource_display_text(this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"]))," Changes?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;case"reminder":var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Remind Me Of:"),Basis.nbsp()),TD(null,SPAN(null,data("notes"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"On This Date:"),Basis.nbsp()),TD(null,SPAN(null,data("date_from")),((data("date_to")>"0000-00-00")?["(through",Basis.nbsp(),data("date_to"),")"]:null)))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Disabled?"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("disabled"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Should This Reminder Be Sent To?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;}
break;case"TASK":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id,menu){this.run_wizard("TASK",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile].task_list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id,menu),this),false);var print_button=INPUT({"type":"button","value":"Print"});Basis.signal_handler.connect(print_button,"onclick",bind(partial(function(resource_id){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK&mode=detail&include_archived=true&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON([resource_id])));var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);var task_list=new Basis.grid_control.task_list({"dashboard":this,"num_per_page":50});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),task_list);var assigned_to=this.render_view("DEFAULT","resource_with_icon",this.resource_linker[resource_id]["misc_vars"]["assigned_to"],true);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_task.png); background-repeat: no-repeat; background-position: 100% 5; border-bottom: 1px solid #c0c0c0;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id)),Basis.nbsp(),SPAN({"style":"color: #464646; margin-left: 10px;"},"(",data("percent_complete")," complete)"),Basis.nbsp(),Basis.nbsp(),Basis.nbsp(),this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},print_button,(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Assigned to"),Basis.nbsp(),Basis.nbsp()),TD(null,assigned_to))))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},STRONG(null,"Due:"),Basis.nbsp(),SPAN(null,data("date_due"))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD(null,STRONG(null,"Assigned:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("date_assigned")),TD({"rowspan":"3"},data("notes"))),TR(null,TD(null,STRONG(null,"Status:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("status"))),TR(null,TD(null,STRONG(null,"Started:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("priority")))))),TD(null,Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;case"CONTACT.V2":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("CONTACT",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var print_button=INPUT({"type":"button","value":"Print"});Basis.signal_handler.connect(print_button,"onclick",bind(partial(function(resource_id){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT.V2&mode=detail&include_archived=true&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON([resource_id])));var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),contact_list);var address=DIV(null,DIV(null,data("address1")),(data("address2")?DIV(null,data("address2")):null),DIV(null,data("city"),", ",data("state")," ",data("zip_code")),DIV(null,data("country")));var emails=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["EMAIL"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["EMAIL"]);for(var i=0;i<list.length;i++){emails.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_contact.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id)),Basis.nbsp(),SPAN({"style":"color: #464646;"}," - ",STRONG(null,data("type"))," contact"),Basis.nbsp(),Basis.nbsp(),Basis.nbsp(),this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},print_button,(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"175","style":"border-right: 1px solid #c8c8c8;"},address),TD(null,data("notes")),(this.resource_linker[resource_id]["resource_photos"]&&this.resource_linker[resource_id]["resource_photos"]["photo"])?TD(null,IMG({"src":("images/images/resource/"+resource_id+".photo.thumbnail.jpg?timestamp="+Basis.time())})):null))))),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Primary Email")),TD(null,data("email_address1"))),TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Email")),TD(null,data("email_address2"))),TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Work Phone")),TD(null,data("phone_business"))),TR(null,TD({"width":"180","style":"padding-bottom: 10px; padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Mobile Phone")),TD({"style":"padding-bottom: 10px;"},data("phone_cell"))))))),TR(null,TD({"style":"padding: 0px; border-top: 1px solid #c8c8c8;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id))),TR(null,TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id))),TR(null,TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id)))))))))))),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Emails Received:"))),TR(null,TD(null,emails))))))));break;case"EMAIL":var list=new Basis.grid_control.generic_resource({"dashboard":this});list.resource_type="EMAIL";list.grid_control.grid_field_map={"from_name":{"text":"From (name)","type":"text","field":"from_name"},"from_address":{"text":"From (address)","type":"text","field":"from_address"},"to":{"text":"To","type":"text","field":"to"},"subject":{"text":"Subject","type":"text","field":"subject"},"body":{"text":"Body","type":"text","field":"body"}};var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var contacts=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["CONTACT.V2"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["CONTACT.V2"]);for(var i=0;i<list.length;i++){contacts.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colSpan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"175","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Sent To:")),TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"From:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("from_name"),Basis.nbsp(),"[",data("from_address"),"]")),TR(null,TD({"width":"175","rowSpan":"2","style":"border-right: 1px solid #c8c8c8;"},contacts),TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Subject:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("subject"))),TR(null,TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Body:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("body")))))))));break;case"GROUP":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("GROUP",{"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_group.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:Basis.nbsp()),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("What Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)),TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT_LIST",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","DISCUSSION",resource_id)),TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK_LIST",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","TASK",resource_id))))))))))))));break;case"LIST_ITEM":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("LIST_ITEM",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile-1].list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:Basis.nbsp()),TD({"width":"75"},Basis.nbsp()))));break;case"USER":var change_password=INPUT({"type":"button","value":"Change Password"});Basis.signal_handler.connect(change_password,"onclick",bind(partial(function(resource_id){this.run_wizard("USER_EDIT",{"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id});},resource_id),this),false);var level_text=this.user_levels_text[this.resource_linker[resource_id]["misc_vars"]["site_levels"][this.site_id]];var user_level=level_text?SPAN(null,level_text):SPAN(null,SPAN({"style":"color: #FF0000; font-weight: bold;"},"User not added to site yet"));var user_level_tooltip="";if(level_text){var user_levels={};for(var i in this.user_levels_text){if(typeof(this.user_levels_text[i])!="function"){user_levels[(this.site_id+":user_level:"+i)]=this.user_levels_text[i];}}
if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_dropdown(user_level,user_levels,{"resource_id":resource_id,"field":"user_level","after_success":bind(partial(function(resource_id){this.get_assorted_resources([resource_id]);},resource_id),this)});}
var user_level_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(user_level_tooltip,"onclick",function(){Basis.popup({"window_title":"User Level","id":"user_level_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="500">\
                                                    <tr>\
                                                      <td valign="top"><b>Public</b></td>\
                                                      <td valign="top">Allows users to log in and view Public pages, but not interact with the site.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Basic (Read Only)</b></td>\
                                                      <td valign="top">Can see polls, discussion boards and Basic pages, but cannot interact with them.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Basic</b></td>\
                                                      <td valign="top">Can vote in polls, comment on discussion boards and add contacts to be approved by an administrator, but cannot view any private pages.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Private (Read Only)</b></td>\
                                                      <td valign="top">Can see Private pages, but cannot modify them.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Private</b></td>\
                                                      <td valign="top">Can modify Basic and Private pages that aren\'t Admin Change Only.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Site Administrator</b></td>\
                                                      <td valign="top">Has access to edit anything on the site, view the Admin section, create, modify, and delete pages, users, and contacts, and change the look and feel of the sites they have access to.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Organization Administrator</b></td>\
                                                      <td valign="top">Has all rights of a Site Adminstrator on every site within an organization.</td>\
                                                    </tr>\
                                                  </table>'});},false);}
var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var contacts=DIV();var groups=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["CONTACT.V2"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["CONTACT.V2"]);for(var i=0;i<list.length;i++){var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i],true);contacts.appendChild(resource_link);}}
if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["GROUP"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["GROUP"]);for(var i=0;i<list.length;i++){groups.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var restrictions=this.get_user_restrictions(this.resource_linker[resource_id]["misc_vars"]["id"]);var read_only=DIV(null,DIV({"style":"border-bottom: 1px solid #c0c0c0; padding: 5px; margin-bottom: 10px;"},STRONG(null,"Read Only")));var full_access=DIV(null,DIV({"style":"border-bottom: 1px solid #c0c0c0; padding: 5px; margin-bottom: 10px;"},STRONG(null,"Full Access")));if(restrictions["read_only"].length>0){for(var i=0;i<restrictions["read_only"].length;i++){read_only.appendChild(DIV({"style":"padding-left: 10px; padding-bottom: 3px;"},this.render_view("DEFAULT","resource_with_icon",restrictions["read_only"][i],true)));}}else{read_only.appendChild(DIV({"style":"padding-bottom: 3px;"},Basis.nbsp()));}
if(restrictions["full_access"].length>0){for(var i=0;i<restrictions["full_access"].length;i++){full_access.appendChild(DIV({"style":"padding-left: 10px; padding-bottom: 3px;"},this.render_view("DEFAULT","resource_with_icon",restrictions["full_access"][i],true)));}}else{full_access.appendChild(DIV({"style":"padding-bottom: 3px;"},Basis.nbsp()));}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_user.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?change_password:Basis.nbsp()),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;","colspan":"3"},TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD(null,STRONG(null,"User level:")),TD({"style":"padding-left: 5px;"},user_level)))))),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Special Access Given To This "+this.resource_type_text(resource_id)+":")),read_only,full_access)),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("What Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"id":("CONTACT.V2_connected_to_"+resource_id),"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT_LIST",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK_LIST",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","DISCUSSION",resource_id))))))))))))));break;default:var content=SPAN(null,"I AM CONTENT, POPULATE ME");break;}
if(return_content_only){return content;}
if(content){content_container.appendChild(content);}
var last_updated=Basis.filter_number(this.resource_linker[resource_id]["last_updated"]);last_updated=(last_updated>0)?new Date(last_updated*1000).toLocaleString():"???";var last_updated_by=this.resource_display_text(Basis.filter_number(this.resource_linker[resource_id]["last_updated_by"]));last_updated_by=!last_updated_by?"???":this.render_view("DEFAULT","resource_with_icon",last_updated_by,true);var detail=TABLE({"width":"100%","cellspacing":"0","cellpadding":"5"},TBODY(null,TR(null,TD({"style":"height: 24px; padding: 0px;"},menu),TD({"style":"height: 24px; padding: 0px; text-align: right;"},menu_right)),TR(null,TD({"colspan":"2"},content_container)),TR(null,TD({"style":"height: 30px;"},this.render_view("DEFAULT","resource_with_icon",resource_id)),TD({"style":"height: 30px; text-align: right;"},STRONG("Last updated: "),(last_updated+" by "),last_updated_by))));detail.content=content_container;detail.menu=menu;detail.menu_right=menu_right;Basis.register_size_constraints(detail,"100%","100%");Basis.register_size_constraints(content_container,"100%","100%");return detail;}},this));this.set_custom_view_renderer("ALERT","wizard_form",bind(function(data_row,resource_id,target_resource_id,mode){var mode=mode?mode:"";var type=data_row["type"];if(!type){type=(!target_resource_id&&resource_id&&this.resource_linker[resource_id])?this.resource_linker[resource_id]["misc_vars"]["type"]:((!resource_id&&target_resource_id&&this.resource_linker[target_resource_id])?"alert":"reminder");}
var content=null;if(data_row){data_row["type"]=type;var disabled=SELECT();Basis.select_add_options(disabled,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(disabled,(this.resource_linker[resource_id]["misc_vars"]["disabled"]?"yes":"no"));this.bind_form_element(disabled,"disabled",data_row);var disabled=P(null,STRONG(null,"Disabled? "),Basis.nbsp(),disabled);switch(type){case"alert":data_row["attached_to_resource_id"]=target_resource_id;var notes=Basis.textarea({"style":"width: 300px;"},data_row["notes"]);this.bind_form_element(notes,"notes",data_row);Basis.set_input_descriptive_text(notes,"Optional notes to send with the alert...");content=DIV(null,P(null,"I want to alert users or groups when this "+this.resource_type_text(this.resource_linker[target_resource_id]["type"])+" changes."),P({"style":"font-style: italic"},"(you will choose users and groups to be alerted after you create it)"),DIV(null,notes),(mode=="edit")?disabled:null);content={"element":content,"fields":{"notes":notes}};break;case"reminder":var notes=Basis.textarea({"style":"width: 300px;"},data_row["notes"]);this.bind_form_element(notes,"notes",data_row);var date_from=Basis.create_date_formfield(data_row["date_from"],false);this.bind_form_element(date_from,"date_from",data_row);var date_to=Basis.create_date_formfield(data_row["date_to"],true);this.bind_form_element(date_to,"date_to",data_row);content=DIV(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"text-align: right;"},STRONG(null,"Remind me of:")),TD(null,notes)),TR(null,TD({"style":"text-align: right;"},STRONG(null,"On this day:")),TD(null,date_from)),TR(null,TD(null,DIV({"style":"text-align: right;"},STRONG(null,"Through this day:")),DIV({"style":"text-align: right; padding: 5px; font-style: italic;"},"(optional)")),TD(null,date_to)))),(mode=="edit")?disabled:null);content={"element":content,"fields":{"notes":notes,"date_from":date_from,"date_to":date_to}};break;}}
return content;},this));this.set_custom_view_renderer("FILE","diskspace",bind(function(){var amount_used=Basis.format_filesize(this.diskspace_used);var amount_used_percentage=(((this.diskspace_used/this.max_diskspace)*100).toFixed(2))+"%";var amount_left=Basis.format_filesize(this.max_diskspace-this.diskspace_used);var amount_left_percentage=(100-(((this.diskspace_used/this.max_diskspace)*100))).toFixed(2)+"%";var used=Basis.nbsp();var used_full_text=[amount_used,Basis.nbsp(),"used (",amount_used_percentage,")"];if((Basis.filter_number(amount_used_percentage)>=20)&&(Basis.filter_number(amount_used_percentage)<35)){used=amount_used;}else if(Basis.filter_number(amount_used_percentage)>=35){used=used_full_text;}
var left=Basis.nbsp();var left_full_text=[amount_left,Basis.nbsp(),"left (",amount_left_percentage,")"];if((Basis.filter_number(amount_left_percentage)>=20)&&(Basis.filter_number(amount_left_percentage)<35)){left=amount_left;}else if(Basis.filter_number(amount_left_percentage)>=35){left=left_full_text;}
var red=TD({"width":amount_used_percentage,"style":"padding: 2px; padding-left: 5px; padding-right: 5px; background-image: url(images/images/dashboard/v2/bar_red.png); background-repeat: repeat-x; background-position: bottom left; background-color: #d34242; color: #FFFFFF; font-size: 9px;"},used);if(Basis.filter_number(amount_used_percentage)<20){Basis.attach_tooltip(red,DIV(null,used_full_text).innerHTML,true,false);}
var green=TD({"width":amount_left_percentage,"style":"padding: 2px; padding-left: 5px; padding-right: 5px; background-image: url(images/images/dashboard/v2/bar_green.png); background-repeat: repeat-x; background-position: bottom left; background-color: #42d349; color: #08560c; text-align: right; font-size: 9px;"},left);if(Basis.filter_number(amount_left_percentage)<20){Basis.attach_tooltip(green,DIV(null,left_full_text).innerHTML,true,false);}
var diskspace_meter=DIV({"id":"diskspace_meter","style":"border: 1px solid #c8c8c8; padding: 1px;"},TABLE({"width":"100%","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,red,green))));return diskspace_meter;},this));this.set_custom_view_renderer("FILE","browser",bind(function(mode,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
this.file_browser_drags["file"]=new multipleDraggables();this.file_browser_drags["file"].selected_class="Basis.file_explorer.selected";this.file_browser_drags["file"].selectable_class="Basis.file_explorer.selectable";var nodes=[];var list=MochiKit.DOM.getElementsByTagAndClassName(null,"resource",this.files);if(list.length==0){nodes.push(DIV(null,"No files to display for ",STRONG(null,this.resource_display_text(this.file_browser_current_folder))));}else{nodes.push(DIV({"style":"margin-bottom: 10px;"},"Displaying files for ",STRONG(null,this.resource_display_text(this.file_browser_current_folder))));for(var i=0;i<list.length;i++){nodes.push(this.render_view("FILE","browser_row",Basis.filter_number(list[i].tagName),mode,ui_or_wizard));}}
return nodes;},this));this.set_custom_view_renderer("FILE","browser_row",bind(function(resource_id,mode,ui_or_wizard){var mode=(this.file_manager_only)?"file_explorer_embedded":mode;var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var element=null;if(resource_id&&this.resource_linker[resource_id]){var download_button=IMG({"src":"images/images/download.gif","style":"cursor: pointer; margin-right: 5px;"});var idx=Basis.signal_handler.connect(download_button,"onclick",bind(partial(function(resource_id){var url=Basis.preserve_url({"original_url":Basis.preserve_url_path()+"/../ajax/ajax/force_download_resource.2.php","keys_add":{"finfo":this.resource_linker[resource_id]["misc_vars"]["path_reference"],"site_id":this.site_id}});var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);Basis.attach_tooltip(download_button,("Download this file"),null,false);switch(mode){case"file_explorer_choose_file":this.use_this_file=bind(function(resource_id,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];var obj=Basis.misc_vars.to_populate;if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");this.tiles[ui_or_wizard].back();}}},this);var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id,ui_or_wizard){this.use_this_file(resource_id,ui_or_wizard);},resource_id,ui_or_wizard),this),this.commit);Basis.attach_tooltip(link_button,("Use this file"));var access_restrictor="";break;case"file_explorer_embedded":this.use_this_file=bind(function(resource_id){if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];if(window.opener&&window.opener.Basis){var obj=window.opener.Basis.misc_vars.to_populate;}
if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");window.onbeforeunload=function(){};window.close();}}},this);var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id){this.use_this_file(resource_id);},resource_id),this),this.commit);Basis.attach_tooltip(link_button,("Use this file"));var access_restrictor="";break;default:var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id){var url=this.resource_linker[resource_id]["misc_vars"]["public_link"];prompt("The text below is a direct link to this file. (Ctrl-C to Copy, Ctrl-V to Paste)",url);},resource_id),this),false);Basis.attach_tooltip(link_button,("Link to this file"),null,false);var access_restrictor=IMG({"id":("resource_id_"+resource_id+"_access_restrictor"),"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":"margin-right: 5px;"});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
break;}
var file_name=SPAN({"id":("resource_"+resource_id+"_display_text"),"style":"white-space: nowrap;"},this.resource_display_text(resource_id));var file_size=SPAN({"style":"white-space: nowrap;"},Basis.format_filesize(this.resource_linker[resource_id]["misc_vars"]["filesize"]));var last_update=SPAN({"style":"white-space: nowrap;"},this.english_timestamp(this.resource_linker[resource_id]["misc_vars"]["last_changed"],true));if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(file_name,{"sid":this.session_id,"url":this.post_url,"resource_id":resource_id,"field":"filename","after_success":bind(function(){this.dashboard.get_assorted_resources([this.resource_id]);},{"dashboard":this,"resource_id":resource_id})},false);}
var icon=IMG({"src":(this.resource_linker[resource_id]?this.resource_linker[resource_id]["misc_vars"]["icon"]:""),"style":"margin-right: 4px;"});var element=DIV({"id":("resource_"+(resource_id?resource_id:""))},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},icon),TD(null,file_name),TD({"width":"100","style":"text-align: right; white-space: nowrap; padding-right: 5px; color: #999999;"},last_update),TD({"width":"85","style":"text-align: right; white-space: nowrap; padding-right: 5px;"},file_size),TD({"width":"75","style":"text-align: right; white-space: nowrap;"},[access_restrictor,download_button,link_button])))));this.file_browser_drags["file"].add_draggable(element);}
return element;},this));this.set_custom_view_renderer("FOLDER","browser",bind(function(type,mode,ui_or_wizard){var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var nodes=[];var list=this.folders[type].childNodes;if(list){this.file_browser_drags["folder"].drags={};for(var i=0;i<list.length;i++){var resource_id=Basis.filter_number(list[i].tagName);if(list[i].tagName&&(resource_id!=null)){nodes[nodes.length]=this.render_view("FOLDER","browser_row",resource_id,list[i],type,null,mode,ui_or_wizard);}}}
return nodes;},this));this.set_custom_view_renderer("FOLDER","browser_row",bind(function(resource_id,node,type,recursive,mode,ui_or_wizard){var mode=(this.file_manager_only)?"file_explorer_embedded":mode;var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var element=null;var recursive=(recursive!=null)?recursive:true;if(resource_id&&this.resource_linker[resource_id]&&node){switch(mode){case"file_explorer_choose_file":this.use_this_folder=bind(function(resource_id,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];var obj=Basis.misc_vars.to_populate;if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");this.tiles[ui_or_wizard].back();}}},this);var access_restrictor=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(access_restrictor,"onclick",bind(partial(function(resource_id,ui_or_wizard){this.use_this_folder(resource_id,ui_or_wizard);},resource_id,ui_or_wizard),this),false);Basis.attach_tooltip(access_restrictor,("Use this folder"),null,false);break;case"file_explorer_embedded":this.use_this_folder=bind(function(resource_id){if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];if(window.opener.Basis){var obj=window.opener.Basis.misc_vars.to_populate;}
if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");}
window.onbeforeunload=function(){};window.close();}},this);var access_restrictor=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(access_restrictor,"onclick",bind(partial(function(resource_id){this.use_this_folder(resource_id);},resource_id),this),false);Basis.attach_tooltip(access_restrictor,("Use this folder"),null,false);break;default:var access_restrictor=IMG({"id":("resource_id_"+resource_id+"_access_restrictor"),"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":"margin-right: 5px;"});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
break;}
var add_folder=IMG({"src":"images/images/default_icons/folder_add.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(add_folder,"onclick.greedy.swallow",bind(function(){this.custom_ajax_action("create_new_folder",this.resource_linker[resource_id]["misc_vars"]["path_reference"]);},this),false);Basis.attach_tooltip(add_folder,("Add a new folder inside of "+this.resource_linker[resource_id]["display_text"]),null,false);var delete_folder=IMG({"src":"images/images/default_icons/folder_delete.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(delete_folder,"onclick.greedy.swallow",bind(function(){this.custom_ajax_action("delete_folder",this.resource_linker[resource_id]["misc_vars"]["path_reference"]);},this),false);Basis.attach_tooltip(delete_folder,("Permanently delete this folder and everything inside of it"),null,false);var folder_name=SPAN({"id":("resource_"+resource_id+"_display_text"),"style":"white-space: nowrap;"},this.resource_display_text(resource_id));if(type!="gallery_files"){if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(folder_name,{"resource_id":resource_id,"field":"filename","after_success":bind(partial(function(resource_id){var a=this.dashboard.custom_ajax_action("get_site_folders");a.addCallback(bind(partial(function(resource_id){var folder_resource_ids=this.dashboard.determine_resources_from_xml_node(this.dashboard.folders.files);var file_resource_ids=this.dashboard.determine_resources_from_xml_node(this.dashboard.files);var reload_resource_ids=MochiKit.Base.flattenArray([folder_resource_ids,(file_resource_ids?file_resource_ids:[])]);var b=this.dashboard.custom_ajax_action("get_assorted_resources",reload_resource_ids);b.addCallback(bind(partial(function(resource_id){this.dashboard.render_view("COLLABORATE","files",true);var folder_browser_row=Basis.get_element("resource_"+resource_id);Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onclick");},resource_id),{"dashboard":this.dashboard,"resource_id":resource_id}));},resource_id),{"dashboard":this.dashboard,"resource_id":resource_id}));},resource_id),{"dashboard":this,"resource_id":resource_id})},false);}}
var element=DIV({"id":("resource_"+(resource_id?resource_id:"")),"class":"resource"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},IMG({"src":(this.resource_linker[resource_id]?this.resource_linker[resource_id]["misc_vars"]["icon"]:""),"style":"margin-right: 4px;"})),TD(null,folder_name),(this.resource_linker[resource_id]["resource_access"]["full_access"])?TD({"width":"18"},delete_folder):null,(this.resource_linker[resource_id]["resource_access"]["full_access"])?TD({"width":"18"},add_folder):null,TD({"width":"18"},access_restrictor)))));this.file_browser_drags["folder"].add_draggable(element);if(!element.onclick_connected){Basis.signal_handler.connect(element,"onclick.greedy",bind(partial(function(mode){var resource_id=Basis.filter_number(this.element.id);var a=this.dashboard.custom_ajax_action("get_folder_files",resource_id);a.addCallback(bind(partial(function(mode){var resources_to_load=this.determine_missing_resources_from_xml(this.files);var b=this.custom_ajax_action("get_assorted_resources",resources_to_load);b.addCallback(bind(partial(function(mode){if(this.elements["files_container"]){Basis.remove_children(this.elements["files_container"]);Basis.updated_live_dom();var upload_button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/page_white_add.gif);","value":"Upload Files"});Basis.signal_handler.connect(upload_button,"onclick",bind(function(){this.toggle_uploader();},this),false);var delete_button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/page_white_delete.gif);","value":"Delete Files"});Basis.signal_handler.connect(delete_button,"onclick",bind(function(){var files=[];var list=this.file_browser_drags.file.selected;for(var i in list){if(typeof(list[i])!="function"){var resource_id=Basis.parse_number(i.replace(/([^0-9\.])/g,""));files.push(this.resource_linker[resource_id]["misc_vars"]["path_reference"]);}}
this.custom_ajax_action("delete_files",files);},this),false);Basis.signal_handler.connect(delete_button,"onmouseenter",bind(function(){delete_button.ctrl_state=Basis.key_handler.key_state("KEY_CTRL");Basis.key_handler.set_key_state("KEY_CTRL","down");},this),false);Basis.signal_handler.connect(delete_button,"onmouseleave",bind(function(){Basis.key_handler.set_key_state("KEY_CTRL",delete_button.ctrl_state);},this),false);var download_archive=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/folder_go.gif);","value":"Download this Folder"});Basis.signal_handler.connect(download_archive,"onclick",bind(function(){if(confirm("Are you sure you want to download an archive of this folder?")){var recursive=confirm("Do you want to download all subfolders of this folder as well?");var url=Basis.preserve_url();url=url.split("/");delete url[url.length-1];url=url.join("/")+"archive_folder.basis2.php?token="+this.resource_linker[this.file_browser_current_folder]["misc_vars"]["path_reference"]+(recursive?"&recursive=true":"");window.open(url);}},this),false);if(this.resource_linker[resource_id]["resource_access"]["full_access"]){this.elements["files_container"].appendChild(upload_button);this.elements["files_container"].appendChild(delete_button);}
this.elements["files_container"].appendChild(download_archive);this.file_browser_current_folder=resource_id;var files=this.render_view("FILE","browser",mode,ui_or_wizard);var resource_container=DIV({"style":"padding: 10px;"});for(var i in files){if(files[i]&&!Basis.is_function(files[i])){resource_container.appendChild(files[i]);}}
this.elements["files_container"].appendChild(resource_container);Basis.updated_live_dom();}},mode),this));},mode),this.dashboard));},mode),{"element":element,"dashboard":this}),false);element.onclick_connected=true;}
new MochiKit.DragAndDrop.Droppable(folder_name,{"hoverclass":"Basis.file_explorer.droppable","hoverfunc":bind(function(droppable){var folder_resource_id=Basis.parse_number(droppable.id.replace(/([^0-9\.])/g,""));if(this.file_browser_current_folder==folder_resource_id){}},this),"ondrop":bind(partial(function(section,draggable,droppable){var folder_resource_id=Basis.parse_number(droppable.id.replace(/([^0-9\.])/g,""));var path_reference=this.resource_linker[folder_resource_id]["misc_vars"]["path_reference"];var to_move=[];var list=MochiKit.Base.evalJSON(draggable._selected);for(var i in list){if(typeof(list[i])!="function"){var file_resource_id=Basis.parse_number(i.replace(/([^0-9\.])/g,""));var file_path_reference=this.resource_linker[file_resource_id]["misc_vars"]["path_reference"];if(file_path_reference!=path_reference){to_move.push(file_path_reference);}}}
if(Basis.array_length(to_move)>0){this.custom_ajax_action("move_files",path_reference,to_move,section);}},type),this)});var keys=this.determine_resources_from_xml_node(node,true);for(var i=0;i<keys.length;i++){var key="resource_id_"+keys[i];var child=DIV({"id":key,"class":"resource"});if(element&&child){element.appendChild(child);}}}
return element;},this));Basis.state_handler.add_state("HOME_default");this.set_custom_view_renderer("HOME","default",bind(function(){this.reset_states();Basis.state_handler.enter_state("HOME_default");this.populate_submenu("home");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Home",DIV(null,"Home Placeholder"));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("WEBSITE_default");this.set_custom_view_renderer("WEBSITE","default",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_default");this.populate_submenu("website");this.tiles.ui.clear_all_tiles();var content=this.render_view("PAGE","browser");var index=this.render_view("DEFAULT","default","Website",content);Basis.convert_nested_elements_to_tree(content.pages_root,null,true,true);this.ns=new Basis.nested_sortables();this.ns.ul_tag="div";this.ns.ul_class="Basis.file_explorer.container";this.ns.li_tag="span";this.ns.li_class="Basis.file_explorer.node_container";this.ns.custom_ondrop=bind(function(element,onto){this.custom_ajax_action("save_page_order",onto);},this);this.ns.on_update=bind(function(element){this.custom_ajax_action("save_page_order",element);},this);this.ns.build_nested_sortables(content,{"onUpdate":this.ns.on_update,"hide_dropzones":(this.managing_menus?false:true),"handle":"Basis.dashboard.page_handle","hoverclass":"hoverclass"});this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("WEBSITE");this.set_custom_view_renderer("WEBSITE","look_and_feel",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_look_and_feel");this.tiles.ui.clear_all_tiles();var menu=Basis.misc_vars.dashboard.create_menu("WEBSITE_look_and_feel");var settings=DIV();var css=DIV();var content=DIV(null,menu,settings,css);menu.add_menu_item("settings","General Settings",bind(partial(function(settings,css){var a=this.custom_ajax_action("get_site_template_configuration",this.site_id);a.addCallback(bind(partial(function(ajax,css){this.innerHTML=ajax.req.responseText;Basis.execute_javascript(this);css.style.display="none";this.style.display="";},a,css),settings));},settings,css),this));menu.add_menu_item("css","Backgrounds & Colors",bind(partial(function(settings,css){var options=new Basis.CSS();options.css=this.custom_css[this.site_id].css;options.selectors={"body":"Body",".Basis\\\\.header":"Header",".Basis\\\\.menu":"Menu",".Basis\\\\.menu\\\\.top_level_item > *":"Menu Items",".Basis\\\\.menu\\\\.submenu":"Submenu",".Basis\\\\.menu\\\\.submenu li":"Submenu Items","#content":"Main Content",".Basis\\\\.footer":"Footer"};var content=options.compile();content.options=options;Basis.remove_children(css);css.appendChild(content);css.style.display="";settings.style.display="none";},settings,css),this));menu.select_menu_item("settings");Basis.signal_handler.execute_interactive_element(menu.menu_items[menu.item_index("settings")],"onclick");var index=this.render_view("DEFAULT","default","Site Look and Feel",content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("WEBSITE","settings",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_settings");this.populate_submenu(null);this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Site Settings & Billing",this.render_view("RENDER","billing"));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_default");this.set_custom_view_renderer("COLLABORATE","default",bind(function(){var a=MochiKit.Async.succeed();a.addCallback(bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_default");this.populate_submenu("collaborate");this.tiles.ui.clear_all_tiles();var alerts_and_reminders=this.get_alerts_and_reminders_for_resource(this.current_user_resource_id);var alerts=null;if(alerts_and_reminders["alert"].length>0){var rows=TBODY();var list=alerts_and_reminders["alert"];var alerts_to_show=[];var history=Basis.keys(this.resource_history[this.site_id]);for(var x=0;x<history.length;x++){var history_item_resource_id=this.resource_history[this.site_id][history[x]]["resource_id"];var history_item_timestamp=this.resource_history[this.site_id][history[x]]["display_timestamp"];history_item_timestamp=history_item_timestamp.replace("(","").replace(")","");history_item_timestamp=history_item_timestamp.substring(0,(history_item_timestamp.length-2)).trim();history_item_timestamp=history_item_timestamp.split(" ");history_item_timestamp.pop();history_item_timestamp=history_item_timestamp.join(" ");for(var i=0;i<list.length;i++){var alert_resource_id=list[i];if(Basis._int(this.resource_linker[alert_resource_id]["misc_vars"]["attached_to_resource_id"])==Basis._int(history_item_resource_id)){if(parseInt(new Date(history_item_timestamp).getTime().toString().substring(0,10))>=(parseInt(new Date().getTime().toString().substring(0,10))-(60*60*24*7))){if(this.resource_linker[alert_resource_id]["misc_vars"]["disabled"]!="yes"){alerts_to_show.push({"history_item_index":history[x],"alert_resource_id":alert_resource_id});}}}}}
if(alerts_to_show.length>0){rows.appendChild(TR(null,TD(null,Basis.nbsp()),TD(null,STRONG(null,"Action Taken")),TD(null,STRONG(null,"Target Resource")),TD(null,STRONG(null,"Time Action Occurred")),TD(null,STRONG(null,"User Responsible")),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,STRONG(null,"IP Address"))));var list=this.resource_history[this.site_id];for(var x=0;x<alerts_to_show.length;x++){var i=alerts_to_show[x]["history_item_index"];switch(list[i]["resource_type"]){case"FILE":case"FOLDER":var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],false,list[i]["display_text"]);break;default:var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],true);break;}
rows.appendChild(TR(null,TD({"width":"25"},IMG({"src":this.get_view_association_icon(list[i]["resource_type"])})),TD(null,list[i]["display_action"]),TD(null,resource_link?resource_link:this.render_view("DEFAULT","deleted_resource_with_icon",list[i]["resource_type"],list[i]["display_text"])),TD(null,this.english_timestamp(strtotime(list[i]["display_timestamp"].replace("(","").replace(")","")),true)),TD(null,list[i]["display_user_responsible"]),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,list[i]["ip_address"])));}
var alerts=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Alerts (last 7 days)"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},rows));}}
var reminders=null;if(alerts_and_reminders["reminder"].length>0){var rows=TBODY();var list=alerts_and_reminders["reminder"];rows.appendChild(TR(null,TD({"width":"150","style":"font-weight: bold;"},"Link to Reminder"),TD({"style":"font-weight: bold;"},"Notes"),TD({"width":"150","style":"font-weight: bold;"},"Remind Me On")));if(list&&(list.length>0)){for(var x=0;x<list.length;x++){if(!Basis.is_function(list[x])&&(Basis.is_number(Basis.parse_number(list[x])))&&(parseInt(isoTimestamp(this.resource_linker[list[x]]["misc_vars"]["date_from"]).getTime().toString().substring(0,10))>=(parseInt(new Date().getTime().toString().substring(0,10))-(60*60*24*7)))){if(this.resource_linker[list[x]]["misc_vars"]["disabled"]!="yes"){rows.appendChild(TR(null,TD({"width":"150","style":"font-weight: bold;"},this.render_view("DEFAULT","resource_with_icon",list[x],true)),TD({"style":"font-weight: normal;"},this.resource_linker[list[x]]["misc_vars"]["notes"]),TD({"width":"150","style":"font-weight: normal;"},this.resource_linker[list[x]]["misc_vars"]["date_from"])));}}}
if(rows.getElementsByTagName("TR").length>1){var reminders=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Reminders (last 7 days)"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},rows));}}}
var requests=null;if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){var rows=TBODY();var list=this.pending_requests[this.site_id];rows.appendChild(TR(null,TD({"width":"16"}),TD({"width":"150","style":"font-weight: bold;"},"Requested Action"),TD({"style":"font-weight: bold;"},"Target Resource"),TD({"width":"175","style":"font-weight: bold;"},"Time Action Occurred"),TD({"width":"100","style":"font-weight: bold;"},"User Responsible"),TD({"width":"48","style":"font-weight: bold;"}," "),TD({"width":"16"}),TD({"width":"16"})));if(list&&(list.length>0)){for(var x in list){if(!Basis.is_function(list[x])&&(Basis.is_number(Basis.parse_number(x)))){var icon_type=null;var request_text=null;switch(list[x]["request_type"]){case"APPROVE_USER_CREATION":icon_type="USER";request_text="Approve new user signup";break;case"INVITE_USER_TO_SITE":icon_type="CONTACT.V2";request_text="Invited contact to join site";break;}
var icon=IMG({"src":this.get_view_association_icon(icon_type)});var approve=IMG({"src":"images/images/default_icons/add.gif","style":"cursor: pointer;"});Basis.attach_tooltip(approve,"Approve this request");var deny=IMG({"src":"images/images/default_icons/delete.gif","style":"cursor: pointer;"});Basis.attach_tooltip(deny,"Deny this request");var row=TR(null,TD({"width":"16"},icon),TD({"width":"150"},request_text),TD(null,list[x]["display_text"]),TD({"width":"175"},list[x]["display_timestamp_requested"]),TD({"width":"100"},list[x]["display_user_requested_by"]),TD({"width":"48","style":"font-weight: bold;"}," "),TD({"width":"16"},approve),TD({"width":"16"},deny));Basis.signal_handler.connect(approve,"onclick",bind(partial(function(request_id,request_status,element_to_delete){if(confirm("Are you sure you want to approve this request?")){this.custom_ajax_action("complete_pending_request",request_id,request_status,element_to_delete);}},list[x]["id"],"GRANTED",row),this),false);Basis.signal_handler.connect(deny,"onclick",bind(partial(function(request_id,request_status,element_to_delete){if(confirm("Are you sure you want to deny this request?")){this.custom_ajax_action("complete_pending_request",request_id,request_status,element_to_delete);}},list[x]["id"],"DENIED",row),this),false);rows.appendChild(row);}}
var requests=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Stuff Needing Administrator Approval"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},rows));}}
var history=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"What's New (last 7 days)"));var table=TABLE({"width":"100%","cellpadding":"3"},TBODY(null,TR(null,TD(null,Basis.nbsp()),TD(null,STRONG(null,"Action Taken")),TD(null,STRONG(null,"Target Resource")),TD(null,STRONG(null,"Time Action Occurred")),TD(null,STRONG(null,"User Responsible")),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,STRONG(null,"IP Address")))));var list=this.resource_history[this.site_id];for(var i in list){if(Basis.is_number(i)){switch(list[i]["resource_type"]){case"FILE":case"FOLDER":var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],false,list[i]["display_text"]);break;default:var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],true);break;}
var tr=TR(null,TD({"width":"25"},IMG({"src":this.get_view_association_icon(list[i]["resource_type"])})),TD(null,list[i]["display_action"]),TD(null,resource_link?resource_link:this.render_view("DEFAULT","deleted_resource_with_icon",list[i]["resource_type"],list[i]["display_text"])),TD(null,this.english_timestamp(strtotime(list[i]["display_timestamp"].replace("(","").replace(")","")),true)),TD(null,list[i]["display_user_responsible"]),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,list[i]["ip_address"]));table.firstChild.appendChild(tr);}}
history.appendChild(table);var content=DIV(null,alerts,reminders,requests,history);var index=this.render_view("DEFAULT","default","Collaborate",content);this.tiles.ui.go_to(index);},this));},this));Basis.state_handler.add_state("COLLABORATE_alerts_and_reminders");this.set_custom_view_renderer("COLLABORATE","alerts_and_reminders",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_alerts_and_reminders");this.populate_submenu("collaborate","Alerts & Reminders");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Alerts & Reminders");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard(this.resource_type,{"resource_id":null,"data_row":{},"grid_control":this.grid_control});},this.tiles.ui.tiles[index].list);this.tiles.ui.tiles[index].list.resource_type="ALERT";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("ALERT");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Alert list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_contacts");this.set_custom_view_renderer("COLLABORATE","contacts",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_contacts");this.populate_submenu("collaborate","Contact Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Contact Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="CONTACT_LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("CONTACT_LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Contact lists loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_discussions");this.set_custom_view_renderer("COLLABORATE","discussions",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_discussions");this.populate_submenu("collaborate","Discussions");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Discussions");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="DISCUSSION";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("DISCUSSION");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Discussions loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_galleries");this.set_custom_view_renderer("COLLABORATE","galleries",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_galleries");this.populate_submenu("collaborate","Image Galleries");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Image Galleries");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="IMAGE_GALLERY";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("IMAGE_GALLERY");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Image galleries loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_tasks");this.set_custom_view_renderer("COLLABORATE","tasks",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_tasks");this.populate_submenu("collaborate","Task Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Task Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="TASK_LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("TASK_LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Task lists loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_users");this.set_custom_view_renderer("COLLABORATE","users",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_users");this.populate_submenu("collaborate","Users");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Users");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="USER";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("USER");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("User list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("COLLABORATE","emails",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_email");this.populate_submenu("collaborate","Email");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Email");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.grid_control.can_add_new_resource=false;this.tiles.ui.tiles[index].list.resource_type="EMAIL";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("EMAIL");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Email list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_groups");this.set_custom_view_renderer("COLLABORATE","groups",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_groups");this.populate_submenu("collaborate","Groups");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Groups");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="GROUP";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("GROUP");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Group list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_lists");this.set_custom_view_renderer("COLLABORATE","lists",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_lists");this.populate_submenu("collaborate","Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("List list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_files");this.set_custom_view_renderer("COLLABORATE","files",bind(function(reset_to_top,section,choose_file,element_to_populate,ui_or_wizard){this.resource_id=null;var reset_to_top=(reset_to_top!==null)?reset_to_top:true;var section="file_explorer";var mode=(choose_file==true)?"file_explorer_choose_file":"file_explorer";var element_to_populate=((mode=="file_explorer_choose_file")&&Basis.is_element(element_to_populate))?element_to_populate:null;switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(reset_to_top){this.reset_states();}
Basis.state_handler.enter_state("COLLABORATE_files");if(reset_to_top){this.tiles[ui_or_wizard].clear_all_tiles();this.populate_submenu("files");}
if(element_to_populate){Basis.misc_vars.to_populate=element_to_populate;}
this.elements["file_explorer"]=this.render_view("RENDER","file_explorer_embedded","files",mode,ui_or_wizard);var index=this.render_view("DEFAULT","default","Files",this.elements["file_explorer"],ui_or_wizard);this.elements["file_explorer"].render_again=bind(partial(function(container,mode,ui_or_wizard){Basis.remove_children(container);container.appendChild(this.render_view("RENDER","file_explorer_embedded","files",mode,ui_or_wizard));this.elements["file_explorer"].restore_previously_opened_folders();},this.tiles[ui_or_wizard].tiles[index].firstChild.content,mode,ui_or_wizard),this);this.elements["file_explorer"].restore_previously_opened_folders();this.tiles[ui_or_wizard].go_to(index);},this));this.set_custom_view_renderer("RENDER","billing",bind(function(){var list=this.site_billing_info[this.site_id]["site"];var settings=this.site_settings[this.site_id];var renew_button=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(renew_button,"onclick",bind(function(){this.custom_ajax_action("renew_site");},this),false);var package_options={"":" ","FREE_OR_INTERNAL":"Free / Internal Website","PROMO":"Promotional Website","30_DAY_TRIAL":"30 Day Trial","SQ20":"SQ20","SQ30":"SQ30","SQ50":"SQ50","SQ75":"SQ75","SQ100":"SQ100","SQ250":"SQ250","SQ500":"SQ500","ENTERPRISE":"Enterprise","NON_SQ_STATIC_SITE":"Static, Non-SQ Website"}
var package_name=this.is_admin?SELECT():SPAN(null,package_options[list["package_name"]]);var expiration_date=this.is_admin?Basis.create_date_formfield(list["expiration_date"],true):SPAN(null,list["expiration_date"]);if(this.is_admin){expiration_date.set_up_auto_save({"table":this.site_id,"field":"expiration_date","custom_action":"dashboard.change_site_billing_option"},partial(function(dashboard,date_element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["expiration_date"]=date_element.get_date();},this,expiration_date));}
var disable_date=this.is_admin?Basis.create_date_formfield(list["disable_date"],true):SPAN(null,list["disable_date"]);if(this.is_admin){disable_date.set_up_auto_save({"table":this.site_id,"field":"disable_date","custom_action":"dashboard.change_site_billing_option"},partial(function(dashboard,date_element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["disable_date"]=date_element.get_date();},this,disable_date));}
var send_emails=this.is_admin?SELECT():SPAN(null,list["send_billing_emails"]);var monthly_cost=this.is_admin?INPUT({"type":"text","value":list["monthly_cost"]}):SPAN(null,list["monthly_cost"]);var num_pages=this.is_admin?INPUT({"type":"text","value":list["num_pages"]}):SPAN(null,list["num_pages"]);var num_basic_users=this.is_admin?INPUT({"type":"text","value":list["num_basic_users"]}):SPAN(null,list["num_basic_users"]);var num_power_users=this.is_admin?INPUT({"type":"text","value":list["num_power_users"]}):SPAN(null,list["num_power_users"]);var num_groups=this.is_admin?INPUT({"type":"text","value":list["num_groups"]}):SPAN(null,list["num_groups"]);var num_tasks=this.is_admin?INPUT({"type":"text","value":list["num_tasks"]}):SPAN(null,list["num_tasks"]);var num_contacts=this.is_admin?INPUT({"type":"text","value":list["num_contacts"]}):SPAN(null,list["num_contacts"]);var num_lists=this.is_admin?INPUT({"type":"text","value":list["num_lists"]}):SPAN(null,list["num_lists"]);var num_discussions=this.is_admin?INPUT({"type":"text","value":list["num_discussions"]}):SPAN(null,list["num_discussions"]);var storage_capacity=this.is_admin?INPUT({"type":"text","value":list["storage_capacity"]}):SPAN(null,list["storage_capacity"]);var has_private_pages=this.is_admin?SELECT():SPAN(null,list["has_private_pages"]);var has_modules=this.is_admin?SELECT():SPAN(null,list["has_modules"]);var notes=this.is_admin?Basis.textarea({"style":"width: 250px; height: 150px;"},list["notes"]):SPAN();var num_emails=this.is_admin?INPUT({"type":"text","value":list["num_emails"]}):SPAN(null,list["num_emails"]);var custom_login_graphic_url=INPUT({"type":"text","value":Basis._string(this.resource_linker[this.site_resource_id]["misc_vars"]["custom_login_graphic"]),"style":"width: 500px;"});custom_login_graphic_url.onchange=bind(function(){if(this.editable_element.save_editable_element_changes){this.editable_element.editing=true;this.editable_element.save_editable_element_changes();}},custom_login_graphic_url);var file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"ui");},custom_login_graphic_url),this),false);var custom_login_graphic=DIV(null,custom_login_graphic_url,Basis.nbsp(),file_select);Basis.make_text_element_editable(custom_login_graphic_url,{"resource_id":this.site_resource_id,"field":"custom_login_graphic","after_success":partial(function(dashboard,element,req){dashboard.resource_linker[dashboard.site_resource_id]["misc_vars"]["custom_login_graphic"]=element.value;},this,custom_login_graphic_url)});var default_email_template=this.is_admin?Basis.textarea({"style":"width: 250px; height: 150px;"},list["default_email_template"]):SPAN();var toggle_default_email_template=INPUT({"type":"button","value":"Richtext Mode"});Basis.signal_handler.connect(toggle_default_email_template,"onclick",partial(function(element){if(tinyMCE&&!tinyMCE.get(element.id)){Basis.convert_textarea_to_richtextarea(element);}else{tinyMCE.execCommand("mceRemoveControl",false,element.id);}},default_email_template),false);var requires_login=SELECT();var default_to_admin_section=SELECT();Basis.select_add_options(requires_login,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(requires_login,(list["requires_login"]=="yes")?list["requires_login"]:"no");Basis.make_text_element_dropdown(requires_login,null,{"table":this.site_id,"field":"requires_login","custom_action":"dashboard.change_site_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["requires_login"]=element.options[element.selectedIndex].value},this,requires_login)});Basis.select_add_options(default_to_admin_section,{"true":"Yes","false":"No"});Basis.select_select_item_by_value(default_to_admin_section,(list["default_to_admin_section"]=="true")?list["default_to_admin_section"]:"false");Basis.make_text_element_dropdown(default_to_admin_section,null,{"table":this.site_id,"field":"default_to_admin_section","custom_action":"dashboard.change_site_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["default_to_admin_section"]=element.options[element.selectedIndex].value},this,default_to_admin_section)});var public_can_sign_up=null;var sign_up_passkey=null;if(this.is_admin){var public_can_sign_up=SELECT();Basis.select_add_options(public_can_sign_up,{"no":"No","yes":"Yes"});Basis.select_select_item_by_value(public_can_sign_up,settings["public_can_sign_up"]);Basis.make_text_element_dropdown(public_can_sign_up,null,{"table":this.site_id,"field":"public_can_sign_up","custom_action":"dashboard.change_site_settings"});var sign_up_passkey=INPUT({"type":"text","value":settings["sign_up_passkey"]});Basis.make_text_element_editable(sign_up_passkey,{"table":this.site_id,"field":"sign_up_passkey","custom_action":"dashboard.change_site_settings"});}
var account_representative=null;var rep_list=this.site_billing_info[this.site_id]
var name=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["name"]}):null;var address1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["address1"]}):null;var address2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["address2"]}):null;var city=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["city"]}):null;var state=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["state"]}):null;var zip=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["zip"]}):null;var country=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["country"]}):null;var phone_number1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["phone_number1"]}):null;var phone_number2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["phone_number2"]}):null;var fax=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["fax"]}):null;var email_address1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["email_address1"]}):null;var email_address2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["email_address2"]}):null;var rep_notes=this.is_admin?Basis.textarea({"style":"width: 250px; height: 100px;"},rep_list["representative"]["notes"]):null;if(this.is_admin){Basis.make_text_element_editable(name,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"name","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(address1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"address1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(address2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"address2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(city,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"city","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(state,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"state","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(zip,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"zip","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(country,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"country","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(phone_number1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"phone_number1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(phone_number2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"phone_number2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(fax,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"fax","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(email_address1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"email_address1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(email_address2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"email_address2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(rep_notes,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"notes","custom_action":"dashboard.change_site_billing_representative_option"});account_representative=[H2(null,"Account Representative Information:"),TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"115","style":"font-weight: bold;"},"Name:"),TD(null,name)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Address:"),TD(null,address1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Address (cont'd):"),TD(null,address2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"City:"),TD(null,city)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"State:"),TD(null,state)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Zip:"),TD(null,zip)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Country:"),TD(null,country)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Phone Number:"),TD(null,phone_number1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Phone Number (other):"),TD(null,phone_number2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Fax:"),TD(null,fax)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Email Address:"),TD(null,email_address1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Email Address (other):"),TD(null,email_address2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Notes:"),TD(null,rep_notes))))];}
if(this.is_admin){Basis.select_add_options(package_name,package_options);Basis.select_select_item_by_value(package_name,list["package_name"]);Basis.make_text_element_dropdown(package_name,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"package_name","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["package_name"]=element.options[element.selectedIndex].value},this,package_name)});Basis.select_add_options(send_emails,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(send_emails,list["send_billing_emails"]);Basis.make_text_element_dropdown(send_emails,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"send_billing_emails","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["send_billing_emails"]=element.options[element.selectedIndex].value},this,send_emails)});Basis.make_text_element_editable(monthly_cost,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"monthly_cost","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["monthly_cost"]=element.value;},this,monthly_cost)});Basis.make_text_element_editable(num_pages,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_pages","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_pages"]=element.value;},this,num_pages)});Basis.make_text_element_editable(num_basic_users,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_basic_users","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_basic_users"]=element.value;},this,num_basic_users)});Basis.make_text_element_editable(num_power_users,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_power_users","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_power_users"]=element.value;},this,num_power_users)});Basis.make_text_element_editable(num_groups,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_groups","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_groups"]=element.value;},this,num_groups)});Basis.make_text_element_editable(num_tasks,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_tasks","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_tasks"]=element.value;},this,num_tasks)});Basis.make_text_element_editable(num_contacts,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_contacts","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_contacts"]=element.value;},this,num_contacts)});Basis.make_text_element_editable(num_lists,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_lists","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_lists"]=element.value;},this,num_lists)});Basis.make_text_element_editable(num_discussions,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_discussions","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_discussions"]=element.value;},this,num_discussions)});Basis.make_text_element_editable(storage_capacity,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"storage_capacity","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.max_diskspace=(Basis.filter_number(element.value)*(1024*1024));dashboard.site_billing_info[dashboard.site_id]["site"]["storage_capacity"]=element.value;},this,storage_capacity)});Basis.select_add_options(has_private_pages,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(has_private_pages,list["has_private_pages"]);Basis.make_text_element_dropdown(has_private_pages,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"has_private_pages","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["has_private_pages"]=element.options[element.selectedIndex].value},this,has_private_pages)});Basis.select_add_options(has_modules,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(has_modules,list["has_modules"]);Basis.make_text_element_dropdown(has_modules,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"has_modules","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["has_modules"]=element.options[element.selectedIndex].value},this,has_modules)});Basis.make_text_element_editable(notes,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"notes","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["notes"]=element.value;},this,notes)});Basis.make_text_element_editable(default_email_template,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"default_email_template","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["default_email_template"]=element.value;},this,notes)});Basis.make_text_element_editable(num_emails,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_emails","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_emails"]=element.value;},this,num_emails)});}
var product_list=SELECT({"style":"width: 125px;"});var product_add_button=INPUT({"type":"button","value":"Add Product"});Basis.signal_handler.connect(product_add_button,"onclick",bind(function(){if(confirm("Are you sure you want to add a new product to this site?")){var product_id=this.select.options[this.select.selectedIndex].value;this.dashboard.custom_ajax_action("add_site_product",product_id);}},{"select":product_list,"dashboard":this}),false);var list=this.site_billing_info[this.site_id]["product_list"];if(list){for(var i in list){if(!Basis.is_function(list[i])){Basis.select_add_option(product_list,list[i]["id"],list[i]["name"]);}}}
if(!this.is_admin){var product_list=null;var product_add_button=null;}
var products=[];var list=this.site_billing_info[this.site_id]["products"];if(list){for(var i in list){if(!Basis.is_function(list[i])){var product_expiration=this.is_admin?Basis.create_date_formfield(list[i]["expiration_date"],true):SPAN(null,list[i]["expiration_date"]);if(this.is_admin){product_expiration.set_up_auto_save({"table":list[i]["id"],"field":"expiration_date","custom_action":"dashboard.change_site_product_billing_option"},partial(function(dashboard,date_element,i,req){dashboard.site_billing_info[dashboard.site_id]["products"][i]["expiration_date"]=date_element.get_date();},this,product_expiration,i));}
var cycle_cost=parseFloat(Math.round((list[i]["billing_type"]=="repeated")?(Basis.parse_number(list[i]["monthly_cost"])*Basis.parse_number(list[i]["billing_cycle_num_months"])):Basis.parse_number(list[i]["monthly_cost"])));var cost=this.is_admin?INPUT({"type":"text","style":"width: 30px;","value":cycle_cost}):SPAN(null,cycle_cost);var comments=this.is_admin?INPUT({"type":"text","style":"width: 250px;","value":list[i]["comments"]}):SPAN();if(this.is_admin){Basis.make_text_element_editable(cost,{"sid":this.session_id,"url":this.post_url,"table":list[i]["id"],"field":"monthly_cost","custom_action":"dashboard.change_site_product_billing_option"});Basis.make_text_element_editable(comments,{"sid":this.session_id,"url":this.post_url,"table":list[i]["id"],"field":"comments","custom_action":"dashboard.change_site_product_billing_option"});}
products.push(TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"200","style":"font-weight: bold;"},list[i]["name"]),TD({"width":"150"},"$",cost,((list[i]["billing_type"]=="repeated")?(" (cost for "+list[i]["billing_cycle_num_months"]+" months)"):null)),(list[i]["billing_type"]=="repeated")?TD({"width":"280"},product_expiration):TD({"width":"280"}),(this.is_admin)?TD(null,"Comments: ",comments):null))));}}}
var billing=DIV({"style":"padding: 10px"},H2(null,"Site Information:"),TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Renew Site:"),TD(null,renew_button)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Package Name:"),TD(null,package_name)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Expiration Date:"),TD(null,expiration_date)),(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Disable Date:"),TD(null,disable_date)):null,(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Send Billing Emails?"),TD(null,send_emails," (toggle whether this account contact receives automated billing emails or not)")):null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Monthly Cost:"),TD(null,monthly_cost)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Pages:"),TD(null,num_pages)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Basic Users:"),TD(null,num_basic_users)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Power Users:"),TD(null,num_power_users)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Groups:"),TD(null,num_groups)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Tasks:"),TD(null,num_tasks)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Contacts:"),TD(null,num_contacts)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Discussions:"),TD(null,num_discussions)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Lists:"),TD(null,num_lists)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Emails Left:"),TD(null,num_emails)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Storage Capacity:"),TD(null,storage_capacity," (in MB)")),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Has Private Pages?"),TD(null,has_private_pages)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Has Modules?"),TD(null,has_modules," (Polls, discussion board, etc)")),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Requires Login?"),TD(null,requires_login)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Default to Admin Section on Login?"),TD(null,default_to_admin_section)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Custom Login Graphic?"),TD(null,custom_login_graphic)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Default Email Template?"),TD(null,default_email_template,null)),(this.is_admin)?[TR(null,TD({"width":"125","style":"font-weight: bold;"},"Can public users sign up for accounts?"),TD(null,public_can_sign_up)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Password used to auto-approve user accounts:"),TD(null,sign_up_passkey))]:null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Products:",DIV({"style":"font-weight: normal; padding-top: 10px;"},product_list,product_add_button)),TD({"style":"padding: 0px;"},products)),(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Notes:"),TD(null,notes)):null)),(this.is_admin)?account_representative:null);return billing;},this));this.set_custom_view_renderer("RENDER","file_explorer_embedded",bind(function(section,mode,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
switch(mode){case"file_explorer":case"file_explorer_choose_file":case"file_explorer_embedded":var mode=mode;break;default:var mode="file_explorer";break;}
switch(section){case"files":case"gallery_files":var section=section;break;default:var section="files";break;}
this.toggle_uploader=bind(function(){var obj=MochiKit.DOM.getElement("uploader_container");if(!obj){var uploader=DIV({"id":"uploader_container","style":"display: none; width: 650px; height: 340px; position: absolute; background-color: #FFFFFF; background-image: url(images/images/no_flash.gif); background-repeat: no-repeat; cursor: pointer; z-index: 5000;"},MochiKit.DOM.createDOM("embed",{"id":"uploader_container_flash_container","name":"uploader_container_flash_container","src":"twg_flash_uploader4.swf","type":"application/x-shockwave-flash","height":"340","width":"650","quality":"high","bgcolor":"#ffffff","style":"","flashvars":"path_reference="+this.resource_linker[this.file_browser_current_folder]["misc_vars"]["path_reference"]+"&PHPSESSID="+this.session_id+"&cookie_name="+this.cookie_name+"&cookie_value="+Basis.get_cookie(this.cookie_name)}));Basis.signal_handler.connect(uploader,"onclick",function(){window.open("http://www.adobe.com/go/getflashplayer");},null,false);document.body.appendChild(uploader);Basis.align_element_to_element(uploader,"container","center");uploader.style.display="";Basis.key_handler.register_key_event("KEY_ESCAPE","down",bind(function(){Basis.remove_element(this);},uploader));Basis.updated_live_dom();}else{Basis.remove_element("uploader_container");}},this);document.twg_upload_completed=bind(function(){var element=MochiKit.DOM.getElement("resource_"+this.file_browser_current_folder);if(element){Basis.signal_handler.execute_interactive_element(element,"onclick");this.custom_ajax_action("get_site_diskspace");}
if(confirm("Would you like to upload more files?")==false){var obj=MochiKit.DOM.getElement("uploader_container");if(obj){Basis.remove_element("uploader_container");}}},this);var folders=this.render_view("FOLDER","browser",section,mode,ui_or_wizard);var add_files_folder=IMG({"src":"images/images/default_icons/folder_add.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(add_files_folder,"onclick",bind(function(){this.custom_ajax_action("create_new_root_folder","files");},this));Basis.attach_tooltip(add_files_folder,("Add a new Files folder"),null,false);var files_container=DIV({"id":Basis.anonymous_element_id(),"style":"overflow: auto;"});var folders_container=DIV({"id":Basis.anonymous_element_id(),"style":"overflow: auto;"});Basis.register_size_constraints(folders_container,"100%","100%");Basis.register_size_constraints(files_container,"100%","100%");this.elements["files_container"]=files_container;this.elements["folders_container"]=folders_container;var gallery_files=(section=="gallery_files")?DIV({"id":Basis.anonymous_element_id(),"style":"padding-top: 10px; padding-bottom: 5px;"},SPAN({"style":"font-weight: bold;"},"Gallery Files"),folders):null;var diskspace_meter=this.render_view("FILE","diskspace");var files=(section=="files")?DIV({"id":Basis.anonymous_element_id(),"style":"padding-top: 10px; padding-bottom: 5px;"},TABLE({"width":"100%","cellpadding":"0","cellspacing":"0","fclass":"no_select"},TBODY(null,TR(null,TD(null,SPAN({"style":"font-weight: bold;"},"Files")),TD({"width":"18"},add_files_folder)))),folders):null;this.elements["files_root"]=files;this.elements["gallery_root"]=gallery_files;folders_container.appendChild(DIV(null,gallery_files,files));var file_browser=TABLE({"width":"100%","height":"100%","fclass":"no_select"},TBODY(null,TR(null,TD({"width":"350","style":"vertical-align: top;"},diskspace_meter,folders_container),TD({"style":"vertical-align: top;"},files_container))));Basis.convert_nested_elements_to_tree(this.elements["files_root"],null,false,true,null,false,false);Basis.convert_nested_elements_to_tree(this.elements["gallery_root"],null,false,true,null,false,false);this.attach_custom_expand_handler=bind(partial(function(type_of_files,mode,ui_or_wizard,image){Basis.signal_handler.connect(image,{"onclick":[bind(partial(function(dashboard,type_of_files,mode,ui_or_wizard){var resource=this.id.substring(0,(this.id.length-("_toggle").length));var element=Basis.get_element(resource);if(!image.expand_loaded){var children=MochiKit.DOM.getElementsByTagAndClassName("div","resource",Basis.get_element(element.id+"_c"));for(var j=0;j<children.length;j++){var child=children[j];var wrapper=Basis.get_element(child.id+"_wrapper");if(child&&wrapper){MochiKit.DOM.swapDOM(wrapper,child);var node=dashboard.folders[type_of_files].getElementsByTagName("resource_id_"+Basis.filter_number(child.id))[0];var row=dashboard.render_view("FOLDER","browser_row",Basis.filter_number(child.id),node,type_of_files,null,mode,ui_or_wizard);if(row){MochiKit.DOM.swapDOM(child,row);Basis.convert_nested_elements_to_tree(row,null,false,false,null,false,false);var timage=MochiKit.DOM.getElementsByTagAndClassName("img","Basis.convert_nested_elements_to_tree.toggle",Basis.get_element(row.id+"_wrapper"))[0];if(timage){dashboard.attach_custom_expand_handler(timage);}}}}
image.expand_loaded=true;}
var container=MochiKit.DOM.getElement((resource+"_c"));if(container){if(this.open){var image_src=(container.childNodes.length==0)?((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";this.src=image_src;this.open=false;}else{var image_src=(container.childNodes.length==0)?((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));container.style.display="";this.src=image_src;this.open=true;}
if(this.open){var resource_id=Basis.filter_number(resource);var cookie_data=Basis.get_cookie(dashboard.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);if(Basis.array_search(open,resource_id)==null){open.push(resource_id);}
open.sort();Basis.set_cookie((dashboard.site_id+".folders"),MochiKit.Base.serializeJSON(open));}else{var resource_id=Basis.filter_number(resource);var cookie_data=Basis.get_cookie(dashboard.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);var index=Basis.array_search(open,resource_id);if(index!=null){delete open[index];}
open.sort();Basis.set_cookie((dashboard.site_id+".folders"),MochiKit.Base.serializeJSON(open));}}},this,((type_of_files=="file_explorer")?"files":"gallery_files"),mode,ui_or_wizard),image)]},null,false);},((section=="files")?"file_explorer":"gallery_explorer"),mode,ui_or_wizard),this);var list=MochiKit.DOM.getElementsByTagAndClassName("img","Basis.convert_nested_elements_to_tree.toggle",file_browser);for(var i=0;i<list.length;i++){var image=list[i];if(Basis.get_element(image)){this.attach_custom_expand_handler(image);}}
file_browser.restore_previously_opened_folders=bind(function(){var cookie_data=Basis.get_cookie(this.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);for(var i=0;i<open.length;i++){if(i!=null){var obj=Basis.get_element("resource_"+open[i]+"_toggle");if(obj){Basis.signal_handler.execute_interactive_element(obj,"onclick");}}}},this);return file_browser;},this));this.set_custom_view_renderer("PAGE","browser",bind(function(){if(!this.site_id){return;}
var type="PAGE";var list=this.available_resources[Basis._return(type)];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);this.delete_page=bind(function(page_id){if(page_id&&confirm("Are you sure you want to delete this page?")){var to_post=new Object();to_post.page_id=page_id;window.status="Deleting page...";var as=new Basis.ajax_scaffold;as.alias="delete_page";as.sid=this.session_id;as.url=this.post_url;as.page_id=page_id;as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var resource_id=this.dashboard.get_page_resource_id(this.page_id);if(resource_id){this.dashboard.purge_resource(resource_id);var obj=MochiKit.DOM.getElement("list_resource_"+resource_id+"_wrapper");if(obj){MochiKit.Visual.fade(obj,{"duration":0.5,"afterFinish":bind(function(effect){if(MochiKit.DOM.getElement(effect.element.id)){MochiKit.DOM.removeElement(effect.element.id);this.render_view("WEBSITE","default");}},this.dashboard)});}}
window.status="Done";}else{window.status="delete_page(): ERROR!";}};as.post({"to_post":to_post});}},this);this.get_page_resource_id=bind(function(page_id){if(page_id){for(var i in this.resource_linker){if(typeof(this.resource_linker[i])!="function"){if(this.resource_linker[i]["type"]=="PAGE"){if(this.resource_linker[i]["misc_vars"]["id"]==page_id){return i;}}}}}},this);var destination=DIV();var manage_menus_button=INPUT({"type":"button","value":"Manage Submenus","style":"background-image:url('images/images/default_icons/cog.gif');","class":"gfx_but_default"});Basis.signal_handler.connect(manage_menus_button,"onclick",bind(function(){this.toggle_menu_management();},this),false);var add_page_button=INPUT({"type":"button","value":"Add a Page","style":"background-image:url('images/images/record_add.gif');","class":"gfx_but_default"});Basis.signal_handler.connect(add_page_button,"onclick",bind(function(){this.run_wizard("PAGE");},this),false);if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){destination.appendChild(DIV({"id":Basis.anonymous_element_id(),"style":"padding: 10px;"},manage_menus_button,add_page_button));}else{destination.appendChild(DIV({"style":"padding: 3px;"},Basis.nbsp()));}
var page_level_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(page_level_tooltip,"onclick",function(){Basis.popup({"window_title":"Page Levels","id":"page_level_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="750">\
                                              <tr>\
                                                <td valign="top" width="200"><b>Public</b></td>\
                                                <td valign="top">Anybody can see this page</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Basic (Admin Change Only)</b></td>\
                                                <td valign="top">Only logged-in Basic users can see this page, but they can\'t interact with polls, discussions, etc on the page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Basic</b></td>\
                                                <td valign="top">Only logged-in Basic users can see this page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Private (Admin Change Only)</b></td>\
                                                <td valign="top">Only logged-in Private users can see this page, but cannot modify it.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Private</b></td>\
                                                <td valign="top">Only logged-in Private users can see this page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Admin Only</b></td>\
                                                <td valign="top">Only logged-in Site Administrators can see and edit this page</td>\
                                              </tr>\
                                            </table>'});},false);var root=DIV(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":(328),"style":"font-weight: bold;"},"Page Name"),TD({"width":"101","style":"font-weight: bold;"},"Page Type"),!this.show_v2_page_permissions()?TD({"width":"100","style":"padding-left: 0px; font-weight: bold;"},"Page Level ",page_level_tooltip):null,this.show_v2_page_permissions()?TD({"width":"125","style":"padding-left: 0px; font-weight: bold;"},"Read-Only Level"):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding-left: 0px; font-weight: bold;"},"Full Access Level"):null))));var list=organized_pages["parent_pages"];for(var i in list){if(typeof(list)!="function"){var children=this.render_view("PAGE","browser_row",list[i],organized_pages);if(children){root.appendChild(children);}}}
destination.appendChild(root);destination.pages_root=root;this.toggle_menu_management=bind(partial(function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("div","dropzone",destination);for(var i in objs){if(Basis.is_element(objs[i])){MochiKit.DOM.toggleElementClass("invisible",objs[i]);this.managing_menus=MochiKit.DOM.hasElementClass(objs[i],"invisible")?false:true;}}},destination),this);return destination;},this));this.set_custom_view_renderer("PAGE","browser_row",bind(function(page_id,organized_pages,level){var tree=null;var level=(level&&(level>0))?level:0;if(page_id){var list=this.resource_linker;var resource_id=this.get_page_resource_id(page_id);var id="list_resource_"+resource_id;if(MochiKit.DOM.getElement(id)){Basis.remove_element(id);}
var item=DIV({"id":id});var page_name=SPAN({"id":("resource_"+resource_id),"style":"font-weight: bold;"+((list[resource_id]["misc_vars"]["invisible"]=="true")?" font-style: italic; color: #c0c0c0;":"")},list[resource_id]["display_text"]);page_name.value=list[resource_id]["display_text"];var icon=((parseInt(this.resource_linker[resource_id]["misc_vars"]["rank"])==0)&&(parseInt(this.resource_linker[resource_id]["misc_vars"]["parent_page_id"])==0))?this.get_view_association_icon("HOMEPAGE"):this.get_view_association_icon(this.resource_linker[resource_id]["misc_vars"]["raw_type"]);var delete_button=IMG({"src":"images/images/delete.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(delete_button,"onclick.greedy.swallow",bind(partial(function(page_id){this.delete_page.apply(null,[page_id]);},page_id),this),false);Basis.attach_tooltip(delete_button,("Delete "+list[resource_id]["display_text"]),false,false);var link_to_page=IMG({"src":"images/images/default_icons/png/link_go.png","style":"cursor: pointer;"});Basis.signal_handler.connect(link_to_page,"onclick",bind(partial(function(resource_id){var site_url=this.site_url;var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];prompt("The text below is a direct link to this page. (Ctrl-C to Copy, Ctrl-V to Paste)",(site_url+"/index.php?id="+page_id));},resource_id),this),false);Basis.attach_tooltip(link_to_page,("Link to "+list[resource_id]["display_text"]),false,false);var go_to_page=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(go_to_page,"onclick.greedy.swallow",bind(partial(function(resource_id){var site_url=this.site_url;var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];window.onbeforeunload=null;window.location=(site_url+"/index.php?id="+page_id);},resource_id),this),false);Basis.attach_tooltip(go_to_page,("Go to "+list[resource_id]["display_text"]),false,false);var page_level=SPAN({"id":("resource_"+resource_id+"_level")},this.resource_linker[resource_id]["misc_vars"]["page_level"]);var page_type=this.resource_linker[resource_id]["misc_vars"]["type"]?this.resource_linker[resource_id]["misc_vars"]["type"]:"Custom Page";if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){var menu_image_off=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["menu_image_off"]});var menu_image_on=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["menu_image_on"]});var visibility=SELECT();var visibility_options={"false":"Visible","true":"Invisible"};Basis.select_add_options(visibility,visibility_options);Basis.select_select_item_by_value(visibility,this.resource_linker[resource_id]["misc_vars"]["invisible"]);Basis.make_text_element_dropdown(visibility,null,{"resource_id":resource_id,"field":"invisible","after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["invisible"]=this.element.options[this.element.selectedIndex].value;switch(this.element.options[this.element.selectedIndex].value){case"true":this.page_name.style.fontWeight="bold";this.page_name.style.fontStyle="italic";this.page_name.style.color="#c0c0c0";break;case"false":this.page_name.style.fontWeight="bold";this.page_name.style.fontStyle="normal";this.page_name.style.color="#000000";break;}},resource_id),{"element":visibility,"page_name":page_name,"dashboard":this})});Basis.make_text_element_editable(menu_image_off,{"resource_id":resource_id,"field":"menu_image_off","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["menu_image_off"]=this.element.value;},resource_id),{"element":menu_image_off,"dashboard":this})});Basis.make_text_element_editable(menu_image_on,{"resource_id":resource_id,"field":"menu_image_on","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["menu_image_on"]=this.element.value;},resource_id),{"element":menu_image_on,"dashboard":this})});var target=SELECT();var target_options={"":"New Window"," ":"Current Window"};Basis.select_add_options(target,target_options);Basis.select_select_item_by_value(target,this.resource_linker[resource_id]["misc_vars"]["target"]);Basis.make_text_element_dropdown(target,null,{"resource_id":resource_id,"field":"target","after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["target"]=this.element.options[this.element.selectedIndex].value;},resource_id),{"element":target,"dashboard":this})});var target_tr=null;if(this.resource_linker[resource_id]["misc_vars"]["raw_type"]=="LINK_TO_URL"){var target_tr=TR(null,TD({"width":"180"},STRONG(null,"URL Target")),TD(null,target));}
var link_to_url=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["link_to_url"]});Basis.make_text_element_editable(link_to_url,{"resource_id":resource_id,"field":"link_to_url","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["link_to_url"]=this.element.value;},resource_id),{"element":link_to_url,"dashboard":this})});var link_to_url_tr=null;if(this.resource_linker[resource_id]["misc_vars"]["raw_type"]=="LINK_TO_URL"){var link_to_url_tr=TR(null,TD({"width":"180"},STRONG(null,"URL Link")),TD(null,link_to_url));}
var extended_page_options=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"180"},STRONG(null,"Visibility")),TD(null,visibility)),TR(null,TD({"width":"180"},STRONG(null,"Menu Image")),TD(null,menu_image_off)),TR(null,TD({"width":"180"},STRONG(null,"Mouseover Image")),TD(null,menu_image_on)),link_to_url_tr,target_tr));var add_page=IMG({"src":"images/images/record_add.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(add_page,"onclick",bind(partial(function(page_id){this.run_wizard("PAGE",{"page_id":page_id});},this.resource_linker[resource_id]["misc_vars"]["id"]),this),false);Basis.attach_tooltip(add_page,("Add a Page Before, After or Below This Page"),false,false);var move_page=IMG({"src":"images/images/default_icons/png/arrow_nsew.png","style":"cursor: pointer;"});Basis.signal_handler.connect(move_page,"onclick",bind(partial(function(page_id){this.run_wizard("PAGE_MOVE",{"page_id":page_id});},this.resource_linker[resource_id]["misc_vars"]["id"]),this),false);Basis.attach_tooltip(move_page,("Move This Page"),false,false);var options_toggle=IMG({"src":"images/images/default_icons/png/plugin.png","style":"cursor: pointer;"});Basis.signal_handler.connect(options_toggle,"onclick",partial(function(extended_page_options){Basis.toggle_visible(extended_page_options.parentNode.parentNode);},extended_page_options),false);Basis.attach_tooltip(options_toggle,("Extended Page Options"),false,false);var access_restrictor=IMG({"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":""});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
if(this.resource_linker[resource_id]["restrictions"]&&(!this.resource_linker[resource_id]["restrictions"]["group"]&&!this.resource_linker[resource_id]["restrictions"]["user_specific"])){if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){var read_only_text=this.user_levels_text[list[i]["user_level"]];}}}}else{var read_only_text="User or Group Access";}
if(this.resource_linker[resource_id]["restrictions"]&&(!this.resource_linker[resource_id]["restrictions"]["group"]&&!this.resource_linker[resource_id]["restrictions"]["user_specific"])){if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){var full_access_text=this.user_levels_text[list[i]["user_level"]];}}}}else{var full_access_text="User or Group Access";}
var read_only_access=SPAN(null,read_only_text);var full_access=SPAN(null,full_access_text);}else{var extended_page_options=null;}
if(!this.resource_linker[resource_id]["resource_access"]["full_access"]){delete_button=Basis.nbsp();move_page=Basis.nbsp();options_toggle=Basis.nbsp();}
item=DIV({"id":id},TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"20","height":"20"},IMG({"src":icon,"class":"Basis.dashboard.page_handle"})),TD({"width":(300-(level*18)-10),"style":"padding: 0px;"},page_name),TD({"width":"100","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},page_type),!this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},page_level):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},read_only_access):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},full_access):null,this.show_v2_page_permissions()?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},access_restrictor):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},move_page):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},add_page):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},options_toggle):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},delete_button):null,TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},link_to_page),TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},go_to_page)),TR({"class":"invisible"},TD({"width":"20","height":"20"},IMG({"src":"images/images/spacer.gif"})),TD({"width":(300-(level*18)-10),"style":"padding: 0px;"}," "),TD({"width":"100","colspan":"4","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},extended_page_options)))));item.dashboard=this;if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(page_name,{"resource_id":resource_id,"after_success":bind(function(){var value=this.element.editable_element.original_value;if(value&&this.resource_id){this.dashboard.resource_linker[this.resource_id]["display_text"]=value;}},{"dashboard":this,"resource_id":resource_id,"element":page_name})});Basis.make_text_element_dropdown(page_level,this.page_levels_text,{"resource_id":resource_id,"field":"attributes","after_success":bind(function(){var value=this.element.editable_element.original_value;if(value&&this.resource_id){var render_pages_again=((value=="CUSTOM_LEVEL")||(this.dashboard.resource_linker[this.resource_id]["misc_vars"]["raw_page_level"]=="CUSTOM_LEVEL"))?true:false;this.dashboard.resource_linker[this.resource_id]["misc_vars"]["raw_page_level"]=value;this.dashboard.resource_linker[this.resource_id]["misc_vars"]["page_level"]=this.element.editable_element.dropdown_options[value];if(render_pages_again){}}},{"dashboard":this,"resource_id":resource_id,"element":page_level})});}
for(var i in organized_pages["child_pages_of"]){if(typeof(organized_pages["child_pages_of"][i])!="function"){if((Basis.parse_number(i)==Basis.parse_number(page_id))&&(Basis.array_length(organized_pages["child_pages_of"][i])>0)){var list=organized_pages["child_pages_of"][i];for(var x in list){if(typeof(list[x])!="function"){var child=this.render_view("PAGE","browser_row",list[x],organized_pages,(level+1));if(child){item.appendChild(child);}}}}}}}
if(tree&&tree.appendChild){tree.appendChild(item);}else{tree=item;}
return tree;},this));},set_up_wizards:function(){this.set_wizard("test",function(){this.on_done=function(){alert("totally done");};this.add_step("Step 1","This is step one.",{"on_load":function(){log("wizard test step 1 loaded!");}});this.add_step("Step 2","This is step two.",{"on_load":function(){log("wizard test step 2 loaded!");},"on_unload":function(){log("wizard test step 2 unloaded!");}});this.add_step("Step 3","This is step three.",{"on_load":function(){log("wizard test step 3 loaded!");},"on_unload":function(){alert("done");},"after_unload":function(){alert("after done");}});});this.set_wizard("ALERT",function(){if(list){var content=this.dashboard.render_view("ALERT","wizard_form",this.options["data_row"],this.options["resource_id"],this.options["target_resource_id"],this.options["mode"]);if(content){var fields=content["fields"];var content=content["element"];var options={"on_load":partial(function(notes){log("wizard ALERT 1 loaded!");},fields["notes"])};this.on_done=bind(partial(function(data_row,wizard){if(wizard.options["mode"]=="edit"){var a=this.custom_ajax_action("save_resource",wizard.options["resource_id"],data_row,wizard.options["grid_control"]);a.addCallback(bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},wizard.options["resource_id"]),this));}else{var a=this.custom_ajax_action("add_new_resource","ALERT",data_row);a.addCallback(bind(partial(function(dashboard){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=Basis._int(response["data_row"]["misc_vars"]["attached_to_resource_id"]);if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this),a));}},this.options["data_row"],this),this.dashboard);var title=(this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):("Let's add a"+((this.options["data_row"]["type"]=="alert")?"n alert!":" reminder!"))
var index=this.add_step(title,content,options);this.options.width="500";this.options.height="300";}}});this.set_wizard("CONTACT_LIST",function(){if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your contact list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard CONTACT_LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your contact list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","CONTACT_LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's add a contact list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("CONTACT",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("CONTACT")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("CONTACT")+" of your available contacts!");return;}
var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.contact_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var CONTACT_type=SELECT();Basis.select_add_options(CONTACT_type,{"individual":"Individual","organization":"Organization"});this.dashboard.bind_form_element(CONTACT_type,"CONTACT_type",data_row);var company_name=INPUT({"type":"text","value":grid_control.get_master_field_data("company_name",data_row,true)});this.dashboard.bind_form_element(company_name,"company_name",data_row);var first_name=INPUT({"type":"text","value":grid_control.get_master_field_data("first_name",data_row,true)});this.dashboard.bind_form_element(first_name,"first_name",data_row);var last_name=INPUT({"type":"text","value":grid_control.get_master_field_data("last_name",data_row,true)});this.dashboard.bind_form_element(last_name,"last_name",data_row);var address1=INPUT({"type":"text","value":grid_control.get_master_field_data("address1",data_row,true)});this.dashboard.bind_form_element(address1,"address1",data_row);var address2=INPUT({"type":"text","value":grid_control.get_master_field_data("address2",data_row,true)});this.dashboard.bind_form_element(address2,"address2",data_row);var city=INPUT({"type":"text","value":grid_control.get_master_field_data("city",data_row,true)});this.dashboard.bind_form_element(city,"city",data_row);var state=SELECT();Basis.select_add_options(state,grid_control.states);Basis.select_select_item_by_value(state,grid_control.get_master_field_data("state",data_row,true,true));this.dashboard.bind_form_element(state,"state",data_row);var zip_code=INPUT({"type":"text","value":grid_control.get_master_field_data("zip_code",data_row,true)});this.dashboard.bind_form_element(zip_code,"zip_code",data_row);var county=SELECT();Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",data_row,true,true));this.dashboard.bind_form_element(county,"county",data_row);Basis.signal_handler.connect(state,"onchange",partial(function(county,state,data_row,grid_control){county.options.length=0;Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",data_row,true,true));},county,state,data_row,grid_control),false);var country=SELECT();Basis.select_add_options(country,grid_control.countries);Basis.select_select_item_by_value(country,grid_control.get_master_field_data("country",data_row,true,true));this.dashboard.bind_form_element(country,"country",data_row);var phone_business=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_business",data_row,true)});this.dashboard.bind_form_element(phone_business,"phone_business",data_row);var phone_home=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_home",data_row,true)});this.dashboard.bind_form_element(phone_home,"phone_home",data_row);var phone_cell=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_cell",data_row,true)});this.dashboard.bind_form_element(phone_cell,"phone_cell",data_row);var phone_fax=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_fax",data_row,true)});this.dashboard.bind_form_element(phone_fax,"phone_fax",data_row);var email_address1=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address1",data_row,true)});this.dashboard.bind_form_element(email_address1,"email_address1",data_row);var email_address2=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address2",data_row,true)});this.dashboard.bind_form_element(email_address2,"email_address2",data_row);var url1=INPUT({"type":"text","value":grid_control.get_master_field_data("url1",data_row,true)});this.dashboard.bind_form_element(url1,"url1",data_row);var url2=INPUT({"type":"text","value":grid_control.get_master_field_data("url2",data_row,true)});this.dashboard.bind_form_element(url2,"url2",data_row);var facebook_url=INPUT({"type":"text","value":grid_control.get_master_field_data("facebook_url",data_row,true)});this.dashboard.bind_form_element(facebook_url,"facebook_url",data_row);var twitter_username=INPUT({"type":"text","value":grid_control.get_master_field_data("twitter_username",data_row,true)});this.dashboard.bind_form_element(twitter_username,"twitter_username",data_row);var linkedin_url=INPUT({"type":"text","value":grid_control.get_master_field_data("linkedin_url",data_row,true)});this.dashboard.bind_form_element(linkedin_url,"linkedin_url",data_row);var notes=Basis.textarea(null,grid_control.get_master_field_data("notes",data_row,true));this.dashboard.bind_form_element(notes,"notes",data_row);var profile_photo_url=INPUT({"type":"text","style":"width: 300px;"});this.dashboard.bind_form_element(profile_photo_url,"profile_photo_url",data_row);var profile_photo_file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(profile_photo_file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"wizard");},profile_photo_url),this.dashboard),false);var profile_photo=DIV(null,profile_photo_url,Basis.nbsp(),profile_photo_file_select);contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":grid_control.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,grid_control.get_master_field_title("type")+":")),TD(null,CONTACT_type)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"colSpan":"2","rowSpan":"10"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url2")+":")),TD(null,url2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("facebook_url")+":")),TD(null,facebook_url)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("twitter_username")+":")),TD(null,twitter_username)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("linkedin_url")+":")),TD(null,linkedin_url))))),FIELDSET(null,LEGEND(null,STRONG("Choose a New Profile Photo:")),profile_photo))),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null))))));Basis.set_tab_indexes([company_name,first_name,last_name,address1,address2,city,state,zip_code,county,country,notes,CONTACT_type,phone_business,phone_home,phone_cell,phone_fax,email_address1,email_address2,url1,url2]);var options={"on_load":partial(function(first_name,company_name,data_row){log("wizard CONTACT 1 loaded!");if(data_row["CONTACT_type"]=="individual"){first_name.focus();}else{company_name.focus();}},first_name,company_name,data_row),"can_unload":bind(partial(function(first_name,company_name){switch(this.CONTACT_type){case"individual":var condition=(!this.first_name||!this.first_name.trim());if(condition){alert("You have to at least give your contact a first name!");first_name.focus();}
break;case"organization":var condition=(!this.company_name||!this.company_name.trim());if(condition){alert("You have to at least give your contact a company name!");company_name.focus();}
break;}
return(!condition)?true:false;},first_name,company_name),data_row)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["contact_list_resource_id"]=options["grid_control"].contact_list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["contact_list_resource_id"]=options["grid_control"].contact_list_resource_id;this.custom_ajax_action("add_new_resource","CONTACT.V2",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Let's add a new contact!"),contact,options);}});this.set_wizard("DISCUSSION",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("DISCUSSION")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("DISCUSSION")+" of your available discussions!");return;}
var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your discussion a title:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard DISCUSSION 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your discussion a title!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","DISCUSSION",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a discussion!",list_info,options);this.options.width="500";this.options.height="250";});this.set_wizard("EMAIL_CONTACTS",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var from_address=INPUT({"type":"text","style":"width: 600px;","value":""});this.dashboard.bind_form_element(from_address,"from_address",data_row);var from_name=INPUT({"type":"text","style":"width: 600px;","value":"Your Name"});this.dashboard.bind_form_element(from_name,"from_name",data_row);var subject=INPUT({"type":"text","style":"width: 600px;","value":""});this.dashboard.bind_form_element(subject,"subject",data_row);var custom_message=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");var populate_from_default_template=INPUT({"type":"button","value":"Use My Default Email Template"});Basis.signal_handler.connect(populate_from_default_template,"onclick",bind(partial(function(element){if(confirm("Are you sure? This will overwrite whatever you've already typed!")){if(this.site_billing_info[this.site_id]["site"]["default_email_template"]){if(tinyMCE&&tinyMCE.get(element.id)){tinyMCE.get(element.id).setContent(this.site_billing_info[this.site_id]["site"]["default_email_template"]);element.value=this.site_billing_info[this.site_id]["site"]["default_email_template"];}else{element.value=this.site_billing_info[this.site_id]["site"]["default_email_template"];}}}},custom_message),this.dashboard),false);var save_to_default_template=INPUT({"type":"button","value":"Save This As My Default Email Template"});Basis.signal_handler.connect(save_to_default_template,"onclick",bind(partial(function(element){if(confirm("Are you sure?")){if(tinyMCE&&tinyMCE.get(element.id)){var value=tinyMCE.get(element.id).getContent();}else{var value=element.value;}
this.site_billing_info[this.site_id]["site"]["default_email_template"]=value;Basis.force_make_text_element_editable_save(element,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"default_email_template","to":value,"custom_action":"dashboard.change_site_billing_option"});}},custom_message),this.dashboard),false);email=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Your Name:")),TD({"width":"600"},from_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Email Address:")),TD({"width":"600"},from_address)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Subject:")),TD({"width":"600"},subject)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Body:")),TD({"width":"600"},custom_message)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},Basis.nbsp()),TD({"style":"text-align: center;"},populate_from_default_template,Basis.nbsp(),save_to_default_template))));Basis.set_tab_indexes([from_address,from_name,subject,custom_message]);var options={"on_load":partial(function(from_address,custom_message,dashboard,data_row){log("wizard EMAIL_CONTACTS 1 loaded!");from_address.focus();Basis.convert_textarea_to_richtextarea(custom_message);dashboard.bind_form_element(custom_message,"custom_message",data_row);},from_address,custom_message,this.dashboard,data_row),"can_unload":bind(function(){var condition=((!this.from_address||!this.from_address.trim())||(!this.from_name||!this.from_name.trim())||(!this.subject||!this.subject.trim()));if(condition){alert("You have to type at least Sender Address, Sender Name and Subject line.");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("email_contacts",{"data_row":data_row,"currently_selected":options.currently_selected});},data_row,this.options),this.dashboard);var index=this.add_step("Compose an email to the selected contacts",email,options);this.options.width="850";this.options.height="550";});this.set_wizard("ERROR_MESSAGE",function(){var content=DIV(null,this.options["error_message"]);var options={"on_load":function(){log("wizard ERROR_MESSAGE 1 loaded!");},"on_unload":this.options["action_on_ok"]};var title=this.options["title"]?this.options["title"]:"Uh oh, something went wrong!";var index=this.add_step(title,content,options);this.options.width=Basis.is_number(this.options.width)?this.options.width:"500";this.options.height=Basis.is_number(this.options.height)?this.options.height:"250";});this.set_wizard("GROUP",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("GROUP")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("GROUP")+" of your available groups!");return;}
if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your group a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard GROUP 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your group a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","GROUP",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a group!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("IMAGE_GALLERY",function(){if(list){var name=INPUT({"type":"text"});var list_info=DIV(null,H3(null,"Give your image gallery a name:"),DIV(null,SPAN({"style":"font-weight: bold;"},"Name:"),name));var options={"on_load":partial(function(name){log("wizard IMAGE_GALLERY 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your image gallery a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","IMAGE_GALLERY",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create an image gallery!",list_info,options);}});this.set_wizard("IMPORT_FROM_VCARD",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var vcard_file=INPUT({"type":"text","style":"width: 580px;"});this.dashboard.bind_form_element(vcard_file,"vcard_file",data_row);var file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"wizard");},vcard_file),this.dashboard),false);var vcard_data=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");this.dashboard.bind_form_element(vcard_data,"vcard_data",data_row);var vcard=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"colSpan":"2"},STRONG("Click the folder to upload and choose a vCard file:"))),TR(null,TD(null,vcard_file),TD({"style":"text-align: right;"},file_select)),TR(null,TD({"colSpan":"2"},STRONG("OR paste vCard data here:"))),TR(null,TD({"colSpan":"2"},vcard_data))));Basis.set_tab_indexes([vcard_file,vcard_data]);var options={"on_load":partial(function(vcard_file){log("wizard IMPORT_FROM_VCARD 1 loaded!");vcard_file.focus();},vcard_file),"can_unload":bind(function(){var condition=((!this.vcard_file||!this.vcard_file.trim())&&(!this.vcard_data||!this.vcard_data.trim()));if(condition){alert("You have to choose a file or paste vCard data to import contacts!");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.please_wait_this_could_take_a_while();this.custom_ajax_action("import_contacts_from_vcard",{"vcard_file":Basis.encode64(data_row["vcard_file"]),"vcard_data":Basis.encode64(data_row["vcard_data"]),"contact_list_resource_id":options["contact_list_id"]});},data_row,this.options),this.dashboard);var index=this.add_step("Importing vCard Contacts",vcard,options);this.options.width="900";this.options.height="600";});this.set_wizard("INVITE_USERS",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var from_address=INPUT({"type":"text","style":"width: 600px;","value":"info@sitequarters.com"});this.dashboard.bind_form_element(from_address,"from_address",data_row);var from_name=INPUT({"type":"text","style":"width: 600px;","value":"SiteQuarters"});this.dashboard.bind_form_element(from_name,"from_name",data_row);var subject=INPUT({"type":"text","style":"width: 600px;","value":"Invitation to a SiteQuarters site!"});this.dashboard.bind_form_element(subject,"subject",data_row);var custom_message=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");this.dashboard.bind_form_element(custom_message,"custom_message",data_row);var email=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Sender Address:")),TD({"width":"600"},from_address)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Sender Name:")),TD({"width":"600"},from_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Subject:")),TD({"width":"600"},subject)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Body:")),TD({"width":"600"},custom_message))));Basis.set_tab_indexes([from_address,from_name,subject,custom_message]);var options={"on_load":partial(function(from_address){log("wizard INVITE_USERS 1 loaded!");from_address.focus();},from_address),"can_unload":bind(function(){var condition=((!this.from_address||!this.from_address.trim())||(!this.from_name||!this.from_name.trim())||(!this.subject||!this.subject.trim()));if(condition){alert("You have to type at least Sender Address, Sender Name and Subject line.");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("invite_contacts_as_user",{"data_row":data_row,"currently_selected":options.currently_selected});},data_row,this.options),this.dashboard);var index=this.add_step("Let's invite some users!",email,options);this.options.width="850";this.options.height="400";});this.set_wizard("LIST",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("LIST")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("LIST")+" of your available lists!");return;}
if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("LIST_ITEM",function(){var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.generic_resource({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var name=INPUT({"type":"text","value":grid_control.get_master_field_data("name",data_row,true)});this.dashboard.bind_form_element(name,"name",data_row);var list_info=DIV(null,H3(null,(this.options["mode"]=="edit")?"Change this item's name:":"Give your new item a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard LIST_ITEM 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your new item a name!");name.focus();}
return name.value.trim()?true:false;},name)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["list_resource_id"]=options["grid_control"].list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["list_resource_id"]=options["grid_control"].list_resource_id;this.custom_ajax_action("add_new_resource","LIST_ITEM",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Add an item to this list:"),list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("PAGE",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("PAGE")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("PAGE")+" of your available pages!");return;}
var page_types={"RICHTEXTAREA":"Editable Text","IMAGE_GALLERY":"Image Gallery","CALENDAR":"Calendar","CONTACT_LIST":"Contact List","PLACEHOLDER":"Placeholder","POLL":"Poll","RSS_FEED":"RSS Feed","FILE_UPLOAD":"File Upload","FILE_LISTING":"File Listing","ADVANCED_FILE_LISTING":"Advanced File Listing","LINK_TO_FILE":"Link to File","LINK_TO_URL":"Link to Website","FILE_UPLOAD_AND_LISTING":"File Uploader + Listing","DOCUMENT_VIEW":"Link to a Document","HTML":"Custom HTML","YOUTUBE_EMBED":"Link / Embed a Youtube Video","LOGIN_BOX":"Login Box","NEWSLETTER_SIGNUP":"Our Newsletter","EVENT_SIGNUP":"Event Signup"};if(this.dashboard.is_admin){page_types["RICHTEXT_AND_HTML"]="Editable Text + HTML";}
var page_name=INPUT({"type":"text","name":"page_name"});var page_type=SELECT({"name":"page_type"});Basis.select_add_options(page_type,page_types);var page_where=SELECT({"name":"page_where"});Basis.select_add_options(page_where,{"":" ","before":"Before","after":"After","under":"In Sub-Menu, Under"});Basis.select_select_item_by_value(pages,this.options["page_where"]);var pages=SELECT({"name":"pages"});var list=this.dashboard.available_resources[Basis._return("PAGE")];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.dashboard.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.dashboard.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);var populate_submenu_options=function(list,element,level,dashboard){var level=level?level:"";if(list&&Basis.get_element(element)){for(var i in list){if(typeof(list[i])!="function"){var parent_page_id=Basis.filter_number(list[i]);var parent_page_rank=level+(Basis.filter_number(i)+1).toString()+".";Basis.select_add_option(element,parent_page_id,(parent_page_rank.substring(0,parent_page_rank.length-1)+" - "+dashboard.resource_display_text(dashboard.get_page_resource_id(parent_page_id))));for(var x in organized_pages["child_pages_of"]){if(Basis.filter_number(x)==parent_page_id){populate_submenu_options(organized_pages["child_pages_of"][x],element,parent_page_rank,dashboard);}}}}}};populate_submenu_options(organized_pages["parent_pages"],pages,"",this.dashboard);Basis.select_select_item_by_value(pages,this.options["page_id"]);var link_url=INPUT({"type":"text","name":"link_url"});var choose_file=INPUT({"type":"button","value":"Choose File","style":"display: none;"});var url_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Link:"),TD(null,SPAN(null,link_url,choose_file)));var document_listing=SELECT({"name":"document_listing"});var doc_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Documents:"),TD(null,SPAN(null,document_listing)));var contact_list_listing=SELECT({"name":"contact_list_listing"});var contact_list_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Contact Lists:"),TD(null,SPAN(null,contact_list_listing)));var enable_comments=SELECT({"name":"comments_enabled"});Basis.select_add_options(enable_comments,{"no":"No","yes":"Yes"});var comments_tr=TR({"style":"display: ;"},TD({"width":100,"style":"font-weight: bold;"},"Enable comments?"),TD(null,enable_comments));Basis.signal_handler.connect(choose_file,"onclick",bind(function(){Basis.misc_vars.file_browser=window.open("file_manager.php","file_browser","width=1000,height=800,status=no,resizable=no");Basis.misc_vars.to_populate=link_url;},this),false);Basis.signal_handler.connect(page_type,"onchange",bind(function(){switch(this.select.options[this.select.selectedIndex].value){case"CONTACT_LIST":this.contact_list_tr.style.display="";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";contact_list_listing.options.length=0;var lists=Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["CONTACT_LIST"]);for(var i=0;i<lists.length;i++){Basis.select_add_option(contact_list_listing,lists[i],this.dashboard.resource_display_text(lists[i]));}
Basis.select_sort(contact_list_listing);break;case"DOCUMENT_VIEW":this.contact_list_tr.style.display="none";this.doc_tr.style.display="";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";document_listing.options.length=0;document_listing.appendChild(new Option("Loading documents...",1));this.dashboard.custom_ajax_action("get_site_documents",this.site_id,document_listing);break;case"LINK_TO_URL":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="";this.choose_file.style.display="none";this.comments_tr.style.display="none";break;case"LINK_TO_FILE":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="";this.choose_file.style.display="";this.comments_tr.style.display="none";break;case"RICHTEXTAREA":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="";break;default:this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";break;}},{"dashboard":this.dashboard,"select":page_type,"choose_file":choose_file,"comments_tr":comments_tr,"site_id":this.dashboard.site_id,"url_tr":url_tr,"doc_tr":doc_tr,"contact_list_tr":contact_list_tr,"contact_list_listing":contact_list_listing,"document_listing":document_listing}),false);var page_type_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(page_type_tooltip,"onclick",function(){Basis.popup({"window_title":"Page Type","id":"page_type_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="500">\
                                            <tr>\
                                              <td width="110" valign="top"><b>Editable Text</b></td>\
                                              <td valign="top">Blank text page, similar to a Word document, which allows you to enter text, images, hyperlinks and tables into any order or layout that you wish.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Image Gallery</b></td>\
                                              <td valign="top">Allows you to upload and organize your photos in a simple, easy to use image gallery.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Calendar</b></td>\
                                              <td valign="top">A full calendar accessible through your website. Use this to keep track of important dates and meetings for your entire organization or yourself.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Project List</b></td>\
                                              <td valign="top">Keep track of important projects from one location. Allows your sites users to enter in tasks and collaborate to complete them on time.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Contact List</b></td>\
                                              <td valign="top">A fully featured contact list for you to keep track of all of your clients, employees and business relations.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Placeholder</b></td>\
                                              <td valign="top">A placeholder is used when a dropdown menu is neccessary but the heading does not need it\'s own page with content on it.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Poll</b></td>\
                                              <td valign="top">A customizable poll that you can use to gather information from your website\'s users based on questions that you choose.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>RSS Feed</b></td>\
                                              <td valign="top">An RSS Feed reader that will pull in an RSS feed of your choosing and display it within your website automatically.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>File Upload</b></td>\
                                              <td valign="top">Allows your users to upload files to a predetermined directory if you do not want them to have full access to your companys SiteQuarters File Manager.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Link to File</b></td>\
                                              <td valign="top">Allows a menu item to link directly to a document stored on the web. One common use is for a .PDF or .DOC file.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Link to Website</b></td>\
                                              <td valign="top">Allows a menu item to link directly to another website.</td>\
                                            </tr>\
                                          </table>'});},false);var page_info=DIV(null,H3(null,"Add a Page"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":100,"style":"font-weight: bold;"},"Page Name:"),TD({"height":"18"},page_name)),TR(null,TD({"width":100,"style":"font-weight: bold;"},"Page Type:"),TD(null,page_type,page_type_tooltip)),comments_tr,url_tr,doc_tr,contact_list_tr)),H3(null,"Where in the menu does it go?"),DIV(null,page_where,Basis.nbsp(),pages));var options={"on_load":partial(function(page_name){log("wizard PAGE 1 loaded!");page_name.focus();},page_name),"can_unload":bind(partial(function(page_name,page_type,enable_comments,document_listing,link_url,page_where,pages,contact_list_listing){var unload=true;if(!page_name.value.trim()){alert("You need to give the new page a name.");unload=false;}
if(((page_type.options[page_type.selectedIndex].value=="LINK_TO_FILE")||(page_type.options[page_type.selectedIndex].value=="LINK_TO_URL"))&&!link_url.value.trim()){alert("You need to give the new link an address or file to link to!");unload=false;}
if(unload){var comments=(enable_comments.options[enable_comments.selectedIndex].value=="yes")?"true":"false";var content=null;var type=page_type.options[page_type.selectedIndex].value;if(type=="DOCUMENT_VIEW"){content=document_listing.options[document_listing.selectedIndex].value;}
if(type=="CONTACT_LIST"){content=contact_list_listing.options[contact_list_listing.selectedIndex].value;}
this.custom_ajax_action("add_page",page_name.value,type,link_url.value,comments,content,page_where.options[page_where.selectedIndex].value,pages.options[pages.selectedIndex].value);}
return unload;},page_name,page_type,enable_comments,document_listing,link_url,page_where,pages,contact_list_listing),this.dashboard)};this.on_done=bind(partial(function(name,wizard){},name,this),this.dashboard);var index=this.add_step("Let's add a new page!",page_info,options);});this.set_wizard("PAGE_MOVE",function(){var page_where=SELECT({"name":"page_where"});Basis.select_add_options(page_where,{"before":"Before","after":"After","under":"In Sub-Menu, Under"});Basis.select_select_item_by_value(pages,this.options["page_where"]);var pages=SELECT({"name":"pages"});var list=this.dashboard.available_resources[Basis._return("PAGE")];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.dashboard.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.dashboard.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);var populate_submenu_options=function(list,element,level,dashboard){var level=level?level:"";if(list&&Basis.get_element(element)){for(var i in list){if(typeof(list[i])!="function"){var parent_page_id=Basis.filter_number(list[i]);var parent_page_rank=level+(Basis.filter_number(i)+1).toString()+".";Basis.select_add_option(element,parent_page_id,(parent_page_rank.substring(0,parent_page_rank.length-1)+" - "+dashboard.resource_display_text(dashboard.get_page_resource_id(parent_page_id))));for(var x in organized_pages["child_pages_of"]){if(Basis.filter_number(x)==parent_page_id){populate_submenu_options(organized_pages["child_pages_of"][x],element,parent_page_rank,dashboard);}}}}}};populate_submenu_options(organized_pages["parent_pages"],pages,"",this.dashboard);var page_info=DIV(null,H3(null,"Where in the menu does it go?"),DIV(null,page_where,Basis.nbsp(),pages));var options={"on_load":function(){log("wizard PAGE_MOVE 1 loaded!");},"can_unload":bind(partial(function(page_id,page_where,pages){if(confirm("Are you sure you want to move this page?")){this.custom_ajax_action("move_page",page_id,page_where.options[page_where.selectedIndex].value,pages.options[pages.selectedIndex].value);}
return true;},this.options["page_id"],page_where,pages),this.dashboard)};var index=this.add_step("Let's move this page!",page_info,options);});this.set_wizard("TASK_LIST",function(){if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your task list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard TASK_LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your task list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","TASK_LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's add a task list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("TASK",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("TASK")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("TASK")+" of your available tasks!");return;}
var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.task_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var task_name=INPUT({"type":"text","style":"width: 700px;","value":grid_control.get_master_field_data("task_name",data_row,true)});this.dashboard.bind_form_element(task_name,"task_name",data_row);var date_assigned=Basis.create_date_formfield(null,false);date_assigned.set_date(grid_control.get_master_field_data("date_assigned",data_row,true));this.dashboard.bind_form_element(date_assigned,"date_assigned",data_row);var notes=Basis.textarea({"style":"width: 700px; height: 120px;"},grid_control.get_master_field_data("notes",data_row,true));this.dashboard.bind_form_element(notes,"notes",data_row);var date_due=Basis.create_date_formfield(null,true);date_due.set_date(grid_control.get_master_field_data("date_due",data_row,true));if(date_due.get_date()!="0000-00-00"){date_due.toggle("on");}
this.dashboard.bind_form_element(date_due,"date_due",data_row);var status=SELECT();Basis.select_add_options(status,["Not Started","In Progress","Completed","Deferred","Waiting on someone else"]);this.dashboard.bind_form_element(status,"status",data_row);var priority=SELECT();Basis.select_add_options(priority,["(1) High Priority","(2) Normal Priority","(3) Low Priority","(4) Scheduled"]);this.dashboard.bind_form_element(priority,"priority",data_row,1);var percent_complete=SELECT();Basis.select_add_options(percent_complete,["0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"]);this.dashboard.bind_form_element(percent_complete,"percent_complete",data_row);var assigned_to=SELECT();Basis.select_add_option(assigned_to,""," ");Basis.select_add_options(assigned_to,this.dashboard.get_site_resource_list("CONTACT.V2"));Basis.select_sort(assigned_to);this.dashboard.bind_form_element(assigned_to,"assigned_to",data_row);task=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Task:")),TD({"width":"100%"},task_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Notes:")),TD({"width":"100%"},notes)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Info:")),TD({"width":"100%","style":"padding-top: 0px;"},TABLE({"border":"0","cellpadding":"5","cellspacing":"0","style":"border: 1px solid #c0c0c0;","width":"700"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Date Assigned:")),TD({"width":"100%"},date_assigned),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Status:")),TD({"width":"100%"},status)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Date Due:")),TD({"width":"100%"},date_due),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"% Complete:")),TD({"width":"100%"},percent_complete)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Assigned To:")),TD({"width":"100%"},assigned_to),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Priority:")),TD({"width":"100%"},priority))))))));Basis.set_tab_indexes([task_name,notes,date_assigned,date_due,assigned_to,status,percent_complete,priority]);var options={"on_load":partial(function(task_name){log("wizard TASK 1 loaded!");task_name.focus();},task_name),"can_unload":bind(function(){var condition=(!this.task_name||!this.task_name.trim());if(condition){alert("You have to give your new task a name!");}
return(!condition)?true:false;},data_row)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["task_list_resource_id"]=options["grid_control"].task_list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].task_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["task_list_resource_id"]=options["grid_control"].task_list_resource_id;this.custom_ajax_action("add_new_resource","TASK",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Let's add a new task!"),task,options);this.options.width="850";this.options.height="400";}});this.set_wizard("USER",function(){var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.contact_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){Basis.misc_vars.data_row=this.options["data_row"]?this.options["data_row"]:{};var username=INPUT({"type":"text","style":"width: 250px;","value":grid_control.get_master_field_data("username",Basis.misc_vars.data_row,true)});var password=INPUT({"type":"password","style":"width: 250px;","value":grid_control.get_master_field_data("password",Basis.misc_vars.data_row,true)});var password_again=INPUT({"type":"password","style":"width: 250px;","value":grid_control.get_master_field_data("password_again",Basis.misc_vars.data_row,true)});var user_level=SELECT();var user_levels=this.dashboard.user_levels_text;for(var i in user_levels){if(!(this.dashboard.user_levels[i]<=this.dashboard.user_levels[this.dashboard.current_user_level])){delete user_levels[i];}}
Basis.select_add_options(user_level,user_levels);Basis.select_select_item_by_value(user_level,grid_control.get_master_field_data("user_level",Basis.misc_vars.data_row,true));var fields={"username":username,"password":password,"password_again":password_again,"user_level":user_level};var user_info=DIV(null,H3(null,"Type in the user's information:"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Username:")),TD({"width":"100%"},username)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Password:")),TD({"width":"100%"},password)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Re-type Password:")),TD({"width":"100%"},password_again)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"User Level:")),TD({"width":"100%"},user_level)))));var options={"on_load":bind(partial(function(fields){log("wizard USER 1 loaded!");for(var i in fields){if(i&&!Basis.is_function(fields[i])){this.bind_form_element(fields[i],i,Basis.misc_vars.data_row);}}
fields["username"].focus();},fields),this.dashboard),"can_unload":partial(function(username,password,password_again,dashboard){var message="";var unload=true;if(!username.value.trim()){message+="You have to give your user a username!\n\n";username.focus();unload=false;}
if(!password.value.trim()||!password_again.value.trim()||(password.value.trim()&&password_again.value.trim()&&(password.value.trim()!=password_again.value.trim()))){message+="The passwords don't match!\n\n";password.focus();unload=false;}
var list=dashboard.available_resources["USER"];for(var i in list){if(list[i]&&list[i].misc_vars){if(list[i].misc_vars["username"]==username.value.trim()){if(dashboard.in_site(i)){message="This username already exists in this site!\n\n";username.focus();unload=false;}else{dashboard.system_log("ALERT: prompt to import user from org to site!");}}}}
if(message){alert(message);}
return unload;},username,password,password_again,this.dashboard)};var index=this.add_step("Let's add a user!",user_info,options);var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});var grid_control=contact_list.grid_control;if(grid_control){var CONTACT_type=SELECT();Basis.select_add_options(CONTACT_type,{"individual":"Individual","organization":"Organization"});var company_name=INPUT({"type":"text","value":grid_control.get_master_field_data("company_name",Basis.misc_vars.data_row,true)});var first_name=INPUT({"type":"text","value":grid_control.get_master_field_data("first_name",Basis.misc_vars.data_row,true)});var last_name=INPUT({"type":"text","value":grid_control.get_master_field_data("last_name",Basis.misc_vars.data_row,true)});var address1=INPUT({"type":"text","value":grid_control.get_master_field_data("address1",Basis.misc_vars.data_row,true)});var address2=INPUT({"type":"text","value":grid_control.get_master_field_data("address2",Basis.misc_vars.data_row,true)});var city=INPUT({"type":"text","value":grid_control.get_master_field_data("city",Basis.misc_vars.data_row,true)});var state=SELECT();Basis.select_add_options(state,grid_control.states);Basis.select_select_item_by_value(state,grid_control.get_master_field_data("state",Basis.misc_vars.data_row,true,true));var zip_code=INPUT({"type":"text","value":grid_control.get_master_field_data("zip_code",Basis.misc_vars.data_row,true)});var county=SELECT();Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",Basis.misc_vars.data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",Basis.misc_vars.data_row,true,true));var country=SELECT();Basis.select_add_options(country,grid_control.countries);Basis.select_select_item_by_value(country,grid_control.get_master_field_data("country",Basis.misc_vars.data_row,true,true));var phone_business=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_business",Basis.misc_vars.data_row,true)});var phone_home=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_home",Basis.misc_vars.data_row,true)});var phone_cell=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_cell",Basis.misc_vars.data_row,true)});var phone_fax=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_fax",Basis.misc_vars.data_row,true)});var email_address1=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address1",Basis.misc_vars.data_row,true)});var email_address2=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address2",Basis.misc_vars.data_row,true)});var url1=INPUT({"type":"text","value":grid_control.get_master_field_data("url1",Basis.misc_vars.data_row,true)});var url2=INPUT({"type":"text","value":grid_control.get_master_field_data("url2",Basis.misc_vars.data_row,true)});var notes=Basis.textarea(null,grid_control.get_master_field_data("notes",Basis.misc_vars.data_row,true));var fields={"CONTACT_type":CONTACT_type,"company_name":company_name,"first_name":first_name,"last_name":last_name,"address1":address1,"address2":address2,"city":city,"state":state,"zip_code":zip_code,"county":county,"country":country,"phone_business":phone_business,"phone_home":phone_home,"phone_cell":phone_cell,"phone_fax":phone_fax,"email_address1":email_address1,"email_address2":email_address2,"url1":url1,"url2":url2,"notes":notes};contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":grid_control.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,grid_control.get_master_field_title("type")+":")),TD(null,CONTACT_type)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"colSpan":"2","rowSpan":"10"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},null)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null))))));Basis.set_tab_indexes([company_name,first_name,last_name,address1,address2,city,state,zip_code,county,country,notes,CONTACT_type,phone_business,phone_home,phone_cell,phone_fax,email_address1,email_address2,url1,url2]);var options={"on_load":bind(partial(function(fields){log("wizard USER 2 loaded!");for(var i in fields){if(i&&!Basis.is_function(fields[i])){this.bind_form_element(fields[i],i,Basis.misc_vars.data_row);}}
if(Basis.misc_vars.data_row["CONTACT_type"]=="individual"){fields["first_name"].focus();}else{fields["company_name"].focus();}},fields),this.dashboard),"can_unload":bind(partial(function(first_name,company_name){switch(this.CONTACT_type){case"individual":var condition=(!this.first_name||!this.first_name.trim());if(condition){alert("You have to at least give your contact a first name!");first_name.focus();}
break;case"organization":var condition=(!this.company_name||!this.company_name.trim());if(condition){alert("You have to at least give your contact a company name!");company_name.focus();}
break;}
return(!condition)?true:false;},first_name,company_name),Basis.misc_vars.data_row)};var index=this.add_step("Who is this new user?",contact,options);}
this.on_done=bind(partial(function(options){this.custom_ajax_action("add_new_resource","USER",Basis.misc_vars.data_row,options["grid_control"],"display_text");},this.options),this.dashboard);}});this.set_wizard("USER_EDIT",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var resource_id=this.options["resource_id"]?this.options["resource_id"]:null;if(!resource_id){return;}
var username=STRONG(null,this.dashboard.resource_display_text(resource_id));var password=INPUT({"type":"password","style":"width: 250px;"});this.dashboard.bind_form_element(password,"password",data_row);var password_again=INPUT({"type":"password","style":"width: 250px;"});this.dashboard.bind_form_element(password_again,"password_again",data_row);var user_info=DIV(null,H3(null,"Change password:"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Username:")),TD({"width":"100%"},username)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Password:")),TD({"width":"100%"},password)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Re-type Password:")),TD({"width":"100%"},password_again)))));var options={"on_load":partial(function(password){log("wizard USER_EDIT 1 loaded!");password.focus();},password),"can_unload":partial(function(password,password_again,dashboard){var message="";var unload=true;if(!password.value.trim()||!password_again.value.trim()||(password.value.trim()&&password_again.value.trim()&&(password.value.trim()!=password_again.value.trim()))){message+="The passwords don't match!\n\n";password.focus();unload=false;}
if(message){alert(message);}
return unload;},password,password_again,this.dashboard)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("user_change_password",resource_id,data_row["password"]);},data_row,this.options),this.dashboard);var index=this.add_step(this.dashboard.resource_display_text(resource_id),user_info,options);this.options.width="600";this.options.height="300";});},set_wizard:function(alias,func){this.debug_log(["set_wizard()",alias]);if(alias&&func&&(typeof(func)=="function")){var options={};if(this.wizards[alias]){var options=this.wizards[alias].options;}
this.wizards[alias]=new Basis.wizard({"tiles":this.tiles.wizard});this.wizards[alias].options=options;this.wizards[alias].dashboard=this;var func=bind(func,this.wizards[alias]);this.wizards[alias].setup=bind(partial(function(alias,func){this.set_wizard(alias,func);},alias,func),this);func();}},show_resource:function(resource_id,clear_tiles){var clear_tiles=(clear_tiles===true)?true:false;if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();if(clear_tiles){this.resource_id=null;this.reset_states();this.tiles.ui.clear_all_tiles();}
var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},site_can_create_new:function(resource_type){if(resource_type&&this.site_billing_info[this.site_id]){var resource_type=resource_type.toUpperCase();switch(resource_type){case"PAGE":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_pages"])?true:false;break;case"GROUP":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_groups"])?true:false;break;case"TASK":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_tasks"])?true:false;break;case"CONTACT":return(Basis.array_length(this.get_site_resource_list("CONTACT.V2"))<this.site_billing_info[this.site_id]["site"]["num_contacts"])?true:false;break;case"LIST":return(Basis.array_length(this.get_site_resource_list("LIST"))<this.site_billing_info[this.site_id]["site"]["num_lists"])?true:false;break;case"DISCUSSION":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_discussions"])?true:false;break;case"USER_BASIC":case"USER_POWER":this.debug_log(["site_can_create_new()",resource_type,"make me do something"]);break;}}
return false;},system_log:function(message,is_for_end_user){if(message){var is_for_end_user=(is_for_end_user!=null)?((is_for_end_user===true)?true:false):false;var timestamp=Basis.time();MochiKit.Logging.log(timestamp+" "+message);if(is_for_end_user){var obj=Basis.get_element(this.elements["notifications"]);if(obj){obj.innerHTML=message;this.system_log_history.push([timestamp,message]);if(obj.parentNode.highlight_reference&&obj.parentNode.highlight_reference.cancel){obj.parentNode.highlight_reference.cancel();}
obj.parentNode.highlight_reference=Highlight(obj.parentNode);}}}},verify_login:function(loop){var check=this.custom_ajax_action("verify_login");if(loop){check.addCallback(bind(function(){MochiKit.Async.callLater(30,bind(function(){this.verify_login(true);},this));},this));}
return check;}};Basis.dashboard.header_block=function(title,go_back,go_back_text,go_back_icon){if((go_back===false)||(go_back==null)){return DIV({"style":"background-image: url(images/images/dashboard/v2/resource_title_background.gif); background-repeat: repeat-x; height: 57px;"},DIV(null,TABLE({"width":"100%","border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"16","style":"padding-right: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_left.gif); background-position: top left; background-repeat: no-repeat;"}),TD(null,DIV({"style":"padding: 5px; text-align: center; font-family: verdana; font-size: 16pt; font-weight: bold; color: #2B4D70;"},title)),TD({"width":"16","style":"padding-left: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_right.gif); background-position: top right; background-repeat: no-repeat;"}))))));}else{var link=MochiKit.DOM.createDOM("B",{"style":"cursor: pointer;"},["Go Back to ",SPAN({"style":"color: #4676bb"},go_back_text)]);var icon=IMG({"src":go_back_icon?go_back_icon:"images/images/arrow_left_small.gif","style":"cursor: pointer;"})
var d=DIV({"style":"background-image: url(images/images/dashboard/v2/resource_title_background.gif); background-repeat: repeat-x; height: 57px;"},DIV(null,TABLE({"width":"100%","border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"16","style":"padding-right: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_left.gif); background-position: top left; background-repeat: no-repeat;"},icon),TD({"width":"200"},link),TD(null,DIV({"style":"padding: 5px; text-align: center; font-family: verdana; font-size: 16pt; font-weight: bold; color: #2B4D70;"},title)),TD({"width":"200"}),TD({"width":"16","style":"padding-left: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_right.gif); background-position: top right; background-repeat: no-repeat;"}))))));d.go_back=link;d.go_back_icon=icon;return d;}};

  // ===================================================================
  // Author : Matt Kruse <matt@ajaxtoolbox.com>
  // WWW    : http://www.ajaxtoolbox.com/
  // ===================================================================

  function AjaxRequest() {
  
    var req               = new Object();
    req.timeout           = null;
    req.generateUniqueUrl = true;
    req.url               = window.location.href;
    req.method            = "GET";
    req.async             = true;
    req.username          = null;
    req.password          = null;
    req.parameters        = new Object();
    req.requestIndex      = AjaxRequest.numAjaxRequests++;
    req.responseReceived  = false;
    req.groupName         = null;
    req.queryString       = "";
    req.responseText      = null;
    req.responseXML       = null;
    req.status            = null;
    req.statusText        = null;
    req.aborted           = false;
    req.xmlHttpRequest    = null;
  
    req.onTimeout         = null; 
    req.onLoading         = null;
    req.onLoaded          = null;
    req.onInteractive     = null;
    req.onComplete        = null;
    req.onSuccess         = null;
    req.onError           = null;
    req.onGroupBegin      = null;
    req.onGroupEnd        = null;
  
    req.xmlHttpRequest    = AjaxRequest.getXmlHttpRequest();

    if (req.xmlHttpRequest==null) { return null; } // end if
    
    req.xmlHttpRequest.onreadystatechange = function() {

      if (req==null || req.xmlHttpRequest==null) { return; } // end if
      if (req.xmlHttpRequest.readyState==1) { req.onLoadingInternal(req);     } // end if
      if (req.xmlHttpRequest.readyState==2) { req.onLoadedInternal(req);      } // end if
      if (req.xmlHttpRequest.readyState==3) { req.onInteractiveInternal(req); } // end if
      if (req.xmlHttpRequest.readyState==4) { req.onCompleteInternal(req);    } // end if

    }; // end function()
    
    req.onLoadingInternalHandled     = false;
    req.onLoadedInternalHandled      = false;
    req.onInteractiveInternalHandled = false;
    req.onCompleteInternalHandled    = false;
    req.onLoadingInternal = function() {

      if (req.onLoadingInternalHandled) { return; } // end if

      AjaxRequest.numActiveAjaxRequests++;

      if (AjaxRequest.numActiveAjaxRequests==1 && typeof(window['AjaxRequestBegin'])=="function") {

        AjaxRequestBegin();

      } // end if

      if (req.groupName!=null) {

        if (typeof(AjaxRequest.numActiveAjaxGroupRequests[req.groupName])=="undefined") {

          AjaxRequest.numActiveAjaxGroupRequests[req.groupName] = 0;

        } // end if

        AjaxRequest.numActiveAjaxGroupRequests[req.groupName]++;

        if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==1 && typeof(req.onGroupBegin)=="function") {

          req.onGroupBegin(req.groupName);

        } // end if

      } // end if

      if (typeof(req.onLoading)=="function") {

        req.onLoading(req);

      } // end if

      req.onLoadingInternalHandled = true;

    }; // end function()

    req.onLoadedInternal = function() {

      if (req.onLoadedInternalHandled) { return; } // end if

      if (typeof(req.onLoaded)=="function") {

        req.onLoaded(req);

      } // end if

      req.onLoadedInternalHandled = true;

    }; // end function()

    req.onInteractiveInternal = function() {

      if (req.onInteractiveInternalHandled) { return; } // end if

      if (typeof(req.onInteractive)=="function") {

        req.onInteractive(req);

      } // end if

      req.onInteractiveInternalHandled = true;

    }; // end function()

    req.onCompleteInternal = function() {

      if (req.onCompleteInternalHandled || req.aborted) { return; } // end if

      req.onCompleteInternalHandled = true;

      AjaxRequest.numActiveAjaxRequests--;

      if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") {

        AjaxRequestEnd(req.groupName);

      } // end if

      if (req.groupName!=null) {

        AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--;

        if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") {

          req.onGroupEnd(req.groupName);

        } // end if

      } // end if

      req.responseReceived = true;
      req.status           = req.xmlHttpRequest.status;
      req.statusText       = req.xmlHttpRequest.statusText;
      req.responseText     = req.xmlHttpRequest.responseText;
      req.responseXML      = req.xmlHttpRequest.responseXML;

      if (typeof(req.onComplete)=="function") {

        req.onComplete(req);

      } // end if

      if (req.xmlHttpRequest.status==200 && typeof(req.onSuccess)=="function") {

        req.onSuccess(req);

      } else if (typeof(req.onError)=="function") {

        req.onError(req);

      } // end if

      delete req.xmlHttpRequest['onreadystatechange'];
      req.xmlHttpRequest = null;

    }; // end function()

    req.onTimeoutInternal = function() {

      if (req!=null && req.xmlHttpRequest!=null && !req.onCompleteInternalHandled) {

        req.aborted = true;
        req.xmlHttpRequest.abort();
        AjaxRequest.numActiveAjaxRequests--;

        if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") {

          AjaxRequestEnd(req.groupName);

        } // end if

        if (req.groupName!=null) {

          AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--;

          if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") {

            req.onGroupEnd(req.groupName);

          } // end if

        } // end if

        if (typeof(req.onTimeout)=="function") {

          req.onTimeout(req);

        } // end if

        delete req.xmlHttpRequest['onreadystatechange'];
        req.xmlHttpRequest = null;

      } // end if

    }; // end function()
  
    req.process = function() {

      if (req.xmlHttpRequest!=null) {

        if (req.generateUniqueUrl && req.method=="GET") {

          req.parameters["AjaxRequestUniqueId"] = new Date().getTime() + "" + req.requestIndex;

        } // end if

        var content = null; // For POST requests, to hold query string

        for (var i in req.parameters) {

          if (req.queryString.length>0) { req.queryString += "&"; }  // end if

          req.queryString += encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]);

        } // end for

        if (req.method=="GET") {

          if (req.queryString.length>0) {

            req.url += ((req.url.indexOf("?")>-1)?"&":"?") + req.queryString;

          } // end if

        } // end if

        req.xmlHttpRequest.open(req.method,req.url,req.async,req.username,req.password);

        if (req.method=="POST") {

          if (typeof(req.xmlHttpRequest.setRequestHeader)!="undefined") {

            req.xmlHttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

          } // end if

          content = req.queryString;

        } // end if

        if (req.timeout>0) {

          setTimeout(req.onTimeoutInternal,req.timeout);

        } // end if

        req.xmlHttpRequest.send(content);

      } // end if

    }; // end function()
  
    req.handleArguments = function(args) {

      for (var i in args) {

        if (typeof(req[i])=="undefined") {

          req.parameters[i] = args[i];

        } else {

          req[i] = args[i];

        } // end if

      } // end for

    }; // end function()
  
    req.getAllResponseHeaders = function() {

      if (req.xmlHttpRequest!=null) {

        if (req.responseReceived) {

          return req.xmlHttpRequest.getAllResponseHeaders();

        } // end if

        alert("Cannot getAllResponseHeaders because a response has not yet been received");

      } // end if

    }; // end function()

    req.getResponseHeader = function(headerName) {

      if (req.xmlHttpRequest!=null) {

        if (req.responseReceived) {

          return req.xmlHttpRequest.getResponseHeader(headerName);

        } // end if

        alert("Cannot getResponseHeader because a response has not yet been received");

      } // end if

    }; // end function()
  
    return req;

  } // end class AjaxRequest
  
  AjaxRequest.getXmlHttpRequest = function() {

    if (window.XMLHttpRequest) {

      return new XMLHttpRequest();

    } else if (window.ActiveXObject) {

      // Based on http://jibbering.com/2002/4/httprequest.html
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
      try {
        return new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          return new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          return null;
        }
      }
      @end @*/

    } else {

      return null;

    } // end if

  }; // end getXmlHttpRequest()
  
  AjaxRequest.isActive = function() {

    return (AjaxRequest.numActiveAjaxRequests>0);

  }; // end isActive()
  
  AjaxRequest.get = function(args) {

    AjaxRequest.doRequest("GET",args);

  }; // end get()
  
  AjaxRequest.post = function(args) {

    AjaxRequest.doRequest("POST",args);

  }; // end post()
  
  AjaxRequest.doRequest = function(method,args) {

    if (typeof(args)!="undefined" && args!=null) {

      var myRequest    = new AjaxRequest();
      myRequest.method = method;
      myRequest.handleArguments(args);
      myRequest.process();

    } // end if

  }; // end doRequest
  
  AjaxRequest.submit = function(theform, args) {

    var myRequest         = new AjaxRequest();

    if (myRequest==null) { return false; } // end if

    var serializedForm    = AjaxRequest.serializeForm(theform);
    myRequest.method      = theform.method.toUpperCase();
    myRequest.url         = theform.action;
    myRequest.handleArguments(args);
    myRequest.queryString = serializedForm;
    myRequest.process();
    return true;

  }; // end submit()
  
  AjaxRequest.serializeForm = function(theform) {

    var els         = theform.elements;
    var len         = els.length;
    var queryString = "";

    this.addField = function(name,value) { 

        if (queryString.length>0) { 

          queryString += "&";

        } // end if

        queryString += encodeURIComponent(name) + "=" + encodeURIComponent(value);

    }; // end function()

    for (var i=0; i<len; i++) {

      var el = els[i];

      if (!el.disabled) {

        switch(el.type) {

          case 'text':
          case 'password':
          case 'hidden':
          case 'textarea': 

            this.addField(el.name,el.value);

            break;

          case 'select-one':

            if (el.selectedIndex>=0) {

              this.addField(el.name,el.options[el.selectedIndex].value);

            } // end if

            break;

          case 'select-multiple':

            for (var j=0; j<el.options.length; j++) {

              if (el.options[j].selected) {

                this.addField(el.name,el.options[j].value);

              } // end if

            } // end for

            break;

          case 'checkbox':
          case 'radio':

            if (el.checked) {

              this.addField(el.name,el.value);

            } // end if

            break;

        } // end switch

      } // end if

    } // end for

    return queryString;

  }; // end serializeForm()
  
  AjaxRequest.numActiveAjaxRequests      = 0;
  AjaxRequest.numActiveAjaxGroupRequests = new Object();
  AjaxRequest.numAjaxRequests            = 0;
    var misc_vars  = new Object();

    var tabs       = new Object();
    var active_tab = "";

    var detect = navigator.userAgent.toLowerCase();
    var OS,browser,version,total,thestring;

    if (check_it('konqueror')) {
      browser = "Konqueror";
      OS      = "Linux";
    } else if (check_it('safari'))  { browser = "Safari";            }
      else if (check_it('omniweb')) { browser = "OmniWeb";           }
      else if (check_it('opera'))   { browser = "Opera";             }
      else if (check_it('webtv'))   { browser = "WebTV";             }
      else if (check_it('icab'))    { browser = "iCab";              }
      else if (check_it('msie'))    { browser = "Internet Explorer"; }
      else if (!check_it('compatible')) {
            browser = "Netscape Navigator";
            version = detect.charAt(8);
    } else { browser = "An unknown browser"; }

    if (!version) version = detect.charAt(place + thestring.length);

    if (!OS) {
      if (check_it('linux'))    { OS = "Linux";   }
      else if (check_it('x11')) { OS = "Unix";    }
      else if (check_it('mac')) { OS = "Mac"      }
      else if (check_it('win')) { OS = "Windows"  }
      else { OS = "an unknown operating system"; }
    } // end if

    function check_it(string) {

      place     = detect.indexOf(string) + 1;
      thestring = string;
      return place;

    } // end check_it()

    function ie_getElementsByTagName(str) {

      // Map to the all collections
      if (str=="*") {
        return document.all;
      } else {
        return document.all.tags(str);
      }

    } // end ie_getElementsByTagName()

    if (document.all) { document.getElementsByTagName = ie_getElementsByTagName; } // end if

    delete_form_lookup    = new Object();
    duplicate_form_lookup = new Object();
    notified              = new Object();
    selected_menu_item    = "";

    function submit_delete_form(mik_md5) {

      if (delete_form_lookup[mik_md5]) {

        if (MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5])) {

          MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5]).submit();

        } // end if

      } // end if

    } // end submit_delete_form()
    
    function submit_duplicate_form(mik_md5) {

      if (duplicate_form_lookup[mik_md5]) {

        if (MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5])) {

          MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5]).submit();

        } // end if

      } // end if

    } // end submit_duplicate_form()

    function toggle_menu_item(item_idnum,prepend,a,b) {

      if (!a)       { a = "menu_item_parent"; } // end if
      if (!b)       { b = "menu_item_child";  } // end if
      if (!prepend) { prepend = ""; } // end if

      a_parent = prepend+"menu_parent_"+item_idnum;

      if (MochiKit.DOM.getElement(a_parent)) {

        if ((prepend+item_idnum) != selected_menu_item) {

          a_child  = prepend+"menu_child_"+item_idnum;
          a_img    = prepend+"menu_child_img_"+item_idnum;

          if (MochiKit.DOM.getElement(a_parent).className == a+"_off") { MochiKit.DOM.getElement(a_parent).className = a+"_on"; } else { MochiKit.DOM.getElement(a_parent).className = a+"_off"; } // end if

          if (MochiKit.DOM.getElement(a_child).className  == b+"_off")  {

            MochiKit.DOM.getElement(a_child).className  = b+"_on";
            MochiKit.DOM.getElement(a_img).src          = "images/images/menu_item_on.gif";

          } else {

            MochiKit.DOM.getElement(a_child).className  = b+"_off";
            MochiKit.DOM.getElement(a_img).src          = "images/images/menu_item_off.gif";

            } // end if

        } // end if

      } // end if

    } // end toggle_menu_item()

    function set_tab_type(idnum,type) {

      MochiKit.DOM.getElement("tab"+idnum+"_a_img").src = "images/images/spacer.gif";

      switch (type) {

        case "regular_selected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/tab_on_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/tab_on_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "tab_regular_on_middle";
          break;

        case "regular_unselected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/tab_off_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/tab_off_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "tab_regular_off_middle";
          break;

        case "end_selected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/right_tab_on_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/right_tab_on_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "right_tab_on_middle";
          break;

        case "end_unselected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/right_tab_off_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/right_tab_off_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "right_tab_off_middle";
          break;

      } // end switch

    } // end set_tab_type()

    function load_tab(current_tab,to_tab,form_id) {

      if (current_tab == to_tab) { return false; } else { MochiKit.DOM.getElement(form_id).submit(); return true; } // end if

      if (active_tab  == "tab" ) {

        MochiKit.DOM.getElement(form_id).submit();
        return true;

      } // end if

      if (current_tab != to_tab) {

        export_form_values('form_0');

        if (tabs[to_tab]["json"]) {

          restore_form_values(to_tab,'form_0');

          for (x=0;x<MochiKit.DOM.getElement('form_0').elements.length;x++) {

            tid  = MochiKit.DOM.getElement('form_0').elements[x].id;
            tv   = MochiKit.DOM.getElement('form_0').elements[x].value;
            tdiv = (tid.substr(0,(tid.length-6))+"div");

            if (tv == "Show / Edit Note") { toggle_object(tdiv,"off"); } else if (tv == "Hide Note") { toggle_object(tdiv,"on"); } // end if

          } // end for

          tindex = current_tab.substr(3);

          tab_class = MochiKit.DOM.getElement(current_tab+"_c").className;
          if (tab_class == "tab_regular_on_middle")  { set_tab_type(tindex,"regular_unselected"); } // end if
          if (tab_class == "right_tab_on_middle")    { set_tab_type(tindex,"end_unselected"); } // end if

          tindex = to_tab.substr(3);

          tab_class = MochiKit.DOM.getElement(to_tab+"_c").className;
          if (tab_class == "tab_regular_off_middle") { set_tab_type(tindex,"regular_selected"); } // end if
          if (tab_class == "right_tab_off_middle")   { set_tab_type(tindex,"end_selected"); } // end if

          active_tab = to_tab;

          return false;

        } else {

          var tabs_field = document.createElement("input");
          tabs_field.setAttribute("name","current_tabs");
          tabs_field.setAttribute("id","current_tabs");
          tabs_field.setAttribute("type","hidden");
          tabs_field.setAttribute("value", encodeBase64(MochiKit.Base.serializeJSON(tabs)));
          MochiKit.DOM.getElement(form_id).appendChild(tabs_field);

          MochiKit.DOM.getElement(form_id).submit();
          return true;

        } // end if

      } // end if

    } // end load_tab
    
    function htmlentities(text) {

      var v = text;
      var s = "";
      var c;

      for (var i=0;i<v.length;i++) {

        c  = v.charAt(i);
        c  = c.charCodeAt(0);
        c  = '&#'+ c + ';'
        s += c;

      } // end for
      
      return s;

    } // end htmlentities()
    
    function auto_save(form,refresh_speed) {
    
      window.status = "Auto-saving form...";

      AjaxRequest.submit(form,{

        'url'         : MochiKit.DOM.getElement(form).action,
        'onSuccess'   : function(req){ 
                          window.status = "Done";
                        }
      });        

      init_auto_save(form,refresh_speed);
    
    } // end auto_save()
    
    function init_auto_save(form,refresh_speed) {
    
      if (!refresh_speed) { refresh_speed = 300000; } // end if
    
      window.setTimeout("auto_save('"+form+"',"+refresh_speed+")",refresh_speed);

    } // end init_auto_save()
    
    function export_form_values(form) {

      output = new Array();
      style  = new Array();

      for (x=0;x<MochiKit.DOM.getElement(form).elements.length;x++) {

        tstyle             = new Object();

        output[x]          = new Object();
        output[x]["id"]    = MochiKit.DOM.getElement(form).elements[x].id;
        output[x]["name"]  = MochiKit.DOM.getElement(form).elements[x].name;
        output[x]["value"] = MochiKit.DOM.getElement(form).elements[x].value;

      } // end for

      tabs[active_tab]         = new Object();
      tabs[active_tab]["link"] = document.URL;
      tabs[active_tab]["json"] = MochiKit.Base.serializeJSON(output);

    } // end export_form_values()

    function restore_form_values(from_tab,to_form) {

      output  = new Array();
      output  = MochiKit.Base.evalJSON(tabs[from_tab]["json"]);
      theform = MochiKit.DOM.getElement(to_form);

      for (var x in output) {

        theform.elements[x].id    = output[x]["id"];
        theform.elements[x].name  = output[x]["name"];
        theform.elements[x].value = output[x]["value"];

      } // end for

    } // end restore_form_values()

    function print_r(theObj) {

      if (theObj) {

        var output = "";

        if ((theObj.constructor==Array)||(theObj.constructor==Object)) {

          output += "<ul>";

          for (var p in theObj) {

            if ((theObj[p].constructor==Array)||(theObj[p].constructor==Object)) {

              output += "<li>["+p+"] => "+(typeof theObj)+"</li>";
              output += "<ul>";
              output += print_r(theObj[p]);
              output += "</ul>";

            } else {

              output += "<li>["+p+"] => "+theObj[p]+"</li>";

            } // end if

          } // end for

          output += "</ul>";

        } // end if

        return output;
        
      } // end if

    } // end print_r
    
    function list_add_item(e) {
    
      if (!confirm('Are you sure you want to add this item?')) { return; } // end if

      list          = new Object();
      
      window.status = "Adding item to list...";

      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if

      if (e) {

        if (!target) {
        
          var target        = detectTarget(e);

        } // end if

        list["id"]          = target.id.substring(0,(target.id.length-13))+target.id.substring((target.id.length-2),target.id.length);
        list["list_name"]   = list_name;
        list["name"]        = MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);
        list["options"]     = new Object();
        
        rrv_length = 0;

        for (var chi = list["id"].length; chi > 0; chi--) {

          if (list["id"].substring(chi, chi-1) == "_") { chi = 0; } // end if

          rrv_length++;

        } // end for
        
        if (MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value) {

          select_add_option(list["id"],null,MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value);
        
          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {
        
            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        
          
        } // end if

      } // end if

    } // end list_add_item()
    
    function list_rename_item(e) {

      if (!confirm('Are you sure you want to rename this item with the text currently typed into the "Add This Item" text box?')) { return; } // end if

      list          = new Object();

      window.status = "Renaming item in list...";

      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if

      if (e) {

        if (!target) {

          var target        = detectTarget(e);

        } // end if

        list["id"]          = target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);
        list["list_name"]   = list_name;
        list["name"]        = MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);
        list["options"]     = new Object();

        index               = MochiKit.DOM.getElement(list["id"]).selectedIndex;

        rrv_length = 0;

        for (var chi = list["id"].length; chi > 0; chi--) {

          if (list["id"].substring(chi, chi-1) == "_") { chi = 0; } // end if

          rrv_length++;

        } // end for
        
        if (MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value) {

          MochiKit.DOM.getElement(list["id"]).options[index].text  = MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value;
          MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value = "";

          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {

            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        

        } // end if

      } // end if

    } // end list_rename_item()
    
    function list_delete_item(e) {

      if (confirm("Are you sure you want to delete this item?")) {

        list = new Object();

        window.status                       = "Deleting item from list...";

        if (!e) { window.status = "done"; return false; } // end if

        if (is_string(e)) {

          var target = MochiKit.DOM.getElement(e);

        } // end if

        if (e) {

          if (!target) {

            var target        = detectTarget(e);

          } // end if

          list["id"]          = target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);
          list["list_name"]   = list_name;
          list["name"]        = MochiKit.DOM.getElement(list["id"]).name;
          list["options"]     = new Object();

          index               = MochiKit.DOM.getElement(list["id"]).selectedIndex;

          MochiKit.DOM.getElement(list["id"]).options[index] = null;

          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {

            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        

        } // end if

      } // end if

    } // end list_delete_item()
    
    function update_date_dropdowns(e) {

      date_array = new Object();

      window.status                       = "Updating date dropdown...";
      
      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if
      
      if (e) {

        if (!target) {
          var target        = detectTarget(e);
        } // end if

        date_array["id"]    = target.id;
        temp                = date_array["id"].split("_");
        date_array["rrv"]   = temp[temp.length-1];
        date_array["oid"]   = temp[temp.length-2];
        temp                = date_array["id"].substr(0,(date_array["id"].length-temp[temp.length-1].length-temp[temp.length-2].length)-2);
        date_array["id"]    = temp;
        date_array["month"] = MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).selectedIndex].text;
        date_array["year"]  = MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).selectedIndex].text;

        var to_post         = date_array;
        
        AjaxRequest.post({

          'url'         : 'ajax/date.php',
          'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
          'onSuccess'   : function(req){ 
                            return_response = MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));
                            update_days(return_response);
                            MochiKit.Signal.signal(target,"update_calendar");
                          }
        });        

      } // end if

    } // end update_date_dropdowns()

    function update_days(return_array) {

      id                 = return_array["id"]+"_day_"+return_array["rrv"];
      var obj            = MochiKit.DOM.getElement(id);

      if (obj) {

        var sel_id         = obj.selectedIndex;
        obj.options.length = 0;
  
        for (var x=0;x<return_array["days"];x++) {
  
          obj.options[x] = new Option(x+1,x);
  
        } // end for
  
        if (obj.options.length > sel_id) {
  
          obj.selectedIndex = sel_id;
  
        } else {
  
          obj.selectedIndex = obj.options.length-1;
  
        } // end if

      } // end if

      window.status     = "Done";

    } // end update_days()

    function update_json_variables(e) {

      window.status                       = "Validating form fields...";

      if (e) {

        var target                        = detectTarget(e);

        var rrv_run                       = target.id.split("_");
        rrv_run                           = rrv_run[rrv_run.length-1];

      } // end if

      notified[target.id] = "";

      for (var i in variables["form_"+rrv_run]) {
      
        if (!MochiKit.DOM.getElement(i+"_"+rrv_run)) {

          alert("update_json_variables() failed for element ["+i+"_"+rrv_run+"]");
          
        } else {

          variables["form_"+rrv_run][i] = MochiKit.DOM.getElement(i+"_"+rrv_run).value;

        } // end if

      } // end for

      validate_array["form_"+rrv_run]["variables"]         = variables["form_"+rrv_run];
      validate_array["form_"+rrv_run]["require_variables"] = require_variables["form_"+rrv_run];
      validate_array["form_"+rrv_run]["submit_buttons"]    = submit_buttons["form_"+rrv_run];
      validate_array["form_"+rrv_run]["rrv_run"]           = rrv_run;

      validate(validate_array["form_"+rrv_run]);

    } // end update_json_variables()
    
    function notify_validation(return_response) {

      notify_text        = "";
      num_false          = 0;

      var rrv_run        = return_response["rrv_run"];
      var submit_buttons = return_response["submit_buttons"];
      return_response    = return_response["array"];

      for (var key in return_response) {

        for (var rule in return_response[key]) {

          if (is_object(return_response[key][rule])) {

            if (return_response[key][rule][0]==false) {

              if (MochiKit.DOM.getElement(key+"_"+rrv_run)) {

                MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor = "#FF0000";
                num_false++;
  
                if ((!notified[key+"_"+rrv_run])||(notified[key+"_"+rrv_run] == "")) {
  
                  notified[key+"_"+rrv_run] = "notified";
                  notify_text = notify_text + "Variable \""+key+"_"+rrv_run+"\" does not meet the requirements of constraint \""+rule+"\".\n";
                  
                } // end if

              } // end if

            } else if (return_response[key][rule][0]==true) { //true

              if (MochiKit.DOM.getElement(key+"_"+rrv_run)) {

                MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor = "";
                notified[key+"_"+rrv_run]                                      = null;

              } // end if

            } // end if

          } // end if

        } // end for

      } // end for

      if (num_false > 0) {
      
        for (var button in submit_buttons) {

          if (MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)) {

            MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled = true;

          } // end if

        } // end for

        if (!is_empty(notify_text)) {

          alert(notify_text);

        } // end if

      } else {
      
        for (var button in submit_buttons) {

          if (MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)) {

            MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled = false;

          } // end if

        } // end for

      } // end if

      window.status = "Done";

    } // end notify_validation()

    function validate(input_array) {

      AjaxRequest.post({

        'url'         : 'ajax/validate.php',
        'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(input_array))),
        'onSuccess'   : function(req){ 
                          return_response = MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));
                          notify_validation(return_response);
                        }
      });        

    } // end validate()
    
    function checkRegExpress(obj,submit) {

      if (! obj.value.match(/\d\d-\d\d\d-\d\d$/)) {

        if (obj.value.match(/\d\d-\d\d\d-\d\dP$/)) {

          obj.style.backgroundColor = '';
          submit.disabled=false;
          return true;

        } // end if

        obj.style.backgroundColor = '#FF0000';
        alert("Internal IDs are in the form:\n\txx-xxx-xx");
        submit.disabled=true;
        return false;

      } else {

        obj.style.backgroundColor = '';
        submit.disabled=false;
        return true;

      } // end if

    } // end checkRegExpress()

    function set_date(when,monthfield,dayfield,yearfield) {

      if (when == "today") {
  
        var today = new Date();
        var month = today.getMonth();
        var day   = today.getDate()-1;
        var year  = today.getYear();
    
        if (year > 99) { year = 2000 + (year - 100); }
        else { year = 1900 + year; } // end if
    
        monthfield[month].selected = true;
        dayfield[day].selected     = true;

        for(i=0;i<yearfield.length;i++) {

          if (yearfield[i].text == year) {

            yearfield[i].selected   = true;

          } // end if

        } // end for

      } // end if

    } // end set_date()

    function note_onoff(objtxt,rrv_run) {

      obj    = MochiKit.DOM.getElement(objtxt+'_notediv');
      button = MochiKit.DOM.getElement(objtxt+'_notebutton');
      texta  = MochiKit.DOM.getElement(objtxt+'_note'+'_'+rrv_run);
  
      if (obj.style.display == "none") {
  
        obj.style.display = "";
        button.value = "Delete Note";

      } else {
  
        if (confirm('Are you sure you want to delete this note?') == true) {
  
          obj.style.display = "none";
          button.value = "Add Note";
          texta.value = "";
      
        } // end if

      } // end if

    } // end comment_onoff()
    
    function toggle_image(theobj,a,b) {

      theobj = MochiKit.DOM.getElement(theobj);

      if (theobj.src == a.src) { theobj.src = b.src; } else if (theobj.src == b.src) { theobj.src = a.src; } // end if

    } // end toggle_image()

    function toggle_object(obj,specific) {

      if (!is_object(obj)) {

        if (MochiKit.DOM.getElement(obj)) {

          obj = MochiKit.DOM.getElement(obj);

        } // end if
        
      } // end if
      
      if (!specific) {
      
        if (obj.style.display == "none") {

          obj.style.display = "";

        } else {

          obj.style.display = "none";

        } // end if

      } else {
      
        if (specific == "on") {

          obj.style.display = "";

        } else if (specific == "off") {
          
          obj.style.display = "none";
            
        } // end if
          
      } // end if

    } // end toggle_object()

    function detectTarget(e) {

      var targ;

      if (!e) var e=window.event;

      if (e.target) { targ=e.target; }
      else if (e.srcElement) { targ=e.srcElement; }

      if (targ.nodeType==3) { targ=targ.parentNode; }

      return targ;

    } // end detectTarget()

    /********************************************************
     * Copyright (C) 2002-2003, CodeHouse.com. All rights reserved.
     * CodeHouse(TM) is a registered trademark.
     *
     * THIS SOURCE CODE MAY BE USED FREELY PROVIDED THAT
     * IT IS NOT MODIFIED OR DISTRIBUTED, AND IT IS USED
     * ON A PUBLICLY ACCESSIBLE INTERNET WEB SITE.
     *
     * CodeHouse.com JavaScript Library Module: Register Event Class
     *
     * You can obtain this script at http://www.codehouse.com
     ********************************************************/
    function CJL_RegisterEvent(elemName, elem, type, listener, useCapture, noAutoStart) {

      var proto = arguments.callee.prototype;

      this.e    = elem;
      this.type = type;
      this.cap  = useCapture;
      this.l    = listener;

      proto.start = function() {

        if (!elem) { alert("CJL_RegisterEvent() failed for element ["+elemName+"]"); return; } // end if

        if (this.e.attachEvent) {

          this.e.attachEvent("on" + this.type, this.l);

        } else if (this.e.addEventListener) {

          this.e.addEventListener(this.type, this.l, this.cap);

        } // end if

      } // end function()

      if (!noAutoStart) {

        this.start(elem, type, listener);

      } // end if

      proto.stop = function() {
      
        if (this.e.detachEvent) {

          this.e.detachEvent("on" + this.type, this.l);

        } else if( this.e.removeEventListener ) {

          this.e.removeEventListener(this.type, this.l, this.cap);

        } // end if

      } // end function()

    } // end CJL_RegisterEvent()

    var END_OF_INPUT = -1;

    var base64Chars = new Array(
        'A','B','C','D','E','F','G','H',
        'I','J','K','L','M','N','O','P',
        'Q','R','S','T','U','V','W','X',
        'Y','Z','a','b','c','d','e','f',
        'g','h','i','j','k','l','m','n',
        'o','p','q','r','s','t','u','v',
        'w','x','y','z','0','1','2','3',
        '4','5','6','7','8','9','+','/'
    );

    var reverseBase64Chars = new Array();

    for (var i=0; i < base64Chars.length; i++){

      reverseBase64Chars[base64Chars[i]] = i;

    } // end for

    var base64Str;
    var base64Count;
    
    function setBase64Str(str) {

      base64Str   = str;
      base64Count = 0;

    } // end setBase64Str()
    
    function readBase64(){

      if (!base64Str) { return END_OF_INPUT; } // end if
      if (base64Count >= base64Str.length) { return END_OF_INPUT; } // end if
      var c = base64Str.charCodeAt(base64Count) & 0xff;
      base64Count++;
      return c;

    } // end readBase64()
    
    function encodeBase64(str){
        setBase64Str(str);
        var result = '';
        var inBuffer = new Array(3);
        var lineCount = 0;
        var done = false;
        while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
            inBuffer[1] = readBase64();
            inBuffer[2] = readBase64();
            result += (base64Chars[ inBuffer[0] >> 2 ]);
            if (inBuffer[1] != END_OF_INPUT){
                result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
                if (inBuffer[2] != END_OF_INPUT){
                    result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                    result += (base64Chars [inBuffer[2] & 0x3F]);
                } else {
                    result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                    result += ('=');
                    done = true;
                }
            } else {
                result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
                result += ('=');
                result += ('=');
                done = true;
            }
    //        lineCount += 4;
    //        if (lineCount >= 76){
    //            result += ('\n');
    //            lineCount = 0;
    //        }
        }
        return result;
    }
    function readReverseBase64(){   
        if (!base64Str) return END_OF_INPUT;
        while (true){      
            if (base64Count >= base64Str.length) return END_OF_INPUT;
            var nextCharacter = base64Str.charAt(base64Count);
            base64Count++;
            if (reverseBase64Chars[nextCharacter]){
                return reverseBase64Chars[nextCharacter];
            }
            if (nextCharacter == 'A') return 0;
        }
        return END_OF_INPUT;
    }
    
    function ntos(n){
        n=n.toString(16);
        if (n.length == 1) n="0"+n;
        n="%"+n;
        return unescape(n);
    }
    
    function decodeBase64(str){
        setBase64Str(str);
        var result = "";
        var inBuffer = new Array(4);
        var done = false;
        while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
            && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
            inBuffer[2] = readReverseBase64();
            inBuffer[3] = readReverseBase64();
            result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
            if (inBuffer[2] != END_OF_INPUT){
                result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
                if (inBuffer[3] != END_OF_INPUT){
                    result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
                } else {
                    done = true;
                }
            } else {
                done = true;
            }
        }
        return result;
    }
    
    function urlencode( val )
    {
            // The Javascript escape and unescape functions do not correspond
            // with what browsers actually do...
            var SAFECHARS = "0123456789" +                                        // Numeric
                                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +        // Alphabetic
                                            "abcdefghijklmnopqrstuvwxyz" +
                                            "-_.!~*'()";                                        // RFC2396 Mark characters
            var HEX = "0123456789ABCDEF";
    
            var plaintext = val;
            var encoded = "";
            for (var i = 0; i < plaintext.length; i++ ) {
                    var ch = plaintext.charAt(i);
                if (ch == " ") {
                        encoded += "+";                                // x-www-urlencoded, rather than %20
                    } else if (SAFECHARS.indexOf(ch) != -1) {
                        encoded += ch;
                    } else {
                        var charCode = ch.charCodeAt(0);
                            if (charCode > 255) {
                                alert( "Unicode Character '" 
                            + ch 
                            + "' cannot be encoded using standard URL encoding.\n" +
                                              "(URL encoding only supports 8-bit characters.)\n" +
                                                      "A space (+) will be substituted." );
                                    encoded += "+";
                            } else {
                                    encoded += "%";
                                    encoded += HEX.charAt((charCode >> 4) & 0xF);
                                    encoded += HEX.charAt(charCode & 0xF);
                            }
                    }
            } // for
    
            return encoded;
    };
    
    function urldecode( val )
    {
       // Replace + with ' '
       // Replace %xx with equivalent character
       // Put [ERROR] in output if %xx is invalid.
       var HEXCHARS = "0123456789ABCDEFabcdef"; 
       var encoded = val;
       var plaintext = "";
       var i = 0;
       while (i < encoded.length) {
           var ch = encoded.charAt(i);
               if (ch == "+") {
                   plaintext += " ";
                       i++;
               } else if (ch == "%") {
                            if (i < (encoded.length-2) 
                                            && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
                                            && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
                                    plaintext += unescape( encoded.substr(i,3) );
                                    i += 3;
                            } else {
                                    alert( 'Bad escape combination near ...' + encoded.substr(i) );
                                    plaintext += "%[ERROR]";
                                    i++;
                            }
                    } else {
                       plaintext += ch;
                       i++;
                    }
            } // while
       return plaintext;
    };
    
    function is_alien(a) {
       return is_object(a) && typeof a.constructor != 'function';
    } // end is_alien()
    
    function is_array(a) {
        return is_object(a) && a.constructor == Array;
    } // end is_array()
    
    function is_boolean(a) {
        return typeof a == 'boolean';
    } // end is_boolean()
    
    function is_empty(o) {
        var i, v;
        if (is_object(o)) {
            for (i in o) {
                v = o[i];
                if (is_undefined(v) && is_function(v)) {
                    return false;
                } // end if
            } // end for
        } else if (is_string(o)) {
          if (o.length>0) { return false; } // end if
        } // end if
        return true;
    } // end is_empty()
    
    function is_function(a) {
        return typeof a == 'function';
    } // end is_function()
    
    function is_null(a) {
        return typeof a == 'object' && !a;
    } // end is_null()
    
    function is_number(a) {
        return typeof a == 'number' && isFinite(a);
    } // end is_number()
    
    function is_object(a) {
        return (a && typeof a == 'object') || is_function(a);
    } // end is_object()
    
    function is_string(a) {
        return typeof a == 'string';
    } // end is_string()
    
    function is_undefined(a) {
        return typeof a == 'undefined';
    }  // end is_undefined()
    
    function select_add_option(theobj,tvalue,ttext) {
    
      var temp    = document.createElement('option');
      temp.value  = tvalue;
      temp.text   = ttext;
    
      if (is_string(theobj)) { theobj = MochiKit.DOM.getElement(theobj); } // end if
    
      try       { theobj.add(temp, null); }
      catch(ex) { theobj.add(temp);       }
    
    } // end select_add_option()

    function calendar_add_date(liid,pid,button_elem) {
    
      thevar    = 'calendar'+liid+'_add_date';

      screend   = MochiKit.Style.getViewportDimensions();
      dated     = MochiKit.Style.getElementDimensions(thevar);
    
      to_pos    = new Object;
      to_pos.x  = ((screend.w / 2)-(dated.w / 2));
      to_pos.y  = ((screend.h / 2)-(dated.h / 2));
    
      MochiKit.Style.setElementPosition(thevar, to_pos);

      if (eval('calendar'+liid+'_adding') == true) { 
    
        eval('calendar'+liid+'_adding = false;'); 
        button_elem.style.backgroundImage = 'url(${root}images/images/edit.gif)';
        button_elem.value = 'Add Date to Calendar';
    
      } else {
    
        eval('calendar'+liid+'_adding = true;'); 
        button_elem.style.backgroundImage = 'url(${root}images/images/cancel.gif)';
        button_elem.value = 'Cancel';
    
      } // end if
    
      toggle_object(thevar);
    
    } // end calendar_add_date()

    function set_date_dropdowns_date(id,rrv,date) {

        temp        = date.split("-");
 
        year        = eval(temp[0]);
        month       = eval(temp[1]);
        day         = eval(temp[2]);

        year_field  = MochiKit.DOM.getElement((id+'_year_'+rrv));
        month_field = MochiKit.DOM.getElement((id+'_month_'+rrv));
        day_field   = MochiKit.DOM.getElement((id+'_day_'+rrv));

        year_idx    = null;
        month_idx   = null;
        day_idx     = null;

        for (x=0;x<year_field.options.length;x++) {

          if (year_field.options[x].text == year) { year_idx = year_field.options[x].value; } // end if

        } // end for

        for (x=0;x<month_field.options.length;x++) {

          if (month_field.options[x].value == (month-1)) { month_idx = month_field.options[x].value; } // end if

        } // end for

        for (x=0;x<day_field.options.length;x++) {

          if (day_field.options[x].text == day) { day_idx = day_field.options[x].value; } // end if

        } // end for

        if (year_idx)  { year_field.selectedIndex  = year_idx;  } // end if
        if (month_idx) { month_field.selectedIndex = month_idx; } // end if
        if (day_idx)   { day_field.selectedIndex   = day_idx;   } // end if

    } // end set_date_dropdowns_date()
// <script>

// Copyright (C) 2005 Ilya S. Lyubinskiy. All rights reserved.
// Technical support: http://www.php-development.ru/
//
// YOU MAY NOT
// (1) Remove or modify this copyright notice.
// (2) Distribute this code, any part or any modified version of it.
//     Instead, you can link to the homepage of this code:
//     http://www.php-development.ru/javascripts/menu.php.
//
// YOU MAY
// (1) Use this code on your website.
// (2) Use this code as a part of another product provided that
//     its main use is not creating javascript menus.
//
// NO WARRANTY
// This code is provided "as is" without warranty of any kind, either
// expressed or implied, including, but not limited to, the implied warranties
// of merchantability and fitness for a particular purpose. You expressly
// acknowledge and agree that use of this code is at your own risk.

// If you find my script useful, you can support my site in the following ways:
// 1. Vote for the script at HotScripts.com (you can do it on my site)
// 2. Link to the homepage of this script or to the homepage of my site:
//    http://www.php-development.ru/javascripts/menu.php
//    http://www.php-development.ru/
//    You will get 50% commission on all orders made by your referrals.
//    More information can be found here:
//    http://www.php-development.ru/affiliates.php

// ----- DropDown Control ------------------------------------------------------

// ----- Show Aux -----

function at_show_aux(parent, child)
{
  var p = document.getElementById(parent);
  var c = document.getElementById(child);

  var top  = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
  var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;

  for (; p; p = p.offsetParent)
  {
    if (p.style.position != 'absolute')
    {
      left += p.offsetLeft;
      top  += p.offsetTop;
    }
  }

  c.style.position   = "absolute";
  c.style.top        = top +'px';
  c.style.left       = left+'px';
  c.style.visibility = "visible";
}

// ----- Hide Aux -----

function at_hide_aux(parent, child)
{
  document.getElementById(child).style.visibility = "hidden";
}

// ----- Show -----

function at_show_p()
{
  c = document.getElementById(this["at_child" ]);
  at_show_aux(this.id, c.id);
  clearTimeout(c["at_timeout"]);
}

function at_show_c()
{
  p = document.getElementById(this["at_parent"]);
  at_show_aux(p.id, this.id);
  clearTimeout(this["at_timeout"]);
}

// ----- Hide -----

function at_hide_p()
{
  c = document.getElementById(this["at_child" ]);
  c["at_timeout"] = setTimeout("at_hide_aux('"+this.id+"', '"+c.id+"')", 100);
}

function at_hide_c()
{
  p = document.getElementById(this["at_parent"]);
  this["at_timeout"] = setTimeout("at_hide_aux('"+p.id+"', '"+this.id+"')", 100);
}

// ----- Attach -----

function at_attach(parent, child, position) {

  p = document.getElementById(parent);
  c = document.getElementById(child);

  p["at_child"]    = c.id;
  c["at_parent"]   = p.id;
  c["at_position"] = position;

  p.onmouseover = at_show_p;
  p.onmouseout  = at_hide_p;
  c.onmouseover = at_show_c;
  c.onmouseout  = at_hide_c;
  
  at_show_aux(parent,child);
  at_hide_aux(parent,child);

}

// ----- Menu ---------------------------------------------------------

// ----- Build Aux -----

function dhtmlmenu_build_aux(parent, child, position) {

  document.write('<div class="container_menu" id="'+parent+'_child"><div class="menu_over" id="'+parent+'_child_sub">');

  n = 0;
  
  for (var i in child) {
  
    if (typeof child[i] != "object") {

      if (child[i].substring(0,7) == 'base64:') {
    
        document.write('<div class="menu_item" id="'+parent+'_'+n+'">'+decodeBase64(child[i].substring(7,child[i].length))+'</div>');
        continue;

      } else {

        document.write('<div class="menu_item" id="'+parent+'_'+n+'">'+i+'</div>'); // href="'+child[i]+'"

      } // end if
    
    } else {

      document.write('<div class="menu_item" onmouseover="this.className=\'menu_item_hover\';" onmouseout="this.className=\'menu_item\';" id="'+parent+'_'+n+'"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td>'+i+'</td><td width="20px">&#9658;</td></tr></table></div>');
      dhtmlmenu_build_aux(parent+'_'+n, child[i], "x");

    } // end if
    
    n++;

  } // end for

  document.write('</div></div>');

  at_attach(parent, parent+"_child", position);

} // end dhtmlmenu_build_aux()

// ----- Build -----

function dhtmlmenu_build(menu)
{
  for (var i in menu) dhtmlmenu_build_aux(i, menu[i], "y");
}


  // class.form_data.print_content.print_content.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  // Basic usage:
  //
  //     <form id="form1">
  //       First Name: <input type="text" value="Kevin" name="first_name" id="first_name_1">
  //     </form>
  //
  //     <script>
  //
  //       var form     = new form_data();
  //       form.form_id = "form1";
  //       form.is_printable();
  //
  //     </script>
  //
  //     <input type="button" value="Click to Render" onclick="form.printer.render();">

// =================================================================================================================================================

  var printable_forms = new Object();

// =================================================================================================================================================

  if (typeof(form_data) == 'undefined') {

    form_data = {};

  } // end if

  form_data.NAME     = "form_data";
  form_data.VERSION  = "0.1";

  form_data.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  form_data.toString = function () {

    return this.__repr__();

  }; // end toString()

  form_data = function () {

    this.__init__();

  }; // end form_data()

  form_data.prototype = {

    __init__: function () {

      var form_id;
      var printer;

    }, // end __init__()

    form_ids: function () {

      var ids  = [];
      var m    = MochiKit.Base;
      var self = MochiKit.DOM;

      if (typeof(this.form_id) == "undefined" || this.form_id === null) {

        form_elem = self._document;

      } else {

        form_elem = self.getElement(this.form_id);

      } // end if

      m.nodeWalk(form_elem, function (elem) {

        var id = elem.id;

        if (m.isNotEmpty(id)) {

          var tag_name = elem.nodeName.toUpperCase();

          if (tag_name == "SELECT") {

            ids.push(id);
            return null;

          } // end if

          switch (tag_name) {

            case "FORM":
            case "P":
            case "SPAN":
            case "DIV":
            case "TABLE":
            case "TR":
            case "TD":

              return elem.childNodes;
              break;

          } // end switch

          ids.push(id);

          return null;

        } // end if

        return elem.childNodes;

      }); // end nodeWalk

      return [ids];

    }, // end form_ids()

    is_printable: function () {

      this.parent_document = MochiKit.DOM.currentDocument();
      this.printer         = new form_data.print_content();
      this.printer.parent  = this;

    } // end is_printable()

  }; // end class form_data

// =================================================================================================================================================

  if (typeof(form_data.print_content) == 'undefined') {

    form_data.print_content = {};

  } // end if

  form_data.print_content.NAME     = "form_data.print_content";
  form_data.print_content.VERSION  = "0.1";

  form_data.print_content.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  form_data.print_content.toString = function () {

    return this.__repr__();

  }; // end toString()

  form_data.print_content = function () {

    this.__init__();

  }; // end form_data.print_content()

  form_data.print_content.prototype = {

    __init__: function () {

      var parent = new Object();
      var print_window;
      var destination;

    }, // end __init__()

    render: function () {

      var theobj = this;

      if (document.getElementById(this.parent.form_id)) {

        content = document.getElementById(this.parent.form_id);

        if (content.innerHTML) {

          this.print_window = window.open("","print_window");

          MochiKit.DOM.withWindow(this.print_window, function () {

            var prefix            = "wrapper_";
            var doc               = MochiKit.DOM.currentDocument();
            doc.body.innerHTML    = "<html><head><link rel=stylesheet type=\"text/css\" href=\"http://demo.occrra-central.org/registry/css/default.css\"><script src=\"http://demo.occrra-central.org/registry/js/javascript.php\"></script></head><body>"+content.innerHTML+"</body></html>";

            var oid               = theobj.parent.form_id;
            theobj.parent.form_id = theobj.parent.form_id.substring(prefix.length);
            theobj.destination    = eval("doc.getElementById('"+theobj.parent.form_id+"');");

            theobj.render_form();

            theobj.parent.form_id = oid;

            theobj.print_window.focus();

          });

        } // end if

      } // end if

    }, // end render()

    render_form: function () {

      if (this.destination) {

        var theform     = MochiKit.DOM.getElement(this.parent.form_id);
        var fields      = this.parent.form_ids();
        var replacement = "";

        for (var i in fields[0]) {

          var el = MochiKit.DOM.getElement(fields[0][i]);

          if (el && el.id) {

            if (!el.disabled) {

              parent_el   = this.parent.parent_document.getElementById(el.id);
              replacement = "";

              switch(parent_el.type) {

                case 'text':
                case 'password':
                case 'textarea':

                  replacement           = MochiKit.DOM.createDOM("span",{"id":parent_el.id});
                  replacement.innerHTML = parent_el.value;

                  break;

                case 'select-one':

                  if (parent_el.selectedIndex>=0) {

                    replacement           = MochiKit.DOM.createDOM("span",{"id":parent_el.id});
                    replacement.innerHTML = parent_el.options[parent_el.selectedIndex].text;

                  } // end if

                  break;

                case 'select-multiple':

                  var ms_replacement = "";

                  for (var j=0; j<parent_el.options.length; j++) {

                    if (parent_el.options[j].selected) {

                      ms_replacement += parent_el.options[j].text+"<br>\n";

                    } // end if

                  } // end for

                  replacement           = MochiKit.DOM.createDOM("div",{"id":parent_el.id});
                  replacement.innerHTML = ms_replacement;

                  break;

                case 'checkbox':

                  if (el.checked) {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/checkbox_on.gif"});

                  } else {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/checkbox_off.gif"});

                  } // end if

                  break;

                case 'radio':

                  if (el.checked) {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/radio_on.gif"});

                  } else {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/radio_off.gif"});

                  } // end if

                  break;

                case 'button':
                case 'submit':
                case 'hidden':

                  replacement = MochiKit.DOM.createDOM("div",{"id":parent_el.id}," ");

                  break;

                default:

                  replacement = MochiKit.DOM.createDOM("div",{"id":parent_el.id}," ");

                  break;

              } // end switch

              if (replacement) {

                MochiKit.DOM.swapDOM(parent_el.id,replacement);

              } // end if

            } // end if

          } // end if

        } // end for
 
      } // end if

    } // end render_form()

  }; // end class form_data.print_content

// =================================================================================================================================================

  // class.basis_functions.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  try {

    document.execCommand("BackgroundImageCache", false, true);

  } catch(err) {} // end IE6.SP1+ CSS background-flicker fix

  // =====================================================================================
  // from quirksmode:
  // =====================================================================================

    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"
        },
        {		// for newer Netscapes (6+)
          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"
        },
        { 		// for older Netscapes (4-)
          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"
        }
      ]

    };

    BrowserDetect.init();

  // =====================================================================================
/*
  MochiKit.Signal.connect(document, "onkeydown", function(e) {

    if (e.key() && (e.key().string == "KEY_ESC")) {

      MochiKit.LoggingPane.createLoggingPane(true);

    } // end if

  });
*/
  // =====================================================================================

  if (typeof(Basis) == 'undefined') {

    Basis = {};

  } // end if

  Basis.NAME     = "Basis";
  Basis.VERSION  = "0.1";

  Basis.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  Basis.misc_vars = new Object();

  if (MochiKit.DOM.currentDocument().images) {

    Basis.misc_vars["ajax_loading"]     = new Image();
    Basis.misc_vars["ajax_loading"].src = "images/images/ajax_loading.gif";

  } // end if

  MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",function (e) {

    var pos = e.mouse().client;

    Basis.misc_vars["mouse_x"] = pos.x;
    Basis.misc_vars["mouse_y"] = pos.y;

  });

  Basis.connect_unload = function (func) {

    if (func && (typeof(func)=="function")) {

      MochiKit.Signal.connect(window,"onbeforeunload",func);

    } // end if

  }; // end Basis.connect_unload()

  Basis.load_external_javascript = function (url) {

    if (url) {

      var script  = MochiKit.DOM.createDOM("script");
      script.src  = url;
      script.type = "text/javascript";
      document.getElementsByTagName("head")[0].appendChild(script);

    } // end if

  }; // end Basis.connect_unload()

  Basis.get_cookie = function (cookie_name) {

    if (document.cookie.length > 0) {

      var c_start = document.cookie.indexOf(cookie_name + "=");

      if (c_start != -1) {

        c_start   = c_start + cookie_name.length + 1;
        var c_end = document.cookie.indexOf(";",c_start)

        if (c_end == -1) {

          c_end = document.cookie.length;

        } // end if

        return unescape(document.cookie.substring(c_start,c_end));

      } // end if

    } // end if

    return "";

  }; // end Basis.get_cookie()

  Basis.find_key = function (list, value) {

    if (list && (Basis.array_length(list) > 0)) {

      for (var i in list) {

        if (typeof(list[i]) != "function") {

          if (list[i] == value) {

            return i;

          } // end if

        } // end if

      } // end for

    } // end if

    return false;

  }; // end Basis.find_key()

  Basis.find_node = function (key, root) {

    if (key && root) {

      var node = null;

      for (var i in root) {

        if (typeof(root[i]) != "function") {

          if (i == key) {

            node = root[i];

          } // end if

          var tnode = Basis.find_node(key, root[i]);

          if (tnode) {

            node = tnode;

          } // end if

        } // end if

      } // end for

      return node;

    } // end if

  } // end Basis.find_node()

  Basis.keys = function (root, recursive) {

    if (root) {

      var recursive = recursive ? true : false;
      var keys      = [];

      for (var i in root) {

        if (typeof(root[i]) != "function") {

          keys.push(i);

          if (recursive) {

            var tkeys = Basis.keys(root[i], recursive);

            keys      = flattenArray([keys, tkeys]);

          } // end if

        } // end if

      } // end for

      return keys;

    } // end if

  } // end Basis.keys()

  Basis.post_throw = function (url, token, options) {

    if (url && token && options) {

      var data = [];

      options["throw_verify"] = hex_md5(Basis.get_cookie("PHPSESSID"));
      options["throw_vars"]   = Basis.encode64("a:1:{i:0;s:"+ token.length +':"'+ token +'";}');

      for (var i in options) {

        if (!Basis.is_function(options[i])) {

          data.push(INPUT({"type"  : "text",
                           "name"  : i,
                           "value" : options[i]})
                   );

        } // end if

      } // end for

      var form = new FORM({"action" : url,
                           "style"  : "display: none;",
                           "method" : "POST"},
                       data
                     );

      document.body.appendChild(form);

      form.submit();

    } // end options

  }; // end Basis.post_throw()

  Basis.format_filesize = function (size) {

    var size   = Basis.parse_number(size);
    var type   = "bytes";
    var string = "";

    if (size) {

      if ((size > 0) && (size < 1024)) {

        type = "bytes";
        size = (size).toFixed(0);

      } else if ((size >= 1024) && (size < (1024 * 1024))) {

        type = "kilobytes";
        size = (size / 1024).toFixed(2);

      } else if ((size >= (1024 * 1024)) && (size < (1024 * 1024 * 1024))) {

        type = "megabytes";
        size = (size / (1024 * 1024)).toFixed(2);

      } else if ((size >= (1024 * 1024 * 1024)) && (size < (1024 * 1024 * 1024 * 1024))) {

        type = "gigabytes";
        size = (size / (1024 * 1024 * 1024)).toFixed(2);

      } // end if

      size = numberFormatter("###,###.##")(size);

      switch (type) {

        case "bytes":

          string = size + " bytes";

          break;

        case "kilobytes":

          string = size + " KB";

          break;

        case "megabytes":

          string = size + " MB";

          break;

        case "gigabytes":

          string = size + " GB";

          break;

      } // end switch

      return string;

    } // end if

  }; // end Basis.format_filesize()

  Basis.blank_object = function () {

    var a = {};

    for (var i in a) {

      if (Basis.is_function(a[i])) {

        delete a[i];

      } // end if

    } // end for

    return a;

  }; // end Basis.blank_object()

  Basis.ksort = function (arr) {

    var sorted_array = {};
    var temp_sorted  = {};
    var temp_array   = [];
    var x            = 0;

    this.pad = function (count, chr) {

      var count  = (parseInt(count) > 0) ? parseInt(count) : 0;
      var retval = "";

      if (chr) {

        for (var x = 0; x < count; x++) {

          retval += chr;

        } // end for

      } // end if

      return retval;

    }; // end pad()

    for (i in arr) {

      var key = (!i.toString().match(/[^0-9]/g)) ? (this.pad((10 - parseInt(i).toString().length), "0") + parseInt(i).toString()) : i;

      switch (typeof(arr[i])) {

        case "function":
          break;

        case "array":
        case "object":

          temp_sorted[key] = Basis.is_element(arr[i]) ? arr[i] : Basis.ksort(arr[i]);
          temp_array[x++]  = key + "|Basis.ksort.temp_sorted";

          break;

        default:

          temp_array[x++] = key + "|" + arr[i];

          break;

      } // end switch

    } // end for

    temp_array = temp_array.sort();

    for (var i in temp_array) {

      switch (typeof(temp_array[i])) {

        case "function":
        case "array":
        case "object":
          break;

        default:

          var x = temp_array[i].split("|");

          if (x[1] == "Basis.ksort.temp_sorted") {

            sorted_array[x[0]] = temp_sorted[x[0]];

          } else {

            sorted_array[x[0]] = x[1];

          } // end if

          break;

      } // end switch

    } // end for

    return sorted_array;

  }; // end Basis.ksort()

  Basis.is_formfield = function (element) {

    var retval  = false;

    var element = MochiKit.DOM.getElement(element);

    if (element && element.tagName) {

      switch (element.tagName.toUpperCase()) {

        case "INPUT":
        case "SELECT":
        case "TEXTAREA":

          retval = true;

          break;

      } // end switch

    } // end if

    return retval;

  }; // end Basis.is_formfield()

  Basis.is_number = function (value) {

    if (value && value.match && (value.match(/([^0-9\.])/g) != null)) {

      return false;

    } // end if

    return (Basis.parse_number(value) != null) ? true : false;

  }; // end Basis.is_number()

  Basis.is_function = function (variable) {

    return (typeof(variable) == "function") ? true : false;

  }; // end Basis.is_function()

  Basis.parse_number = function (value) {

    if (value != null) {

      if (value == 0) { return 0; } // end if

      var unpad  = value.toString().replace(/(^[0]+)/,"");
      var retval = (unpad.match(/\./g) ? parseFloat(unpad) : parseInt(unpad));

      return (!isNaN(retval)) ? retval : null;

    } // end if

    return null;

  }; // end Basis.parse_number()

  Basis.get_all_parent_scroll = function (element) {

    var scroll  = {"x" : 0, "y" : 0};
    var element = MochiKit.DOM.getElement(element);

    if (element) {

      scroll.x += (element.scrollLeft ? element.scrollLeft : 0);
      scroll.y += (element.scrollTop  ? element.scrollTop  : 0);

      var parent = element.parentNode;

      while (parent) {

        scroll.x += (parent.scrollLeft ? parent.scrollLeft : 0);
        scroll.y += (parent.scrollTop  ? parent.scrollTop  : 0);

        parent    = parent.parentNode;

      } // end while

    } // end if

    return scroll;

  }; // end Basis.get_all_parent_scroll()

  Basis.get_element_dimensions = function (element) {

    var element = MochiKit.DOM.getElement(element);
    var dim     = {"x" : 0, "y" : 0};

    if (element) {

      MochiKit.DOM.makePositioned(element);

      var dim = MochiKit.Style.getElementDimensions(element);

      MochiKit.DOM.undoPositioned(element);

    } // end if

    return dim;

  }; // end Basis.get_element_dimensions()

  Basis.execute_function_with_callbacks = function (func, callbacks) {

    if (typeof(func) == "function") {

      func();

      if (callbacks.length > 0) {

        for (var i = 0; i < callbacks.length; i++) {

          if (typeof(callbacks[i]) == "function") {

            callbacks[i]();

          } // end if

        } // end for

      } // end if

    } // end if

  }; // end Basis.execute_function_with_callbacks()

  Basis.clone = function (obj) {

    if (Basis.is_element(obj)) {

      return obj.cloneNode(true);

    } else {

      if (obj && obj.prototype) {

        return MochiKit.Base.clone(obj);

      } else if (obj && !obj.prototype) {

        return MochiKit.Base.update({}, obj);

      } // end if

    } // end if

  }; // end Basis.clone()

  Basis.pluralize = function (input) {

    if (input) {

      if (input.substring(input.length - 1) == "y") {

        var ch = input.substring(input.length - 2);

        switch (ch) {

          case "a":
          case "e":
          case "i":
          case "o":
          case "u":
            input += "s";
            break;

          default:
            input = input.substring(0, (input.length - 1)) + "ies";
            break;

        } // end switch

      } else if ((input.substring(input.length - 2) == "ss") || (input.substring(input.length - 2) == "ch")) {

        input += "es";

      } else if (input.substring(input.length - 1) != "s") {

        input += "s";

      } // end if

      return input;

    } // end if

  }; // end Basis.pluralize()

  Basis.implode = function (values, token) {

    var token  = token ? token : "";
    var values = (values && (values.length > 0)) ? values : [];
    var string = "";

    for (var i = 0; i < Basis.array_length(values); i++) {

      var value = values[i] ? values[i] : "";

      string   += (value + ((i < (Basis.array_length(values) - 1)) ? token : ""));

    } // end for

    return string;

  }; // end Basis.implode()

  Basis.insert_after = function (node, to_insert) {

    node.parentNode.insertBefore(to_insert, node.nextSibling);

  }; // end Basis.insert_after()

  Basis.preserve_url = function (options) {

    /* just_keys, original_url, keys_add, force_https, force_http */

    var options      = (options && (Basis.array_length(options) > 0)) ? options : {};

    var just_keys    = options["just_keys"]    ? options["just_keys"]    : false;
    var original_url = options["original_url"] ? options["original_url"] : null;
    var keys_add     = options["keys_add"]     ? options["keys_add"]     : {};
    var force_https  = options["force_https"]  ? options["force_https"]  : false;
    var force_http   = options["force_http"]   ? options["force_http"]   : false;

    if (original_url == "clear") {

      original_url = null;

    } // end if

    var url      = original_url ? original_url : ("" + window.location + "").split("?")[0];
    var split    = url.split(":");
    var protocol = split[0];

    protocol     = (force_http ? "http" : (force_https ? "https" : "http"));

    original_url = original_url ? original_url : ("" + window.location + "");

    original_url = original_url.split("?");
    original_url = original_url[1] ? original_url[1] : "";
    original_url = original_url.split("&");

    var ourl     = {};

    if (original_url.length > 0) {

      for (var i in original_url) {

        if (typeof(original_url[i]) != "function") {

          var qitem = original_url[i];

          var titem = qitem.split("=");

          if (titem[0] && titem[1]) {

            ourl[titem[0]] = titem[1];

          } // end if

        } // end if

      } // end for

    } // end if

    for (var i in keys_add) {

      if (typeof(keys_add[i]) != "function") {

        var key   = i;
        var value = keys_add[i];

        if (value || (value == 0)) {

          ourl[key] = value;

         } else {

          if (ourl[key]) {

            delete ourl[key];

          } // end if

        } // end if

      } // end if

    } // end foreach

    original_url = url;

    if (original_url.substring(original_url.length - 1, 1) != "?") {

      original_url += "?";

    } // end if

    keys = "";

    for (var i in ourl) {

      if (typeof(ourl[i]) != "function") {

        var key   = i;
        var value = ourl[i];

        if (value || (value == 0)) {

          keys += (key + "=" + value + "&");

        } // end if

      } // end if

    } // end foreach

    if (just_keys) {

      return keys;

    } // end if

    original_url += keys;

    return original_url.substring(0, (original_url.length - 1));

  } // end Basis.preserve_url()

  Basis.attach_tooltip = function (element, text, is_html) {
/*
    if (BrowserDetect) {

      if ((BrowserDetect.browser != "Firefox") || (BrowserDetect.version < 2)) {

        return;

      } // end if

    } // end if
*/
    this.position_tooltip = MochiKit.Base.noop;

    var element           = MochiKit.DOM.getElement(element);

    if (element && text) {

      element.tooltip_text = text;
      element.is_html      = (is_html == true) ? true : false;

      element.signals = element.signals ? element.signals : [];

      element.signals.push(MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

        var tooltip     = DIV({"id"    : "Basis.tooltip",
                               "class" : "Basis.tooltip",
                               "style" : "white-space: nowrap;"
                              }, (element.is_html ? null : element.tooltip_text));

        tooltip.signals = tooltip.signals ? tooltip.signals : [];

        if (element.is_html) {

          tooltip.innerHTML = element.tooltip_text;

        } // end if

        element.tooltip = tooltip;

        var dim         = MochiKit.Style.getElementDimensions(tooltip);

        Basis.set_style(tooltip, {"position" : "absolute"});

        document.body.appendChild(tooltip);

        this.position_tooltip = MochiKit.Base.bind(function () {

          var scroll   = Basis.scroll_coords();

          var mouse    = {"x" : Basis.misc_vars.mouse_x,
                          "y" : Basis.misc_vars.mouse_y};

          MochiKit.Style.setElementPosition(this, {"x" : (mouse.x + scroll.x + 15),
                                                   "y" : (mouse.y + scroll.y + 10)});

          if (BrowserDetect) {

            if ((BrowserDetect.browser == "Firefox") && (BrowserDetect.version >= 2)) {

              var pos      = MochiKit.Style.getElementPosition(this);
              var dim      = MochiKit.Style.getElementDimensions(this);
              var viewport = MochiKit.Style.getViewportDimensions();

              if ((pos.x + dim.w) > (viewport.w + scroll.x)) {

                MochiKit.Style.setElementPosition(this, {"x" : (mouse.x + scroll.x - dim.w - 15),
                                                         "y" : (mouse.y + scroll.y + 10)});

              } // end if

            } // end if

          } // end if

        }, tooltip); // end position_tooltip()

        tooltip.signals.push(MochiKit.Signal.connect(tooltip, "onmouseover", MochiKit.Base.bind(function () {

          Basis.remove_element(this);

        }, tooltip)));

      }, this)));


      element.signals.push(MochiKit.Signal.connect(element, "onmousemove", MochiKit.Base.bind(function () {

        this.position_tooltip();

      }, this)));

      element.signals.push(MochiKit.Signal.connect(element, "onmouseleave", MochiKit.Base.bind(function () {

        Basis.remove_element(this.tooltip);

      }, element)));

    } // end if

  }; // end Basis.attach_tooltip()

//Basis.editable_element_request_queue = {};

  Basis.make_text_element_editable = function (element, scaffold_options) {

    /*

      scaffold_options is required, here are the basic options:

      {"sid"           : current PHP SESSION_ID,
       "url"           : URL for ajax_scaffold to post to,
       "resource_id"   : used by catch code to determine what table, row and field to update,
       "database"      : OPTIONAL, used by catch code to determine what database to update
       "table"         : OPTIONAL, used by catch code to determine what table to update if there is no matching resource_id
       "field"         : OPTIONAL, used by catch code to determine what field to update
       "custom_action" : OPTIONAL, used by catch code to determine what code to execute
       "is_password"   : true/false, used by Basis.make_text_element_editable, not Basis.ajax_scaffold
      }

    */

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      element.is_password   = (scaffold_options["is_password"] == true) ? true : false;

      element.signals       = [];

      element.clear_signals = MochiKit.Base.bind(function () {

        if (this.signals) {

          for (var i = 0; i < this.signals.length; i++) {

            MochiKit.Signal.disconnect(this.signals[i]);

          } // end for

        } // end if

        if (this.shadow && this.shadow.signals) {

          for (var i = 0; i < this.shadow.signals.length; i++) {

            MochiKit.Signal.disconnect(this.shadow.signals[i]);

          } // end for

        } // end if

      }, element);

      if (!Basis.is_formfield(element)) {

        element.value     = element.value ? element.value : MochiKit.DOM.scrapeText(element);
        element.editing   = false;

        element.edit_text = MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.editing         = true;

            var input            = INPUT({"id"    : (this.id +"_input"),
                                          "type"  : (this.is_password ? "password" : "text"),
                                          "value" : (this.is_password ? "" : this.value),
                                          "style" : "background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"
                                         });

            var dim              = Basis.get_element_dimensions(this);

            input.is_password    = this.is_password;

            input.signals        = [];

            this.font_multiplier = (dim.w / this.value.length);

            Basis.set_style(input, {"width"       : Math.floor(this.font_multiplier * this.value.length) + 15,
                                    "font-family" : MochiKit.Style.getStyle(this, "font-family"),
                                    "font-size"   : MochiKit.Style.getStyle(this, "font-size")
                                   });

            input.shadow = this;
            this.shadow  = input;

            MochiKit.DOM.swapDOM(this, input);

            input.save_editable_element_changes = MochiKit.Base.bind(function () {

              window.status   = "Saving...";

              if (this.value == this.shadow.value) {

                this.cancel_save_editable_element_changes();

                window.status = "Done";

              } else {

                var to_post              = new Object();
                to_post["to"]            = this.value;
                to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
                to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
                to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
                to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
                to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
                to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

                var as   = new Basis.ajax_scaffold;
                as.alias = "Basis.save_editable_element_changes";

                MochiKit.Base.update(as, scaffold_options);

                as.input      = this;

                as.on_success = function (req) {

                  var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                  if (response["text"] == "true") {

                    if (this.is_password) {

                      this.input.shadow.innerHTML = this.input.shadow.value;

                    } else {

                      this.input.shadow.innerHTML = this.input.value;
                      this.input.shadow.value     = this.input.value;

                    } // end if

                    MochiKit.DOM.swapDOM(this.input, this.input.shadow);

                  } else {

                    this.input.cancel_save_editable_element_changes();

                  } // end if

                  this.input.shadow.clear_signals();

                  this.input.shadow.editing = false;

                  window.status             = "Done";

                };

                as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

                as.post({"to_post":to_post});

              } // end if

            }, input); // end save_editable_element_changes()

            input.cancel_save_editable_element_changes = MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".cancel_save_editable_element_changes()");

                this.shadow.clear_signals();

                MochiKit.DOM.swapDOM(this, this.shadow);

                this.shadow.editing = false;

              } // end if

            }, input); // end cancel_save_editable_element_changes()

            input.signals.push(MochiKit.Signal.connect(input, "onblur", MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_element_changes()!");

                this.save_editable_element_changes();

              } // end if

            }, input)));

            this.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

              MochiKit.Logging.log("document.onclick()");

              if (e.target() && (e.target() != this) && (e.target() != this.shadow)) {

                MochiKit.Logging.log("document.onclick(), attempting to save_editable_element_changes()!");

                this.save_editable_element_changes();

              } // end if

            }, input)));

            input.signals.push(MochiKit.Signal.connect(input, "onkeydown", MochiKit.Base.bind(function(e) {

              var key = e.key();

              if (key.code == 13) {

                MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_element_changes()!");

                this.save_editable_element_changes();

              } else if (key.code == 27) {

                MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_element_changes()!");

                this.cancel_save_editable_element_changes();

              } // end if

              // Basis.set_style(this, {"width" : Math.floor(this.shadow.font_multiplier * this.value.length)});

            }, input)));

            input.focus();

            input.select();

          } // end if

        }, element);

        element.onmouseleave = MochiKit.Base.bind(function () {

          if (!this.editing) {

            var original_contents = MochiKit.DOM.getElement(this.id + "_replace");

            if (original_contents) {

              var restore_text = document.createTextNode(MochiKit.DOM.scrapeText(original_contents));

              this.innerHTML   = "";

              MochiKit.DOM.removeElementClass(original_contents, "Basis.edit_text.highlight");

              this.appendChild(restore_text);

            //var dim = Basis.get_element_dimensions(this);

            //MochiKit.Style.setElementDimensions(this, dim);

              this.clear_signals();

            } // end if

          } // end if

        }, element);

        // these two shouldn't clear:

        MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.onmouseleave();

            var dim          = Basis.get_element_dimensions(this);

            var pencil_image = IMG({"src" : "images/images/edit.gif"
                                   });

            var pencil       = TABLE({
                                    //"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0",
                                      "style"       : "cursor: pointer;",
                                      "class"       : "Basis.edit_text.highlight"
                                     },
                                 TBODY(null,
                                   TR(null,
                                     TD({"id"    : this.id + "_replace",
                                         "width" : dim.w,
                                         "style" : "font-size: "   + MochiKit.Style.getStyle(this, "font-size")   + "; " +
                                                   "font-weight: " + MochiKit.Style.getStyle(this, "font-weight") + "; " +
                                                   "font-family: " + MochiKit.Style.getStyle(this, "font-family") + ";"
                                        },
                                       //this.firstChild
                                       document.createTextNode(MochiKit.DOM.scrapeText(this))
                                     ),
                                     TD({"style" : "padding-left: 5px;"
                                        },
                                       pencil_image
                                     )
                                   )
                                 )
                               );

            if (this.firstChild) {

              Basis.remove_element(this.firstChild);

            } // end if

            this.appendChild(pencil);

            var edit = MochiKit.Base.bind(function () {

              this.onmouseleave();

              this.edit_text();

            }, this);

            this.signals.push(MochiKit.Signal.connect(pencil_image, "onclick",    edit));
            this.signals.push(MochiKit.Signal.connect(pencil,       "ondblclick", edit));

          } // end if

        }, element));

        MochiKit.Signal.connect(element, "onmouseleave", element.onmouseleave);

      } else {

        element.original_value = element.value;

        element.save_editable_element_changes = MochiKit.Base.bind(function () {

          window.status = "Saving...";

          var to_post              = new Object();
          to_post["to"]            = this.value;
          to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
          to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
          to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
          to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
          to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
          to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

          var as   = new Basis.ajax_scaffold;
          as.alias = "Basis.save_editable_element_changes";

          MochiKit.Base.update(as, scaffold_options);

          as.element    = this;

          as.on_success = function (req) {

            var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

            if (response["text"] == "true") {

              as.element.original_value = as.element.value;

            } // end if

            window.status = "Done";

          };

          as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

          as.post({"to_post":to_post});

        }, element); // end save_editable_element_changes()

        element.signals.push(MochiKit.Signal.connect(element, "onblur", MochiKit.Base.bind(function () {

          if (element.value != element.original_value) {

            MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_element_changes()!");

            this.save_editable_element_changes();

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

          if (element.value != element.original_value) {

            if (e.target() && (e.target() != this)) {

              MochiKit.Logging.log("document.onclick(), attempting to save_editable_element_changes()!");

              this.save_editable_element_changes();

            } // end if

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(element, "onkeydown", MochiKit.Base.bind(function(e) {

          var key = e.key();

          if (key.code == 13) {

            if (element.value != element.original_value) {

              MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_element_changes()!");

              this.save_editable_element_changes();

            } // end if

          } // end if

          // Basis.set_style(this, {"width" : Math.floor(this.shadow.font_multiplier * this.value.length)});

        }, element)));

      } // end if

    } // end if

  }; // end Basis.make_text_element_editable()

  Basis.make_text_element_dropdown = function (element, dropdown_options, scaffold_options) {

    /*

      scaffold_options is required, here are the basic options:

      {"sid"           : current PHP SESSION_ID,
       "url"           : URL for ajax_scaffold to post to,
       "resource_id"   : used by catch code to determine what table, row and field to update,
       "database"      : OPTIONAL, used by catch code to determine what database to update
       "table"         : OPTIONAL, used by catch code to determine what table to update if there is no matching resource_id
       "field"         : OPTIONAL, used by catch code to determine what field to update
       "custom_action" : OPTIONAL, used by catch code to determine what code to execute
       "is_date"       : true/false, used by Basis.make_text_element_dropdown, not Basis.ajax_scaffold
       "is_time"       : true/false, used by Basis.make_text_element_dropdown, not Basis.ajax_scaffold
      }

    */

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      element.value         = element.value ? element.value : MochiKit.DOM.scrapeText(element);
      element.editing       = false;
      element.signals       = [];

      element.clear_signals = MochiKit.Base.bind(function () {

        if (this.signals) {

          for (var i = 0; i < this.signals.length; i++) {

            MochiKit.Signal.disconnect(this.signals[i]);

          } // end for

        } // end if

        if (this.shadow && this.shadow.signals) {

          for (var i = 0; i < this.shadow.signals.length; i++) {

            MochiKit.Signal.disconnect(this.shadow.signals[i]);

          } // end for

        } // end if

      }, element);

      if (!Basis.is_formfield(element)) {

        element.make_dropdown = MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.editing         = true;

            var select           = SELECT({"id"    : (this.id +"_select"),
                                           "style" : "background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"
                                          });

            Basis.select_add_options(select, dropdown_options);
            Basis.select_select_item_by_text(select, this.value);

            var dim              = Basis.get_element_dimensions(this);

            select.signals       = [];

            this.font_multiplier = (dim.w / this.value.length);

            Basis.set_style(select, {"width"       : Math.floor(this.font_multiplier * this.value.length) + 30,
                                     "font-family" : MochiKit.Style.getStyle(this, "font-family"),
                                     "font-size"   : MochiKit.Style.getStyle(this, "font-size")
                                    });

            select.shadow = this;
            this.shadow   = select;

            MochiKit.DOM.swapDOM(this, select);

            select.save_editable_dropdown_changes = MochiKit.Base.bind(function () {

              window.status   = "Saving...";

              if (this.options[this.selectedIndex].text == this.shadow.value) {

                this.cancel_save_editable_dropdown_changes();

                window.status = "Done";

              } else {

                var to_post              = new Object();
                to_post["to"]            = this.value;
                to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
                to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
                to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
                to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
                to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
                to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

                if (scaffold_options["is_time"] || scaffold_options["is_date"]) {

                  var parts = this.id.split("_");
                  var part  = (parts[parts.length - 2]);
                  var rrv   = (parts[parts.length - 1]);
                  var base  = this.id.substring(0, this.id.length + (-1 * (part.length + rrv.length + 2)));

                  switch (part) {

                    case "hour":
                      var minute    = Basis.get_element(base + "_minute_" + rrv);
                      var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                      to_post["to"] = this.options[this.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                      break;

                    case "minute":
                      var hour      = Basis.get_element(base + "_hour_" + rrv);
                      var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                      to_post["to"] = hour.options[hour.selectedIndex].text + ":" + this.options[this.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                      break;

                    case "ampm":
                      var hour      = Basis.get_element(base + "_hour_" + rrv);
                      var minute    = Basis.get_element(base + "_minute_" + rrv);
                      to_post["to"] = hour.options[hour.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + this.options[this.selectedIndex].text ;
                      break;

                    case "year":
                      var month     = Basis.get_element(base + "_month_" + rrv);
                      var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                      var day       = Basis.get_element(base + "_day_" + rrv);
                      to_post["to"] = this.options[this.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                      break;

                    case "month":
                      var year      = Basis.get_element(base + "_year_" + rrv);
                      var month_val = (this.options[this.selectedIndex].value.length == 1) ? ("0" + this.options[this.selectedIndex].value) : this.options[this.selectedIndex].value;
                      var day       = Basis.get_element(base + "_day_" + rrv);
                      to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                      break;

                    case "day":
                      var year      = Basis.get_element(base + "_year_" + rrv);
                      var month     = Basis.get_element(base + "_month_" + rrv);
                      var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                      to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + this.options[this.selectedIndex].text ;
                      break;

                  } // end switch

                } // end if

                var as   = new Basis.ajax_scaffold;
                as.alias = "Basis.save_editable_element_changes";

                MochiKit.Base.update(as, scaffold_options);

                as.select     = this;

                as.on_success = function (req) {

                  var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                  if (response["text"] == "true") {

                    this.select.shadow.innerHTML = this.select.options[this.select.selectedIndex].text;
                    this.select.shadow.value     = this.select.options[this.select.selectedIndex].text;

                    MochiKit.DOM.swapDOM(this.select, this.select.shadow);

                  } else {

                    this.select.cancel_save_editable_dropdown_changes();

                  } // end if

                  this.select.shadow.clear_signals();

                  this.select.shadow.editing = false;

                  window.status             = "Done";

                };

                as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

                as.post({"to_post":to_post});

              } // end if

            }, select); // end save_editable_dropdown_changes()

            select.cancel_save_editable_dropdown_changes = MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".cancel_save_editable_dropdown_changes()");

                this.shadow.clear_signals();

                MochiKit.DOM.swapDOM(this, this.shadow);

                this.shadow.editing = false;

              } // end if

            }, select); // end cancel_save_editable_dropdown_changes()

             select.signals.push(MochiKit.Signal.connect(select, "onblur", MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } // end if

            }, select)));

            this.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

              MochiKit.Logging.log("document.onclick()");

              if (e.target() && (e.target() != this) && (e.target() != this.shadow)) {

                MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } // end if

            }, select)));

            select.signals.push(MochiKit.Signal.connect(select, "onkeydown", MochiKit.Base.bind(function(e) {

              var key = e.key();

              if (key.code == 13) {

                MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } else if (key.code == 27) {

                MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_dropdown_changes()!");

                this.cancel_save_editable_dropdown_changes();

              } // end if

            }, select)));

            select.focus();

          } // end if

        }, element);

        element.onmouseleave = MochiKit.Base.bind(function () {

          if (!this.editing) {

            var original_contents = MochiKit.DOM.getElement(this.id + "_replace");

            if (original_contents) {

              var restore_text = document.createTextNode(MochiKit.DOM.scrapeText(original_contents));

              this.innerHTML   = "";

              MochiKit.DOM.removeElementClass(original_contents, "Basis.make_dropdown.highlight");

              this.appendChild(restore_text);

              var dim = Basis.get_element_dimensions(this);

              MochiKit.Style.setElementDimensions(this, dim);

              this.clear_signals();

            } // end if

          } // end if

        }, element);

        // these two shouldn't clear:

        MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.onmouseleave();

            var dim          = Basis.get_element_dimensions(this);

            var pencil_image = IMG({"src" : "images/images/edit.gif"
                                   });

            var pencil       = TABLE({
                                    //"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0",
                                      "style"       : "cursor: pointer;",
                                      "class"       : "Basis.make_dropdown.highlight"
                                     },
                                 TBODY(null,
                                   TR(null,
                                     TD({"id"    : this.id + "_replace",
                                         "width" : dim.w,
                                         "style" : "font-size: "   + MochiKit.Style.getStyle(this, "font-size")   + "; " +
                                                   "font-weight: " + MochiKit.Style.getStyle(this, "font-weight") + "; " +
                                                   "font-family: " + MochiKit.Style.getStyle(this, "font-family") + ";"
                                        },
                                       this.firstChild
                                     ),
                                     TD({"style" : "padding-left: 5px;"
                                        },
                                       pencil_image
                                     )
                                   )
                                 )
                               );

            this.appendChild(pencil);

            var edit = MochiKit.Base.bind(function () {

              this.onmouseleave();

              this.make_dropdown();

            }, this);

            this.signals.push(MochiKit.Signal.connect(pencil_image, "onclick",    edit));
            this.signals.push(MochiKit.Signal.connect(pencil,       "ondblclick", edit));

          } // end if

        }, element));

        MochiKit.Signal.connect(element, "onmouseleave", element.onmouseleave);

      } else {

        element.original_value = element.value;

        element.save_editable_dropdown_changes = MochiKit.Base.bind(function () {

          window.status   = "Saving...";

          var to_post              = new Object();
          to_post["to"]            = this.value;
          to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
          to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
          to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
          to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
          to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
          to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

          if (scaffold_options["is_time"] || scaffold_options["is_date"]) {

            var parts = this.id.split("_");
            var part  = (parts[parts.length - 2]);
            var rrv   = (parts[parts.length - 1]);
            var base  = this.id.substring(0, this.id.length + (-1 * (part.length + rrv.length + 2)));

            switch (part) {

              case "hour":
                var minute    = Basis.get_element(base + "_minute_" + rrv);
                var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                to_post["to"] = this.options[this.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                break;

              case "minute":
                var hour      = Basis.get_element(base + "_hour_" + rrv);
                var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                to_post["to"] = hour.options[hour.selectedIndex].text + ":" + this.options[this.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                break;

              case "ampm":
                var hour      = Basis.get_element(base + "_hour_" + rrv);
                var minute    = Basis.get_element(base + "_minute_" + rrv);
                to_post["to"] = hour.options[hour.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + this.options[this.selectedIndex].text ;
                break;

              case "year":
                var month     = Basis.get_element(base + "_month_" + rrv);
                var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                var day       = Basis.get_element(base + "_day_" + rrv);
                to_post["to"] = this.options[this.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                break;

              case "month":
                var year      = Basis.get_element(base + "_year_" + rrv);
                var month_val = (this.options[this.selectedIndex].value.length == 1) ? ("0" + this.options[this.selectedIndex].value) : this.options[this.selectedIndex].value;
                var day       = Basis.get_element(base + "_day_" + rrv);
                to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                break;

              case "day":
                var year      = Basis.get_element(base + "_year_" + rrv);
                var month     = Basis.get_element(base + "_month_" + rrv);
                var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + this.options[this.selectedIndex].text ;
                break;

            } // end switch

          } // end if

          var as   = new Basis.ajax_scaffold;
          as.alias = "Basis.save_editable_element_changes";

          MochiKit.Base.update(as, scaffold_options);

          as.element    = this;

          as.on_success = function (req) {

            var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

            if (response["text"] == "true") {

              as.element.original_value = as.element.value;

            } // end if

            window.status = "Done";

          };

          as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

          as.post({"to_post":to_post});

        }, element); // end save_editable_dropdown_changes()

        element.signals.push(MochiKit.Signal.connect(element, "onblur", MochiKit.Base.bind(function () {

          if (element.value != element.original_value) {

            MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");

            this.save_editable_dropdown_changes();

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

          if (element.value != element.original_value) {

            if (e.target() && (e.target() != this)) {

              MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");

              this.save_editable_dropdown_changes();

            } // end if

          } // end if

        }, element)));
 
        element.signals.push(MochiKit.Signal.connect(element, "onkeydown", MochiKit.Base.bind(function(e) {

          var key = e.key();

          if (key.code == 13) {

            if (element.value != element.original_value) {

              MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");

              this.save_editable_dropdown_changes();

            } // end if

          } // end if

        }, element)));

      } // end if

    } // end if

  }; // end Basis.make_text_element_dropdown()

  Basis.get_css = function (selector) {

    if (selector && document.styleSheets) {

      for (var i = (document.styleSheets.length - 1); i >= 0; i--) {

        if (document.styleSheets[i] && document.styleSheets[i].href && (document.styleSheets[i].href.indexOf("http://") != -1) && (document.styleSheets[i].href.split("http://")[1].split("/")[0] != window.location.href.split("http://")[1].split("/")[0])) {

          // some browsers won't allow non-domain stylesheets to be accessed due to XSS; we will ignore them

          continue;

        } // end if

        var list = document.styleSheets[i].cssRules ? document.styleSheets[i].cssRules : document.styleSheets[i].rules;

        if (list) {

          for (var x = 0; x < list.length; x++) {

            if (list[x].selectorText && (list[x].selectorText.toLowerCase() == selector.replace(/ /g, "").toLowerCase())) {

              // converting decimal RGB color declarations back to hex

              var text = list[x].style.cssText;

              var rgbs = text.match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/g);

              if (rgbs && (rgbs.length > 0)) {

                for (var y = 0; y < rgbs.length; y++) {

                  var temp = rgbs[y].match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/);

                  if (temp.length == 4) {

                    text = text.replace(rgbs[y], ("#" + ((parseInt(temp[1]).toString(16).length == 1) ? ("0" + parseInt(temp[1]).toString(16)) : parseInt(temp[1]).toString(16)) +
                                                        ((parseInt(temp[2]).toString(16).length == 1) ? ("0" + parseInt(temp[2]).toString(16)) : parseInt(temp[2]).toString(16)) +
                                                        ((parseInt(temp[3]).toString(16).length == 1) ? ("0" + parseInt(temp[3]).toString(16)) : parseInt(temp[3]).toString(16)) + ";"));

                  } // end if

                } // end for

              } // end if

              return text.toLowerCase();

            } // end if

          } // end for

        } // end if

      } // end for

    } // end if

    return null;

  } // end Basis.get_css()

  Basis.get_direct_child_elements_by_tag_and_class_name = function (tag_name, class_name, parent) {

    var tag_name   = tag_name   ? tag_name   : null;
    var class_name = class_name ? class_name : null;
    var parent     = MochiKit.DOM.getElement(parent) ? MochiKit.DOM.getElement(parent) : document;

    var children   = [];

    if ((tag_name || class_name) && parent) {

      var potential_children = MochiKit.DOM.getElementsByTagAndClassName(tag_name, class_name, parent);

      if (potential_children.length > 0) {

        for (var i = 0; i < potential_children.length; i++) {

          if (potential_children[i].parentNode && (potential_children[i].parentNode == parent)) {

            children.push(potential_children[i]);

          } // end if

        } // end for

      } // end if

    } // end if

    return children;

  }; // end Basis.get_direct_child_elements_by_tag_and_class_name()

  Basis.convert_nested_elements_to_tree = function (element, nested_tag, default_expanded, ignore_root, nested_tag_class_name) {

    if (!Basis.trees) { Basis.trees = {}; } // end if

    var default_expanded = (default_expanded != null) ? default_expanded : false;
    var ignore_root      = (ignore_root      != null) ? ignore_root      : false;

    var nested_tag            = nested_tag ? nested_tag : "div";
    var nested_tag_class_name = nested_tag_class_name ? nested_tag_class_name : null;
    var element               = MochiKit.DOM.getElement(element);

    if (element) {

      var index          = (element.id ? element.id : Basis.array_length(Basis.trees));
      Basis.trees[index] = {"nodes" : {"with_children"    : [],
                                       "without_children" : []}};

      element.tree       = Basis.trees[index];

      MochiKit.Base.nodeWalk(element, function (node) {

        var parent = node.parentNode;

        if (parent) {

          // CREATE CONTAINER DIV, INSERT AFTER CURRENT UNTRANSFORMED DIV
          var container = MochiKit.DOM.createDOM(nested_tag, {"id" : (node.id + "_c")});
          var children  = MochiKit.DOM.getElementsByTagAndClassName(nested_tag, nested_tag_class_name, node);

          if (!node.nextSibling) {

            var next_sibling = DIV({"style" : "display: none;"});

            parent.appendChild(next_sibling);

            parent.insertBefore(container, next_sibling);

            Basis.remove_element(next_sibling);

          } else {

            parent.insertBefore(container, node.nextSibling);

          } // end if

          // APPEND ALL CHILD DIVS OF UNTRANSFORMED DIV TO CONTAINER DIV
          for (var i = 0; i < children.length; i++) {

            if (children[i].parentNode == node) {

              container.appendChild(children[i]);

            } // end if

          } // end for

          // SET REFERENCES
          node.tree_children    = container;
          container.tree_parent = node;

          MochiKit.DOM.addElementClass(container, "Basis.file_explorer.container");

          if (container.nextSibling) {

            MochiKit.DOM.addElementClass(container, "has_remaining_siblings");

          } // end if

          if (container.childNodes.length == 0) {

            MochiKit.DOM.addElementClass(container, "invisible");

          } // end if

          if (ignore_root && (node == element)) {

            var placeholder = TD();

            var new_node    = TABLE({"width"       : "100%",
                                     "border"      : "0",
                                     "cellpadding" : "0",
                                     "cellspacing" : "0"},
                                TBODY(null,
                                  TR(null,
                                    TD({"width" : "18"},
                                      IMG({"src"    : "images/images/spacer.gif",
                                           "width"  : "18",
                                           "height" : "18"})
                                    ),
                                    placeholder
                                  )
                                )
                              );

          } else {

            if (!default_expanded) {

              var image_src   = (container.childNodes.length == 0) ?
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif") : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node.gif") : ("images/images/default_icons/tree/tree-node-end.gif"));

              container.style.display = "none";

            } else {

              var image_src   = (container.childNodes.length == 0) ?
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif")      : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node-open.gif") : ("images/images/default_icons/tree/tree-node-open-end.gif"));

            } // end if

            var image       = IMG({"src"   : image_src,
                                   "id"    : (node.id + "_toggle"),
                                   "style" : ((container.childNodes.length == 0) ? "" : "cursor: pointer;")
                                  });

            image.open      = default_expanded;

            if (container.childNodes.length > 0) {

              element.tree["nodes"]["with_children"].push(image);

              MochiKit.Signal.connect(image, "onclick", MochiKit.Base.bind(function () {

                var container = MochiKit.DOM.getElement((this.id.substring(0, (this.id.length - ("_toggle").length)) + "_c"));

                if (container) {

                  if (this.open) {

                    var image_src   = (container.childNodes.length == 0) ?
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif") : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node.gif") : ("images/images/default_icons/tree/tree-node-end.gif"));

                    container.style.display = "none";
                    this.src                = image_src;
                    this.open               = false;

                  } else {

                    var image_src   = (container.childNodes.length == 0) ?
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif")      : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node-open.gif") : ("images/images/default_icons/tree/tree-node-open-end.gif"));

                    container.style.display = "";
                    this.src                = image_src;
                    this.open               = true;

                  } // end if

                } // end if

              }, image));

            } else {

              element.tree["nodes"]["without_children"].push(image);

            } // end if

            var placeholder  = TD();
            var branch_image = TD({"width" : "18",
                                   "style" : "vertical-align: top;"
                                  }, image);

            var new_node     = TABLE({"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0"},
                                 TBODY(null,
                                   TR(null,
                                     branch_image,
                                     placeholder
                                   )
                                 )
                               );

            if (container.nextSibling) {

              // MochiKit.DOM.addElementClass(branch_image, "has_remaining_siblings");

            } // end if

          } // end if

          // INSERT WRAPPER TABLE AFTER CURRENT UNTRANSFORMED DIV
          if (node.nextSibling) {

            node.parentNode.insertBefore(new_node, node.nextSibling);

          } else {

            node.parentNode.appendChild(new_node);

          } // end if

          // TRANSFORM DIV BY MOVING UNTRANSFORMED DIV INSIDE OF WRAPPER TABLE
          placeholder.appendChild(node);

          // CREATE BLANK CONTAINER

          var blank_container = SPAN({"id"    : node.id + "_wrapper",
                                      "style" : "display: block; position: static;",
                                      "class" : "Basis.file_explorer.node_container"
                                     });

          // INSERT BLANK CONTAINER BEFORE WRAPPER TABLE

          new_node.parentNode.insertBefore(blank_container, new_node);

          // APPEND WRAPPER TABLE AND CONTAINER DIV TO BLANK CONTAINER TO ENCAPSULATE

          blank_container.appendChild(new_node);
          blank_container.appendChild(container);

          return container.childNodes;

        } // end if

      });

    } // end if

  }; // end Basis.convert_nested_elements_to_tree()

  Basis.set_element_dimensions = function (element, dimensions, units) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      return MochiKit.Style.setElementDimensions(element, dimensions, units);

    } // end if

  }; // end Basis.set_element_dimensions()

  Basis.set_element_position = function (element, options) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var options   = options ? options : {};
      var positions = {};

      options["x"]  = Basis.is_number(options["x"]) ? Basis.parse_number(options["x"]) : 0;
      options["y"]  = Basis.is_number(options["y"]) ? Basis.parse_number(options["y"]) : 0;

      switch (options["mode"]) {

        case "relative":

          element.style.position = "relative";

          var relative_to = MochiKit.DOM.getElement(options["relative_to"]);

          if (relative_to) {

            element.style.left = 0;
            element.style.top  = 0;

            positions["element"]     = MochiKit.Style.getElementPosition(element);
            positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

            positions["element"]     = positions["element"]     ? positions["element"]     : {"x" : 0, "y" : 0};
            positions["relative_to"] = positions["relative_to"] ? positions["relative_to"] : {"x" : 0, "y" : 0};

            var offset = {"x" : ((positions["relative_to"].x - positions["element"].x) + options["x"]),
                          "y" : ((positions["relative_to"].y - positions["element"].y) + options["y"])};

            element.style.left = offset.x;
            element.style.top  = offset.y;

          } // end if

          break;

        case "absolute":
        default:

          element.style.position = "absolute";

          var relative_to = MochiKit.DOM.getElement(element.offsetParent);

          if (relative_to) {

            positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

            MochiKit.Style.setElementPosition(element, {"x" : -1 * (positions["relative_to"].x - options["x"]),
                                                        "y" : -1 * (positions["relative_to"].y - options["y"])});

          } // end if

          break;

      } // end switch

    } // end if

  }; // end Basis.set_element_position()

  Basis.get_style = function (element, style) {

    var got     = "";

    var element = MochiKit.DOM.getElement(element);

    if (element && style) {

      got = MochiKit.Style.getStyle(element, style);

    } // end if

    return (got ? got : "");

  }; // end Basis.get_style()

  Basis.set_style = function (element, style) {

    var element = MochiKit.DOM.getElement(element);

    if (element && style) {

      for (var i in style) {

        if (!Basis.is_function(style[i]) && MochiKit.Base.camelize(i)) {

          if (i == "opacity") {

            MochiKit.Style.setOpacity(element, style[i]);

          } else {

            if (Basis.is_number(style[i]) && (style[i] < 0)) {

              style[i] = 0;

            } // end if

            element.style[MochiKit.Base.camelize(i)] = style[i];

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.set_style()

  Basis.sort_ul = function (ul, get, descending) {

    // Based off of code from http://www.the-art-of-web.com/javascript/shellsort

    var ul = Basis.get_element(ul);

    if (ul) {

      var items  = MochiKit.DOM.getElementsByTagAndClassName("LI", null, ul);
      var length = items.length;

      function compare(a, b, descending) { 

        return (descending) ? (a > b) : (a < b);

      } // end compare()

      var exchange = function (a, b) {

        ul.insertBefore(items[a], items[b]);

      }; // end exchange()

      var get = (typeof(get) == "function") ? get : function (items, a) {

        return MochiKit.DOM.scrapeText(items[a]);

      }; // end get()

      function isort(m, k, descending) {

        for (var j = (m + k); j < length; j += k) {

          for (var i = j; i >= k && compare(get(items, i), get(items, (i - k)), descending); i -= k) {

            exchange(i, (i - k));

          } // end for

        } // end for

      } // end isort()

      // implement shell sort:

      if ((k = Math.floor(length / 5)) > 7) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end if

      if ((k = Math.floor(length / 7)) > 7) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end if

      for(k = 7; k > 0; k -= 2) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end for

      var sorted = true;

      for (var i = 0; i < length; i++) {

        if (get(items, i) > get(items, (i + 1))) {

          sorted = false;
          break;

        } // end if

      } // end for

      if (!sorted) {

        Basis.sort_ul(ul, get, descending);

      } // end if

    } // end if

  }; // end Basis.sort_ul()

  Basis.swap_elements = function (a, b) {

    var a = MochiKit.DOM.getElement(a);
    var b = MochiKit.DOM.getElement(b);

    if (a && b) {

      var a_parent_insert         = a.nextSibling ? false : true;
      var a_sibling_insert_before = a.nextSibling;
      var b_parent_insert         = b.nextSibling ? false : true;
      var b_sibling_insert_before = b.nextSibling;

      if (a_parent_insert) {

        a.parentNode.appendChild(b);

      } else {

        a.parentNode.insertBefore(a_sibling_insert_before, b);

      } // end if

      if (b_parent_insert) {

        b.parentNode.appendChild(a);

      } else {

        b.parentNode.insertBefore(a_sibling_insert_before, a);

      } // end if

    } // end if

  }; // end Basis.swap_elements()

  Basis._int = function (value) {

    return (!isNaN(parseInt(value)) ? parseInt(value) : 0);

  }; // end Basis._int()

  Basis._return = function (value) {

    return value;

  }; // end Basis._return()

  Basis.sum_scroll_of_all_parents = function (element) {

    var sum     = {"top":0,"left":0};
    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var parent = element.parentNode;

      while (parent && parent.style) {

        sum.top  += parent.scrollTop;
        sum.left += parent.scrollLeft;

        parent    = parent.parentNode;

      } // end while

    } // end if

    return sum;

  }; // end Basis.sum_scroll_of_all_parents()

  Basis.sum_of_all_parents = function (element, selector) {

    var sum     = {"top":0,"left":0,"right":0,"bottom":0};
    var element = MochiKit.DOM.getElement(element);

    var width   = (selector == "border") ? "-width" : "";

    if (element) {

      var tsum    = Basis.sum_of_element(element);

      sum.top    += tsum.top;
      sum.left   += tsum.left;
      sum.right  += tsum.right;
      sum.bottom += tsum.bottom;

      var parent = element.parentNode;

      while (parent && parent.style) {

        var tsum    = Basis.sum_of_element(parent);

        sum.top    += tsum.top;
        sum.left   += tsum.left;
        sum.right  += tsum.right;
        sum.bottom += tsum.bottom;

        parent      = parent.parentNode;

      } // end while

    } // end if

    return sum;

  }; // end Basis.sum_of_all_parents()

  Basis.sum_of_element = function (element, selector) {

    var sum     = {"top":0,"left":0,"right":0,"bottom":0};
    var element = MochiKit.DOM.getElement(element);

    var width   = (selector == "border") ? "-width" : "";

    if (element) {

      sum.top    += Basis._int(Basis.get_style(element, selector+"-top"+width).replace(/([^0-9\.])/g, ""));
      sum.left   += Basis._int(Basis.get_style(element, selector+"-left"+width).replace(/([^0-9\.])/g, ""));
      sum.right  += Basis._int(Basis.get_style(element, selector+"-right"+width).replace(/([^0-9\.])/g, ""));
      sum.bottom += Basis._int(Basis.get_style(element, selector+"-bottom"+width).replace(/([^0-9\.])/g, ""));

    } // end if

    return sum;

  }; // end Basis.sum_of_element()

  Basis.sum_borders_of_all_parents = function (element) {

    return Basis.sum_of_all_parents(element, "border");

  }; // end Basis.sum_borders_of_all_parents()

  Basis.sum_padding_of_all_parents = function (element) {

    return Basis.sum_of_all_parents(element, "padding");

  }; // end Basis.sum_padding_of_all_parents()

  Basis.hide_all_object_elements = function () {

    var objs = MochiKit.DOM.getElementsByTagAndClassName("object");

    if (objs.length > 0) {

      for (x = 0; x < objs.length; x++) {

        var pnode = objs[x].parentNode;

        if (pnode) {

          var dims           = MochiKit.Style.getElementDimensions(pnode);
          pnode.style.width  = dims.w;
          pnode.style.height = dims.h;

        } // end if

        objs[x].style.display = "none";

      } // end for

      return true;

    } // end if

    return false;

  }; // end Basis.hide_all_object_elements()

  Basis.unhide_all_object_elements = function () {

    var objs = MochiKit.DOM.getElementsByTagAndClassName("object");

    if (objs.length > 0) {

      for (x = 0; x < objs.length; x++) {

        objs[x].style.display = "";

      } // end for

      return true;

    } // end if

    return false;

  }; // end Basis.unhide_all_object_elements()

  Basis.idle_timeout = function (duration,sid,url) {

    if (duration && sid && url) {

      Basis.misc_vars["keepalive_timeout"] = MochiKit.Async.callLater(duration,function () {

        Basis.misc_vars.timeout_popup = Basis.popup({"id"           : "timeout_popup",
                                                     "window_title" : "You are idle",
                                                     "html"         : '\
\
          <div>You have been idle for too long! Do you want to remain logged in?</div>\
          <div align="right" style="padding-top: 10px;">\
            <input type="button" value="Yes" id="timeout_popup_yes">\
            <input type="button" value="No" id="timeout_popup_no">\
          </div>\
          <script>\
\
            MochiKit.Signal.connect("timeout_popup_yes","onclick",function () {\
\
              new Basis.keep_alive({"sid"       : "'+ sid +'",\
                                    "url"       : "'+ url +'",\
                                    "propagate" : false,\
                                    "duration"  : 1});\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
              Basis.idle_timeout('+ duration +',"'+ sid +'","'+ url +'");\
\
            });\
\
            MochiKit.Signal.connect("timeout_popup_no","onclick",function () {\
\
              var url = ""+window.location+"";\
\
              if (url.indexOf("?") == -1) {\
\
                window.location = (url + "?logout=true");\
\
              } else {\
\
                window.location = (url + "&logout=true");\
\
              }\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
            });\
\
          </script>'
                                                    });

        Basis.misc_vars["final_timeout"] = MochiKit.Async.callLater(30,function () {

          var url = ""+window.location+"";

          if (url.indexOf("?") == -1) {

            window.location = (url + "?logout=true");

          } else {

            window.location = (url + "&logout=true");

          } // end if

        });

      });

    } // end if

  }; // end Basis.idle_timeout()

  Basis.keep_alive = function (options) {

    this.__init__(options);

  }; // end Basis.keep_alive()

  /*
    ex:

      new Basis.keep_alive({"sid"      : "bd027bada8d45a7707d08fc58a6aa3f5",
                            "url"      : "http://server1.dataresolutions.com/sites/dataresolutions/index.php?id=297",
                            "duration" : 3
      });

  */

  Basis.keep_alive.prototype = {

    __init__: function (options) {

      this.sid       = options["sid"]                 ? options["sid"]       : null;
      this.url       = options["url"]                 ? options["url"]       : null;
      this.duration  = options["duration"]            ? options["duration"]  : 3;
      this.propagate = (options["propagate"] != null) ? options["propagate"] : true;

      this.compile();

    }, // end __init__()

    compile: function () {

      if (this.duration) {

        Basis.misc_vars["keepalive_timeout"] = MochiKit.Async.callLater(this.duration, MochiKit.Base.bind(function () {

          this.send_active_status();

        }, this));

      } // end if

    }, // end compile()

    send_active_status: function () {

      if (this.sid && this.url) {

        var as   = new Basis.ajax_scaffold;
        as.alias = "Basis.active_status";
        as.sid   = this.sid;
        as.url   = this.url;

        as.pvar  = this;

        as.on_success = function () {

          if (this.pvar.propagate) {

            this.pvar.compile();

          } // end if

        };

        as.post();

      } // end if

    } // end send_active_status()

  }; // end class Basis.keep_alive

  Basis.add_content_element = function (page_id, replacement_id, type) {

    var type = (type !== null) ? type : "";

    if (page_id && replacement_id && confirm("Are you sure you want to add a new content element to this page?")) {

      var to_post               = {};
      to_post["page_id"]        = page_id;
      to_post["replacement_id"] = replacement_id;
      to_post["type"]           = type;

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_content_element";

      as.on_success = function (req) {

        if (req.responseText == "true") {

          window.location = ""+window.location+"";

        } else {

          MochiKit.Logging.log("Unable to add content element!");

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    } // end if

  }; // end Basis.add_content_element()

  Basis.delete_content_element = function (content_element_id) {

    if (content_element_id && confirm("Are you sure you want to delete this content element?")) {

      var to_post                   = {};
      to_post["content_element_id"] = content_element_id;

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_content_element";

      as.on_success = function (req) {

        if (req.responseText == "true") {

          Basis.remove_element("ce_" + content_element_id);

        } else {

          MochiKit.Logging.log("Unable to delete content element #" + content_element_id);

        } // end if

      };

      return as.post({"to_post":to_post});

    } // end if

  }; // end Basis.delete_content_element()

  Basis.show_flash_demo = function (filename, options) {

    var options     = MochiKit.Base.updatetree(Basis.blank_object(), options);

    options["w"]    = options["w"] ? options["w"] : "680";
    options["h"]    = options["h"] ? options["h"] : "534";

    var flash_popup = Basis.popup({"id"           : "show_flash",
                                   "html"         : "&nbsp;",
                                   "window_title" : "Flash Demo"
                                  });

    var obj = Basis.misc_vars.popups[flash_popup.reference];

    if (obj) {

      obj.style.display = "none";

      if (flash_popup && flash_popup.html_container && flash_popup.html_container.id) {

        var so = new SWFObject(filename, "mymovie", options["w"], options["h"], "8","#ffffff");
        so.useExpressInstall("/js/js/expressinstall.swf");
        so.write(flash_popup.html_container.id);

      } // end if

      Basis.center_element(obj);

      obj.style.display = "";

    } // end if

  }; // end Basis.show_flash_demo()

  Basis.tinyMCE_getInstanceById = function (obj) {

    var obj = MochiKit.DOM.getElement(obj);

    if (obj && obj.id) {

      if (tinyMCE && tinyMCE.instances) {

        for (var i in tinyMCE.instances) {

          if (typeof(tinyMCE.instances[i]) != "function") {

            if (tinyMCE.instances[i].formElement && tinyMCE.instances[i].formElement.id && (tinyMCE.instances[i].formElement.id == obj.id)) {

              return tinyMCE.instances[i];

            } // end if

          } // end if

        } // end for

      } // end if

    } // end if

    return false;

  }; // end Basis.tinyMCE_getInstanceById()

  Basis.tinyMCE_set_dirty_flag = function (inst) {

    if (inst.formElement) {

      Basis.misc_vars["tinyMCE_"+inst.formElement.id+"_changed"] = true;

    } // end if

  }; // end Basis.tinyMCE_set_dirty_flag()

  Basis.tinyMCE_correct_span_nesting = function (html) {

    var container       = DIV();
    container.innerHTML = html;

    Basis.tinyMCE_correct_span_nesting_walk(container.childNodes);

    return container.innerHTML;

  }; // end Basis.tinyMCE_correct_span_nesting()

  Basis.tinyMCE_correct_span_nesting_walk = function (nodes) {

    if (nodes) {

      for (var x in nodes) {

        var node = nodes[x];

        if (Basis.is_element(node) && Basis.is_element(node.parentNode)) {

          var collapsed_tags = false;

          if ((node.tagName.toUpperCase() == "SPAN") && (node.parentNode.tagName.toUpperCase() == "SPAN") && !node.previousSibling) { // && !node.nextSibling) 

log("merging...");

            // move node children up to become node's siblings

            for (var i in node.childNodes) {

              if ((node.childNodes[i].nodeType == 1) || (node.childNodes[i].nodeType == 3)) {

                node.parentNode.insertBefore(node.childNodes[i], node);

              } // end if

            } // end for

            // apply node classes to parent

            var node_classes = Basis.get_element(node).className.split(" ");

            for (var i in node_classes) {

              if (!Basis.is_function(node_classes[i])) {

                MochiKit.DOM.addElementClass(node.parentNode, node_classes[i]);

              } // end if

            } // end for

            // apply node styles to parent

            for (var i = 0; i < node.style; i++) {

              var style            = Basis.blank_object();
              style[node.style[i]] = Basis.get_style(node, node.style[i]);

              Basis.set_style(node.parentNode, style);

            } // end for

            // remove node

            Basis.remove_element(node)

          } // end if

          // if you merged a child with a parent, start again to re-check parent's children in
          // case a former grandchild needs merged with the parent

          if (collapsed_tags) {

            Basis.tinyMCE_correct_span_nesting_walk(node.parentNode.childNodes);

          } else {

            Basis.tinyMCE_correct_span_nesting_walk(node.childNodes);

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.tinyMCE_correct_span_nesting_walk()

  Basis.array_flip = function (arr) {

    temp = new Object();

    for (var i in arr) {

      temp[arr[i]] = i;

    } // end for

    return temp;

  }; // end Basis.array_flip()

  Basis.array_size = function (arr) {

    arr_size = 0;

    for (var i in arr) {

      arr_size++;

    } // end for

    return arr_size;

  }; // end Basis.array_size()

  Basis.array_insert = function (arr, index, value) {

    if (arr && arr.splice) {

      arr.splice(index, 0, value);

    } // end if

    return arr;

  }; // end Basis.array_insert()

  Basis.remove_children = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.childNodes.length; i++) {

        Basis.remove_element(element.childNodes[i]);

      } // end for

      element.innerHTML = "";

    } // end if

  }; // end Basis.remove_children()

  Basis.remove_element = function (element) {

    var garbage_bin = MochiKit.DOM.getElement("IELeakGarbageBin");

    if (!garbage_bin) {

      var garbage_bin = new MochiKit.DOM.DIV({"id"    : "IELeakGarbageBin",
                                              "style" : "display: none;"});
      document.body.appendChild(garbage_bin);

    } // end if

    var element = MochiKit.DOM.getElement(element);

    if (element && garbage_bin) { // && Basis.is_element(element)

      MochiKit.Signal.disconnectAll(element);

      if (element.tooltip) { // from Basis.attach_tooltip()

        Basis.remove_element(element.tooltip);

      } // end if

      if (element.drag_events) { // from multipleDraggables

        for (var i in element.drag_events) {

          if (typeof(element.drag_events[i]) != "function") {

            MochiKit.Signal.disconnect(element.drag_events[i]);

          } // end if

        } // end for

      } // end if

      // NOTE: NEED TO STANDARDIZE WHERE SIGNAL REFERENCES ARE STORED. I LIKE element.signals[alias].

      if (element.signals) { // from Basis.make_text_element_editable / Basis.make_text_element_dropdown

        for (var i in element.signals) {

          if (typeof(element.signals[i]) != "function") {

            MochiKit.Signal.disconnect(element.signals[i]);

          } // end if

        } // end for

      } // end if

      var list_to_remove = [];

      MochiKit.Base.nodeWalk(element, function (node) {

        list_to_remove.push(node);

        return node.childNodes;

      });

      for (var x = list_to_remove.length; x > 0; x--) {

        Basis.remove_element(list_to_remove[x]);

      } // end for

      var list = MochiKit.DragAndDrop.Droppables.drops;

      for (var i = 0; i < list.length; i++) {

        if (list[i].element == element) {

          list[i].destroy();

        } // end if

      } // end for

      var list = MochiKit.DragAndDrop.Draggables.drags;

      for (var i = 0; i < list.length; i++) {

        if (list[i].element == element) {

          list[i].destroy();

        } // end if

      } // end for

      // move the element to the garbage bin
      garbage_bin.appendChild(element);
      garbage_bin.innerHTML = "";

    } // end if

  } // end Basis.remove_element()

  Basis.admin = function () {

    this.__init__();

  }; // end gallery()

  Basis.admin.prototype = {

    __init__: function () {

      this.ul_lists  = new Array();
      this.ul_ids    = new Array();
      this.root      = '';
      this.sid       = '';
      this.self_url  = '';
      this.edit_mode = false;

    }, // end __init__()

    add_page: function (site_id) {

      var to_post     = new Object();
      to_post.sid     = site_id;
      to_post["type"] = Basis.misc_vars["get_page_type_type"];
      to_post["name"] = Basis.misc_vars["get_page_type_name"];

      window.status = "Adding page to site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_page";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

          Basis.misc_vars.admin.render_pages(this.site_id);

        } else {

          window.status = "add_page(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end add_page()

    add_site: function (oid,folder_name,user_id) {

      if (!folder_name) { return; } // end if

      var to_post         = new Object();
      to_post.oid         = oid;
      to_post.folder_name = folder_name;
      to_post.user_id     = user_id;

      window.status = "Adding new site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "add_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end add_site()

    delete_page: function (pid) {

      var to_post     = new Object();
      to_post.pid     = pid;

      window.status = "Deleting page...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_page";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.pid   = pid;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var obj = MochiKit.DOM.getElement("page_"+this.pid+"_container");

          if (obj) {

            MochiKit.Visual.fade(obj,{"duration":0.5,"afterFinish":function (effect) {

              if (MochiKit.DOM.getElement(effect.element.id)) {

                MochiKit.DOM.removeElement(effect.element.id);

              } // end if

            }});

          } // end if

          window.status = "Done";

        } else {

          window.status = "delete_page(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end delete_page()

    delete_site: function (site_id) {

      var to_post   = new Object();
      to_post.sid   = site_id;

      window.status = "Deleting site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "delete_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end delete_site()

    duplicate_site: function (site_id,folder_name) {

      if (!folder_name) { return; } // end if

      var to_post         = new Object();
      to_post.sid         = site_id;
      to_post.folder_name = folder_name;

      window.status = "Duplicating site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "duplicate_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "duplicate_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end duplicate_site()

    edit_organization_name: function (oid) {

      var obj = MochiKit.DOM.getElement("organization_"+oid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var organization_name = obj.innerHTML;
        obj.innerHTML         = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj                = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.oorganization_name = Basis.decode_html_entities(organization_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(organization_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.oid  = oid;

        input_obj.pvar = this;

        input_obj.save_organization_name = function () {

          window.status   = "Renaming organization...";

          if (input_obj.oorganization_name == input_obj.value) {

            input_obj.cancel_save_organization_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["oid"] = input_obj.oid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_organization_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj      = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_organization_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_organization_name()

        input_obj.cancel_save_organization_name = function () {

          var obj = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.oorganization_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_organization_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_organization_name()!");

          input_obj.save_organization_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_organization_name()!");

            input_obj.save_organization_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_organization_name()!");

            input_obj.cancel_save_organization_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_organization_name()

    edit_page_name: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var page_name = obj.innerHTML;
        obj.innerHTML = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj        = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.opage_name = Basis.decode_html_entities(page_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(page_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.pid  = pid;

        input_obj.pvar = this;

        input_obj.save_page_name = function () {

          window.status   = "Renaming page...";

          if (input_obj.opage_name == input_obj.value) {

            input_obj.cancel_save_page_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["pid"] = input_obj.pid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_page_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj      = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_page_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_page_name()

        input_obj.cancel_save_page_name = function () {

          var obj     = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.opage_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_page_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_name()!");

          input_obj.save_page_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_name()!");

            input_obj.save_page_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_name()!");

            input_obj.cancel_save_page_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_page_name()

    edit_page_attributes: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_attributes");

      if (obj && !obj.editing) {

        obj.editing = true;
        obj.pid     = pid;

        var to_post       = new Object();
        to_post["ivalue"] = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][pid]][pid]["attributes"];

        var as   = new Basis.ajax_scaffold;
        as.alias = "page_attributes_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.eid   = obj.id;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          var obj      = MochiKit.DOM.getElement(this.eid);

          if (obj) {

            if (response["text"]=="true") {

              var page_attributes        = obj.innerHTML;
              obj.innerHTML              = response["form"];

              var input_obj              = MochiKit.DOM.getElement(response["input_obj"]);

              input_obj.opage_attributes = Basis.decode_html_entities(page_attributes);
              input_obj.obj              = obj;

              MochiKit.DOM.removeElementClass(obj,"no_select");

              if (obj && input_obj) {

                input_obj.pvar = this.pvar;

                input_obj.save_page_attributes = function () {

                  window.status   = "Changing page attributes...";

                  if (input_obj.opage_attributes == input_obj.options[input_obj.selectedIndex].text) {

                    input_obj.cancel_save_page_attributes();

                    window.status = "Done";

                  } else {

                    var to_post    = new Object();
                    to_post["to"]  = input_obj.options[input_obj.selectedIndex].value;
                    to_post["pid"] = obj.pid;

                    var tas   = new Basis.ajax_scaffold;
                    tas.alias = "save_page_attributes";
                    tas.sid   = this.pvar.sid;
                    tas.url   = this.pvar.self_url;

                    tas.eid   = obj.id;

                    tas.on_success = function (req) {

                      var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                      if (response["text"]=="true") {

                        Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["attributes"] = input_obj.options[input_obj.selectedIndex].text;

                        obj.innerHTML = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["attributes"];

                        MochiKit.DOM.addElementClass(obj,"no_select");

                      } else {

                        input_obj.cancel_save_page_attributes();

                      } // end if

                      obj.editing   = false;

                      window.status = "Done";

                    };

                    tas.post({"to_post":to_post});

                  } // end if

                } // end save_page_attributes()

                input_obj.cancel_save_page_attributes = function () {

                  var obj = MochiKit.DOM.getElement(this.obj);

                  if (obj) {

                    obj.innerHTML = input_obj.opage_attributes;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                    obj.editing   = false;

                  } // end if

                } // end cancel_save_page_attributes()

                input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

                  MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_attributes()!");

                  input_obj.save_page_attributes();

                });

                MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

                  var key = e.key();

                  if (key.code == 13) {

                    MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_attributes()!");

                    input_obj.save_page_attributes();

                  } else if (key.code == 27) {

                    MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_attributes()!");

                    input_obj.cancel_save_page_attributes();

                  } // end if

                });

                input_obj.focus();

              } // end if

            } // end if

          } // end if

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end edit_page_attributes()

    edit_page_type: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_type");

      if (obj && !obj.editing) {

        obj.editing = true;
        obj.pid     = pid;

        var to_post       = new Object();
        to_post["ivalue"] = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][pid]][pid]["type"];

        var as   = new Basis.ajax_scaffold;
        as.alias = "page_type_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.eid   = obj.id;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          var obj      = MochiKit.DOM.getElement(this.eid);

          if (obj) {

            if (response["text"]=="true") {

              var page_type = obj.innerHTML;
              obj.innerHTML = response["form"];

              var input_obj = MochiKit.DOM.getElement(response["input_obj"]);

              input_obj.opage_type = Basis.decode_html_entities(page_type);
              input_obj.obj        = obj;

              MochiKit.DOM.removeElementClass(obj,"no_select");

              if (obj && input_obj) {

                input_obj.pvar = this.pvar;

                input_obj.save_page_type = function () {

                  window.status   = "Changing page type...";

                  if (input_obj.opage_type == input_obj.options[input_obj.selectedIndex].text) {

                    input_obj.cancel_save_page_type();

                    window.status = "Done";

                  } else {

                    var to_post    = new Object();
                    to_post["to"]  = input_obj.options[input_obj.selectedIndex].value;
                    to_post["pid"] = obj.pid;

                    var tas   = new Basis.ajax_scaffold;
                    tas.alias = "save_page_type";
                    tas.sid   = this.pvar.sid;
                    tas.url   = this.pvar.self_url;

                    tas.eid   = obj.id;

                    tas.on_success = function (req) {

                      var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                      if (response["text"]=="true") {

                        Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["type"] = input_obj.options[input_obj.selectedIndex].text;

                        obj.innerHTML = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["type"];

                        MochiKit.DOM.addElementClass(obj,"no_select");

                      } else {

                        input_obj.cancel_save_page_type();

                      } // end if

                      obj.editing   = false;

                      window.status = "Done";

                    };

                    tas.post({"to_post":to_post});

                  } // end if

                } // end save_page_type()

                input_obj.cancel_save_page_type = function () {

                  var obj = MochiKit.DOM.getElement(this.obj);

                  if (obj) {

                    obj.innerHTML = input_obj.opage_type;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                    obj.editing   = false;

                  } // end if

                } // end cancel_save_page_type()

                input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

                  MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_type()!");

                  input_obj.save_page_type();

                });

                MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

                  var key = e.key();

                  if (key.code == 13) {

                    MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_type()!");

                    input_obj.save_page_type();

                  } else if (key.code == 27) {

                    MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_type()!");

                    input_obj.cancel_save_page_type();

                  } // end if

                });

                input_obj.focus();

              } // end if

            } // end if

          } // end if

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end edit_page_type()

    edit_site_name: function (sid) {

      var obj = MochiKit.DOM.getElement("site_"+sid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var site_name = obj.innerHTML;
        obj.innerHTML = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj        = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.osite_name = Basis.decode_html_entities(site_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(site_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.sid  = sid;

        input_obj.pvar = this;

        input_obj.save_site_name = function () {

          window.status   = "Renaming site...";

          if (input_obj.osite_name == input_obj.value) {

            input_obj.cancel_save_site_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["sid"] = input_obj.sid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_site_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_site_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_site_name()

        input_obj.cancel_save_site_name = function () {

          var obj     = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.osite_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_site_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_site_name()!");

          input_obj.save_site_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_site_name()!");

            input_obj.save_site_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_site_name()!");

            input_obj.cancel_save_site_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_site_name()

    get_page_type: function (site_id) {

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_type_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.page_type_popup = Basis.popup({"id"           : "page_type_popup",
                                                   "html"         : "<div style=\"padding: 10px;\">"+response["form"]+"&nbsp;<input id=\"submit_999999\" type=\"button\" value=\"Next\"></div>",
                                                   "window_title" : "What kind of page do you want to add?"
                                                  });

          MochiKit.Signal.connect("submit_999999","onclick",MochiKit.Base.bind(function () {

            var obj = MochiKit.DOM.getElement("type_999999");

            if (obj) {

              Basis.misc_vars["get_page_type_type"] = obj.options[obj.selectedIndex].value;

            } // end if

            var obj = MochiKit.DOM.getElement("page_type_popup");

            if (obj && obj.close) {

              obj.close();

            } // end if

            Basis.prompt({"window_title"   : "Give your page a name",
                          "variable_title" : "Page name:",
                          "on_true"        : MochiKit.Base.bind(function () {

                                               Basis.misc_vars["get_page_type_name"] = Basis.misc_vars.prompt_value;

                                               this.pvar.add_page(this.site_id);

                                              },this)
                         });

          },this));

        } // end if

        window.status = "Done";

      };

      as.post({"to_post":{"ivalue":"novalue"}});

    }, // end get_page_type()

    manage_template: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      window.status = "Fetching form to manage site template...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "get_site_config_form";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = req.responseText;

        if (response) {

          var popup = Basis.popup({"id"           : "manage_template_popup",
                                   "window_title" : "Manage Site Look and Feel",
                                   "html"         : response
                                  });

        } // end if

        window.status = "Done";

      };

      as.post({"to_post":to_post});

    }, // end manage_template()

    render_pages: function (site_id) {

      var to_post     = new Object();
      to_post.site_id = site_id;

      window.status = "Fetching pages for site...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "render_pages";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;
      as.admin   = this;

      as.on_success = function (req) {

        var response = req.responseText;

        if (response) {

          var obj = MochiKit.DOM.getElement("pagelist_"+this.site_id+"_container_c");

          if (obj) {

            obj.innerHTML = response;

            Basis.execute_javascript(obj);

            MochiKit.Sortable.Sortable.create(obj, {dropOnEmpty : true,
                                                    containment : [obj.id],
                                                    constraint  : "vertical",
                                                    handle      : "icon_handle",
                                                    starteffect : MochiKit.Base.noop,
                                                    endeffect   : MochiKit.Base.noop,
                                                    onUpdate    : MochiKit.Base.bind(function (element) {

                                                                    this.site_page_order(element.id);

                                                                  },this.admin)
                                                   });

          } // end if

          window.status = "Done";

        } else {

          window.status = "render_pages(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end render_pages()

    set_page_privacy: function (pid,is_private) {

      var to_post        = new Object();
      to_post.pid        = pid;
      to_post.is_private = is_private;

      window.status = "Auto-saving page privacy...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_privacy";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_privacy(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_privacy()

    set_page_visibility: function (pid,in_menu) {

      var to_post     = new Object();
      to_post.pid     = pid;
      to_post.in_menu = in_menu;

      window.status = "Auto-saving page visibility...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_visibility";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_visibility(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_visibility()

    set_page_restriction: function (pid,is_restricted) {

      var to_post           = new Object();
      to_post.pid           = pid;
      to_post.is_restricted = is_restricted;

      window.status = "Auto-saving page restriction...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_restriction";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_restriction(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_restriction()

    save_site_template_configuration: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      // 1. collect all basis_template_replacement_override information

      if (this.manage_template_overrides && (this.manage_template_overrides.length > 0)) {

        to_post["overrides"] = new Array();

        for (var x=0; x < this.manage_template_overrides.length; x++) {

          var o_value = MochiKit.DOM.getElement("value_"+this.manage_template_overrides[x]+"_999999");
          var o_type  = MochiKit.DOM.getElement("type_"+this.manage_template_overrides[x]+"_999999");

          if (this.manage_template_overrides[x]) {

            to_post["overrides"][to_post["overrides"].length] = { "replacement_id" : this.manage_template_overrides[x],
                                                                  "value"          : ((o_value) ? (o_value.value) : ""),
                                                                  "type"           : ((o_type && o_type.options) ? (o_type.options[o_type.selectedIndex].value) : "")
                                                                };

          } // end if

        } // end for

      } // end if

      // 2. grab template_id

      var objs = MochiKit.DOM.getElementsByTagAndClassName("input","manage_template_template_id");

      if (objs) {

        for (var i in objs) {

          if (objs[i] && objs[i].checked) {

            to_post["template_id"] = objs[i].value;

          } // end if

        } // end for

      } // end if

      // 3. grab chosen color + default setting

      if (this.color_chooser && this.color_chooser.color && this.color_chooser.color.toHexString) {

        to_post["color"] = this.color_chooser.color.toHexString();

      } // end if

      var obj = MochiKit.DOM.getElement("restore_template_999999_0");

      if (obj && obj.checked) {

        to_post["restore_default_color"] = "true";

      } // end if

      window.status = "Applying changes to site template...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "save_site_template_configuration";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "save_site_template_configuration(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end save_site_template_configuration()

    site_page_order: function (ul_element) {

      var element = MochiKit.DOM.getElement(ul_element);

      if (element) {

        final_site  = new Array();

        if (!element.childNodes || element.childNodes.length==0) { return false; }

        for (var itemi=0; itemi<element.childNodes.length; itemi++) {

          var item = element.childNodes[itemi];

          if (item.nodeName == "LI") {

            final_site[final_site.length] = item.value;

          } // end if

        } // end for

        var parent_id = element.id.split("_");

        if (parent_id[0] == "pagelist") {

          parent_id       = parent_id[1];
          var parent_type = "site";

        } else if (parent_id[0] == "page") {

          parent_id       = parent_id[1];
          var parent_type = "page";

        } // end if

        final_order = {"parent_id" : parent_id,
                       "type"      : parent_type,
                       "order"     : final_site
                      };

      } // end if

      var to_post         = new Object();
      to_post.final_order = final_order;

      window.status = "Auto-saving page rankings...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "site_page_order";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "site_page_order(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end site_page_order()

    toggle_menu_management: function (site_id) {

      var parent = document;

      if (site_id) {

        parent = MochiKit.DOM.getElement("pagelist_"+site_id+"_container");

      } // end if

      var objs = MochiKit.DOM.getElementsByTagAndClassName("div","dropzone",parent);

      if (!this.managing_menus) {

        this.managing_menus = [];

      } // end if

      if (!this.managing_menus[site_id]) {

        this.managing_menus[site_id] = true;

        for (var i in objs) {

          if (Basis.is_element(objs[i])) {

            MochiKit.DOM.removeElementClass(objs[i],"invisible");

          } // end if

        } // end for

      } else {

        this.managing_menus[site_id] = false;

        for (var i in objs) {

          if (Basis.is_element(objs[i])) {

            MochiKit.DOM.addElementClass(objs[i],"invisible");

          } // end if

        } // end for

      } // end if

    } // end toggle_menu_management()

  }; // end class Basis.admin

  Basis.ajax_scaffold = function () {

    this.__init__();

  }; // end Basis.ajax_scaffold()

  Basis.ajax_scaffold.instances = [];
  Basis.ajax_scaffold.blocked   = false; // used by this.should_block

  Basis.ajax_scaffold.prototype = {

    __init__: function () {

      this.alias;
      this.sid;
      this.url;

      this.send_raw      = false;
      this.should_block  = false; // a blocking request is one that needs to be allowed to complete before another blocking request is allowed to be sent

      this.on_success    = function () { return; };
      this.after_success = function () { return; };

      this.index         = Basis.ajax_scaffold.instances.length;
      Basis.ajax_scaffold.instances[this.index] = this;

    }, // end __init__()

    attach_indicator: function () {

      var obj = MochiKit.DOM.getElement("ajax_scaffold_indicator");

      if (!obj) {

        var obj = new MochiKit.DOM.DIV({"id":"ajax_scaffold_indicator","style":"display:none; width: 16px; height: 16px; position: absolute;"},null);

        obj.innerHTML = "<img id='ajax_scaffold_indicator_image' src=''><script>var obj = MochiKit.DOM.getElement('ajax_scaffold_indicator_image'); if (obj && Basis.misc_vars['ajax_loading'].src) { obj.src = Basis.misc_vars['ajax_loading'].src; }</script>";

        document.body.appendChild(obj);

        Basis.execute_javascript(obj);

        this.position_indicator();

        this.draw_indicator = MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), "onmousemove", this, function () { this.position_indicator(); });

        obj.style.display   = "";

      } // end if

    }, // end attach_indicator()

    form_post: function (form_id) {

      var obj = MochiKit.DOM.getElement(form_id);

      if (obj) {

        var action    = MochiKit.DOM.getElement(obj).action;
        var form_data = MochiKit.DOM.formContents(obj);

        if (action && form_data) {

          form_data[0][form_data[0].length] = "exit_after_catch";
          form_data[1][form_data[1].length] = "true";

          var to_post = new Object();

          for (var i in form_data[0]) {

            if (typeof(form_data[0][i]) != "function") {

              to_post[form_data[0][i]] = form_data[1][i];

            } // end if

          } // end for

          this.url = action;

          return this.post(to_post);

        } else {

          MochiKit.Logging.log("no action or no form_data");

        } // end if

      } // end if

    }, // end form_post()

    position_indicator: function () {

      var obj    = MochiKit.DOM.getElement("ajax_scaffold_indicator");
      var scroll = Basis.scroll_coords();

      if (obj && Basis.misc_vars["mouse_x"] && Basis.misc_vars["mouse_y"] && scroll && (scroll.x >= 0) && (scroll.y >= 0)) {

        var pos    = {"x":(Basis.misc_vars["mouse_x"] + scroll.x + 15),
                      "y":(Basis.misc_vars["mouse_y"] + scroll.y + 10)};

        MochiKit.Style.setElementPosition(obj,pos);

      } // end if

    }, // end position_indicator()

    post: function (options) {

      if (this.should_block && Basis.ajax_scaffold.blocked) {

        log("ERROR: blocking request already made; cannot send this until it has completed!");

        return false;

      } // end if

      this.url = this.url ? this.url : window.location.href;
      this.sid = this.sid ? this.sid : Basis.get_cookie("PHPSESSID");

      if (this.url && this.sid) {

        if (!this.send_raw) {

          var to_send = { "alias"             : this.alias,
                          "ajax_throw_verify" : hex_md5(this.sid)
                        };

          if (options) {

            for (var i in options) {

              to_send[i] = options[i];

            } // end for

          } // end if

        } else {

          var to_send = options;

        } // end if

        if (this.url.indexOf("?") != -1) {

          var base = this.url.substring(0,this.url.indexOf("?"));
          var args = parseQueryString(this.url.substring((this.url.indexOf("?")+1),this.url.length), true);

        } else {

          var base = this.url;
          var args = {};

        } // end if

        args["PHPSESSID"] = this.sid;
        args["alias"]     = this.alias;
        var date          = new Date();
        args["unique"]    = date.getTime();

        var query_string = "";

        for (var i in args) {

          if (typeof(args[i]) != "function") {

            query_string += i+"="+args[i]+"&";

          } // end if

        } // end for

        this.url = base+"?"+query_string;

        this.attach_indicator();

        if (!this.send_raw) {

          var send_content = "array="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_send)));

        } else {

          var temp = "";

          for (var i in to_send) {

            temp += urlencode(i)+"="+urlencode(to_send[i])+"&";

          } // end for

          var send_content = temp;

        } // end if

        this.deferred = MochiKit.Async.doXHR(this.url,{"method"      : "POST",
                                                       "headers"     : {"Content-type":"application/x-www-form-urlencoded"},
                                                       "sendContent" : send_content
                                                      });

        this.deferred.addCallback(MochiKit.Base.bind(function (req) {

          this.req = req;

        }, this.deferred));

        this.deferred.addCallback(MochiKit.Base.bind(function () {

          var func = MochiKit.Base.bind(this.on_success, this);

          func.apply(null, [this.deferred.req]);

        }, this));

        this.deferred.addCallback(this.after_success);
        this.deferred.addCallback(MochiKit.Base.bind(this.remove_indicator, this));

        this.deferred.addCallback(MochiKit.Base.partial(function (should_block) {

          Basis.ajax_scaffold.blocked = should_block ? false : Basis.ajax_scaffold.blocked;

        }, this.should_block));

        Basis.ajax_scaffold.blocked = this.should_block ? true : Basis.ajax_scaffold.blocked;

        return this.deferred;

      } else {

        if (!this.url) {

          MochiKit.Logging.log("ERROR: this.url is null!");

        } // end if

        if (!this.sid) {

          MochiKit.Logging.log("ERROR: this.sid is null!");

        } // end if

      } // end if

      return false;

    }, // end post()

    remove_indicator: function () {

      var obj = MochiKit.DOM.getElement("ajax_scaffold_indicator");

      if (obj) {

        MochiKit.DOM.removeElement(obj);

      } // end if

      MochiKit.Signal.disconnect(this.draw_indicator);

    } // end remove_indicator()

  }; // end Basis.ajax_scaffold

  Basis.admin.user_management = function () {

    this.__init__();

  }; // end admin.user_management()

  Basis.admin.user_management.prototype = {

    __init__: function (site_id) {

      this.user_list    = new Object;
      this.user_info    = new Object;

      this.sid          = "";
      this.form_html    = "";
      this.self_url     = "";

      this.form_id            = "user_management_popup";
      this.all_users_popup_id = "user_management_all_users_popup";

      this.site_id            = site_id;

      this.current_user = null;

    }, // end __init__()

    add_user: function () {

      if (this.site_id) {

        Basis.prompt({"window_title"   : "Add User",
                      "variable_title" : "Username:",
                      "on_true"        : MochiKit.Base.bind(function () {

                                           if (Basis.misc_vars.prompt_value) {

                                             var d1 = this.create_username(Basis.misc_vars.prompt_value,this.site_id);

                                           } else {

                                             alert('You need to give each new user a username before their account can be created!');

                                           } // end if

                                         },this)
                     });

      } // end if

    }, // end add_user()

    check_username: function (username, site_id) {

    }, // end check_username()

    compile: function (site_id) {

      if (site_id) {

        this.site_id = site_id;

      } // end if

      var on_loaded = function () {

        if (this.form_html) {

          var window_title = ("User Management for <span style=\"color: #B43232;\">"+MochiKit.DOM.getElement("site_"+this.site_id+"_name").innerHTML+"</span>");

          var obj = MochiKit.DOM.getElement(this.form_id);

          if (!obj) {

            this.popup = Basis.popup({"id"           : this.form_id,
                                      "html"         : this.form_html,
                                      "window_title" : window_title
                                     });

          } else {

            this.popup.html_container.innerHTML = this.form_html;
            this.popup.window_title.innerHTML   = window_title;

          } // end if

        } // end if

        this.render_users();

      };

      if (this.form_html) {

        var d1 = this.get_users(this.site_id);

        d1.addCallback(MochiKit.Base.bind(on_loaded,this));

      } else {

        var d1    = this.get_form();
        var d2    = this.get_users(this.site_id);
        var dlist = new MochiKit.Async.DeferredList([d1,d2], false, false, true);

        dlist.addCallback(MochiKit.Base.bind(on_loaded,this));

      } // end if

    }, // end compile()

    create_username: function (username, site_id) {

      if (username && site_id) {

        var to_post = new Object();
        to_post["username"] = username;
        to_post["site_id"]  = site_id;

        window.status = "Creating new user for site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_create_username";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.site_id = site_id;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

            var obj = MochiKit.DOM.getElement(this.pvar.all_users_popup_id);

            if (obj) {

              this.pvar.show_all_users();

            } // end if

          } else {

            window.status = "create_username(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

      return false;

    }, // end create_username()

    delete_user: function () {

      if (this.current_user) {

        var to_post = new Object();
        to_post["user_id"] = this.current_user;

        window.status = "Deleting user from site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_delete_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

            var obj = MochiKit.DOM.getElement(this.pvar.all_users_popup_id);

            if (obj) {

              this.pvar.show_all_users();

            } // end if

          } else {

            window.status = "delete_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

      return false;

    }, // end delete_user()

    file_restrictions_get_form: function (site_id) {

      var to_post = new Object();

      window.status = "Fetching file restrictions form...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_get_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var popup = Basis.popup({"id"           : "file_restrictions_popup",
                                   "html"         : response["html"],
                                   "window_title" : "Manage File Restrictions"
                                  });

          var d1    = this.pvar.get_site_users(this.pvar.site_id);

          d1.addCallback(MochiKit.Base.bind(function () {

            var d2 = this.file_restrictions_load_file_restrictions();

            d2.addCallback(MochiKit.Base.bind(function () {

              var html  = "";
              var js    = "";

              for (var i in this.user_list_site) {

                if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

                  html += '<tr><td style="text-align: center;"><input type="checkbox" id="Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'" class="Basis.admin.file_restrictions.list.checkbox"></td><td style="text-align: center;"><input type="checkbox" id="Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'" class="Basis.admin.file_restrictions.list.checkbox"></td><td>'+this.user_list_site[i]["username"]+'</td></tr>';
                  js   += '<script>\
\
                             var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'");\
\
                             MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                               var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'");\
\
                               if (obj2 && this.checked) { obj2.checked = true; }\
\
                             },obj));\
\
                             var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'");\
\
                             MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                               var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'");\
\
                               if (obj2 && !this.checked) { obj2.checked = false; }\
\
                             },obj));\
\
                           </script>';

                } // end if

              } // end for

              if (html) {

                var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list");

                if (obj) {

                  obj.innerHTML = '<table width="100%"><tr><td width="75" style="text-align: center; font-weight: bold;">Ability To Change file</td><td width="60" style="text-align: center; font-weight: bold;">Ability To See file</td><td style="font-weight: bold;">Username</td></tr>'+html+'</table>'+js;

                  Basis.execute_javascript(obj);

                  var obj = MochiKit.DOM.getElement("save_button_555555");

                  if (obj) {

                    MochiKit.Signal.connect(obj,"onclick",MochiKit.Base.bind(function () {

                      this.file_restrictions_save_file_restrictions();

                    },this));

                  } // end if

                } // end if

              } // end if

            },this));

          },this.pvar));

          window.status = "Done";

        } else {

          window.status = "file_restrictions_get_form(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_get_form()

    file_restrictions_load_file_restrictions: function () {

      var user_ids     = new Array();

      for (var i in this.user_list_site) {

        if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

          user_ids[user_ids.length] = this.user_list_site[i]["id"];

        } // end if

      } // end for

      var to_post      = new Object();
      to_post.user_ids = user_ids;

      window.status = "Fetching file restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_load_file_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        if (req.responseText) {

          this.pvar.file_restrictions = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_load_file_restrictions()

    file_restrictions_populate_file_restrictions: function (pid) {

      var restriction_type = "blacklist";

      if (pid && this.file_restrictions) {

        var checkboxes = MochiKit.DOM.getElementsByTagAndClassName("input","Basis.admin.file_restrictions.list.checkbox");

        if (checkboxes) {

          for (var i in checkboxes) {

            if (i && checkboxes[i]) {

              checkboxes[i].checked = false;

            } // end if

          } // end for

        } // end if

        for (var uid in this.file_restrictions) {

          if (uid && this.file_restrictions[uid]) {

            if (this.file_restrictions[uid]["blacklist"] && (this.file_restrictions[uid]["blacklist"].length > 0)) {

              for (var i in this.file_restrictions[uid]["blacklist"]) {

                if (i && this.file_restrictions[uid]["blacklist"][i] && ((typeof this.file_restrictions[uid]["blacklist"][i]) != "function")) {

                  var temp  = this.file_restrictions[uid]["blacklist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "blacklist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } else if (this.file_restrictions[uid]["whitelist"] && (this.file_restrictions[uid]["whitelist"].length > 0)) {

              for (var i in this.file_restrictions[uid]["whitelist"]) {

                if (i && this.file_restrictions[uid]["whitelist"][i] && ((typeof this.file_restrictions[uid]["whitelist"][i]) != "function")) {

                  var temp  = this.file_restrictions[uid]["whitelist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "whitelist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } // end if

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("restriction_type_555555");

        if (obj) {

          for (var i in obj.options) {

            if (i && obj.options[i] && (obj.options[i].value == restriction_type)) {

              obj.options[i].selected = true;

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end file_restrictions_populate_file_restrictions()

    file_restrictions_save_file_restrictions: function () {

      var update = new Object();

      var obj = MochiKit.DOM.getElement("files_555555");

      if (obj) {

        update["file_id"] = obj.options[obj.selectedIndex].value;

      } // end if

      var obj = MochiKit.DOM.getElement("restriction_type_555555");

      if (obj) {

        update["restriction_type"] = obj.options[obj.selectedIndex].value;

      } // end if

      update["users"] = new Array();

      for (var i in this.user_list_site) {

        if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

          var obj1 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only."+this.user_list_site[i]["id"]);

          if (obj1 && obj1.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]+":read_only");

          } // end if

          var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access."+this.user_list_site[i]["id"]);

          if (obj2 && obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]+":full_access");

          } // end if

          if (obj1 && obj2 && !obj1.checked && !obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]);

          } // end if

        } // end if

      } // end for

      var to_post   = update;

      window.status = "Saving file restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_save_file_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        this.pvar.file_restrictions_load_file_restrictions();

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_save_file_restrictions()

    get_all_users: function () {

      var to_post        = new Object();
      to_post["site_id"] = this.site_id;

      window.status = "Fetching all users...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_all_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = this.site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list_all = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_all_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_all_users()

    get_site_users: function () {

      var to_post        = new Object();
      to_post["site_id"] = this.site_id;

      window.status = "Fetching all users for site...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_site_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = this.site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list_site = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_all_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_site_users()

    get_form: function () {

//    if (!this.form_html) {

        window.status = "Fetching user management form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "user_management_get_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            this.pvar.form_html  = response["html"];
            this.pvar.form_html += "<div style=\"text-align: right;\"><input type=\"button\" value=\"Save\" onclick=\"Basis.misc_vars.user_manager.save_user_info(Basis.misc_vars.user_manager.current_user);\"></div>";

            window.status  = "Done";

          } else {

            window.status = "get_form(): ERROR!";

          } // end if

        };

        return as.post({"site_id":this.site_id});

//    } // end if
//
//    return false;

    }, // end get_form()

    get_users: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      window.status = "Fetching users...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_users()

    get_user_info: function (user_id) {

      var to_post        = new Object();
      to_post["user_id"] = user_id;
      to_post["site_id"] = this.site_id;

      window.status = "Fetching user info...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_user_info";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.user_id = user_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_info[this.user_id] = response["user_info"];

          window.status  = "Done";

          var obj = MochiKit.DOM.getElement("user_details");

          if (obj) {

            obj.innerHTML = this.pvar.user_info[this.user_id]["username"];

          } // end if

          this.pvar.populate_user_data(this.user_id);

        } else {

          window.status = "get_user_info(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_user_info()

    import_user: function (user_id) {

      if (user_id && this.site_id) {

        var to_post        = new Object();
        to_post["user_id"] = user_id;
        to_post["site_id"] = this.site_id;

        window.status = "Importing user to site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_import_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = user_id;
        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

          } else {

            window.status = "import_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end import_user()

    page_restrictions_get_form: function (oid) {

      var to_post = new Object();
      to_post.oid = oid;

      window.status = "Fetching page restrictions form...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_get_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var obj = MochiKit.DOM.getElement("page_type_popup");

          if (obj) {

            MochiKit.DOM.removeElement(obj);

          } // end if

          var obj = MochiKit.DOM.getElement("page_type_popup");

          if (!obj) {

            var popup = Basis.popup({"id"           : "page_restrictions_popup",
                                     "html"         : response["html"],
                                     "window_title" : "Manage Page Restrictions"
                                    });

            var d1    = this.pvar.get_all_users();

            d1.addCallback(MochiKit.Base.bind(function () {

              var d2 = this.page_restrictions_load_page_restrictions();

              d2.addCallback(MochiKit.Base.bind(function () {

                var html  = "";
                var js    = "";

                for (var i in this.user_list_all) {

                  if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

                    html += '<tr><td style="text-align: center;"><input type="checkbox" id="Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'" class="Basis.admin.page_restrictions.list.checkbox"></td><td style="text-align: center;"><input type="checkbox" id="Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'" class="Basis.admin.page_restrictions.list.checkbox"></td><td>'+this.user_list_all[i]["username"]+'</td></tr>';
                    js   += '<script>\
\
                               var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'");\
\
                               MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                                 var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'");\
\
                                 if (obj2 && this.checked) { obj2.checked = true; }\
\
                               },obj));\
\
                               var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'");\
\
                               MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                                 var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'");\
\
                                 if (obj2 && !this.checked) { obj2.checked = false; }\
\
                               },obj));\
\
                             </script>';

                  } // end if

                } // end for

                if (html) {

                  var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list");

                  if (obj) {

                    obj.innerHTML = '<table width="100%"><tr><td width="75" style="text-align: center; font-weight: bold;">Ability To Change Page</td><td width="60" style="text-align: center; font-weight: bold;">Ability To See Page</td><td style="font-weight: bold;">Username</td></tr>'+html+'</table>'+js;

                    Basis.execute_javascript(obj);

                    var obj = MochiKit.DOM.getElement("save_button_777777");

                    if (obj) {

                      MochiKit.Signal.connect(obj,"onclick",MochiKit.Base.bind(function () {

                        this.page_restrictions_save_page_restrictions();

                      },this));

                    } // end if

                  } // end if

                } // end if

              },this));

            },this.pvar));

          } // end if

          window.status = "Done";

        } else {

          window.status = "page_restrictions_get_form(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_get_form()

    page_restrictions_load_page_restrictions: function () {

      var user_ids     = new Array();

      for (var i in this.user_list_all) {

        if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

          user_ids[user_ids.length] = this.user_list_all[i]["id"];

        } // end if

      } // end for

      var to_post      = new Object();
      to_post.user_ids = user_ids;

      window.status = "Fetching page restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_load_page_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        if (req.responseText) {

          this.pvar.page_restrictions = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_load_page_restrictions()

    page_restrictions_populate_page_restrictions: function (pid) {

      var restriction_type = "blacklist";

      if (pid && this.page_restrictions) {

        var checkboxes = MochiKit.DOM.getElementsByTagAndClassName("input","Basis.admin.page_restrictions.list.checkbox");

        if (checkboxes) {

          for (var i in checkboxes) {

            if (i && checkboxes[i]) {

              checkboxes[i].checked = false;

            } // end if

          } // end for

        } // end if

        for (var uid in this.page_restrictions) {

          if (uid && this.page_restrictions[uid]) {

            if (this.page_restrictions[uid]["blacklist"] && (this.page_restrictions[uid]["blacklist"].length > 0)) {

              for (var i in this.page_restrictions[uid]["blacklist"]) {

                if (i && this.page_restrictions[uid]["blacklist"][i] && ((typeof this.page_restrictions[uid]["blacklist"][i]) != "function")) {

                  var temp  = this.page_restrictions[uid]["blacklist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "blacklist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } else if (this.page_restrictions[uid]["whitelist"] && (this.page_restrictions[uid]["whitelist"].length > 0)) {

              for (var i in this.page_restrictions[uid]["whitelist"]) {

                if (i && this.page_restrictions[uid]["whitelist"][i] && ((typeof this.page_restrictions[uid]["whitelist"][i]) != "function")) {

                  var temp  = this.page_restrictions[uid]["whitelist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "whitelist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } // end if

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("restriction_type_777777");

        if (obj) {

          for (var i in obj.options) {

            if (i && obj.options[i] && (obj.options[i].value == restriction_type)) {

              obj.options[i].selected = true;

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end page_restrictions_populate_page_restrictions()

    page_restrictions_save_page_restrictions: function () {

      var update = new Object();

      var obj = MochiKit.DOM.getElement("pages_777777");

      if (obj) {

        update["page_id"] = obj.options[obj.selectedIndex].value;

      } // end if

      var obj = MochiKit.DOM.getElement("restriction_type_777777");

      if (obj) {

        update["restriction_type"] = obj.options[obj.selectedIndex].value;

      } // end if

      update["users"] = new Array();

      for (var i in this.user_list_all) {

        if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

          var obj1 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only."+this.user_list_all[i]["id"]);

          if (obj1 && obj1.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]+":read_only");

          } // end if

          var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access."+this.user_list_all[i]["id"]);

          if (obj2 && obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]+":full_access");

          } // end if

          if (obj1 && obj2 && !obj1.checked && !obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]);

          } // end if

        } // end if

      } // end for

      var to_post   = update;

      window.status = "Saving page restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_save_page_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        this.pvar.page_restrictions_load_page_restrictions();

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_save_page_restrictions()

    populate_user_data: function (user_id) {

      var rrv_run = 999999;
      var ui      = this.user_info[user_id];

      if (ui) {

        var obj = MochiKit.DOM.getElement("username_"+rrv_run);
        if (obj) { obj.value = ui["username"]; } // end if

        var obj = MochiKit.DOM.getElement("password_"+rrv_run);
        if (obj) { obj.value = ui["password"]; } // end if

        var obj = MochiKit.DOM.getElement("user_level_"+rrv_run);
        if (obj && obj.options) {

          for (var i in obj.options) {

            if (obj.options[i] && obj.options[i].value) {

              obj.options[i].value = obj.options[i].value.replace("SITE_ID",this.site_id);

            } // end if

            if (obj.options[i] && (obj.options[i].value == ui["user_level"])) {

              obj.selectedIndex = i;

            } // end if

          } // end for

        } // end if

        var uicl = ui["contact_list"];

        if (uicl) {

          var obj = MochiKit.DOM.getElement("contact_name_"+rrv_run);
          if (obj) { obj.value = uicl["contact_name"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_email_address_"+rrv_run);
          if (obj) { obj.value = uicl["contact_email_address"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_phone_number1_"+rrv_run);
          if (obj) { obj.value = uicl["contact_phone_number1"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_phone_number2_"+rrv_run);
          if (obj) { obj.value = uicl["contact_phone_number2"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_notes_"+rrv_run);
          if (obj) { obj.value = uicl["contact_notes"]; } // end if

        } // end if

        this.current_user = user_id;

      } // end if

    }, // end populate_user_data()

    remove_user: function () {

      if (this.current_user && this.site_id) {

        var to_post        = new Object();
        to_post["user_id"] = this.current_user;
        to_post["site_id"] = this.site_id;

        window.status = "Removing user from site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_remove_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = this.current_user;
        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

          } else {

            window.status = "remove_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end remove_user()

    render_all_users: function () {

      if (this.user_list_all) {

        var output = "";

        for (var i in this.user_list_all) {

          if ((typeof this.user_list_all[i]) != "function") {

            output += '<div style="border-bottom: 1px dashed #c0c0c0; padding: 5px;"><img style="vertical-align: middle;" border="0" src="images/images/user.gif" width="16" height="16"> <span style="cursor: pointer;" onclick="Basis.misc_vars.user_manager.import_user('+this.user_list_all[i]["id"]+');">'+this.user_list_all[i]["username"]+'</span></div>';

          } // end if

        } // end for

        output = '<div style="border: 1px solid #c0c0c0; background-color: #f5f5f5; padding: 5px; width: 300px;">\
                    <div id="user_list_all" style="border: 1px solid #c0c0c0; background-color: #ffffff; padding: 0px; overflow: auto; height: 200px;">'+output+'</div>\
                  </div>';

        var obj = MochiKit.DOM.getElement(this.all_users_popup_id);

        if (!obj) {

          this.all_users_popup = Basis.popup({"id"           : this.all_users_popup_id,
                                              "html"         : output,
                                              "window_title" : "All Users in Organization"
                                             });

        } else {

          this.all_users_popup.html_container.innerHTML = output;

        } // end if

      } // end if

    }, // end render_all_users()

    render_users: function () {

      if (this.user_list && this.form_html) {

        var output = "";

        for (var i in this.user_list) {

          if ((typeof this.user_list[i]) != "function") {

            output += '<div style="border-bottom: 1px dashed #c0c0c0; padding: 5px;"><img style="vertical-align: middle;" border="0" src="images/images/user.gif" width="16" height="16"> <span style="cursor: pointer;" onclick="Basis.misc_vars.user_manager.get_user_info('+this.user_list[i]["id"]+');">'+this.user_list[i]["username"]+'</span></div>';

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("user_list");

        if (obj) {

          obj.innerHTML = output;

          Basis.execute_javascript(obj);

        } // end if

      } // end if

    }, // end render_users()

    save_user_info: function (user_id) {

      if (user_id) {

        var rrv_run = 999999;

        var to_post        = new Object();
        to_post["user_id"] = user_id;
        to_post["site_id"] = this.site_id;

        var obj = MochiKit.DOM.getElement("username_"+rrv_run);
        if (obj) { to_post["username"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("password_"+rrv_run);
        if (obj) { to_post["password"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("user_level_"+rrv_run);
        if (obj.selectedIndex) {

          to_post["user_level"] = obj.options[obj.selectedIndex].value;

        } else {

          to_post["user_level"] = obj.options[0].value;

        } // end if

        this.user_info[user_id]["user_level"] = to_post["user_level"];


        to_post["contact_info"] = new Object();

        var obj = MochiKit.DOM.getElement("contact_name_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_name"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_email_address_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_email_address"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_phone_number1_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_phone_number1"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_phone_number2_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_phone_number2"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_notes_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_notes"] = obj.value; } // end if


        window.status = "Saving user info...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_save_user_info";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = user_id;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

          } else {

            window.status = "save_user_info(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end save_user_info()

    show_all_users: function () {

      var d1 = this.get_all_users();
      d1.addCallback(MochiKit.Base.bind(this.render_all_users,this));

    } // end show_all_users()

  }; // end class Basis.admin.user_management

  Basis.ajax_form_post = function () {

    this.__init__();

  }; // end class Basis.ajax_form_post

  Basis.ajax_form_post.instances = [];

  Basis.ajax_form_post.prototype = {

    __init__: function () {

      this.sid;
      this.form_data;
      this.form_element;
      this.origin_element;
      this.status_element;

      this.is_posting = false;

      this.progress_element = "progress_element";

      this.on_success       = function () { return; };

      this.index            = Basis.ajax_form_post.instances.length;
      Basis.ajax_form_post.instances[this.index] = this;

    }, // end __init__()

    compile: function(origin_element) {

      if (!this.is_posting && this.sid && this.form_element && MochiKit.DOM.getElement(this.form_element)) {

        if (origin_element && MochiKit.DOM.getElement(origin_element)) {

          this.origin_element = origin_element;
          MochiKit.DOM.getElement(origin_element).disabled = true;

        } // end if

        var action     = MochiKit.DOM.getElement(this.form_element).action;

        this.form_data = MochiKit.DOM.formContents(this.form_element);

        this.form_data[0][this.form_data[0].length] = "PHPSESSID";
        this.form_data[1][this.form_data[1].length] = this.sid;

        this.form_data[0][this.form_data[0].length] = "exit_after_catch";
        this.form_data[1][this.form_data[1].length] = "true";

        window.status = "Auto-saving...";

        this.create_progress_bar();
        this.is_posting = true;

        AjaxRequest.progress_object = Basis.ajax_form_post.instances[this.index];

        setTimeout(function () {

          AjaxRequest.post({

            'url'         : action,
            'queryString' : MochiKit.Base.queryString(AjaxRequest.progress_object.form_data[0],AjaxRequest.progress_object.form_data[1]),
            'onSuccess'   : function(req) {

                              AjaxRequest.progress_object.on_success();

                              MochiKit.DOM.getElement(AjaxRequest.progress_object.progress_element+"_message").innerHTML = "<b>Success!</b>";
                              MochiKit.DOM.getElement(AjaxRequest.progress_object.progress_element+"_image").innerHTML   = "&nbsp;";

                              setTimeout(function () {

                                           MochiKit.Visual.toggle(AjaxRequest.progress_object.progress_element+"_under","appear",{"duration":0.25});
                                           MochiKit.Visual.toggle(AjaxRequest.progress_object.progress_element,"appear",{"duration":0.25});

                                           if (AjaxRequest.progress_object.origin_element && MochiKit.DOM.getElement(AjaxRequest.progress_object.origin_element)) {

                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.origin_element).disabled = false;

                                           } // end if

                                           if (AjaxRequest.progress_object.forms_container_element && MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element)) {

                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element).innerHTML = "";
                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element).innerHTML = req.responseText;

                                             Basis.execute_javascript(AjaxRequest.progress_object.forms_container_element);

                                           } // end if

                                           window.status = "Done";

                                           AjaxRequest.progress_object.is_posting = false;

                                         },0);

                            }
          });

        },0);

      } // end if

    }, // end compile()

    create_progress_bar: function () {

      var screend = MochiKit.Style.getViewportDimensions();
      var scroll  = Basis.scroll_coords();

// =================

      if (!MochiKit.DOM.getElement(this.progress_element+"_under")) {

        var progress_element_under = new MochiKit.DOM.DIV({"id":this.progress_element+"_under","style":"display:none; background-color: #000000; position: absolute;"},null);

      } else {

        var progress_element_under = MochiKit.DOM.getElement(this.progress_element+"_under");

      } // end if

      document.body.appendChild(progress_element_under);

      MochiKit.DOM.getElement(this.progress_element+"_under").style.height = "75";

      var progressd = MochiKit.Style.getElementDimensions(this.progress_element+"_under");

      to_pos    = new Object;
      to_pos.x  = 0 + scroll.x;
      to_pos.y  = (screend.h/2)-(progressd.h/2) + scroll.y;

      MochiKit.DOM.getElement(this.progress_element+"_under").style.width  = screend.w;

      MochiKit.Style.setElementPosition(this.progress_element+"_under", to_pos);

// =================

      if (!MochiKit.DOM.getElement(this.progress_element)) {

        var progress_element = new MochiKit.DOM.DIV({"id":this.progress_element,"style":"display:none; background-color: #FFFFFF; position: absolute; border-top: 1px solid #000000; border-bottom: 1px solid #000000"},null);

      } else {

        var progress_element = MochiKit.DOM.getElement(this.progress_element);

      } // end if

      document.body.appendChild(progress_element);

      MochiKit.DOM.getElement(this.progress_element).innerHTML    = '<div id="'+this.progress_element+'_message" style="text-align: center; padding: 5px;"><b>Please wait while your document saves...</b></div><div id="'+this.progress_element+'_image" style="text-align: center; padding: 5px;"><img src="images/images/ajax_loading.gif"></div>';
      MochiKit.DOM.getElement(this.progress_element).style.height = "50";

      var progressd = MochiKit.Style.getElementDimensions(this.progress_element);

      to_pos    = new Object;
      to_pos.x  = 0 + scroll.x;
      to_pos.y  = (screend.h/2)-(progressd.h/2) + scroll.y;

      MochiKit.DOM.getElement(this.progress_element).style.width  = screend.w;

      MochiKit.Style.setElementPosition(this.progress_element, to_pos);

// =================

      MochiKit.Visual.toggle(this.progress_element+"_under","appear",{"duration":0.25,"to":0.50});
      MochiKit.Visual.toggle(this.progress_element,"appear",{"duration":0.25});

    } // end create_progress_bar()

  }; // end class Basis.ajax_form_post

  Basis.decode_html_entities = function (string) {

    if (string) {

      var htmlentities = {"nbsp":160,
                          "iexcl":161,
                          "cent":162,
                          "pound":163,
                          "curren":164,
                          "yen":165,
                          "brvbar":166,
                          "sect":167,
                          "uml":168,
                          "copy":169,
                          "ordf":170,
                          "laquo":171,
                          "not":172,
                          "shy":173,
                          "reg":174,
                          "macr":175,
                          "deg":176,
                          "plusmn":177,
                          "sup2":178,
                          "sup3":179,
                          "acute":180,
                          "micro":181,
                          "para":182,
                          "middot":183,
                          "cedil":184,
                          "sup1":185,
                          "ordm":186,
                          "raquo":187,
                          "frac14":188,
                          "frac12":189,
                          "frac34":190,
                          "iquest":191,
                          "Agrave":192,
                          "Aacute":193,
                          "Acirc":194,
                          "Atilde":195,
                          "Auml":196,
                          "Aring":197,
                          "AElig":198,
                          "Ccedil":199,
                          "Egrave":200,
                          "Eacute":201,
                          "Ecirc":202,
                          "Euml":203,
                          "Igrave":204,
                          "Iacute":205,
                          "Icirc":206,
                          "Iuml":207,
                          "ETH":208,
                          "Ntilde":209,
                          "Ograve":210,
                          "Oacute":211,
                          "Ocirc":212,
                          "Otilde":213,
                          "Ouml":214,
                          "times":215,
                          "Oslash":216,
                          "Ugrave":217,
                          "Uacute":218,
                          "Ucirc":219,
                          "Uuml":220,
                          "Yacute":221,
                          "THORN":222,
                          "szlig":223,
                          "agrave":224,
                          "aacute":225,
                          "acirc":226,
                          "atilde":227,
                          "auml":228,
                          "aring":229,
                          "aelig":230,
                          "ccedil":231,
                          "egrave":232,
                          "eacute":233,
                          "ecirc":234,
                          "euml":235,
                          "igrave":236,
                          "iacute":237,
                          "icirc":238,
                          "iuml":239,
                          "eth":240,
                          "ntilde":241,
                          "ograve":242,
                          "oacute":243,
                          "ocirc":244,
                          "otilde":245,
                          "ouml":246,
                          "divide":247,
                          "oslash":248,
                          "ugrave":249,
                          "uacute":250,
                          "ucirc":251,
                          "uuml":252,
                          "yacute":253,
                          "thorn":254,
                          "yuml":255,
                          "fnof":402,
                          "Alpha":913,
                          "Beta":914,
                          "Gamma":915,
                          "Delta":916,
                          "Epsilon":917,
                          "Zeta":918,
                          "Eta":919,
                          "Theta":920,
                          "Iota":921,
                          "Kappa":922,
                          "Lambda":923,
                          "Mu":924,
                          "Nu":925,
                          "Xi":926,
                          "Omicron":927,
                          "Pi":928,
                          "Rho":929,
                          "Sigma":931,
                          "Tau":932,
                          "Upsilon":933,
                          "Phi":934,
                          "Chi":935,
                          "Psi":936,
                          "Omega":937,
                          "alpha":945,
                          "beta":946,
                          "gamma":947,
                          "delta":948,
                          "epsilon":949,
                          "zeta":950,
                          "eta":951,
                          "theta":952,
                          "iota":953,
                          "kappa":954,
                          "lambda":955,
                          "mu":956,
                          "nu":957,
                          "xi":958,
                          "omicron":959,
                          "pi":960,
                          "rho":961,
                          "sigmaf":962,
                          "sigma":963,
                          "tau":964,
                          "upsilon":965,
                          "phi":966,
                          "chi":967,
                          "psi":968,
                          "omega":969,
                          "thetasym":977,
                          "upsih":978,
                          "piv":982,
                          "bull":8226,
                          "hellip":8230,
                          "prime":8242,
                          "Prime":8243,
                          "oline":8254,
                          "frasl":8260,
                          "weierp":8472,
                          "image":8465,
                          "real":8476,
                          "trade":8482,
                          "alefsym":8501,
                          "larr":8592,
                          "uarr":8593,
                          "rarr":8594,
                          "darr":8595,
                          "harr":8596,
                          "crarr":8629,
                          "lArr":8656,
                          "uArr":8657,
                          "rArr":8658,
                          "dArr":8659,
                          "hArr":8660,
                          "forall":8704,
                          "part":8706,
                          "exist":8707,
                          "empty":8709,
                          "nabla":8711,
                          "isin":8712,
                          "notin":8713,
                          "ni":8715,
                          "prod":8719,
                          "sum":8721,
                          "minus":8722,
                          "lowast":8727,
                          "radic":8730,
                          "prop":8733,
                          "infin":8734,
                          "ang":8736,
                          "and":8743,
                          "or":8744,
                          "cap":8745,
                          "cup":8746,
                          "int":8747,
                          "there4":8756,
                          "sim":8764,
                          "cong":8773,
                          "asymp":8776,
                          "ne":8800,
                          "equiv":8801,
                          "le":8804,
                          "ge":8805,
                          "sub":8834,
                          "sup":8835,
                          "nsub":8836,
                          "sube":8838,
                          "supe":8839,
                          "oplus":8853,
                          "otimes":8855,
                          "perp":8869,
                          "sdot":8901,
                          "lceil":8968,
                          "rceil":8969,
                          "lfloor":8970,
                          "rfloor":8971,
                          "lang":9001,
                          "rang":9002,
                          "loz":9674,
                          "spades":9824,
                          "clubs":9827,
                          "hearts":9829,
                          "diams":9830,
                          "quot":34,
                          "amp":38,
                          "lt":60,
                          "gt":62,
                          "OElig":338,
                          "oelig":339,
                          "Scaron":352,
                          "scaron":353,
                          "Yuml":376,
                          "circ":710,
                          "tilde":732,
                          "ensp":8194,
                          "emsp":8195,
                          "thinsp":8201,
                          "zwnj":8204,
                          "zwj":8205,
                          "lrm":8206,
                          "rlm":8207,
                          "ndash":8211,
                          "mdash":8212,
                          "lsquo":8216,
                          "rsquo":8217,
                          "sbquo":8218,
                          "ldquo":8220,
                          "rdquo":8221,
                          "bdquo":8222,
                          "dagger":8224,
                          "Dagger":8225,
                          "permil":8240,
                          "lsaquo":8249,
                          "rsaquo":8250,
                          "euro":8364};

      var return_string = string;

      for (var i in htmlentities) {

        return_string = return_string.replace(new RegExp( ("&"+i+";"), "gi" ), String.fromCharCode(htmlentities[i]));

      } // end for

    } // end if

    return return_string;

  }; // end Basis.decode_html_entities()

  Basis.execute_javascript = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var st = element.getElementsByTagName("SCRIPT");
      var string_to_execute;

      for (var i=0;i<st.length; i++) {

        string_to_execute = st[i].innerHTML;

        try {

          eval(string_to_execute.split("<!--").join("").split("-->").join(""));

        } catch(e) {

          MochiKit.Logging.log(e);

        } // end try

      } // end for

    } // end if

  }; // end Basis.execute_javascript()

  Basis.image_rotator = function (element, array, options) {

    /*

      argument in this format:

      element = id of image to swap with

      array( "URL",
             "URL2",
           );

    */

    var options = options ? options : {};

    var d       = MochiKit.DOM.currentDocument();

    if (d.images) {

      if (!d.preloaded_images)           { d.preloaded_images           = new Object(); } // end if
      if (!d.preloaded_images["rotate"]) { d.preloaded_images["rotate"] = new Array();  } // end if

      var fade     = options["fade"] ? true : false;
      var duration = options["duration"] ? options["duration"] : 2000;

      var index = d.preloaded_images["rotate"].length;
      var obj   = MochiKit.DOM.getElement(element);

      d.preloaded_images["rotate"][index]    = new Array();
      d.preloaded_images["rotate"][index][0] = element;

      if (obj) {

        if (fade) {

          var image_dimensions = MochiKit.Style.getElementDimensions(obj);

          var layer_a   = DIV({"style" : "position: absolute; top: 0px; left: 0px; display: none;"});
          var layer_b   = DIV({"style" : "position: absolute; top: 0px; left: 0px; display: none;"});
          var container = DIV({"style" : "overflow: hidden; position: relative;"});
          var obj_b     = IMG({"src" : obj.src});

          MochiKit.Style.setElementDimensions(container, image_dimensions);
          MochiKit.Style.setElementDimensions(layer_a, image_dimensions);
          MochiKit.Style.setElementDimensions(layer_b, image_dimensions);

          MochiKit.Style.setOpacity(layer_a, 100);
          MochiKit.Style.setOpacity(layer_b, 0);

          obj.parentNode.insertBefore(container, obj);

          layer_a.appendChild(obj);
          layer_b.appendChild(obj_b);

          container.appendChild(layer_a);
          container.appendChild(layer_b);
 
          layer_a.style.display = "";
          layer_b.style.display = "";

        } // end if

        for (var i in array) {

          var idx = d.preloaded_images["rotate"][index].length;

          d.preloaded_images["rotate"][index][idx]     = new Image();
          d.preloaded_images["rotate"][index][idx].src = array[i];

        } // end for

        if (fade) {

          obj.rotate = MochiKit.Base.bind(function (index, idx) {

            var d = MochiKit.DOM.currentDocument();

            var current_image = (this.layer_a.style.display == "none") ? this.image_b : this.image_a;
            var swap_to_image = (current_image == this.image_a) ? this.image_b : this.image_a;

            if (d.preloaded_images["rotate"][index][idx] && d.preloaded_images["rotate"][index][idx].src) {

              swap_to_image.src = d.preloaded_images["rotate"][index][idx].src;

              MochiKit.Visual.fade(current_image.parentNode, 0, {"duration" : 0.50, "afterFinish" : MochiKit.Base.bind(function () { this.style.display = "none"; }, current_image)});
              MochiKit.Visual.appear(swap_to_image.parentNode, 100, {"duration" : 0.50, "afterFinish" : MochiKit.Base.bind(function () { this.style.display = ""; }, swap_to_image)});

            } // end if

            var max = d.preloaded_images["rotate"][index].length;

            if (idx == (max-1)) {

              var nidx = 1;

            } else {

              var nidx = idx+1;

            } // end if

            setTimeout(("MochiKit.DOM.getElement('"+ this.element.id +"').rotate("+ index +","+ nidx +");"), duration);

          }, {"element" : obj,
              "layer_a" : layer_a,
              "layer_b" : layer_b,
              "image_a" : obj,
              "image_b" : obj_b}); // end rotate()

        } else {

          obj.rotate = function (index, idx) {

            var element = MochiKit.DOM.getElement(d.preloaded_images["rotate"][index][0]);

            if (element) {

              if (d.preloaded_images["rotate"][index][idx] && d.preloaded_images["rotate"][index][idx].src) {

                element.src = d.preloaded_images["rotate"][index][idx].src;

              } // end if

              var max = d.preloaded_images["rotate"][index].length;

              if (idx == (max-1)) {

                var nidx = 1;

              } else {

                var nidx = idx+1;

              } // end if

              setTimeout(("MochiKit.DOM.getElement('"+ element.id +"').rotate("+ index +","+ nidx +");"), duration);

            } // end if

          }; // end rotate()

        } // end if

        if (d.preloaded_images["rotate"][index].length > 1) {

          obj.rotate(index, 1);

        } // end if

      } // end if

    } // end if

  }; // end Basis.image_rotator()

  Basis.load_rollover_images = function (array) {

    /*

      argument in this format:

      array( array("id"  => IMG_ID,
                   "off" => URL,
                   "on"  => URL,
                   "ids" => array() of additional id's to attach events to,
                   "link_image" => true/false
                  ),
             array(),
           );

    */

    var d = MochiKit.DOM.currentDocument();

    if (d.images) {

      if (!d.preloaded_images) { d.preloaded_images = new Object(); } // end if

      for (var i in array) {

        if (array[i]["id"] && MochiKit.DOM.getElement(array[i]["id"])) {

          d.preloaded_images[array[i]["id"]]         = new Object();
          d.preloaded_images[array[i]["id"]].off     = new Image();
          d.preloaded_images[array[i]["id"]].off.src = array[i]["off"];
          d.preloaded_images[array[i]["id"]].on      = new Image();
          d.preloaded_images[array[i]["id"]].on.src  = array[i]["on"];

          var obj = MochiKit.DOM.getElement(array[i]["id"]);

          if (obj) {

            obj.do_not_swap = false;

            obj.set = function (toggle) {

              if (!this.do_not_swap) {

                if (toggle == "on") {

                  this.src = d.preloaded_images[this.id].on.src;

                } else if (toggle == "off") {

                  this.src = d.preloaded_images[this.id].off.src;

                } // end if

              } // end if

            } // end set()

            obj.swap = function (toggle) {

              if (!this.do_not_swap) {

                if ((this.src == d.preloaded_images[this.id].off.src) || (toggle == "on")) {

                  this.src = d.preloaded_images[this.id].on.src;

                } else {

                  this.src = d.preloaded_images[this.id].off.src;

                } // end if

              } // end if

            } // end swap()

            if (!array[i]["noswap"] && (array[i]["link_image"] != false)) {

              // USED TO BE ONMOUSEENTER / ONMOUSELEAVE; INTERFERED WITH Basis.load_rollover_images()

              MochiKit.Signal.connect(obj,"onmouseover",function () { this.swap("on"); });
              MochiKit.Signal.connect(obj,"onmouseout",function () { this.swap("off"); });

            } // end if

          } // end if

          if (array[i]["ids"]) {

            for (var x in array[i]["ids"]) {

              var eobj = MochiKit.DOM.getElement(array[i]["ids"][x]);

              if (eobj) {

                MochiKit.Signal.connect(eobj,"onmouseover",obj,function () { this.swap("on"); });
                MochiKit.Signal.connect(eobj,"onmouseout",obj,function () { this.swap("off"); });

              } // end if

            } // end for

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.load_rollover_images()

  Basis.populator = function () {

    this.__init__();

  }; // end gallery()

  Basis.populator.instances = [];

  Basis.populator.prototype = {

    __init__: function () {

      this.dropdown_a                       = '';
      this.dropdown_b                       = new Array;

      this.rrv_run                          = -1;

      this.populate_array                   = new Object;

      this.index                            = Basis.populator.instances.length;
      Basis.populator.instances[this.index] = this;

    }, // end __init__()

    add_dropdown_b: function (element) {

      this.dropdown_b[this.dropdown_b.length] = element;

    }, // end add_dropdown_b()

    populate: function (ddb,to_oidx) {

      var opopulate_array;

      if (typeof this.populate_array == "object") {

        opopulate_array = this.populate_array;

      } else {

        opopulate_array     = MochiKit.Base.evalJSON(decodeBase64(this.populate_array));
        this.populate_array = opopulate_array;

      } // end if

      var i_ddb_idx = false;

      for (var tddb in this.dropdown_b) {

        if (this.dropdown_b[tddb] == ddb) {

          i_ddb_idx = tddb;

        } // end if

      } // end for

      if (this.dropdown_b[tddb]) {

        ddb_idx = this.dropdown_b[i_ddb_idx].substring(0,(this.dropdown_b[i_ddb_idx].length-this.rrv_run.length-1));

        if (this.dropdown_a && this.populate_array) {

          var to             = document.getElementById(this.dropdown_b[i_ddb_idx]);
          var indexes        = {"from" : document.getElementById(this.dropdown_a).options[document.getElementById(this.dropdown_a).selectedIndex].value,
                                "to"   : to.selectedIndex
                               };

          populate_array     = ((opopulate_array[ddb_idx] && opopulate_array[ddb_idx][indexes.from]) ? opopulate_array[ddb_idx][indexes.from] : []);
          to.options.length  = 0;
          x                  = 0;

          for (var i in populate_array) {

            to.options[x] = new Option(populate_array[i],i);
            x++;

          } // end for

          if (to_oidx) {

            to.selectedIndex = to_oidx;

          } // end if

        } // end if

      } // end if

    }, // end populate()

    set_onchange: function (ddb) {

      var tfunc = new Function('Basis.populator.instances['+this.index+'].populate(\''+ddb+'\');');

      MochiKit.Signal.connect(this.dropdown_a,'onchange',tfunc);

    } // end set_onchange()

  }; // end class Basis.populator

  Basis.scroll_coords = function () {

    var scroll_x, scroll_y;

    if (self.pageYOffset) {

      scroll_x = self.pageXOffset;
      scroll_y = self.pageYOffset;

    } else if (document.documentElement && document.documentElement.scrollTop) {

      scroll_x = document.documentElement.scrollLeft;
      scroll_y = document.documentElement.scrollTop;

    } else if (document.body) {

      scroll_x = document.body.scrollLeft;
      scroll_y = document.body.scrollTop;

    } // end if

    return {"x":scroll_x,"y":scroll_y};

  }; // end Basis.scroll_coords()

  Basis.submenu = function () {

    this.__init__();

  }; // end Basis.submenu()

  Basis.submenu.attachments = new Object();

  Basis.submenu.prototype = {

    __init__: function () {

      this.parent;
      this.children = new Array();

      this.menu_title;
      this.menu_link;

    }, // end __init__()

    add_menu_item: function(title,link) {

      var menu_item        = new Basis.submenu();

      menu_item.parent     = this;
      menu_item.menu_title = title;
      menu_item.menu_link  = link;

      this.children[this.children.length] = menu_item;

      return this.children[this.children.length-1];

    }, // end add_menu_item()

    clear_parent_timeouts: function () {

      if (this.id) {

        if (this.id != this.parent_element) {

          var container_id = this.id.split('_');
          container_id     = container_id[container_id.length-1];
          container_id     = this.id.substring(0,(this.id.length-container_id.length-1))+'_container';

        } else {

          var container_id = this.parent_element;

        } // end if

        MochiKit.Logging.log('clearTimeout(MochiKit.DOM.getElement('+container_id+').timeout);\n');
        clearTimeout(MochiKit.DOM.getElement(container_id).timeout);

      } // end if

      if (this.parent && (this.parent.id != this.id)) {

        this.parent.clear_parent_timeouts();

      } else {

        return;

      } // end if

    }, // end clear_parent_timeouts()

    compile: function (x) {

      var output = '';

      if (!x) {

        x = 0;

      } // end if

      if (!this.id && !this.parent && !this.container_id) {

        this.id           = this.parent_element;
        this.container_id = 'submenu_0_container';
        this.parent       = this;

      } // end if

      if (!Basis.submenu.attachments[this.id]) {

        Basis.submenu.attachments[this.id] = new Object();

      } // end if

      output += '<div id="submenu_'+x+'_container" class="menu_container">\n';

      Basis.submenu.attachments[this.id]['onmouseover'] = 'MochiKit.Signal.connect(\''+this.id+'\',\'onmouseover\',function () { MochiKit.Style.showElement(\'submenu_'+x+'_container\'); clearTimeout(MochiKit.DOM.getElement(\'submenu_'+x+'_container\').timeout); });\n';
//    Basis.submenu.attachments[this.id]['onmouseout']  = 'MochiKit.Signal.connect(\''+this.id+'\',\'onmouseout\', function () { MochiKit.DOM.getElement(\'submenu_'+x+'_container\').timeout = setTimeout("MochiKit.Style.hideElement(\'submenu_'+x+'_container\');",1000); });\n';

      if (this.children && (this.children.length>0)) {

        for (var i in this.children) {

          var element                   = 'submenu_'+x;
          this.children[i].id           = 'submenu_'+x+'_'+i;
          this.children[i].container_id = 'submenu_'+x+'_container';

          output += '<div id="'+this.children[i].id+'"><a href="'+this.children[i].menu_link+'">'+this.children[i].menu_title+'</a></div>\n';

          if (this.children[i].children && (this.children[i].children.length>0)) {

            output += this.children[i].compile(x+1);

          } // end if

        } // end for

      } // end if

      output += "</div>\n";

      return output;

    }, // end compile()

    find_node: function (node) {

      var obj = this;

      if (is_array(node)) {

        for (var i in node) {

          if (obj && obj.children && (obj.children.length>0) && obj.children[node[i]]) {

            obj = obj.children[node[i]];

          } // end if

        } // end for

        return obj;

      } // end if

    }, // end find_node()

    find_node_by_id: function (id) {

      var to_return;

      if (this.id == id) {

        return this;

      } else {

        if (this && this.children && (this.children.length>0)) {

          for (var i in this.children) {

            to_return = this.children[i].find_node_by_id(id);

          } // end for

        } // end if

      } // end if

      return to_return;

    } // end find_node_by_id()

  }; // end class Basis.submenu

  Basis.timeout = function () {

    alert('You have been idle for too long. Please \'Save\' the record that you currently have open!');

  }; // end Basis.timeout()

  Basis.mouse_coords = function (e) {

    var posx = 0;
    var posy = 0;

    if (!e) { var e = window.event; } // end if

    if (e.pageX || e.pageY) {

      posx = e.pageX;
      posy = e.pageY;

    } else if (e.clientX || e.clientY) {

      posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
      posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;

    } // end if

    return {"x":posx,"y":posy};

  }; // end Basis.mouse_coords()

  Basis.array_length = function (element) {

    var x = 0;

    if (element) {

      switch (typeof(element)) {

        case "string":
        case "number":
        case "function":
        case "boolean":
        case "undefined":

          return x;

          break;

      } // end switch

      for (var i in element) {

        if (typeof(element[i]) != "function") {

          x++;

        } // end if

      } // end for

    } // end if

    return x;

  }; // end Basis.array_length()

  Basis.confirm = function (options) {

    var default_options = { "window_title"       : "&nbsp;",
                            "variable_title"     : "&nbsp;",
                            "ivalue"             : "",
                            "target"             : null,
                            "button_ok_text"     : "OK",
                            "button_cancel_text" : "Cancel",
                            "on_true"            : function () { return true;  },
                            "on_false"           : function () { return false; }
                          };

    // ===============================================================

      if (!options) {

        var options = {};

      } // end if

      for (var i in default_options) {

        if (!options[i]) {

          options[i] = default_options[i];

        } // end if

      } // end for

    // ===============================================================

    var confirm_id = "Basis_confirm_987654321";
    var obj        = MochiKit.DOM.getElement(confirm_id);

    if (!options["target"]) {

      options["target"] = confirm_id;

    } else {

      options["target"] = MochiKit.DOM.getElement(options["target"]).id;

      if (!options["target"]) {

        options["target"] = confirm_id;

      } // end if

    } // end if

    if (!obj) {

      // ===============================================================

        MochiKit.Signal.disconnect(Basis.misc_vars.confirm_true_signal);
        MochiKit.Signal.disconnect(Basis.misc_vars.confirm_false_signal);

        delete Basis.misc_vars.confirm_true_signal;
        delete Basis.misc_vars.confirm_false_signal;

      // ===============================================================

      options["html"] = '<div id="'+confirm_id+'_variable_title" style="display: inline; padding-right: 10px;">'+options["variable_title"]+'</div>\
                         <div class="win32_block" style="text-align: right;"> \
                           <input id="'+confirm_id+'_ok" type="button" class="win32_button" value="'+options["button_ok_text"]+'" onclick="MochiKit.Signal.signal(\''+options["target"]+'\',\'on_true\'); MochiKit.DOM.removeElement(\''+confirm_id+'\');"> \
                           <input id="'+confirm_id+'_cancel" type="button" class="win32_button" value="'+options["button_cancel_text"]+'" onclick="MochiKit.Signal.signal(\''+options["target"]+'\',\'on_false\'); MochiKit.DOM.removeElement(\''+confirm_id+'\');"> \
                         </div>';

      Basis.popup({"id"           : confirm_id,
                   "html"         : options["html"],
                   "style"        : options["style"],
                   "window_title" : options["window_title"]
                  });

      if (!Basis.misc_vars.confirm_true_signal) {

        Basis.misc_vars.confirm_true_signal   = MochiKit.Signal.connect(options["target"],"on_true",options["on_true"]);

      } // end if

      if (!Basis.misc_vars.confirm_false_signal) {

        Basis.misc_vars.confirm_false_signal  = MochiKit.Signal.connect(options["target"],"on_false",options["on_false"]);

      } // end if

      return true;

    } else {

      return false;

    } // end if

  }; // end Basis.confirm()

  Basis.prompt = function (options) {

    var default_options = { "window_title"       : "&nbsp;",
                            "variable_title"     : "&nbsp;",
                            "ivalue"             : "",
                            "target"             : null,
                            "button_ok_text"     : "OK",
                            "button_cancel_text" : "Cancel",
                            "on_true"            : function () { return true;  },
                            "on_false"           : function () { return false; }
                          };

    // ===============================================================

      if (!options) {

        var options = {};

      } // end if

      for (var i in default_options) {

        if (!options[i]) {

          options[i] = default_options[i];

        } // end if

      } // end for

    // ===============================================================

    var prompt_id = "Basis_prompt_987654321";
    var obj       = MochiKit.DOM.getElement(prompt_id);

    if (!options["target"]) {

      options["target"] = prompt_id;

    } else {

      options["target"] = MochiKit.DOM.getElement(options["target"]).id;

      if (!options["target"]) {

        options["target"] = prompt_id;

      } // end if

    } // end if

    if (!obj) {

      // ===============================================================

        MochiKit.Signal.disconnect(Basis.misc_vars.prompt_true_signal);
        MochiKit.Signal.disconnect(Basis.misc_vars.prompt_false_signal);

        delete Basis.misc_vars.prompt_true_signal;
        delete Basis.misc_vars.prompt_false_signal;
        delete Basis.misc_vars.prompt_value;

      // ===============================================================

      options["html"] = '<div id="'+prompt_id+'_variable_title" style="display: inline; padding-right: 10px;">'+options["variable_title"]+'</div><input type="text" id="'+prompt_id+'_input" value="'+options["ivalue"]+'" style="width: 125px;">\
                         <div class="win32_block" style="text-align: right;"> \
                           <input id="'+prompt_id+'_ok" type="button" class="win32_button" value="OK" onclick="Basis.misc_vars.prompt_value = MochiKit.DOM.getElement(\''+prompt_id+'_input\').value; MochiKit.Signal.signal(\''+options["target"]+'\',\'on_true\'); MochiKit.DOM.removeElement(\''+prompt_id+'\');"> \
                           <input id="'+prompt_id+'_cancel" type="button" class="win32_button" value="Cancel" onclick="Basis.misc_vars.prompt_value = null; MochiKit.Signal.signal(\''+options["target"]+'\',\'on_false\'); MochiKit.DOM.removeElement(\''+prompt_id+'\');"> \
                         </div>';

      Basis.popup({"id"           : prompt_id,
                   "html"         : options["html"],
                   "style"        : options["style"],
                   "window_title" : options["window_title"]
                  });

      if (!Basis.misc_vars.prompt_true_signal) {

        Basis.misc_vars.prompt_true_signal   = MochiKit.Signal.connect(options["target"],"on_true",options["on_true"]);

      } // end if

      if (!Basis.misc_vars.prompt_false_signal) {

        Basis.misc_vars.prompt_false_signal  = MochiKit.Signal.connect(options["target"],"on_false",options["on_false"]);

      } // end if

      return true;

    } else {

      return false;

    } // end if

  }; // end Basis.prompt()

  Basis.align_element_to_element = function (element, dest, how, offset, animation, duration) {

    var element = MochiKit.DOM.getElement(element);
    var dest    = MochiKit.DOM.getElement(dest);

    if (element && dest && how) {

      // MochiKit.Style.getElementPosition won't return coordinates if element.style.display = "none";
      //   if that's the case, need to make them completely transparent but display = ""

      // MochiKit.Style.getOpacity doesn't exist, so I need to write Basis.get_opacity and use that in
      // the commented-out sections below

      var e_disp    = element.style.display;
//    var e_opacity = MochiKit.Style.getOpacity(element);
      var d_disp    = dest.style.display;
//    var d_opacity = MochiKit.Style.getOpacity(dest);

      if (e_disp == "none") {

//      MochiKit.Style.setOpacity(element,0);
        element.style.display = "";

      } // end if

      if (d_disp == "none") {

//      MochiKit.Style.setOpacity(dest,0);
        element.style.display = "";

      } // end if

      var e_pos    = MochiKit.Style.getElementPosition(element);
      var e_dim    = MochiKit.Style.getElementDimensions(element);
      var d_pos    = MochiKit.Style.getElementPosition(dest);
      var d_dim    = MochiKit.Style.getElementDimensions(dest);
      var d_anchor = {};

      if (e_pos && e_dim && d_pos && d_dim) {

        switch (how) {

          case "center":

            var e_center = {"x" : e_pos.x + Math.floor(e_dim.w / 2),
                            "y" : e_pos.y + Math.floor(e_dim.h / 2)};

            var d_center = {"x" : d_pos.x + Math.floor(d_dim.w / 2),
                            "y" : d_pos.y + Math.floor(d_dim.h / 2)};

            var d_anchor = {"x" : (d_center.x - (e_center.x - e_pos.x)),
                            "y" : (d_center.y - (e_center.y - e_pos.y))};

            break;

          case "bottom_to_top":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y + (d_pos.y - e_pos.y - e_dim.h)};

            break;

          case "bottom_to_bottom":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y - ((e_pos.y + e_dim.h) - (d_pos.y + d_dim.h))};

            break;

          case "top_to_bottom":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y + (d_pos.y - e_pos.y + d_dim.h)};

            break;

          case "top_to_top":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y - (e_pos.y - d_pos.y)};

            break;

          case "left_to_right":

            var d_anchor = {"x" : e_pos.x + (d_pos.x - e_pos.x + e_dim.w),
                            "y" : e_pos.y};

            break;

          case "left_to_left":

            var d_anchor = {"x" : d_pos.x,
                            "y" : e_pos.y};

            break;

          case "right_to_left":

            var d_anchor = {"x" : e_pos.x + (d_pos.x - e_pos.x - e_dim.w),
                            "y" : e_pos.y};

            break;

          case "right_to_right":

            var d_anchor = {"x" : d_pos.x + (d_dim.w - e_dim.w),
                            "y" : e_pos.y};

            break;

        } // end switch

        if (offset && offset.x) {

          d_anchor.x += offset.x;

        } // end if

        if (offset && offset.y) {

          d_anchor.y += offset.y;

        } // end if

        if (!((d_anchor.x == 0) && (d_anchor.y == 0))) {

          element.style.position = "absolute";

          if (!animation) {

            MochiKit.Style.setElementPosition(element, d_anchor);
/*
            Basis.set_element_position(element, {"x"           : d_anchor.x,
                                                 "y"           : d_anchor.y,
                                                 "mode"        : "relative",
                                                 "relative_to" : dest
                                                });
*/
          } else {

            if (!duration) {

              duration = 0.50;

            } // end if

            MochiKit.Visual.Move(element, {"x"        : d_anchor.x,
                                           "y"        : d_anchor.y,
                                           "duration" : duration,
                                           "mode"     : element.style.position
                                          });

          } // end if

        } // end if

      } // end if

      element.style.display = e_disp;
//    MochiKit.Style.setOpacity(element,e_opacity);

      dest.style.display    = d_disp;
//    MochiKit.Style.setOpacity(dest,d_opacity);

      return d_anchor;

    } // end if

  }; // end Basis.align_element_to_element()

  Basis.center_element = function (element,animation,duration) {

    var obj = MochiKit.DOM.getElement(element);

    if (obj) {

      var screend  = MochiKit.Style.getViewportDimensions();
      var elementd = MochiKit.Style.getElementDimensions(obj);

      var to_pos   = new Object;
      to_pos.x     = ((screend.w / 2)-(elementd.w / 2));
      to_pos.y     = ((screend.h / 2)-(elementd.h / 2));

      var scroll;
      scroll       = Basis.scroll_coords();

      to_pos.x    += scroll.x;
      to_pos.y    += scroll.y;

      if (to_pos.y < 0) { to_pos.y = 0; } // end if

      if (!animation) {

        MochiKit.Style.setElementPosition(obj, to_pos);

      } else {

        if (!duration) {

          duration = 0.50;

        } // end if

        MochiKit.Visual.Move(obj, {"x":to_pos.x,"y":to_pos.y,"duration":duration,"mode":"absolute"});

      } // end if

    } // end if

  }; // end Basis.center_element()

  Basis.toggle_visible = function (element) {

    MochiKit.DOM.toggleElementClass("invisible", element);

  }; // end Basis.toggle_visible()

  Basis.make_visible = function (element) {

    MochiKit.DOM.removeElementClass(element, "invisible");

  }; // end Basis.make_visible()

  Basis.make_invisible = function (element) {

    MochiKit.DOM.addElementClass(element, "invisible");

  }; // end Basis.make_invisible()

  Basis.is_visible = function (element) {

    return !MochiKit.DOM.hasElementClass(element, "invisible");

  }; // end Basis.is_visible()

  Basis.is_element = function (element) {

    return (element && (typeof(element) == "object") && element.tagName) ? true : false;

  }; // end Basis.is_element()

  Basis.get_element = function (element) {

    return Basis.is_element(element) ? element : MochiKit.DOM.getElement(element);

  }; // end Basis.get_element()

  Basis.dynamic_select_list = function () {

    this.__init__();

  }; // end Basis.dynamic_select_list()

  Basis.dynamic_select_list.instances = [];

  Basis.dynamic_select_list.prototype = {

    __init__: function () {

      this.list          = null;
      this.list_id       = null; // links to SELECT list dropdown id

      this.table_name    = "basis_dynamic_list_item";

      this.alias         = null; // field value in this.table_name
      this.parent_id     = null; //

      this.sid           = null;
      this.post_url      = null;

      this.prompt_action = true;

      this.on_change     = function () {};

      this.index   = Basis.dynamic_select_list.instances.length;
      Basis.dynamic_select_list.instances[this.index] = this;

    }, // end __init__()

    compile: function () {

      this.list = MochiKit.DOM.getElement(this.list_id);

      this.attach_events();

    }, // end compile()

    add_item: function() {

      var text = MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));

      if (this.list && this.list.id && text.value) {

        window.status = "Adding item to list...";

        if (this.prompt_action) {

          if (!confirm("Are you sure you want to add '"+text.value+"' to the list?")) { return; } // end if

        } // end if

        Basis.select_add_option(this.list,null,text.value);

        text.value = "";

        text.focus();

        this.update_database();

      } // end if

    }, // end add_item()

    attach_events: function () {

      if (this.list && this.list.id) {

        var obj = MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_add_button"));

        if (obj) {

          MochiKit.Signal.connect(obj,"onclick",this,function () { this.add_item(); });

        } // end if

        var obj = MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_rename_button"));

        if (obj) {

          MochiKit.Signal.connect(obj,"onclick",this,function () { this.rename_item(); });

        } // end if

        var obj = MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_delete_button"));

        if (obj) {

          MochiKit.Signal.connect(obj,"onclick",this,function () { this.delete_item(); });

        } // end if

      } // end if

    }, // end attach_events()

    delete_item: function () {

      var selected = Basis.select_selected_indexes(this.list);

      if (this.list && this.list.id && (Basis.array_length(selected) > 0)) {

        if (this.prompt_action) {

          if (Basis.array_length(selected) == 1) {

            var index = selected[0]["index"];

            if (this.prompt_action) {

              if (!confirm("Are you sure you want to delete '"+this.list.options[index].text+"' from the list?")) { return; } // end if

            } // end if

            window.status = "Deleting item from list...";

            MochiKit.DOM.removeElement(this.list.options[index]);

            this.update_database();

          } else {

            if (this.prompt_action) {

              if (!confirm("Are you sure you want to delete the "+Basis.array_length(selected)+" selected items from the list?")) { return; } // end if

            } // end if

            for (var i=0; i<Basis.array_length(selected); i++) {

              Basis.select_delete_item_by_value(this.list.id, selected[i]["value"]);

            } // end for

            this.update_database();

          } // end if

        } // end if

      } else if (Basis.array_length(selected) == 0) {

        alert("Please select an item to delete, then click this button again.");

      } // end if

    }, // end delete_item()

    manage_form: function (alias, parent_id, field, window_title) {

      if (alias && parent_id && field) {

        window.status = "Fetching '"+field+"' form...";

        var to_post       = new Object();
        to_post.alias     = alias;
        to_post.field     = field;
        to_post.parent_id = parent_id;

        var as   = new Basis.ajax_scaffold;
        as.alias = "Basis.dynamic_select_list.manage_form";
        as.sid   = this.sid;
        as.url   = this.post_url;

        as.pvar         = this;
        as.field        = field;
        as.window_title = window_title;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            if (this.window_title) {

              var window_title = this.window_title;

            } else {

              var window_title = "Manage "+(this.field.substring(0,1).toUpperCase() + this.field.substring(1,this.field.length));

            } // end if

            this.popup = Basis.popup({"id"           : "manage_"+this.field+"_form",
                                      "html"         : response["html"],
                                      "window_title" : window_title
                                     });

            window.status  = "Done";

          } else {

            window.status = "manage_form(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end manage_form()

    rename_item: function () {

      var text     = MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));
      var selected = Basis.select_selected_indexes(this.list);

      if (this.list && this.list.id && text.value && (Basis.array_length(selected) > 0)) {

        var index = selected[0]["index"];

        if (this.prompt_action) {

          if (!confirm("Are you sure you want to rename '"+this.list.options[index].text+"' to '"+text.value+"'?")) { return; } // end if

        } // end if

        window.status = "Renaming item in list...";

        this.list.options[index].text = text.value;

        text.value = "";

        text.focus();

        this.update_database();

      } else if (this.list && this.list.id && !text.value && (Basis.array_length(selected) > 0)) {

        if (Basis.array_length(selected) > 1) {

          alert("You can only rename one item at a time; please select a single item and click this button again.");

        } else {

          var index = selected[0].index;

          if (this.list.options[index]) {

            alert("Please type what you would like to rename '"+this.list.options[index].text+"' to in the text box on the left, then click this button again.");

          } // end if

        } // end if

      } else if (Basis.array_length(selected) == 0) {

        alert("Please select an item to rename, then type what you want to rename it to in the text box on the left, then click this button again.");

      } // end if

    }, // end rename_item()

    update_database: function () {

      if (this.list && this.list.id && this.post_url) {

        Basis.select_select_none(this.list);

        list              = new Object();
        list["options"]   = new Object();
        list["parent_id"] = this.parent_id;
        list["list_id"]   = this.list.id;

        for (var x=0; x<this.list.options.length; x++) {

          list["options"][x]          = new Object();
          list["options"][x]["value"] = this.list.options[x].value;
          list["options"][x]["text"]  = this.list.options[x].text;

        } // end for

        var to_post   = new Object();
        to_post.list  = list;
        to_post.alias = this.alias;

        var as   = new Basis.ajax_scaffold;
        as.alias = "Basis.dynamic_select_list.update_database";
        as.sid   = this.sid;
        as.url   = this.post_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            if (response["output"]) {

              eval(response["output"]);

            } // end if

            Basis.select_sort(this.pvar.list.id);

            this.pvar.on_change();

            window.status = "Done";

          } else {

            window.status = "update_database(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    } // end update_database()

  }; // end class Basis.dynamic_select_list

  Basis.select_add_option = function (element, value, text) {

    var element = Basis.get_element(element);

    if (element && element.options) {

      element.options[element.options.length] = new Option(text, value);

    } else {

      alert("cannot target element");

    } // end if

  }; // end select_add_option()

  Basis.select_add_options = function (element, options) {

    var element = Basis.get_element(element);

    if (element && options) {

      for (var i in options) {

        if (!Basis.is_function(options[i])) {

          Basis.select_add_option(element, i, options[i]);

        } // end if

      } // end for

    } // end if

  }; // end select_add_options()

  Basis.select_sort = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var temp = new Array();

      for (var i=0; i<element.length; i++) {

        temp[i] = element.options[i].text+":"+element.options[i].value;

      } // end for

      temp.sort(Basis.sort_function);

      for (var i=0; i<element.length; i++) {

        el                       = temp[i].split(":");
        element.options[i].text  = el[0];
        element.options[i].value = el[1];

      } // end for

    } // end if

  }; // end select_sort()

  Basis.sort_function = function (a,b) {

    a = a.toLowerCase();
    b = b.toLowerCase();

    if (a<b) { return -1; } // end if
    if (a>b) { return 1;  } // end if

    return 0;

  }; // end sort_function()

  Basis.select_delete_item_by_text = function (element,text) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].text == text) {

          MochiKit.DOM.removeElement(element.options[i]);

        } // end if

      } // end for

    } // end if

  }; // end select_delete_item_by_text()

  Basis.select_delete_item_by_value = function (element,value) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].value == value) {

          MochiKit.DOM.removeElement(element.options[i]);

        } // end if

      } // end for

    } // end if

  }; // end select_delete_item_by_value()

  Basis.select_item_indexes_by_value = function (element,value) {

    var temp    = new Array();

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].value == value) {

          temp[temp.length] = i;

        } // end if

      } // end for

    } // end if

    return temp;

  }; // end select_item_indexes_by_value()

  Basis.select_item_indexes_by_text = function (element,text) {

    var temp    = new Array();

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].text == text) {

          temp[temp.length] = i;

        } // end if

      } // end for

    } // end if

    return temp;

  }; // end select_item_indexes_by_text()

  Basis.select_select_item_by_value = function (element, value) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].value == value) {

          element.options[i].selected = true;

        } // end if

      } // end for

    } // end if

  }; // end select_select_item_by_value()

  Basis.select_select_item_by_text = function (element,text) {

    var temp    = new Array();

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].text == text) {

          element.options[i].selected = true;

        } // end if

      } // end for

    } // end if

  }; // end select_select_item_by_text()

  Basis.select_select_all = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        element.options[i].selected = true;

      } // end for

    } // end if

  }; // end select_select_all

  Basis.select_select_none = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        element.options[i].selected = false;

      } // end for

    } // end if

  }; // end select_select_none

  Basis.select_selected_indexes = function (element) {

    var temp    = new Array();

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.options.length; i++) {

        if (element.options[i].selected) {

          temp[temp.length] = {"index" : i,
                               "value" : element.options[i].value,
                               "text"  : element.options[i].text};

        } // end if

      } // end for

    } // end if

    return temp;

  }; // end Basis.select_selected_indexes

  Basis.select_restore_indexes = function (element,selected,restore_by) {

    var element = MochiKit.DOM.getElement(element);

    if (element && restore_by && selected && selected.length) {

      for (var a = 0; a < element.options.length; a++) {

        for (var b = 0; b < selected.options.length; b++) {

          if (restore_by == "value") {

            if (element.options[a].value == selected[b].value) {

              element.options[a].selected = true;

            } // end for

          } else if (restore_by == "index") {

            if (a == selected[b].index) {

              element.options[a].selected = true;

            } // end for

          } else if (restore_by == "text") {

            if (element.options[a].text == selected[b].text) {

              element.options[a].selected = true;

            } // end for

          } // end if

        } // end for

      } // end if

    } // end if

  }; // end Basis.select_restore_indexes

  Basis.popup = function (options) {

    if (options && options["id"] && options["html"]) {

      if (!options["window_title"]) {

        options["window_title"] = "&nbsp;";

      } // end if

      if (options["center_element"]==null) {

        options["center_element"] = true;

      } // end if

      var obj = MochiKit.DOM.getElement(options["id"]);

      if (!obj) {

        var popup  = new MochiKit.DOM.DIV({"id":options["id"],"class":"Basis.popup.container","style":"display: none; position: absolute; "+options["style"]},null);
        document.body.appendChild(popup);

      } // end if

      var obj = MochiKit.DOM.getElement(options["id"]);

      if (obj) {

        if (!Basis.misc_vars.popups) {

          Basis.misc_vars.popups = new Array;

        } // end if

        obj.pindex = Basis.misc_vars.popups.length;

        Basis.misc_vars.popups[obj.pindex] = obj;

        if (!options["bare"]) {

          obj.innerHTML = "<table><tr><td><div id=\""+obj.id+"_handle\" style=\"cursor: move; background-color: #F3F8FF; font-weight: bold;\">"+options["window_title"]+"</td><td align=\"right\" style=\"\"><img id=\""+obj.id+"_img\" src=\"images/images/x_off.gif\" style=\"cursor: pointer;\" onclick=\"var element = MochiKit.DOM.getElement('"+obj.id+"'); if (element && element.close) { element.close(); }\"></div></td></tr><tr><td id=\""+obj.id+"_html_container\">"+options["html"]+"</td></tr></table><script>Basis.load_rollover_images({0:{\"id\":\""+obj.id+"_img\",\"off\":\"images/images/x_off.gif\",\"on\":\"images/images/x_on.gif\"}});</script>";

        } else {

          obj.innerHTML = "<div id=\""+obj.id+"_html_container\">"+options["html"]+"</div>";

        } // end if

        new MochiKit.DragAndDrop.Draggable(obj.id,{"handle"      : (obj.id+"_handle"),
                                                   "starteffect" : MochiKit.Base.noop,
                                                   "endeffect"   : MochiKit.Base.noop
                                                  });

        for (var i in Draggables.drags) {

          if (Draggables.drags[i] && Draggables.drags[i].element && Draggables.drags[i].element.id && (Draggables.drags[i].element.id == obj.id)) {

            var date       = new Date();
            Draggables.drags[i].element.timestamp = date.getTime();

          } // end if

        } // end for

        obj.sort_popups = MochiKit.Base.bind(function () {

                                               var date       = new Date();
                                               this.timestamp = date.getTime();

                                               var order = new Array;

                                               for (var i in Draggables.drags) {

                                                 if (Draggables.drags[i] && Draggables.drags[i].element && Draggables.drags[i].element.id && Draggables.drags[i].element.timestamp) {

                                                   order[order.length] = Draggables.drags[i].element.timestamp+":"+i; // Draggables.drags[i].element.id;

                                                 } // end if

                                               } // end for

                                               order.sort(Basis.sort_function);

                                               var start_z = 1000;

                                               for (var i = 0; i < order.length; i++) {

                                                 el = order[i].split(":");

                                                 if (Draggables.drags[el[1]].element.style.zIndex < start_z) {

                                                   start_z = Draggables.drags[el[1]].element.style.zIndex;

                                                 } // end if

                                               } // end for

                                               for (var i = 0; i < order.length; i++) {

                                                 el = order[i].split(":");

                                                 Draggables.drags[el[1]].originalZ            = start_z;
                                                 Draggables.drags[el[1]].element.style.zIndex = start_z;

                                                 start_z++;

                                               } // end for

                                             },obj);

        obj.sort_popups();

        MochiKit.Signal.connect(obj.id,"onmousedown",obj.sort_popups);
        if (!options["bare"]) {
          MochiKit.Signal.connect((obj.id+"_handle"),"onmousedown",obj.sort_popups);
        } // end if

        obj.close = MochiKit.Base.bind(function () {

          MochiKit.Signal.disconnectAll(this);

          delete Basis.misc_vars.popups[this.pindex];

          //MochiKit.DOM.removeElement(this.id);

          Basis.remove_element(this.id);

        },obj);

        Basis.execute_javascript(obj);

        if (options["center_element"]) {

          Basis.center_element(obj);

        } // end if

        if (options["move_to"] && options["move_to"].x && options["move_to"].y) {

          MochiKit.Style.setElementPosition(obj,options["move_to"]);

        } // end if

        obj.style.display = (obj.style.display == "none") ? "inline" : "none";

        var html_container = MochiKit.DOM.getElement(obj.id+"_html_container");
        var window_title   = MochiKit.DOM.getElement(obj.id+"_handle");

        if (html_container && window_title) {

          return {"html_container" : html_container,
                  "window_title"   : window_title,
                  "reference"      : obj.pindex
                 };

        } // end if

      } // end if

    } // end if

  } // end Basis.popup()

  // This code was written by Tyler Akins and has been placed in the
  // public domain.  It would be nice if you left this header intact.
  // Base64 code from Tyler Akins -- http://rumkin.com

  var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

  Basis.encode64 = function (input) {
     var output = "";
     var chr1, chr2, chr3;
     var enc1, enc2, enc3, enc4;
     var i = 0;

     do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
           enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
           enc4 = 64;
        }

        output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
           keyStr.charAt(enc3) + keyStr.charAt(enc4);
     } while (i < input.length);

     return output;
  }

  Basis.decode64  = function (input) {
     var output = "";
     var chr1, chr2, chr3;
     var enc1, enc2, enc3, enc4;
     var i = 0;

     // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
     input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

     do {
        enc1 = keyStr.indexOf(input.charAt(i++));
        enc2 = keyStr.indexOf(input.charAt(i++));
        enc3 = keyStr.indexOf(input.charAt(i++));
        enc4 = keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output = output + String.fromCharCode(chr1);

        if (enc3 != 64) {
           output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
           output = output + String.fromCharCode(chr3);
        }
     } while (i < input.length);

     return output;
  }

  // ==========================================

  Basis.ticker = function () {

    this.__init__();

  }; // end Basis.ticker()

  Basis.ticker.prototype = {

    __init__: function () {

      this.interval = 1;
      this.ticking  = false;
      this.deferred = null;

      this.tick_do  = function () {};

    }, // end __init__()

    cancel: function () {

      if (this.ticking) {

        this.ticking  = false;

        if (this.deferred && this.deferred.cancel) {

          this.deferred.cancel();

        } // end if

        this.deferred = null;

      } // end if

    }, // end cancel()

    start: function () {

      if (!this.ticking) {

        this.ticking = true;
        this.tick();

      } // end if

    }, // end start()

    tick: function () {

      if (this.ticking) {

        this.deferred = MochiKit.Async.callLater(this.interval,MochiKit.Base.bind(function () {

          if (this.ticking) {

            this.tick_do();
            this.tick();

          } // end if

        },this));

      } // end if

    } // end tick()

  }; // end Basis.ticker

  // ==========================================

  // class.btree_new.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  try {

    if (typeof(Basis) == 'undefined') {

      throw "";

    } // end if

  } catch (e) {

    throw "Basis.btree_new depends on Basis!";

  } // end try

  if (typeof(Basis.btree_new) == 'undefined') {

    Basis.btree_new = {};

  } // end if

  Basis.btree_new.NAME    = 'Basis.btree_new';
  Basis.btree_new.VERSION = '0.1';

  Basis.btree_new.__repr__ = function () {

    return '[' + this.NAME + ' ' + this.VERSION + ']';

  }; // end __repr__()

  Basis.btree_new.toString = function () {

    return this.__repr__();

  }; // end toString()

  Basis.btree_new = function () {

    this.__init__();

  }; // end btree_new()

  Basis.btree_new.instances = [];

  Basis.btree_new.prototype = {

    __init__: function () {

      var node_index                        = Basis.btree_node.instances.length;

      this.nodes                            = new Array();
      this.nodes[node_index]                = new Basis.btree_node;
      this.top_node_index                   = node_index;                       // index to Basis.btree_node.instances / this.nodes
      this.index                            = Basis.btree_new.instances.length;

      Basis.btree_new.instances[this.index] = this;

      this.nodes[node_index].top            = this.index;
      this.html                             = "";

      this.after_compile                    = function () {};

    }, // end _init_()

    attach_events: function () {

      for (var i in this.nodes) {

        if (this.node(i) && this.node(i).children && (this.node(i).children.length > 0)) {

          var obj = MochiKit.DOM.getElement(i+"_branch");

          if (obj) {

            MochiKit.Signal.connect(obj,"onclick",function () {

              var id   = this.id.substring(0,(this.id.length - ("_branch").length));
              var node = Basis.btree_node.instances[id];

              node.toggle();

            });

            Basis.set_style(obj, {"cursor" : "pointer"});

          } // end if

        } // end if

      } // end for

    }, // end attach_events()

    close_all: function () {

      for (var i in this.nodes) {

        if (this.node(i)) {

          if (this.node(i).open) {

            this.node(i).toggle();

          } // end if

        } // end if

      } // end for

    }, // end close_all()

    compile: function () {

      this.html = "";

      var node = this.nodes[this.top_node_index];

      if (node) {

        node.parse();

      } // end if

      this.after_compile();
      this.attach_events();

    }, // end compile()

    expand_all: function () {

      for (var i in this.nodes) {

        if (this.node(i)) {

          if (!this.node(i).open) {

            this.node(i).toggle();

          } // end if

        } // end if

      } // end for

    }, // end expand_all()

    node: function (id) {

      if (id || (id==0)) {

        return this.nodes[id];

      } else {

        return false;

      } // end if

    }, // end node()

    top_node: function () {

      if (this.nodes[this.top_node_index]) {

        return this.nodes[this.top_node_index];

      } // end if

      return false;

    } // end top_node()

  } // end class Basis.btree_new

  // ==========================================

  Basis.btree_node = function () {

    this.__init__();

  }; // end btree_node()

  Basis.btree_node.instances = [];

  Basis.btree_node.prototype = {

    __init__: function () {

      this.top                               = null;                              // index to Basis.btree_new.instances
      this.parent                            = null;                              // index to Basis.btree_node.instances
      this.children                          = new Array();                       // indexes to Basis.btree_node.instances

      this.open                              = false;

      this.index                             = Basis.btree_node.instances.length;
      Basis.btree_node.instances[this.index] = this;

    }, // end _init_()

    add_node: function (should_compile) {

      switch (should_compile) {

        case true:
        case false:

          break;

        default:

          should_compile = true;
          break;

      } // end switch

      if (this.children) {

        var top_node_index = Basis.btree_node.instances.length;
        var node           = new Basis.btree_node();
        var node_index     = this.children.length;

        if (this.parent) {

          node.top = this.node(this.parent).top;

        } else {

          node.top = this.top;

        } // end if

        this.nodes()[top_node_index]        = node;
        this.node(top_node_index).parent    = this.index;
        this.children[this.children.length] = top_node_index;

        if (should_compile == true) {

          this.tree().compile();

        } // end if

        return top_node_index;

      } // end if

      return false;

    }, // end add_node()

    delete_node: function () {

      this.delete_node_plus_children();

      this.tree().compile();

    }, // end delete_node()

    delete_node_plus_children: function () {

      if (this.children) {

        for (var i in this.children) {

          if (this.node(this.children[i])) {

            this.node(this.children[i]).delete_node_plus_children();

          } // end if

        } // end for

      } // end if

      if (delete this.nodes()[this.index]) {

        return true;

      } else {

        return false;

      } // end if

    }, // end delete_node_plus_children()

    display_options: function () {

      var options = { "icon"            : "",
                      "branch"          : "",
                      "style"           : "",
                      "container_style" : "padding: 0px; vertical-align: top;"
                    };

      if (this.open) {

        if (this.children.length > 0) {

          options["icon"] = "images/tree-folder-open.gif";

          if (this.nodes_after()) {

            options["branch"] = "images/tree-node-open.gif";

          } else {

            options["branch"] = "images/tree-node-open-end.gif";

          } // end if

        } else {

          options["icon"] = "images/tree-folder.gif";

          if (this.nodes_after()) {

            options["branch"] = "images/tree-leaf.gif";

          } else {

            options["branch"] = "images/tree-leaf-end.gif";

          } // end if

        } // end if

      } else {

        options["icon"] = "images/tree-folder.gif";

        if (this.children.length > 0) {

          if (this.nodes_after()) {

            options["branch"] = "images/tree-node.gif";

          } else {

            options["branch"] = "images/tree-node-end.gif";

          } // end if

        } else {

          if (this.nodes_after()) {

            options["branch"] = "images/tree-leaf.gif";

          } else {

            options["branch"] = "images/tree-leaf-end.gif";

          } // end if

        } // end if

      } // end if

      if (this.nodes_after()) {

        options["style"] += " background-image: url(images/tree-branch.gif); background-repeat: repeat-y; background-position: 17px 0px; ";

      } // end if

      if (!this.open) {

        options["container_style"] += " display: none;";

      } // end if

      return options;

    }, // end display_options()

    node: function (id) {

      if ((id || (id==0)) && this.nodes()[id]) {

        return this.nodes()[id];

      } else {

        return false;

      } // end if

    }, // end node()

    nodes: function () {

      return this.tree().nodes;

    }, // end nodes()

    nodes_after: function () {

      if (this.node(this.parent)) {

        var found_node = false;
        var any_after  = false;

        for (var i in this.node(this.parent).children) {

          var tnode = this.node(this.node(this.parent).children[i]);

          if (tnode) {

            if (found_node) {

              any_after = true;

            } // end if

            if (tnode.index == this.index) {

              found_node = true;

            } // end if

          } // end if

        } // end for

        return (found_node && any_after);

      } // end if

      return false;

    }, // end nodes_after()

    nodes_before: function () {

      if (this.node(this.parent)) {

        var found_node = false;
        var any_before = false;

        for (var i in this.node(this.parent).children) {

          var tnode = this.node(this.node(this.parent).children[i]);

          if (tnode) {

            if (!found_node && !(tnode.index == this.index)) {

              any_before = true;

            } // end if

            if (tnode.index == this.index) {

              found_node = true;

            } // end if

          } // end if

        } // end for

        return (found_node && any_before);

      } // end if

      return false;

    }, // end nodes_before()

    parse: function () {

      this.to_html();

    }, // end parse()

    to_html: function () {

      var options = this.display_options();

      this.tree().html += '<div id="'+this.index+'" style="'+options["style"]+'"><table cellpadding="0" cellspacing="0"><tr><td><img id="'+this.index+'_branch" src="'+options["branch"]+'"></td><td><img id="'+this.index+'_icon" src="'+options["icon"]+'"></td><td style="padding-top: 3px; padding-left: 2px;">'+this.index+'</td></tr></table><div id="'+this.index+'_container" style="'+options["container_style"]+'">';

      if (this.children.length > 0) {

        for (var i in this.children) {

          if (this.node(this.children[i])) {

            this.node(this.children[i]).parse();

          } // end if

        } // end for

      } // end if

      this.tree().html += "</div></div>";

    }, // end to_html()

    toggle: function () {

      if (this.open) {

        this.open = false;
        Basis.set_style((this.index + "_container"), {"display" : "none"});

      } else {

        this.open = true;
        Basis.set_style((this.index + "_container"), {"display" : ""});

      } // end if

      var options = this.display_options();
      MochiKit.DOM.getElement((this.index+"_branch")).src = options["branch"];
      MochiKit.DOM.getElement((this.index+"_icon")).src   = options["icon"];

    }, // end toggle()

    tree: function () {

      return Basis.btree_new.instances[this.top];

    } // end top()

  } // end class Basis.btree_node

  // ==========================================

  Basis.bnode_tree = function () {

    this.__init__();

  }; // end bnode_tree()

  Basis.bnode_tree.instances = [];

  Basis.bnode_tree.prototype = {

    __init__: function () {

      var node_index                         = Basis.bnode.instances.length;

      this.nodes                             = new Array();
      this.nodes[node_index]                 = new Basis.bnode;
      this.top_node_index                    = node_index;
      this.index                             = Basis.bnode_tree.instances.length;

      Basis.bnode_tree.instances[this.index] = this;

      this.nodes[node_index].top             = this.index;

    }, // end _init_()

    node: function (id) {

      if (id || (id==0)) {

        return this.nodes[id];

      } else {

        return false;

      } // end if

    }, // end node()

    parse_func: function () {

    }, // end parse_func()

    top_node: function () {

      if (this.nodes[this.top_node_index]) {

        return this.nodes[this.top_node_index];

      } // end if

      return false;

    } // end top_node()

  } // end class Basis.bnode_tree

  // ==========================================

  Basis.bnode = function () {

    this.__init__();

  }; // end bnode()

  Basis.bnode.instances = [];

  Basis.bnode.prototype = {

    __init__: function () {

      this.is_node                           = true;

      this.top                               = null;                              // index to Basis.btree_new.instances
      this.parent                            = null;                              // index to Basis.bnode.instances
      this.children                          = new Array();                       // indexes to Basis.bnode.instances

      this.index                             = Basis.bnode.instances.length;
      Basis.bnode.instances[this.index] = this;

    }, // end _init_()

    add_node: function () {

      if (this.children) {

        var top_node_index = Basis.bnode.instances.length;
        var node           = new Basis.bnode();
        var node_index     = this.children.length;

        if (this.parent) {

          node.top = this.node(this.parent).top;

        } else {

          node.top = this.top;

        } // end if

        this.nodes()[top_node_index]        = node;
        this.node(top_node_index).parent    = this.index;
        this.children[this.children.length] = top_node_index;

        return top_node_index;

      } // end if

      return false;

    }, // end add_node()

    delete_node: function () {

      this.delete_node_plus_children();

    }, // end delete_node()

    delete_node_plus_children: function () {

      if (this.children) {

        for (var i in this.children) {

          if (this.node(this.children[i])) {

            this.node(this.children[i]).delete_node_plus_children();

          } // end if

        } // end for

      } // end if

      if (delete this.nodes()[this.index]) {

        return true;

      } else {

        return false;

      } // end if

    }, // end delete_node_plus_children()

    has_children: function () {

      if (this.children.length > 0) {

        return true;

      } // end if

      return false

    }, // end has_children()

    node: function (id) {

      if ((id || (id==0)) && this.nodes()[id]) {

        return this.nodes()[id];

      } else {

        return false;

      } // end if

    }, // end node()

    nodes: function () {

      return this.tree().nodes;

    }, // end nodes()

    nodes_after: function () {

      if (this.node(this.parent)) {

        var found_node = false;
        var any_after  = false;

        for (var i in this.node(this.parent).children) {

          var tnode = this.node(this.node(this.parent).children[i]);

          if (tnode) {

            if (found_node) {

              any_after = true;

            } // end if

            if (tnode.index == this.index) {

              found_node = true;

            } // end if

          } // end if

        } // end for

        return (found_node && any_after);

      } // end if

      return false;

    }, // end nodes_after()

    nodes_before: function () {

      if (this.node(this.parent)) {

        var found_node = false;
        var any_before = false;

        for (var i in this.node(this.parent).children) {

          var tnode = this.node(this.node(this.parent).children[i]);

          if (tnode) {

            if (!found_node && !(tnode.index == this.index)) {

              any_before = true;

            } // end if

            if (tnode.index == this.index) {

              found_node = true;

            } // end if

          } // end if

        } // end for

        return (found_node && any_before);

      } // end if

      return false;

    }, // end nodes_before()

    parse: function () {

      var tfunc = MochiKit.Base.bind(this.tree().parse_func, this);

      tfunc();

      if (this.children.length > 0) {

        for (var i in this.children) {

          if (this.node(this.children[i])) {

            this.node(this.children[i]).parse();

          } // end if

        } // end for

      } // end if

    }, // end parse()

    tree: function () {

      return Basis.bnode_tree.instances[this.top];

    } // end tree()

  } // end class Basis.bnode

  // ==========================================

  Basis.menu = function () {

    this.__init__();

  }; // end menu()

  Basis.menu.instances = [];

  Basis.menu.prototype = {

    __init__: function () {

      this.parent_element;
      this.current_node;

      this.parent_container_tag = "UL";
      this.child_tag            = "LI";

      this.orientation          = "vertical"; // or horizontal
      this.offset               = {"x" : 0, "y" : 0};
      this.first_level_offset   = {"x" : 0, "y" : 0};

      this.tree                 = new Basis.bnode_tree();

    }, // end _init_()

    compile: function () {

      var temp_options = {"offset"               : this.offset,
                          "first_level_offset"   : this.first_level_offset,
                          "child_tag"            : this.child_tag,
                          "parent_container_tag" : this.parent_container_tag,
                          "orientation"          : this.orientation};

      this.__init__();

      for (var i in temp_options) {

        if (i && this[i]) {

          this[i] = temp_options[i];

        } // end if

      } // end for

      var parent_element = MochiKit.DOM.getElement(this.parent_element);

      if (parent_element) {

        this.current_node = this.tree.top_node();

        this.parse_children(this.get_child_container(parent_element));

      } // end if

      this.hide_child_containers_and_attach_events();

    }, // end compile()

    find_node_with_id: function (id) {

      if (id) {

        for (var i in this.tree.nodes) {

          if (i && this.tree.nodes[i] && this.tree.nodes[i].options && this.tree.nodes[i].options.id && (this.tree.nodes[i].options.id == id)) {

            return this.tree.node(this.tree.nodes[i].index);

          } // end if

        } // end for

      } // end if

      return false;

    }, // end find_node_with_id()

    get_all_nodes: function () {

      var nodes = [];

      for (var i in this.tree.nodes) {

        if (i && this.tree.nodes[i] && this.tree.nodes[i].is_node) {

          nodes[nodes.length] = this.tree.nodes[i].index;

        } // end if

      } // end for

      return nodes;

    }, // end get_all_nodes()

    get_all_nodes_with_children: function () {

      var nodes = [];

      for (var i in this.tree.nodes) {

        if (i && this.tree.nodes[i] && this.tree.nodes[i].is_node && (this.tree.nodes[i].children.length > 0)) {

          nodes[nodes.length] = this.tree.nodes[i].index;

        } // end if

      } // end for

      return nodes;

    }, // end get_all_nodes_with_children()

    get_child_container: function (element) {

      // this determines the FIRST instance of a child element of the tag this.parent_container_tag;

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        var parent_container = Basis.get_child_elements_by_tag(element, this.parent_container_tag);

        if (parent_container && (parent_container.length > 0)) {

          return parent_container[0];

        } // end if

      } // end if

      return false;

    }, // end get_child_container();

    get_all_submenu_parent_elements: function () {

      var elements = [];
      var submenus = this.get_all_submenu_container_elements();

      for (var i in submenus) {

        var submenu = MochiKit.DOM.getElement(submenus[i]);

        if (submenu && submenu.parentNode) {

          elements[elements.length] = submenu.parentNode;

        } // end if

      } // end for

      return elements;

    }, // end get_all_submenu_parent_elements()

    get_top_level_menu_elements: function () {

      var elements = [];
      var parents  = this.tree.top_node().children;

      if (parents.length > 0) {

        for (var i in parents) {

          if (i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"]) {

            var obj = MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);

            if (obj) {

              elements[elements.length] = obj;

            } // end if

          } // end if

        } // end for

      } // end if

      return elements;

    }, // end get_top_level_menu_elements()

    get_all_submenu_container_elements: function () {

      var elements = [];
      var parents  = this.get_all_nodes();

      if (parents.length > 0) {

        for (var i in parents) {

          if (i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"]) {

            var obj = MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);

            if (obj) {

              var children = MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag, null, obj);

              for (var x in children) {

                if (x && children[x] && children[x].tagName && (children[x].tagName.toLowerCase() == this.parent_container_tag.toLowerCase())) {

                  elements[elements.length] = children[x];

                } // end if

              } // end for

            } // end if

          } // end if

        } // end for

      } // end if

      return elements;

    }, // end get_all_submenu_container_elements()

    hide_all_children: function () {

      var parents = this.get_all_nodes();

      if (parents.length > 0) {

        for (var i in parents) {

          if (i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"]) {

            var obj = MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);

            if (obj) {

              if (this.tree.node(parents[i]).has_children()) {

                // physically hide all children for this menu item
                MochiKit.Signal.signal(obj, "hide_all_children");

              } // end if

            } // end if

          } // end if

        } // end for

      } // end if

    }, // end hide_all_children()

    hide_child_containers_and_attach_events: function () {

      var parents = this.get_all_nodes();

      if (parents.length > 0) {

        for (var i in parents) {

          if (i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"]) {

            var obj = MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);

            if (obj) {

              if (this.tree.node(parents[i]).has_children()) {

                // set up generic "hide all children" signal

                MochiKit.Signal.connect(obj, "hide_all_children", MochiKit.Base.bind(function (parent_container_tag) {

                  var children = MochiKit.DOM.getElementsByTagAndClassName(parent_container_tag, null, this);

                  for (var x in children) {

                    if (x && children[x] && children[x].tagName && (children[x].tagName.toLowerCase() == parent_container_tag.toLowerCase())) {

                      children[x].style.display = "none";
                      MochiKit.Style.setOpacity(children[x], 0.01);

                    } // end if

                  } // end for

                }, obj, this.parent_container_tag));

              } // end if

              // create event to hide all children on all other menu items (barring direct parents of this item) when you mouse over this one, then show this item's child

              MochiKit.Signal.connect(obj, "onmouseenter", MochiKit.Base.bind(function (current_over) {

                this.pending_hide_all_children = false;

                if (this.pending_hide_all_children_deferred && this.pending_hide_all_children_deferred.cancel) {

                  this.pending_hide_all_children_deferred.cancel();

                } // end if

                current_over = MochiKit.DOM.getElement(current_over);

                var parents  = this.get_all_nodes();

                if (parents.length > 0) {

                  for (var i in parents) {

                    if (current_over && i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"] && (this.tree.node(parents[i]).options["id"] != current_over.id)) {

                      var obj = MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);

                      if (obj && (!MochiKit.DOM.isChildNode(current_over,obj))) {

                        MochiKit.Signal.signal(obj, "hide_all_children");

                      } // end if

                    } // end if

                  } // for

                } // end if

                var child = MochiKit.DOM.getElement(this.get_child_container(current_over));

                if (child && (child.style.display == "none")) {

                  child.style.position = "absolute";
                  child.style.zIndex   = 10000;

                  MochiKit.Style.setOpacity(child, 1.0);

                  child.style.display                   = "";
                  current_over.style.display            = "";
                  current_over.parentNode.style.display = "";

                  var relative_to   = this.relative_to(child);

                  var child_pos     = MochiKit.Style.getElementPosition(child);
                  var child_dim     = MochiKit.Style.getElementDimensions(child);
                  var current_pos   = MochiKit.Style.getElementPosition(current_over);
                  var current_dim   = MochiKit.Style.getElementDimensions(current_over);
                  var currentpn_pos = MochiKit.Style.getElementPosition(current_over.parentNode);
                  var currentpn_dim = MochiKit.Style.getElementDimensions(current_over.parentNode);
                  var offset        = {"x" : 0, "y" : 0};

                  var orientation   = this.orientation;

                  if (!this.is_first_level_menu_item(current_over)) {

                    orientation = "vertical";

                  } // end if

                  switch (orientation) {

                    case "horizontal":

                      // align top_to_bottom
                      offset.y = current_pos.y + current_dim.h;

                      // align left_to_left
                      if (this.is_first_level_menu_item(current_over)) {

                        offset.x = current_pos.x;

                      } else {

                        offset.x = currentpn_pos.x;

                      } // end if

                      break;

                    case "vertical":
                    default:

                      // align top_to_top
                      offset.y = current_pos.y;

                      // align left_to_right
                      offset.x = currentpn_pos.x + currentpn_dim.w;

                      break;

                  } // end switch

                  if (relative_to && (relative_to != document.body)) {

                    var relative_to_pos = MochiKit.Style.getElementPosition(relative_to);

                    offset.x -= relative_to_pos.x;
                    offset.y -= relative_to_pos.y;

                  } // end if

                  if (this.is_first_level_menu_item(current_over)) {

                    offset.x += this.first_level_offset.x;
                    offset.y += this.first_level_offset.y;

                  } else {

                    offset.x += this.offset.x;
                    offset.y += this.offset.y;

                  } // end if

                  MochiKit.Style.setElementPosition(child, offset);

                  // check to make sure the submenu is visible on the screen

                  var child_pos = MochiKit.Style.getElementPosition(child);
                  var child_dim = MochiKit.Style.getElementDimensions(child);
                  var scroll    = Basis.scroll_coords();
                  var viewport  = MochiKit.Style.getViewportDimensions();

                  if ((child_pos.x + child_dim.w) > (viewport.w + scroll.x)) {

                    Basis.align_element_to_element(child, current_over.parentNode,
                                                   "right_to_left", {"x" : ( ((relative_to && (relative_to != document.body)) ? (-1 * relative_to_pos.x) : 0) + (this.is_first_level_menu_item(current_over) ? this.first_level_offset.x : this.offset.x)),
                                                                     "y" : ( ((relative_to && (relative_to != document.body)) ? (-1 * relative_to_pos.y) : 0) - (this.is_first_level_menu_item(current_over) ? this.first_level_offset.y : this.offset.y))
                                                                    });

                  } // end if

                  child.style.display  = "";

                } // end if

              }, this, obj));

              // physically hide all children for this menu item
              MochiKit.Signal.signal(obj, "hide_all_children");

            } // end if

          } // end if

        } // end for

      } // end if

      var obj = MochiKit.DOM.getElement(this.parent_element);

      if (obj) {

        MochiKit.Signal.connect(obj, "onmouseleave", MochiKit.Base.bind(function () {

          this.pending_hide_all_children = true;

          this.pending_hide_all_children_deferred = MochiKit.Async.callLater(1, MochiKit.Base.bind(function () {

            if (this.pending_hide_all_children) {

              this.hide_all_children();

            } // end if

          },this));

        },this));

      } // end if

      // set specific CSS classes for portions of menu to allow custom styling

      var elements = this.get_all_submenu_container_elements();

      if (elements.length > 0) {

        for (var i in elements) {

          var element = MochiKit.DOM.getElement(elements[i]);

          if (element && Basis.is_element(element)) {

            MochiKit.DOM.addElementClass(elements[i], "Basis.menu.submenu");

            elements[i].style.position = "absolute";
            elements[i].style.zIndex   = 10000;

          } // end if

        } // end for

      } // end if

      var elements = this.get_all_submenu_parent_elements();

      if (elements.length > 0) {

        for (var i in elements) {

          var element = MochiKit.DOM.getElement(elements[i]);

          if (element && Basis.is_element(element)) {

            MochiKit.DOM.addElementClass(element, "Basis.menu.parent_item");

          } // end if

        } // end for

      } // end if

      var elements = this.get_top_level_menu_elements();

      if (elements.length > 0) {

        for (var i in elements) {

          var element = MochiKit.DOM.getElement(elements[i]);

          if (element && Basis.is_element(element)) {

            MochiKit.DOM.addElementClass(elements[i], "Basis.menu.top_level_item");

            switch (this.orientation) {

              case "horizontal":

                MochiKit.DOM.addElementClass(elements[i], "Basis.float.left");

                // IE6+7 won't correctly resize/auto-size DIV (and presumably other block-level elements) when you float the parent (LI) left after loading the page.
                // It appears to render everything just fine if you float both the parent and child left though. Firefox renders correctly with either just the parent
                // or both parent and child floated left. Opera only works if the parent is floated left.

                if (elements[i].firstChild && BrowserDetect && BrowserDetect.browser && (BrowserDetect.browser.indexOf("Explorer") != -1)) {

                  MochiKit.DOM.addElementClass(elements[i].firstChild, "Basis.float.left.ie");

                } // end if

                break;

            } // end switch

          } // end if

        } // end for

      } // end if

      var elements = MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag, null, MochiKit.DOM.getElement(this.parent_element));

      if (elements.length > 0) {

        var element = MochiKit.DOM.getElement(elements[0]);

        if (element && Basis.is_element(element)) {

            MochiKit.DOM.addElementClass(element, "Basis.menu.top");

        } // end if

      } // end if

    }, // end hide_child_containers_and_attach_events()

    is_first_level_menu_item: function (element) {

      element = MochiKit.DOM.getElement(element);

      if (element) {

        if (this.tree.top_node().has_children()) {

          var parents = this.tree.top_node().children;

          for (var i in parents) {

            if (i && parents[i] && this.tree.node(parents[i]) && this.tree.node(parents[i]).is_node && this.tree.node(parents[i]).options && this.tree.node(parents[i]).options["id"]) {

              if (this.tree.node(parents[i]).options["id"] == element.id) {

                return true;

              } // end if

            } // end if

          } // end for

        } // end if

      } // end if

      return false;

    }, // end is_first_level_menu_item()

    node_has_children: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        var children = Basis.get_child_elements_by_tag(element, this.child_tag);

        if (children && (children.length > 0)) {

          return true;

        } // end if

      } // end if

      return false;

    }, // end node_has_children()

    parse_children: function (container) {

      var container = MochiKit.DOM.getElement(container);

      if (container && this.current_node && this.current_node.is_node) {

        var children = Basis.get_child_elements_by_tag(container, this.child_tag);

        if (children && (children.length > 0)) {

          for (var i in children) {

            if (i && children[i] && children[i].id) {

              var added = this.current_node.add_node();

              this.tree.node(added).options = {"id" : children[i].id};

              var parent_container = this.get_child_container(children[i].id);

              if (parent_container && this.node_has_children(parent_container)) {

                var temp_node     = this.current_node.index;
                this.current_node = this.tree.node(added);

                this.parse_children(parent_container);

                this.current_node = this.tree.node(temp_node);

              } // end if

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end parse_children()

    relative_to: function (element) {

      element = MochiKit.DOM.getElement(element);

      if (element && element.parentNode) {

        element = element.parentNode;
        var tag = element.tagName;

        while ((tag && (tag.toLowerCase != "html")) && (element.parentNode)) {

          if (element && element.style && (element.style.position == "absolute")) {

            return element;

          } // end if

          element = element.parentNode;
          tag     = element.tagName;

        } // end while

      } // end if

      return document.body;

    } // end relative_to()

  } // end class Basis.menu

  // ==========================================

  Basis.movement_chain = function () {

    this.__init__();

  }; // end Basis.movement_chain()

  Basis.movement_chain.prototype = {

    __init__: function () {

      this.tree   = new Basis.bnode_tree();

      this.ticker          = new Basis.ticker();
      this.ticker.interval = 0.005;
      this.ticker.tick_do  = MochiKit.Base.bind(function () {

        for (var i in this.tree.nodes) {

          if (this.tree.nodes[i] && this.tree.nodes[i].is_node && this.tree.nodes[i].chain_data) {

            var child = MochiKit.DOM.getElement(this.tree.nodes[i].chain_data["id"]);

            if (this.tree.nodes[i].chain_data["chained_to"]) {

              var parent = MochiKit.DOM.getElement(this.tree.nodes[i].chain_data["chained_to"]);

              if (child && parent) {

                var parent_position = MochiKit.Style.getElementPosition(parent);
                var child_position  = MochiKit.Style.getElementPosition(child);

                if ((parent_position.x != this.tree.nodes[i].chain_data["parent_position"].x) ||
                    (parent_position.y != this.tree.nodes[i].chain_data["parent_position"].y)) {

                  switch (child.style.position) {

                    case "relative":

                      var to_pos = {"x" : (parent_position.x - this.tree.nodes[i].chain_data["parent_position"].x),
                                    "y" : (parent_position.y - this.tree.nodes[i].chain_data["parent_position"].y)
                                   };

                      break;

                    case "absolute":
                    case "fixed":
                    case "static": // ??

                      var to_pos = {"x" : (child_position.x - (parent_position.x - this.tree.nodes[i].chain_data["parent_position"].x)),
                                    "y" : (child_position.y - (parent_position.y - this.tree.nodes[i].chain_data["parent_position"].y))
                                   };

                      break;

                  } // end switch

                  MochiKit.Style.setElementPosition(child,to_pos);

                } // end if

              } // end if

            } // end if

            this.tree.nodes[i].chain_data["position"] = MochiKit.Style.getElementPosition(child);

          } // end if

        } // end for

      },this);

//    this.ticker.start();

      if (!MochiKit.DOM.currentDocument().chain_listener) {

        MochiKit.DOM.currentDocument().chain_listener = MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",this.ticker.tick_do);

      } // end if

    }, // end __init__()

    chain_element_to_element: function (child_element,parent_element) {

      var parent = MochiKit.DOM.getElement(parent_element);
      var child  = MochiKit.DOM.getElement(child_element);

      if (parent && child) {

        var parent_chain_index = this.find_chain_index(parent);

        if (!parent_chain_index) {

          var parent_chain_index = this.tree.top_node().add_node();

          this.tree.node(parent_chain_index).chain_data = { "id"              : parent.id,
                                                            "chained_to"      : null,
                                                            "position"        : MochiKit.Style.getElementPosition(parent),
                                                            "parent_position" : null
                                                          };

        } // end if

        if (parent_chain_index || (parent_chain_index == 0)) {

          var child_chain_index = this.tree.node(parent_chain_index).add_node();

          this.tree.node(child_chain_index).chain_data = { "id"              : child.id,
                                                           "chained_to"      : parent.id,
                                                           "position"        : MochiKit.Style.getElementPosition(child),
                                                           "parent_position" : MochiKit.Style.getElementPosition(parent)
                                                         };

        } // end if

      } // end if

    }, // end chain_element_to_element()

    find_chain_index: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        for (var i in this.tree.nodes) {

          if (this.tree.nodes[i] && this.tree.nodes[i].is_node && this.tree.nodes[i].chain_data) {

            if (this.tree.nodes[i].chain_data["id"] == element.id) {

              return i;

            } // end if

          } // end if

        } // end for

      } // end if

      return false;

    } // end find_chain_index()

  }; // end Basis.movement_chain

  // ==========================================

  Basis.color_chooser = function (options) {

    this.__init__(options);

  }; // end Basis.color_chooser()

  Basis.color_chooser.prototype = {

    __init__: function (options) {

      this.color      = null;
      this.on_change  = function () {};

      this.hue        = 0.0;
      this.saturation = 0.0;
      this.brightness = 0.0;

      this.update_color();

      this.sb_dimensions      = {"w":256,"h":256};
      this.sb_container       = "color_chooser_sb_container";
      this.sb_overlay         = "color_chooser_sb_overlay";
      this.sb_overlay_image   = "color_chooser_overlay.png";
      this.sb_drag            = "color_chooser_sb_drag";
      this.sb_drag_image      = "slide.gif";
      this.sb_drag_dimensions = {"w":9,"h":9};

      this.h_container        = "color_chooser_h_container";
      this.h_container_image  = "color_chooser_hue.png";
      this.h_drag             = "color_chooser_h_drag";
      this.h_dimensions       = {"w":19,"h":256};
      this.h_drag_image       = "hue_slide.gif";
      this.h_drag_dimensions  = {"w":30,"h":9};

      this.spacer_image       = "spacer.gif";

      this.show_sb            = true;
      this.show_h             = true;

      this.elements           = {};

    }, // end __init__()

    attach_events: function () {

      var sb_mousedown = MochiKit.Base.bind(function(e) {

        this.elements["sb_container"].mousedown = true;

        var pos  = MochiKit.Style.getElementPosition(this.elements["sb_container"]);
        var dim  = MochiKit.Style.getElementDimensions(this.elements["sb_container"]);
        var hdim = MochiKit.Style.getElementDimensions(this.elements["sb_drag"]);

        var pos_in_image = {"x":(e.mouse().page.x - pos.x),
                            "y":(e.mouse().page.y - pos.y)};

        this.saturation  = (pos_in_image.x / dim.w);
        this.brightness  = 1 - (pos_in_image.y / dim.h);

        this.update_hsb();
        this.position_sb_handle();

      },this);

      MochiKit.Signal.connect(this.elements["sb_container"], "onmousedown", sb_mousedown);
      MochiKit.Signal.connect(this.elements["sb_drag"],      "onmousedown", sb_mousedown);

      MochiKit.Signal.connect(document, "onmouseup", MochiKit.Base.bind(function() {

        this.mousedown = false;

      }, this.elements["sb_container"]));

      MochiKit.Signal.connect(document, "onmousemove", MochiKit.Base.bind(function(e) {

        if (this.elements["sb_container"].mousedown) {

          var pos  = MochiKit.Style.getElementPosition(this.elements["sb_container"]);
          var dim  = MochiKit.Style.getElementDimensions(this.elements["sb_container"]);

          var pos_in_image = {"x":(e.mouse().page.x - pos.x),
                              "y":(e.mouse().page.y - pos.y)};

          this.saturation  = (pos_in_image.x / dim.w);
          this.brightness  = 1 - (pos_in_image.y / dim.h);

          this.update_hsb();
          this.position_sb_handle();

        } // end if

      }, this));

      var h_mousedown = MochiKit.Base.bind(function(e) {

        this.elements["h_container"].mousedown = true;

        var pos  = MochiKit.Style.getElementPosition(this.elements["h_container"]);
        var dim  = MochiKit.Style.getElementDimensions(this.elements["h_container"]);

        var pos_in_image = {"x":(e.mouse().page.x - pos.x),
                            "y":(e.mouse().page.y - pos.y)};

        this.hue = 1 - (pos_in_image.y / dim.h);

        this.update_sb_hue();
        this.position_h_handle();

      }, this);

      MochiKit.Signal.connect(this.elements["h_container"], "onmousedown", h_mousedown);
      MochiKit.Signal.connect(this.elements["h_drag"],      "onmousedown", h_mousedown);

      MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function() {

        this.mousedown = false;

      }, this.elements["h_container"]));

      MochiKit.Signal.connect(document,"onmousemove",MochiKit.Base.bind(function(e) {

        if (this.elements["h_container"].mousedown) {

          var pos  = MochiKit.Style.getElementPosition(this.elements["h_container"]);
          var dim  = MochiKit.Style.getElementDimensions(this.elements["h_container"]);
          var hdim = MochiKit.Style.getElementDimensions(this.elements["h_drag"]);

          var pos_in_image = {"x":(e.mouse().page.x - pos.x),
                              "y":(e.mouse().page.y - pos.y)};

          this.hue = 1 - (pos_in_image.y / dim.h);

          this.update_sb_hue();
          this.position_h_handle();

        } // end if

      }, this));

    }, // end attach_events()

    color_hex: function () {

      return this.color.toHexString().toUpperCase();

    }, // end color_hex()

    compile: function () {

      this.create_elements();
      this.attach_events();
      this.update_handles();
      this.on_change();

    }, // end compile()

    create_elements: function () {

      this.elements["sb_container"] = new MochiKit.DOM.DIV({"id":this.sb_container,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-color: "+this.max_color_hex()+";"},null);
      this.elements["sb_overlay"]   = new MochiKit.DOM.DIV({"id":this.sb_overlay,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-image: url("+this.sb_overlay_image+"); filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.sb_overlay_image+"');"},null);
//    this.elements["sb_overlay"].innerHTML = "<span style=\"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; display: inline-block; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.sb_overlay_image+"');\"><img style=\"filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);\" src=\""+this.sb_overlay_image+"\" width=\"0\" height=\"0\" border=\"0\"></span>";
      this.elements["sb_drag"]      = new MochiKit.DOM.DIV({"id":this.sb_drag,"style":"width: "+this.sb_drag_dimensions.w+"px; height: "+this.sb_drag_dimensions.h+"px; background-image: url("+this.sb_drag_image+"); position: absolute;"},null);
      this.elements["h_container"]  = new MochiKit.DOM.DIV({"id":this.h_container,"style":"width: "+this.h_dimensions.w+"px; height: "+this.h_dimensions.h+"px; background-image: url("+this.h_container_image+");"},null);
      this.elements["h_drag"]       = new MochiKit.DOM.DIV({"id":this.h_drag,"style":"width: "+this.h_drag_dimensions.w+"px; height: "+this.h_drag_dimensions.h+"px; background-image: url("+this.h_drag_image+"); position: absolute;"},null);

      this.elements["sb_drag"].innerHTML = '<img src="'+this.spacer_image+'">';
      this.elements["h_drag"].innerHTML  = '<img src="'+this.spacer_image+'">';

      var html   = '<table><tr><td id="color_chooser_sb"></td><td id="color_chooser_h"></td></tr></table>';

      this.elements["container"]    = new MochiKit.DOM.DIV({"style":"display: none;"},null);

      document.body.appendChild(this.elements["container"]);
      this.elements["container"].innerHTML = html;

      var obj = MochiKit.DOM.getElement("color_chooser_sb");

      if (obj && this.show_sb) {

        obj.appendChild(this.elements["sb_container"]);
        this.elements["sb_container"].appendChild(this.elements["sb_overlay"]);
        obj.appendChild(this.elements["sb_drag"]);

      } // end if

      var obj = MochiKit.DOM.getElement("color_chooser_h");

      if (obj && this.show_h) {

        obj.appendChild(this.elements["h_container"]);
        obj.appendChild(this.elements["h_drag"]);

      } // end if

      this.update_handles();

    }, // end create_elements()

    max_color_hex: function () {

      return MochiKit.Color.Color.fromHSV(this.hue, 1.0, 1.0).toHexString();

    }, // end max_color_hex()

    position_h_handle: function () {

      var obj    = this.elements["h_container"];
      var handle = this.elements["h_drag"];

      if (obj && handle) {

        var dim      = MochiKit.Style.getElementDimensions(obj);
        var hdim     = MochiKit.Style.getElementDimensions(handle);

        var offset_y = ((1 - this.hue) * dim.h) - (hdim.h / 2);

        Basis.set_element_position(handle, {"x"           : 0,
                                            "y"           : parseInt(offset_y),
                                            "mode"        : "relative",
                                            "relative_to" : obj
                                           });

        return true;

      } // end if

      return false;

    }, // end position_h_handle()

    position_sb_handle: function () {

      var obj    = this.elements["sb_container"];
      var handle = this.elements["sb_drag"];

      if (obj && handle) {

        var dim      = MochiKit.Style.getElementDimensions(obj);
        var hdim     = MochiKit.Style.getElementDimensions(handle);

        var offset_x = (this.saturation * dim.w) - (hdim.w / 2);
        var offset_y = ((1 - this.brightness) * dim.h) - (hdim.h / 2);

        Basis.set_element_position(handle, {"x"           : parseInt(offset_x),
                                            "y"           : parseInt(offset_y),
                                            "mode"        : "relative",
                                            "relative_to" : obj
                                           });

        return true;

      } // end if

      return false;

    }, // end position_sb_handle()

    set_color_from_hex: function (hex) {

      if (hex) {

        var color = MochiKit.Color.Color.fromHexString(hex);
        var hsv   = color.asHSV();

        this.hue        = hsv.h;
        this.saturation = hsv.s;
        this.brightness = hsv.v;

        this.update_hsb();
        this.update_handles();

      } // end if

    }, // end set_color_from_hex()

    update_color: function () {

      this.color = MochiKit.Color.Color.fromHSV(this.hue, this.saturation, this.brightness);

      this.on_change();

    }, // end update_color()

    update_handles: function () {

      this.position_sb_handle();
      this.position_h_handle();

    }, // end update_handles()

    update_hsb: function () {

      if (this.hue > 1)        { this.hue        = 1.0; } // end if
      if (this.hue < 0)        { this.hue        = 0.0; } // end if

      if (this.saturation > 1) { this.saturation = 1.0; } // end if
      if (this.saturation < 0) { this.saturation = 0.0; } // end if

      if (this.brightness > 1) { this.brightness = 1.0; } // end if
      if (this.brightness < 0) { this.brightness = 0.0; } // end if

      this.update_color();

    }, // end update_hsb()

    update_sb_hue: function () {

      this.update_hsb();

      var obj = this.elements["sb_container"];

      if (obj) {

        obj.style.backgroundColor = this.max_color_hex();

      } // end if

    } // end update_sb_hue()

  }; // end class Basis.color_chooser

  // ==========================================

  Basis.get_child_elements_by_tag = function (element, tag) {

    var element  = MochiKit.DOM.getElement(element);
    var tag      = tag.toUpperCase();

    var children = [];

    if (element && tag) {

      for (var y in element.childNodes) {

        if (element.childNodes[y] && element.childNodes[y].tagName && (element.childNodes[y].tagName.toUpperCase() == tag)) {

          children[children.length] = element.childNodes[y];

        } // end if

      } // end for

    } // end if

    return children;

  }; // end Basis.get_child_elements_by_tag()

  // ==========================================

  Basis.nested_sortables = function () {

    this.__init__();

  }; // end nested_sortables()

  Basis.nested_sortables.prototype = {

    __init__: function (options) {

      this.ul_tag        = "UL";
      this.ul_class      = null;

      this.li_tag        = "LI";
      this.li_class      = null;

      this.custom_ondrop = function (element, onto) {};

      MochiKit.Base.updatetree(this, options);

    }, // end _init_()

    build_nested_sortables: function (element, options) {

      if (!options) { var options = {}; } // end if

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        var uls = MochiKit.DOM.getElementsByTagAndClassName(this.ul_tag, this.ul_class, element);
        var lis = MochiKit.DOM.getElementsByTagAndClassName(this.li_tag, this.li_class, element);

        for (var i in lis) {

          if (typeof(lis[i]) != "function") {

            this.prepare_nested_sortable_element(lis[i], options);

          } // end if

        } // end for

        uls = update([], uls);
        uls.reverse();

        for (var i in uls) {

          if (typeof(uls[i]) != "function") {

            var ul = uls[i];

            new MochiKit.Sortable.create(ul.id, MochiKit.Base.updatetree({"constraint"  : false,
                                                                          "containment" : [ul],
                                                                          "hoverclass"  : "Basis.nested_sortables.hoverclass",
                                                                          "starteffect" : MochiKit.Base.noop,
                                                                          "endeffect"   : MochiKit.Base.noop,
                                                                          "tag"         : this.li_tag
                                                                         }, options));

          } // end if

        } // end for

      } // end if

    }, // end build_nested_sortables()

    compile: function (element, options) {

      if (!options) { var options = {}; } // end if

      var element = MochiKit.DOM.getElement(element);

      if (element && element.id) {

        this.build_nested_sortables(element.id, options);
        this.prepare_nested_sortable_element(element.id, options);

      } // end if

    }, // end compile()

    ondrop: function (element, onto) {

      var drop_container = onto.nextSibling;

      if (drop_container && (drop_container.tagName.toUpperCase() == this.ul_tag.toUpperCase()) && (MochiKit.DOM.hasElementClass(drop_container, this.ul_class))) {

        if (drop_container.firstChild) {

          drop_container.insertBefore(element, drop_container.firstChild);

        } else {

          drop_container.appendChild(element);

       } // end if

        var drops = MochiKit.DragAndDrop.Droppables.drops;

        for (var i in drops) {

          if (drops[i] && drops[i].element && (MochiKit.DOM.getElement(drops[i].element) == element)) {

            if (drops[i].options && drops[i].options.containment && drops[i].options._containers) {

              drops[i].options.containment = [drop_container];
              drops[i].options._containers = [drop_container];

              if (this.custom_ondrop && (typeof(this.custom_ondrop) == "function")) {

                this.custom_ondrop(element, onto);

              } // end if

            } // end if

          } // end if

        } // end for

      } // end if

    }, // end ondrop()

    prepare_nested_sortable_element: function (element, options) {

      if (!options) { var options = {}; } // end if

      options["hide_dropzones"] = (options["hide_dropzones"] != null) ? options["hide_dropzones"] : true;

      var element = MochiKit.DOM.getElement(element);

      if (element && element.tagName) {

        var dropzone = MochiKit.DOM.getElement((element.id + "_d"));

        if (!dropzone) {

          var dropzone = new MochiKit.DOM.DIV({"id"    : (element.id + "_d"),
                                               "class" : "dropzone"
                                              });


          if (options["hide_dropzones"]) {

            MochiKit.DOM.addElementClass(dropzone, "invisible");

          } // end if

          element.appendChild(dropzone);

        } // end if

        var innerUL = MochiKit.DOM.getFirstElementByTagAndClassName(this.ul_tag, this.ul_class, element);

        if (innerUL) {

          element.insertBefore(dropzone, innerUL);

        } else {

          var container = MochiKit.DOM.createDOM(this.ul_tag, {"id"    : (element.id ? (element.id + "_c") : null),
                                                               "class" : this.ul_class
                                                              });

          element.appendChild(container);

        } // end if

        new MochiKit.DragAndDrop.Droppable((element.id + "_d"), {"ondrop"     : MochiKit.Base.bind(this.ondrop, this),
                                                                 "hoverclass" : "drop-hover"
                                                                });

      } // end if

    } // end prepare_nested_sortable_element()

  }; // end class Basis.nested_sortables

  // ==========================================

  // class.bcalendar.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  try {

    if (typeof(Basis) == 'undefined') {

      throw "";

    } // end if

  } catch (e) {

    throw "Basis.bcalendar depends on Basis!";

  } // end try

  if (typeof(Basis.bcalendar) == 'undefined') {

    Basis.bcalendar = {};

  } // end if

  Basis.bcalendar.NAME    = 'Basis.bcalendar';
  Basis.bcalendar.VERSION = '0.1';

  Basis.bcalendar.__repr__ = function () {

    return '[' + this.NAME + ' ' + this.VERSION + ']';

  }; // end __repr__()

  Basis.bcalendar.toString = function () {

    return this.__repr__();

  }; // end toString()

  Basis.bcalendar = function () {

    this.__init__();

  }; // end bcalendar()

  Basis.bcalendar.instances = [];

  Basis.bcalendar.prototype = {

    __init__: function () {

      this.mtend  = {1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31};
      this.months = {1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"};

      this.container_element;
      this.variable_name;
      this.date_element;
      this.append_to_element;

      this.month;
      this.day;
      this.year;

      this.original_month;
      this.original_day;
      this.original_year;

      this.loading_events;

      this.self_id;
      this.sid;

      this.events                   = new Object();

      this.has_events               = false;
      this.show_selected_day        = true;
      this.visible                  = false;
      this.linked_to_dropdown       = true;
      this.logged_in                = false; // sessions and associate AJAX functions require an actual authenticated PHP session, so while it's trivial
                                       // that a person could edit the HTML to set this.logged_in = true, the accompanying posts to edit or update
                                       // data would fail.
      this.display_notes_by_default = false;

      this.class_prefix             = "bcalendar";
      this.mode                     = "calendar"; // enum('calendar','tasklist');
      this.output                   = "";

      this.list_id                  = null;

      this.duration                 = 0.00;

      this.index                            = Basis.bcalendar.instances.length;
      Basis.bcalendar.instances[this.index] = this;

    }, // end __init__()

    add_event: function (month,day,year) {

      if (month && day && year) {

        var date_parts          = this.date_parts((year+"-"+month+"-"+day),true);

        var to_post             = new Object();
        to_post["date"]         = date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];
        to_post["form_request"] = this.list_id;

        window.status = "Fetching form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_add_event_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.month = month;
        as.day   = day;
        as.year  = year;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response) {

            var html = response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/disk.gif);\" onclick=\""+this.pvar.variable_name+".add_event_post('"+eval(this.year)+"-"+((eval(this.month)<10) ? ("0"+eval(this.month)) : (eval(this.month)))+"-"+((eval(this.day)<10) ? ("0"+eval(this.day)) : (eval(this.day)))+"');\"></div>";

            var obj  = MochiKit.DOM.getElement("add_event");

            if (!obj) {

              this.pvar.add_event_popup = Basis.popup({"id"           : "add_event",
                                                       "html"         : html,
                                                       "window_title" : "Add Event - "+this.pvar.months[eval(this.month)]+" "+eval(this.day)+", "+eval(this.year)
                                                      });

            } else {

              this.pvar.add_event_popup.window_title.innerHTML   = "Add Event - "+this.pvar.months[eval(this.month)]+" "+eval(this.day)+", "+eval(this.year);
              this.pvar.add_event_popup.html_container.innerHTML = html;

            } // end if

            window.status = "Done";

          } else {

            window.status = "add_event(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end add_event()

    add_event_post: function (date) {

      var element = MochiKit.DOM.getElement("add_event");

      if (element) {

        // 1. scrape form values

        var form_data = MochiKit.DOM.formContents("form_999999");

        form_data[0][form_data[0].length] = "PHPSESSID";
        form_data[1][form_data[1].length] = this.sid;

        form_data[0][form_data[0].length] = "date";
        form_data[1][form_data[1].length] = date;

        form_data[0][form_data[0].length] = "form_request";
        form_data[1][form_data[1].length] = this.list_id;

        var to_post = new Object();

        for (var i in form_data[0]) {

          if (typeof(form_data[0][i]) != "function") {

            to_post[form_data[0][i]] = form_data[1][i];

          } // end if

        } // end for

        window.status = "Saving event...";

        // 2. post via AJAX to save to database

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_add_event_save";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var obj = MochiKit.DOM.getElement("add_event");

          if (obj && obj.close) {

            obj.close();

          } // end if

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end add_event_post()

    append_output: function () {

      if (this.container_element) {

        var element = MochiKit.DOM.getElement(this.container_element);

        if (element) {

          var temp = "";

          if (this.has_events) {

            temp += "<div>";
            temp += "  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" class=\"bcalendar2_button_container\">";
            temp += "    <tr>";
            temp += "      <td width=\"20%\" align=\"center\"><img src=\"images/images/default_icons/calendar.gif\" border=\"0\" style=\"vertical-align: middle; margin-right: 5px;\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".calendar_mode();\">Calendar View</span></td>";
            temp += "      <td width=\"20%\" align=\"center\"><img src=\"images/images/default_icons/application.gif\" border=\"0\" style=\"vertical-align: middle; margin-right: 5px;\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_mode();\">Project List View</span></td>";
//          temp += "      <td width=\"20%\" align=\"center\"><b>Summary View</b></td>";
//          temp += "      <td width=\"20%\" align=\"center\"><b>Hide Overdue</b></td>";

            if (this.logged_in) {

              temp += "      <td width=\"20%\" align=\"center\"><img src=\"images/images/default_icons/tag_blue.gif\" border=\"0\" style=\"vertical-align: middle; margin-right: 5px;\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_manage_categories();\"><b>Manage Project Categories</b></td>";

            } // end if

            temp += "    </tr>";
            temp += "  </table>";
            temp += "</div>";

          } // end if

          this.output = temp+this.output;

          element.innerHTML = this.output;

          Basis.execute_javascript(element);

        } // end if

        if (!this.linked_to_dropdown) {

          element.style.display  = "block";
          element.style.position = "static";
          element.style.zIndex   = 0;

        } // end if

      } // end if

    }, // end append_output()

    bcalendar_td_out: function (element) {

      if (MochiKit.DOM.getElement(element)) {

        MochiKit.DOM.getElement(element).className = MochiKit.DOM.getElement(element).oclass;

      } // end if

    }, // end bcalendar_td_out()

    bcalendar_td_over: function (element) {

      if (MochiKit.DOM.getElement(element)) {

        MochiKit.DOM.getElement(element).oclass    = MochiKit.DOM.getElement(element).className;
        MochiKit.DOM.getElement(element).className = this.class_prefix+"_td_over";

      } // end if

    }, // end bcalendar_td_over()

    calendar_mode: function () {

      this.mode = "calendar";

      this.calendar_render();

    }, // end calendar_mode()

    calendar_render: function () {

      if (MochiKit.DOM.getElement("all_events")) {

        MochiKit.DOM.removeElement("all_events");

      } // end if

      var tdate = new Date();

      if (!this.month) { this.month = tdate.getMonth()+1;  } // end if
      if (!this.day)   { this.day   = tdate.getDay();      } // end if
      if (!this.year)  { this.year  = tdate.getFullYear(); } // end if

      if (!this.original_month) { this.original_month = this.month; } // end if
      if (!this.original_day)   { this.original_day   = this.day;   } // end if
      if (!this.original_year)  { this.original_year  = this.year;  } // end if

      if (this.variable_name && (this.date_element || !this.linked_to_dropdown)) {

        this.day   = 1;

        var grid   = {0:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},
                      1:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},
                      2:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},
                      3:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},
                      4:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},
                      5:{0:"",1:"",2:"",3:"",4:"",5:"",6:""}};

        this.output = "";

        if (this.month && this.day && this.year) {

          var date_info = this.get_date_info();

          var t         = date_info.day_of_week;
          var counter   = 1;

          if (date_info) {

            for (y=0;y<6;y++) {

              for (x=t;x<7;x++) {

                if (counter <= date_info.days_in_month) {

                  grid[y][x] = counter;
                  counter++;

                } // end if

              } // end for

              t = 0;

            } // end for

          } // end if

          if ((this.month-1) <= 0) {

            var pmonth = 12;
            var pyear  = this.year-1;

          } else {

            var pmonth = this.month-1;
            var pyear  = this.year;

          } // end if

          if ((this.month+1) >= 13) {

            var nmonth = 1;
            var nyear  = this.year+1;

          } else {

            var nmonth = this.month+1;
            var nyear  = this.year;

          } // end if

          this.output += "<table id=\"bcalendar_table_"+this.variable_name+"\" class=\""+this.class_prefix+"_table\">\n";
          this.output += "  <tbody>";
          this.output += "    <tr>\n";
          this.output += "      <td id=\"bcalendar_table_"+this.variable_name+"_nav_left\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+pmonth+","+pyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/prev_on.gif\" border=\"0\"></a></td>\n";
          this.output += "      <td id=\"bcalendar_table_"+this.variable_name+"_month\" class=\""+this.class_prefix+"_month_year\" colspan=\"5\">"+this.months[this.month]+" "+this.year+"</td>\n";
          this.output += "      <td id=\"bcalendar_table_"+this.variable_name+"_nav_right\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+nmonth+","+nyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/next_on.gif\" border=\"0\"></a></td>\n";
          this.output += "    </tr>\n";
          this.output += "    <tr class=\""+this.class_prefix+"_tr\">\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Sun</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Mon</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Tue</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Wed</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Thu</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Fri</td>\n";
          this.output += "      <td class=\""+this.class_prefix+"_header_td\">Sat</td>\n";
          this.output += "    </tr>\n";

          var rows = 6;

          if (!grid[5][0]) { rows = 5; } // end if

          for (y=0;y<rows;y++) {

            this.output += "    <tr class=\""+this.class_prefix+"_tr\">\n";

            for (x=0;x<7;x++) {

              var today = new Date();
              var td_js = "";

              if ((today.getDate()==grid[y][x])&&((today.getMonth()+1)==this.month)&&(today.getFullYear()==this.year)) {

                today = "_today";

              } else {

                if (!grid[y][x]) {

                  today = "_outside_month";

                } else {

                  today = "";

                } // end if

              } // end if

              if (this.show_selected_day) {

                if (this.date_element) {

                  var month_element = MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);
                  var day_element   = MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);
                  var year_element  = MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);

                  if (month_element && day_element && year_element) {

                    if ((month_element.options[month_element.selectedIndex].value == this.month) &&
                        (day_element.options[day_element.selectedIndex].text == grid[y][x]) &&
                        (year_element.options[year_element.selectedIndex].text == this.year)) {

                      today = "_selected";

                    } // end if

                  } // end if

                } else {

                  if ((this.original_month == this.month) && (this.original_year == this.year) && (this.original_day == grid[y][x])) {

                    today = "_selected";

                  } // end if

                } // end if

              } // end if

              if (grid[y][x]) {

                td_js = " onmouseover=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_over(this); }\" onmouseout=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_out(this); }\" ";

                if (this.linked_to_dropdown) {

                  td_js += " onclick=\"if ("+this.variable_name+") {"+this.variable_name+".update_date_element('"+this.month+"','"+grid[y][x]+"','"+this.year+"',this); }\" ";

                } // end if

              } // end if

              var add_event = "";

              if (this.logged_in && grid[y][x]) {

                var add_event = "<a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".add_event('"+this.month+"','"+grid[y][x]+"','"+this.year+"'); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/add_date_small.gif\" border=\"0\" style=\"cursor: pointer;\"></a>";

              } // end if

              this.output += "      <td id=\"bcalendar_table_"+this.variable_name+"_"+grid[y][x]+"\" class=\""+this.class_prefix+"_td"+today+"\" "+td_js+"><table width=\"100%\"><tr><td><span class=\""+this.class_prefix+"_td_date\">"+grid[y][x]+"</span></td><td align=\"right\">"+add_event+"</td></tr></table></td>\n";

            } // end for

            this.output += "    </tr>\n";

          } // end for

          this.output += "  </tbody>";
          this.output += "</table>";

        } // end if

        this.append_output();

        if (!this.date_element && this.has_events) {

          this.tasklist_get_categories();
          this.date_get_events(this.year+"-"+this.month);

        } // end if

        return this.output;

      } else {

        return false;

      } // end if

    }, // end calendar_render()

    compile: function () {

      if (!MochiKit.DOM.getElement(this.container_element)) {

        if (this.date_element) {

          this.container_element = "calendar_"+this.date_element.name+"_"+this.date_element.rrv+"_"+this.date_element.findex;

        } else {

          this.container_element = "calendar_"+this.variable_name;

        } // end if

      } // end if

      if (!MochiKit.DOM.getElement(this.container_element)) {

        var container_element = new MochiKit.DOM.DIV({"id"    : this.container_element,
                                                      "class" : this.class_prefix+"_container"},
                                                      null);

        if (this.date_element) {

          var element = MochiKit.DOM.getElement("calendar_"+this.date_element.rrv+"_"+this.date_element.findex+"_placeholder");

        } else if (this.append_to_element && MochiKit.DOM.getElement(this.append_to_element)) {

          var element = MochiKit.DOM.getElement(this.append_to_element);

        } else {

          var element = document.body;

        } // end if

        element.appendChild(container_element);

      } // end if

      switch (this.mode) {

        case "calendar":

          this.calendar_mode();
          break;

        case "tasklist":

          this.tasklist_mode();
          break;

        default:

          this.calendar_mode();
          break;

      } // end switch

    }, // end compile();

    date_parts: function (date,padded) {

      if (date) {

        var date_parts = date.split("-");
        var year       = date_parts[0];
        var month      = date_parts[1];
        var day        = date_parts[2];

        if (year && (year.substring(0,1)=="0"))   { year  = year.substring(1);  } // end if
        if (month && (month.substring(0,1)=="0")) { month = month.substring(1); } // end if
        if (day && (day.substring(0,1)=="0"))     { day   = day.substring(1);   } // end if

        if (year)  { year  = eval(year);  } // end if
        if (month) { month = eval(month); } // end if
        if (day)   { day   = eval(day);   } // end if

        if (!padded) {

          return {"y":year,
                  "m":month,
                  "d":day};

        } else {

          return {"y":(year<10)  ? ("0"+year)  : (year),
                  "m":(month<10) ? ("0"+month) : (month),
                  "d":(day<10)   ? ("0"+day)   : (day)};

        } // end if

      } // end if

    }, // end date_parts()

    date_get_events: function (date) {

      if (date && !this.linked_to_dropdown) {

        window.status        = "Fetching calendar events...";

        var to_post          = new Object();
        to_post["date"]      = date;
        to_post["list_id"]   = this.list_id;

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_get_events";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.date  = date;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response) {

            this.pvar.events = MochiKit.Base.evalJSON(req.responseText);

            var date_parts   = this.pvar.date_parts(this.date);
            var year         = date_parts["y"];
            var month        = date_parts["m"];
            var day          = date_parts["d"];

            if (day == "0") { day = null; } // end if

            if (year && month && !day) {

              var date_info = this.pvar.get_date_info();

              for (x=1; x<=date_info["days_in_month"]; x++) {

                this.pvar.date_render_events(year+"-"+month+"-"+x);

              } // end for

            } else {

              this.pvar.date_render_events(date);

            } // end if

            window.status = "Done";

          } else {

            window.status = "date_get_events(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end date_get_events()

    date_render_events: function (date,total_show,update_html) {

      var date_parts = this.date_parts(date,true);
      var year       = date_parts["y"];
      var month      = date_parts["m"];
      var day        = date_parts["d"];

      date = year+"-"+month+"-"+day;

      if (this.events[date]) {

        var events = this.events[date];

        if (events) {

          var output     = "";
          var x          = 0;
          var total      = 0;
          var trim       = false;
          var trimmed    = false;

          if (!total_show) {

            total_show = 4;
            trim       = true;

          } // end if

          if ((year == this.year) && (month == this.month)) {

            for (var i in events) {

              if (events[i] && events[i]["event"]) {

                if (x<total_show) {

                  var event_title = events[i]["event"];

                  if (trim && (event_title.length > 15)) {

                    event_title = (event_title.substring(0,12)+"...");
                    trimmed     = true;

                  } // end if

                  output += "<div id=\"bcalendar_event_"+events[i]["id"]+"\" class=\""+this.class_prefix+"_event\" style=\"cursor: pointer;\" onmouseover=\"this.className='"+this.class_prefix+"_event_over';\" onmouseout=\"this.className='"+this.class_prefix+"_event';\" onclick=\""+this.variable_name+".event_render_details('"+events[i]["id"]+"');\">"+event_title+"</div>\n";

                  x++;

                } // end if

                total++;

              } // end if

            } // end for

            if (output && (total > x)) {

              output += "<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">..."+(total-x)+" more</a></div>";

            } else {

              if (trimmed) {

                output += "<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">...more</a></div>";

              } // end if

            } // end if

            if ((update_html==null) || (update_html==true)) {

              var element = MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day));

              if (element) {

                element.innerHTML += output;

              } // end if

            } // end if

          } // end if

          return output;

        } // end if

      } // end if

    }, // end date_render_events()

    date_render_all_events: function (date) {

      if (MochiKit.DOM.getElement("all_events")) {

        MochiKit.DOM.removeElement("all_events");

      } // end if

      var date_parts = this.date_parts(date);
      var year       = date_parts["y"];
      var month      = date_parts["m"];
      var day        = date_parts["d"];

      var events     = this.date_render_events(date,1000,false);
      var html       = events;

      var to_pos     = MochiKit.Style.getElementPosition(MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day)));

      var obj        = MochiKit.DOM.getElement("all_events");

      if (!obj) {

        this.all_events_popup = Basis.popup({"id"             : "all_events",
                                             "html"           : html,
                                             "center_element" : false,
                                             "move_to"        : to_pos,
                                             "window_title"   : (this.months[eval(month)]+" "+eval(day)+", "+eval(year))
                                            });

      } else {

        this.all_events_popup.html_container.innerHTML = html;

      } // end if

    }, // end date_render_all_events()

    delete_event: function (event_id) {

      if (confirm('Are you sure you want to delete this event?')==true) {

        window.status       = "Deleting calendar event...";

        var to_post         = new Object();
        to_post["event_id"] = event_id;

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_delete_event";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          if (MochiKit.DOM.getElement("add_event")) {

            MochiKit.DOM.removeElement("add_event");

          } // end if

          if (MochiKit.DOM.getElement("event_detail")) {

            MochiKit.DOM.removeElement("event_detail");

          } // end if

          if (MochiKit.DOM.getElement("all_events")) {

            MochiKit.DOM.removeElement("all_events");

          } // end if

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end delete_event()

    edit_event: function (event_id,date) {

      if (event_id && date) {

        var date_parts       = this.date_parts(date,true);

        var to_post          = new Object();
        to_post["event_id"]  = event_id;
        to_post["date"]      = date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];

        window.status = "Fetching form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_edit_event_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.event_id = event_id;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response) {

            var html = response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/disk.gif);\" onclick=\""+this.pvar.variable_name+".save_event_post('"+this.event_id+"');\"></div>";

            var obj  = MochiKit.DOM.getElement("event_detail");

            if (!obj) {

              this.pvar.event_detail_popup = Basis.popup({"id"           : "event_detail",
                                                          "html"         : html,
                                                          "window_title" : "Edit Event"
                                                         });

            } else {

              this.pvar.event_detail_popup.html_container.innerHTML = html;

              Basis.execute_javascript(obj);

              Basis.center_element(obj,true);

            } // end if

            window.status = "Done";

          } else {

            window.status = "edit_event(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end edit_event()

    event_get_details: function (id) {

      if (this.events) {

        for (var date in this.events) {

          for (var i in this.events[date]) {

            if (this.events[date][i]["id"] && this.events[date][i]["id"] == id) {

              return this.events[date][i];

            } // end if

          } // end for

        } // end for

      } // end if

      return false;

    }, // end event_get_details()

    event_render_details: function (id) {

      var element = MochiKit.DOM.getElement("bcalendar_event_"+id);

      if (element) {

        var html = "<table cellpadding=\"5\">";

        var details   = this.event_get_details(id);

        if (details && details["assigned_date"] && (details["assigned_date"] != "0000-00-00")) {

          var date_parts  = this.date_parts(details["assigned_date"]);
          var event_year  = date_parts["y"];
          var event_month = date_parts["m"];
          var event_day   = date_parts["d"];

        } // end if

        if (details && details["event"]) {

          html += "<tr><td><b>Name:</b></td><td>"+details["event"]+"</td></tr>\n";

        } // end if

        if (details && details["category_id"] && this.tasklist_categories && this.tasklist_categories[details["category_id"]]) {

          html += "<tr><td><b>Project:</b></td><td>"+this.tasklist_categories[details["category_id"]]+"</td></tr>\n";

        } // end if

        if (details && details["due_date"] && (details["due_date"] != "0000-00-00")) {

          var date_parts  = this.date_parts(details["due_date"]);
          var due_year    = date_parts["y"];
          var due_month   = date_parts["m"];
          var due_day     = date_parts["d"];

          html += "<tr><td><b>Due Date:</b></td><td>"+this.months[due_month].substring(0,3)+" "+due_day+", "+due_year+"</td></tr>\n";

        } // end if

        if (details && details["notes"]) {

          html += "<tr><td><b>Notes:</b></td><td width=\"500\">"+details["notes"].replace(/\n/g,"<br>")+"</td></tr>\n";

        } // end if

        if (details && details["notes2"]) {

          html += "<tr><td><b>More notes:</b></td><td>"+details["notes2"].replace(/\n/g,"<br>")+"</td></tr>\n";

        } // end if

        html += "</table>";

        if (this.logged_in) {

          var edit_button   = "<input type=\"button\" value=\"Edit\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/calendar_edit.gif);\" onclick=\""+this.variable_name+".edit_event('"+id+"','"+details["assigned_date"]+"');\">";
          var delete_button = "<input type=\"button\" value=\"Delete\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/calendar_delete.gif);\" onclick=\""+this.variable_name+".delete_event('"+id+"');\">";

          html += "<div align=\"right\">"+edit_button+"&nbsp;"+delete_button+"</div>";

        } // end if

        var obj  = MochiKit.DOM.getElement("event_detail");

        if (!obj) {

          this.event_detail_popup = Basis.popup({"id"             : "event_detail",
                                                 "html"           : html,
                                                 "center_element" : false,
                                                 "move_to"        : MochiKit.Style.getElementPosition(element),
                                                 "window_title"   : "Event Detail"
                                                });

        } else {

          this.event_detail_popup.html_container.innerHTML = html;

          Basis.execute_javascript(obj);

          MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));

        } // end if

      } // end if

    }, // end event_render_details()

    format_date_short: function (date_text) {

      if (date_text) {

        if (date_text != "0000-00-00") {

          var date_parts = this.date_parts(date_text);
          var y          = date_parts["y"];
          var m          = date_parts["m"];
          var d          = date_parts["d"];

          return this.months[m].substring(0,3)+" "+d+", "+y;

        } else {

          return "&nbsp;";

        } // end if

      } // end if

      return "&nbsp;";

    }, // end format_date_short()

    format_date_long: function (date_text) {

      if (date_text) {

        if (date_text != "0000-00-00") {

          var date_parts = this.date_parts(date_text);
          var y          = date_parts["y"];
          var m          = date_parts["m"];
          var d          = date_parts["d"];

          return this.months[m]+" "+d+", "+y;

        } else {

          return "&nbsp;";

        } // end if

      } // end if

      return "&nbsp;";

    }, // end format_date_long()

    get_date_info: function () {

      this.month = eval(this.month);
      this.day   = eval(this.day);
      this.year  = eval(this.year);

      var mtend = this.mtend[this.month];

      if  ((this.month==2)&&((this.year%4)==0)) {

        mtend++;

      } // end if

      if (this.day < (mtend+1)) {

        var c = new Date();
        c.setFullYear(this.year,(this.month-1),this.day);

        return {"day_of_week"   : c.getDay(),
                "days_in_month" : mtend};

      } else {

        return false;

      } // end if

    }, // end get_date_info()

    navigate: function (m,y) {

      if (!this.date_element) {

        if (MochiKit.DOM.getElement("add_event") && MochiKit.DOM.getElement("add_event").close) {

          MochiKit.DOM.getElement("add_event").close();

        } // end if

        if (MochiKit.DOM.getElement("event_detail") && MochiKit.DOM.getElement("event_detail").close) {

          MochiKit.DOM.getElement("event_detail").close();

        } // end if

        if (MochiKit.DOM.getElement("all_events") && MochiKit.DOM.getElement("all_events").close) {

          MochiKit.DOM.getElement("all_events").close();

        } // end if

      } // end if

      this.month = m;
      this.year  = y;

      this.compile();

      if (MochiKit.DOM.getElement(this.container_element)) {

        MochiKit.DOM.getElement(this.container_element).innerHTML = this.output;

        Basis.execute_javascript(this.container_element);

      } // end if

      if (this.date_element) {

        var info          = this.get_date_info();
        var days_in_month = info["days_in_month"];

        var element       = MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);

        if (element) {

          if (days_in_month != element.options.length) {

            var sindex = element.selectedIndex;

            element.options.length = 0;

            for (var x=0;x<days_in_month;x++) {

              element.options[x] = new Option(x+1,x);

            } // end for

            if (sindex) {

              element.selectedIndex = sindex;

            } // end if

          } // end if

        } // end if

      } // end if

    }, // end navigate()

    save_event_post: function (id) {

      var element = MochiKit.DOM.getElement("event_detail");

      if (element) {

        // 1. scrape form values

        var form_data = MochiKit.DOM.formContents("form_888888");

        form_data[0][form_data[0].length] = "PHPSESSID";
        form_data[1][form_data[1].length] = this.sid;

        form_data[0][form_data[0].length] = "id";
        form_data[1][form_data[1].length] = id;

        var to_post = new Object();

        for (var i in form_data[0]) {

          if (typeof(form_data[0][i]) != "function") {

            to_post[form_data[0][i]] = form_data[1][i];

          } // end if

        } // end for

        window.status = "Saving event...";

        // 2. post via AJAX to save to database

        var as   = new Basis.ajax_scaffold;
        as.alias = "calendar_date_edit_event_save";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var obj = MochiKit.DOM.getElement("event_detail");

          if (obj && obj.close) {

            obj.close();

          } // end if

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end save_event_post()

    tasklist_add_event: function (category_id) {

      if (category_id) {

        var to_post             = new Object();
        to_post["category_id"]  = category_id;
        to_post["form_request"] = this.list_id;

        window.status = "Fetching form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_date_add_event_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.category_id = category_id;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response) {

            var html = response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/disk.gif);\" onclick=\""+this.pvar.variable_name+".tasklist_add_event_post();\"></div>";

            var obj  = MochiKit.DOM.getElement("add_event");

            if (!obj) {

              this.pvar.add_event_popup = Basis.popup({"id"           : "add_event",
                                                       "html"         : html,
                                                       "window_title" : "Add Entry for "+this.pvar.tasklist_categories[category_id]
                                                      });

            } else {

              this.pvar.add_event_popup.window_title.innerHTML   = "Add Entry for "+this.pvar.tasklist_categories[category_id];
              this.pvar.add_event_popup.html_container.innerHTML = html;

              Basis.execute_javascript(obj);

              Basis.center_element(obj,true);

            } // end if

            window.status = "Done";

          } else {

            window.status = "tasklist_add_event(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_add_event()

    tasklist_add_event_post: function () {

      var element = MochiKit.DOM.getElement("add_event");

      if (element) {

        // 1. scrape form values

        var form_data = MochiKit.DOM.formContents("form_999999");

        form_data[0][form_data[0].length] = "PHPSESSID";
        form_data[1][form_data[1].length] = this.sid;

        form_data[0][form_data[0].length] = "form_request";
        form_data[1][form_data[1].length] = this.list_id;

        var to_post = new Object();

        for (var i in form_data[0]) {

          if (typeof(form_data[0][i]) != "function") {

            to_post[form_data[0][i]] = form_data[1][i];

          } // end if

        } // end for

        window.status = "Saving event...";

        // 2. post via AJAX to save to database

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_date_add_event_save";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var obj = MochiKit.DOM.getElement("add_event");

          if (obj && obj.close) {

            obj.close();

          } // end if

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_add_event_post()

    tasklist_event_get_details: function (id) {

      if (this.tasklist_events) {

        for (var category_id in this.tasklist_events) {

          for (var i in this.tasklist_events[category_id]) {

            if (this.tasklist_events[category_id][i]["id"] && this.tasklist_events[category_id][i]["id"] == id) {

              return this.tasklist_events[category_id][i];

            } // end if

          } // end for

        } // end for

      } // end if

      return false;

    }, // end tasklist_event_get_details()

    tasklist_event_archive: function (id) {

      if (confirm("Are you sure you want to archive this task?")) {

        var to_post = {"id":id};

        window.status = "Archiving event...";

        // 2. post via AJAX to save to database

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_event_archive";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_save_event_post()

    tasklist_edit_event: function (event_id) {

      if (event_id) {

        var to_post          = new Object();
        to_post["event_id"]  = event_id;

        window.status = "Fetching form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_date_edit_event_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.event_id = event_id;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response) {

            var html = response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/disk.gif);\" onclick=\""+this.pvar.variable_name+".tasklist_save_event_post('"+this.event_id+"');\"></div>";

            var obj  = MochiKit.DOM.getElement("event_detail");

            if (!obj) {

              this.pvar.event_detail_popup = Basis.popup({"id"           : "event_detail",
                                                          "html"         : html,
                                                          "window_title" : "Edit Task"
                                                         });

            } else {

              this.pvar.event_detail_popup.html_container.innerHTML = html;

              Basis.execute_javascript(obj);

              Basis.center_element(obj,true);

            } // end if

            window.status = "Done";

          } else {

            window.status = "tasklist_edit_event(): ERROR!";

          } // end if

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_edit_event()

    tasklist_event_render_details: function (id) {

      var html    = "<table cellpadding=\"5\">";

      var details = this.tasklist_event_get_details(id);

      if (details && details["category_id"] && this.tasklist_categories && this.tasklist_categories[details["category_id"]]) {

        html += "<tr><td><b>Project:</b></td><td>"+this.tasklist_categories[details["category_id"]]+"</td></tr>\n";

      } // end if

      if (details && details["event"]) {

        html += "<tr><td><b>Name:</b></td><td>"+details["event"]+"</td></tr>\n";

      } // end if

      if (details && details["status"]) {

        html += "<tr><td><b>Status:</b></td><td>"+((this.tasklist_status_list[details["status"]]) ? (this.tasklist_status_list[details["status"]]) : "&nbsp;")+"</td></tr>\n";

      } // end if

      if (details && details["assigned_to"]) {

        html += "<tr><td><b>Assigned to:</b></td><td>"+((this.tasklist_contact_list[details["assigned_to"]]) ? (this.tasklist_contact_list[details["assigned_to"]]) : "&nbsp;")+"</td></tr>\n";

      } // end if

      if (details && details["assigned_date"] && (details["assigned_date"] != "0000-00-00")) {

        var date_parts  = this.date_parts(details["assigned_date"]);
        var event_year  = date_parts["y"];
        var event_month = date_parts["m"];
        var event_day   = date_parts["d"];

      } // end if

      if (details && details["due_date"] && (details["due_date"] != "0000-00-00")) {

        var date_parts  = this.date_parts(details["due_date"]);
        var due_year    = date_parts["y"];
        var due_month   = date_parts["m"];
        var due_day     = date_parts["d"];

        html += "<tr><td><b>Due Date:</b></td><td>"+this.months[due_month].substring(0,3)+" "+due_day+", "+due_year+"</td></tr>\n";

      } // end if

      if (details && details["notes"]) {

        html += "<tr><td><b>Notes:</b></td><td width=\"500\">"+details["notes"].replace(/\n/g,"<br>")+"</td></tr>\n";

      } // end if

      if (details && details["notes2"]) {

        html += "<tr><td><b>More notes:</b></td><td>"+details["notes2"].replace(/\n/g,"<br>")+"</td></tr>\n";

      } // end if

      html += "</table>";

      if (this.logged_in) {

        var edit_button   = "<input type=\"button\" value=\"Edit\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/application_edit.gif);\" onclick=\""+this.variable_name+".tasklist_edit_event('"+id+"','"+details["assigned_date"]+"');\">";
        var delete_button = "<input type=\"button\" value=\"Delete\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/application_delete.gif);\" onclick=\""+this.variable_name+".delete_event('"+id+"');\">";

        html += "<div align=\"right\">"+edit_button+"&nbsp;"+delete_button+"</div>";

      } // end if

      var obj  = MochiKit.DOM.getElement("event_detail");

      if (!obj) {

        this.event_detail_popup = Basis.popup({"id"             : "event_detail",
                                               "html"           : html,
                                               "window_title"   : "Task Detail"
                                              });

      } else {

        this.event_detail_popup.html_container.innerHTML = html;

        Basis.execute_javascript(obj);

        Basis.center_element(obj);

      } // end if

    }, // end tasklist_event_render_details()

    tasklist_get_categories: function (on_complete) {

      window.status        = "Fetching tasklist events...";

      if (!on_complete) {

        on_complete = function () {};

      } // end if

      this.on_complete     = on_complete;

      var to_post          = new Object();
      to_post["list_id"]   = this.list_id;

      var as   = new Basis.ajax_scaffold;
      as.alias = "tasklist_get_categories";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.pvar  = this;

      as.on_success = function (req) {

       var array = MochiKit.Base.evalJSON(req.responseText);

       this.pvar.tasklist_categories   = array["categories"];
       this.pvar.tasklist_contact_list = array["contacts"];
       this.pvar.tasklist_status_list  = array["status"];

        var obj = MochiKit.DOM.getElement("category_id_999999");

        if (obj) {

          MochiKit.Logging.log("category_id_999999");

        } // end if

        var obj = MochiKit.DOM.getElement("category_id_888888");

        if (obj) {

          MochiKit.Logging.log("category_id_888888");

        } // end if

        this.pvar.on_complete();

        window.status = "Done";

      };

      as.post({"to_post":to_post});

    }, // end tasklist_get_categories()

    tasklist_get_events: function (on_complete) {

      window.status      = "Fetching tasklist events...";

      if (!on_complete) {

        on_complete = function () {};

      } // end if

      this.on_complete   = on_complete;

      var to_post        = new Object();
      to_post["list_id"] = this.list_id;


      var as   = new Basis.ajax_scaffold;
      as.alias = "tasklist_get_events";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.pvar  = this;

      as.on_success = function (req) {

        this.pvar.tasklist_events = MochiKit.Base.evalJSON(req.responseText);
        this.pvar.on_complete();

        window.status = "Done";

      };

      as.post({"to_post":to_post});

    }, // end tasklist_get_events()

    tasklist_manage_categories: function () {

      var obj = MochiKit.DOM.getElement("tasklist_manage_categories");

      if (obj && obj.close) {

        obj.close();

      } else {

        window.status      = "Fetching tasklist categories...";

        var to_post        = new Object();
        to_post["list_id"] = this.list_id;

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_manage_categories";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var obj = MochiKit.DOM.getElement("tasklist_manage_categories");

          if (!obj) {

            this.tasklist_manage_categories_popup = Basis.popup({"id"           : "tasklist_manage_categories",
                                                                 "html"         : req.responseText,
                                                                 "window_title" : "Manage Project Categories"
                                                                });

          } else {

            this.tasklist_manage_categories_popup.html_container.innerHTML = html;

            Basis.execute_javascript(obj);

            MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));

          } // end if

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_manage_categories()

    tasklist_mode: function () {

      this.mode   = "tasklist";

      this.output = "<img src=\"images/images/ajax_loading.gif\">";
      this.append_output();

      this.tasklist_get_categories(function () {

       this.tasklist_get_events(function () {

          this.tasklist_render_events();
          this.append_output();

        });

      });

    }, // end tasklist_mode()

    tasklist_render_events: function () {

      if (this.tasklist_events && this.tasklist_categories) {

        this.output = "";

        for (var i in this.tasklist_categories) {

          if (typeof(this.tasklist_categories[i]) != "function") {

            this.output += "<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">";
            this.output += "  <tr>";
            this.output += "    <td colspan=\"2\">"; 

            this.output += "      <table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">";
            this.output += "        <tr>";
            this.output += "          <td style=\"vertical-align: bottom;\"><b>"+this.tasklist_categories[i]+"</b>&nbsp;&nbsp;";

            if (this.logged_in) {

              this.output += "<input type=\"button\" value=\"Add Entry\" class=\"gfx_but_default bcalendar2_tasklist_button\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/application_add.gif);\" onclick=\""+this.variable_name+".tasklist_add_event('"+i+"');\">";

            } // end if

            this.output += "</td><td style=\"text-align: right;\"><input type=\"button\" value=\"Show Notes\" class=\"gfx_but_default bcalendar2_tasklist_button\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/note.gif);\" onclick=\""+this.variable_name+".tasklist_toggle_notes('"+i+"');\">";

            this.output += "          </td>";
            this.output += "        </tr>";
            this.output += "      </table>";
            this.output += "    </td>";
            this.output += "  </tr>";
            this.output += "  <tr>";
            this.output += "    <td width=\"20\"><img border=\"0\" id=\""+this.variable_name+"_"+i+"_icon\" src=\"images/images/tree-node-open-end.gif\" style=\"cursor: pointer;\" width=\"18\" height=\"18\" onclick=\"Basis.toggle_visible('"+this.variable_name+"_"+i+"_div'); (Basis.is_visible('"+this.variable_name+"_"+i+"_div')) ? (this.src = 'images/images/tree-node-open-end.gif') : (this.src = 'images/images/tree-node-end.gif');\"></td>";
            this.output += "    <td width=\"100%\"><div id=\""+this.variable_name+"_"+i+"_div\" class=\"finvisible\">";

            for (var j in this.tasklist_events[i]) {

              if (typeof(this.tasklist_events[i][j]) != "function") {

                for (var k in this.tasklist_events[i][j]) {

                  if (this.tasklist_events[i][j][k]=="") {

                    this.tasklist_events[i][j][k] = "&nbsp;";

                  } // end if

                } // end for

                var delete_button  = "";
                var edit_button    = "";
                var archive_button = "";
                var detail_button  = "";

                detail_button = "<input type=\"button\" value=\"Detail\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/zoom.gif);\" onclick=\""+this.variable_name+".tasklist_event_render_details('"+this.tasklist_events[i][j]["id"]+"');\">";

                if (this.logged_in) {

                  edit_button    = "<input type=\"button\" value=\"Edit\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/application_edit.gif);\" onclick=\""+this.variable_name+".tasklist_edit_event('"+this.tasklist_events[i][j]["id"]+"');\">";
                  delete_button  = "<input type=\"button\" value=\"Delete\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/application_delete.gif);\" onclick=\""+this.variable_name+".delete_event('"+this.tasklist_events[i][j]["id"]+"');\">";
//                archive_button = "<input type=\"button\" value=\"Archive\" class=\"gfx_but_default\" style=\"font-family: Tahoma;  background-image: url(images/images/default_icons/drive_go.gif);\" onclick=\""+this.variable_name+".tasklist_event_archive('"+this.tasklist_events[i][j]["id"]+"');\">";

                } // end if

                var tnotes = this.tasklist_events[i][j]["notes"].replace(/\n/g,"<br>");

                this.output += "      <div class=\"bcalendar2_tasklist_container\">";
                this.output += "        <table cellpadding=\"5\" cellspacing=\"0\" width=\"100%\">";
                this.output += "          <tr style=\"border: 1px solid #EBEBEB; background-color: #FFFFFF; margin-bottom: 5px;\">";
                this.output += "            <td width=\"100\" class=\"left\">"+this.format_date_long(this.tasklist_events[i][j]["assigned_date"])+"</td>";
                this.output += "            <td>"+this.tasklist_events[i][j]["event"]+"</td>";
                this.output += "            <td width=\"75\" style=\"text-align: center;\">"+this.tasklist_status_list[this.tasklist_events[i][j]["status"]]+"</td>";
                this.output += "            <td width=\"75\" style=\"text-align: center;\">"+detail_button+"</td>";
                this.output += "            <td width=\"200\" style=\"text-align: center;\">"+edit_button+"&nbsp;"+archive_button+"&nbsp;"+delete_button+"</td>";
                this.output += "          </tr>";
                this.output += "        </table>";

                if (tnotes.length > 0) {

                  this.output += "        <div style=\"background-color: #FFFFFF; padding: 5px; padding-left: 20px;"+((this.display_notes_by_default) ? "" : "display: none;")+"\" class=\"notes_"+i+"\">"+tnotes+"</div>";

                } // end if

                this.output += "      </div>";

              } // end if

            } // end for

            this.output += "    </div></td>";
            this.output += "  </tr>";
            this.output += "</table>";

          } // end if

        } // end for

      } // end if

    }, // end tasklist_render_events()

    tasklist_save_event_post: function (id) {

      var element = MochiKit.DOM.getElement("event_detail");

      if (element) {

        // 1. scrape form values

        var form_data = MochiKit.DOM.formContents("form_888888");

        form_data[0][form_data[0].length] = "id";
        form_data[1][form_data[1].length] = id;

        var to_post = new Object();

        for (var i in form_data[0]) {

          if (typeof(form_data[0][i]) != "function") {

            to_post[form_data[0][i]] = form_data[1][i];

          } // end if

        } // end for

        window.status = "Saving event...";

        // 2. post via AJAX to save to database

        var as   = new Basis.ajax_scaffold;
        as.alias = "tasklist_date_edit_event_save";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var obj = MochiKit.DOM.getElement("event_detail");

          if (obj && obj.close) {

            obj.close();

          } // end if

          this.pvar.compile();

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end tasklist_save_event_post()

    tasklist_toggle_notes: function (id) {

      if (id) {

        var notes = MochiKit.DOM.getElementsByTagAndClassName("div",("notes_"+id));

        if (notes) {

          for (var i in notes) {

            if (notes[i] && notes[i].className) {

              if (notes[i].style.display == "block") {

                notes[i].style.display = "none";

              } else {

                notes[i].style.display = "block";

              } // end if

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end tasklist_toggle_notes()

    toggle: function (button_element) {

      if (MochiKit.DOM.getElement(this.container_element) && MochiKit.DOM.getElement(button_element)) {

        if (!this.visible) {

          this.month = this.original_month;
          this.day   = this.original_day;
          this.year  = this.original_year;

          this.compile();

          var from_pos = MochiKit.Style.getElementPosition(button_element);
          var from_dim = MochiKit.Style.getElementDimensions(button_element);
          var to_dim   = MochiKit.Style.getElementDimensions(this.container_element);

          var to_pos   = new Object;
          to_pos.x     = from_pos.x + from_dim.w + 5;
          to_pos.y     = from_pos.y - to_dim.h;

          if (MochiKit.DOM.isChildNode(button_element,"add_event")) {

            var minus_pos = MochiKit.Style.getElementPosition("add_event");

            to_pos.x -= minus_pos.x;
            to_pos.y -= minus_pos.y;

          } else if (MochiKit.DOM.isChildNode(button_element,"event_detail")) {

            var minus_pos = MochiKit.Style.getElementPosition("event_detail");

            to_pos.x -= minus_pos.x;
            to_pos.y -= minus_pos.y;

          } // end if

          MochiKit.Style.setElementPosition(this.container_element,to_pos);

        } // end if

        if (!this.visible) { this.visible = true; } else { this.visible = false; } // end if

        MochiKit.DOM.getElement(this.container_element).style.display = (MochiKit.DOM.getElement(this.container_element).style.display == "none") ? "inline" : "none";

      } // end if

    }, // end toggle()

    update_calendar: function () {

      if (this.date_element && this.date_element.name && this.date_element.rrv) {

        var month_element = MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);
        var day_element   = MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);
        var year_element  = MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);

        if (month_element && day_element && year_element) {

          this.month          = month_element.options[month_element.selectedIndex].value;
          this.day            = day_element.options[day_element.selectedIndex].text;
          this.year           = year_element.options[year_element.selectedIndex].text;

          this.original_month = this.month;
          this.original_day   = this.day;
          this.original_year  = this.year;

          this.compile();

        } // end if

      } // end if

    }, // end update_calendar()

    update_date_element: function (month,day,year,button_element) {

      if (this.date_element && this.date_element.name && this.date_element.rrv && month && day && year) {

        var month_element = MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);
        var day_element   = MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);
        var year_element  = MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);

        if (month_element && day_element && year_element) {

          for (var i in month_element.options) {

            if ((month_element.options[i]) && (month_element.options[i].value) && (month_element.options[i].value == month)) {

              month_element.options[i].selected = true;
              this.original_month               = month_element.options[i].value;

            } // end if

          } // end for

          for (var i in day_element.options) {

            if ((day_element.options[i]) && (day_element.options[i].text) && (day_element.options[i].text == day)) {

              day_element.options[i].selected = true;
              this.original_day               = day_element.options[i].text;

            } // end if

          } // end for

          for (var i in year_element.options) {

            if ((year_element.options[i]) && (year_element.options[i].text) && (year_element.options[i].text == year)) {

              year_element.options[i].selected = true;
              this.original_year               = year_element.options[i].text;

            } // end if

          } // end for

          if (button_element && MochiKit.DOM.getElement(button_element)) {

            this.toggle(button_element);

          } // end if

        } // end if

      } // end if

    } // end update_date_element()

  }; // end class Basis.bcalendar


  // class.bgallery.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  try {

    if (typeof(Basis) == 'undefined') {

      throw "";

    } // end if

  } catch (e) {

    throw "Basis.bgallery depends on Basis!";

  } // end try
  
  if (typeof(Basis.bgallery) == 'undefined') {

    Basis.bgallery = {};

  } // end if
  
  Basis.bgallery.NAME    = 'Basis.bgallery';
  Basis.bgallery.VERSION = '0.1';
  
  Basis.bgallery.__repr__ = function () {

    return '[' + this.NAME + ' ' + this.VERSION + ']';

  }; // end __repr__()
  
  Basis.bgallery.toString = function () {

    return this.__repr__();

  }; // end toString()

  Basis.bgallery.gallery = function () {

    this.__init__();

  }; // end gallery()

  Basis.bgallery.gallery.prototype = {
  
    __init__: function () {

      this.gallery_element         = "gallery_images";
      this.preview_element         = "preview_pane";
      this.preview_handle_element  = "preview_handle";

      this.slideshow               = {};

      this.gallery_images          = new Object();
      this.image_ids               = new Object();

      this.num_images              = 0;

      this.current_preview         = "";
      this.inext                   = "";
      this.iprev                   = "";
      this.variable_name           = "";
      this.sid                     = "";
      this.self_url                = "";
      this.default_comment         = "Click to Add Comment";
      this.root_path               = "";

      document.twg_upload_completed = function () {
  
        var obj = MochiKit.DOM.getElement("uploader_container");

        if (obj) {

          MochiKit.DOM.removeElement(obj);

        } // end if

        Basis.misc_vars.build_gallery_popup = Basis.popup({"id"           : "build_gallery_popup",
                                                           "window_title" : "Resizing Images",
                                                           "html"         : '<div>Please wait while we process and resize any newly uploaded images.</div>\
                                                                             <div style="text-align: center; padding: 10px;"><img src="images/images/ajax_loading.gif"></div>'
                                                          });

        var as   = new Basis.ajax_scaffold;
        as.alias = "twg_upload_completed";
        as.sid   = "null";
        as.url   = (window.location+"");

        if (as.url.indexOf("?") == -1) {

          as.url = as.url+"?ajax_load=true";

        } else {

          as.url = as.url+"&ajax_load=true";

        } // end if

        as.pvar  = this;

        as.on_success = function (req) {

          var response = req.responseText;

          if (response == "true") {

            var obj = MochiKit.DOM.getElement("build_gallery_popup");
    
            if (obj) {
    
              MochiKit.DOM.removeElement(obj);
    
            } // end if

            Basis.misc_vars.build_gallery_popup = Basis.popup({"id"           : "build_gallery_popup",
                                                               "window_title" : "Resizing Images",
                                                               "html"         : "<div>Resizing completed! Reloading page in 3 seconds...</div>"
                                                              });

            MochiKit.Async.callLater("3",function () {

              window.location = (window.location+"");

            });

          } // end if

        };

        as.post();

      }; // end twg_upload_completed()

    }, // end __init__()

    archive_selected_images: function() {

      var folder_name = prompt("Name of Archive:");

      if (folder_name) {

        var ul         = MochiKit.DOM.getElement(this.gallery_element);
        var to_archive = new Array();

        if (!ul.childNodes || ul.childNodes.length==0) { return false; } // end if
    
        for (var itemi=0; itemi<ul.childNodes.length; itemi++) {
    
          var item = ul.childNodes[itemi];
    
          if (item.nodeName.toUpperCase() == "LI") {
  
            if (MochiKit.DOM.getElement(item.id+"_selected").checked) { 
  
              var hash                      = MochiKit.DOM.getElement(item.id+"_selected").value;
              to_archive[to_archive.length] = hash;
  
            } // end if
  
          } // end if
    
        } // end for

        if (to_archive.length>0) {

          var to_post             = new Object();

          to_post["folder_name"]  = folder_name;
          to_post["files"]        = to_archive;
  
          window.status           = "Archiving selected images...";
  
          var as   = new Basis.ajax_scaffold;
          as.alias = "gallery_archive_selected_images";
          as.sid   = this.sid;
          as.url   = this.self_url;
  
          as.pvar  = this;
  
          as.on_success = function (req) {
  
            window.status   = "Done";
            window.location = (window.location+"");

          };
  
          as.post({"to_post":to_post});  

        } // end if

      } // end if

    }, // end archive_selected_images()

    delete_selected_images: function() {

      var ul        = MochiKit.DOM.getElement(this.gallery_element);
      var to_delete = new Array();

      if (!ul.childNodes || ul.childNodes.length==0) { return false; } // end if
  
      for (var itemi=0; itemi<ul.childNodes.length; itemi++) {
  
        var item = ul.childNodes[itemi];
  
        if (item.nodeName.toUpperCase() == "LI") {

          if (MochiKit.DOM.getElement(item.id+"_selected").checked) { 

            var hash                      = MochiKit.DOM.getElement(item.id+"_selected").value;
            to_archive[to_archive.length] = hash;

          } // end if

        } // end if
  
      } // end for

      if (to_delete.length>0) {

        var to_post        = new Object();
        to_post["files"]   = to_delete;

        window.status = "Deleting selected images...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "gallery_delete_selected_images";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          window.status   = "Done";
          window.location = (window.location+"");

        };

        as.post({"to_post":to_post});  

      } // end if

    }, // end delete_selected_images()

    gallery_order: function () {

      var temp = new Object();
      var ul   = MochiKit.DOM.getElement(this.gallery_element);
      var x    = 0;
  
      if (!ul.childNodes || ul.childNodes.length==0) { return false; } // end if
  
      for (var itemi=0; itemi<ul.childNodes.length; itemi++) {
  
        var item = ul.childNodes[itemi];
  
        if (item.nodeName == "LI") {

          var hash   = item.id.substr(5);
          temp[hash] = item.value;
          x++;

        } // end if
  
      } // end for
 
      this.num_images = x;

      return temp;

    }, // end gallery_order()

    gallery_update_order: function () {

      to_send = new Object();
      x       = 0;

      for (var hash in this.gallery_images) {

        to_send[this.image_ids[hash]]  = x;
        this.gallery_images[hash]      = x;
        x++;

      } // end for

      this.num_images = x;

      return {"to_send":to_send};

    }, // end gallery_update_order()

    nav_buttons: function (url_md5) {

      var iprev   = '';
      var inext   = '';
      var rank    = eval(this.gallery_images[url_md5]);
      var gl_flip = Basis.array_flip(this.gallery_images);

      if (rank > 0)                         { iprev = gl_flip[rank-1]; } // end if
      if (rank < Basis.array_size(gl_flip)) { inext = gl_flip[rank+1]; } // end if

      return {'iprev':iprev, 'inext':inext};

    }, // end nav_buttons()

    ondrop: function (element,dropElt) {

      var gallery_object = eval(this.gallery);

      if (element.className=='celldiv') {

        var source       = { 'obj'       : MochiKit.DOM.getElement(element.id),
                             'innerHTML' : MochiKit.DOM.getElement(element.id).innerHTML,
                             'id'        : element.id,
                             'name'      : element.name,
                             'value'     : element.value
                           };

        var dest         = { 'obj'       : MochiKit.DOM.getElement(dropElt.id),
                             'innerHTML' : MochiKit.DOM.getElement(dropElt.id).innerHTML,
                             'id'        : dropElt.id,
                             'name'      : dropElt.name,
                             'value'     : dropElt.value
                           };

        var temp                      = new Object;
        temp.innerHTML                = source.innerHTML;
        temp.id                       = source.id;
        temp.name                     = source.name;
        temp.value                    = source.value;

        var schecked = false;
        var dchecked = false;

        if (MochiKit.DOM.getElement(source.id+'_selected').checked) { schecked = true; } // end if
        if (MochiKit.DOM.getElement(dest.id+'_selected').checked)   { dchecked = true; } // end if

        source.obj.innerHTML          = dest.innerHTML;
        source.obj.id                 = dest.id;
        source.obj.name               = dest.name;
        if (source.obj.value && dest.value) {
          source.obj.value              = dest.value;
        } // end if

        dest.obj.innerHTML            = temp.innerHTML;
        dest.obj.id                   = temp.id;
        dest.obj.name                 = temp.name;
        if (dest.obj.value && temp.value) {
          dest.obj.value              = temp.value;
        } // end if

        if (schecked) { 

          MochiKit.DOM.getElement(source.id+'_selected').checked = true;

        } // end if

        if (dchecked) { 

          MochiKit.DOM.getElement(dest.id+'_selected').checked = true;

        } // end if

        MochiKit.DOM.getElement(dest.id+'_selected').onchange();
        MochiKit.DOM.getElement(source.id+'_selected').onchange();

        gallery_object.gallery_images = gallery_object.gallery_order();

        var to_send      = gallery_object.gallery_update_order();

        var to_post      = new Object();
        to_post["files"] = to_send.to_send;

        window.status = "Auto-saving gallery rankings...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "gallery_save_image_rankings";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          if (MochiKit.DOM.getElement(this.pvar.preview_element).style.display == '') {
  
            this.pvar.gallery_update_order();
  
            var ibuttons = this.pvar.nav_buttons(this.pvar.current_preview);
            var iprev    = ibuttons.iprev;
            var inext    = ibuttons.inext;
  
            if (iprev) { 
  
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_prev_button').onclick = function () { MochiKit.DOM.getElement('cell_'+iprev+'_img').onclick(); }; 
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_prev_button').value        = 'Back';
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_prev_button').style.border = '';
  
            } else {
  
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_prev_button').value        = ' ';
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_prev_button').style.border = '0px';
  
            } // end if
  
            if (inext) { 
  
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_next_button').onclick = function () { MochiKit.DOM.getElement('cell_'+inext+'_img').onclick(); };
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_next_button').value        = 'Next';
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_next_button').style.border = '';
  
            } else {
  
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_next_button').value        = ' ';
              MochiKit.DOM.getElement('cell_'+this.pvar.current_preview+'_next_button').style.border = '0px';
  
            } // end if
  
          } // end if    
  
          window.status = "Done";

        };

        as.post({"to_post":to_post});  

      } // end if
    
    }, // end ondrop()

    position_preview: function() {

      var screend  = MochiKit.Style.getViewportDimensions();
      var previewd = MochiKit.Style.getElementDimensions(this.preview_element);
    
      var to_pos   = new Object;
      to_pos.x     = ((screend.w / 2)-(previewd.w / 2));
      to_pos.y     = ((screend.h / 2)-(previewd.h / 2));

      var scroll;            
      scroll       = Basis.scroll_coords();

      to_pos.x    += scroll.x;
      to_pos.y    += scroll.y;

      if (this.slideshow.control_element && MochiKit.DOM.getElement(this.slideshow.control_element)) {

        controlsd = MochiKit.Style.getElementDimensions(this.slideshow.control_element);
  
        to_pos.y   -= ((controlsd.h / 2) + (this.slideshow.control_padding / 2));
  
        if (to_pos.y < this.slideshow.control_padding) { to_pos.y = this.slideshow.control_padding; } // end if

      } // end if

      if (to_pos.y < 0) { to_pos.y = 0; } // end if

      MochiKit.Style.setElementPosition(this.preview_element, to_pos);

    }, // end position_preview()

    preview_image: function (url,url_md5,finfo,fdims) {

      var title       = 'Image Preview';
      var link_url    = url;
      var display_url = url;

      if (url.substr((url.length-7)) == '.medium') { 

        display_url = display_url.substr(0,(display_url.length-7));
        link_url    = display_url;
        finfo      += '<p><i>Click image below to enlarge</i></p>';

      } // end if

      var ibuttons    = this.nav_buttons(url_md5);
      var iprev       = ibuttons.iprev;
      var inext       = ibuttons.inext;

      if (!this.slideshow.slideshow_on && !this.slideshow.slideshow_paused) {

        var preview_html = ' \
\
<div class="win32_container_outer"> \
<div class="win32_container_inner"> \
\
  <div class="win32_window_header" id="preview_handle" style="cursor: pointer;"> \
    <span class="win32_window_text_header">'+title+'</span> \
  </div> \
\
  <div class="win32_white_block" style=""> \
    <span class="win32_text_header">'+display_url+'</span> \
    <div class="win32_text_block">'+finfo+'</div> \
  </div> \
\
  <div class="win32_hr"><span style="display:none;">hr</span></div> \
\
  <div class="win32_block"> \
    <div class="win32_text_block"> \
\
      <a href="'+link_url+'" target="_blank"><img border="0" width="'+fdims.w+'" height="'+fdims.h+'" style="border: 1px solid #404040;" src="'+url+'"></a> \
\
    </div> \
  </div> \
\
  <div style="padding: 0px; padding-left: 15px; padding-right: 15px;"> \
    <div class="win32_hr"><span style="display:none;">hr</span></div> \
  </div> \
\
  <div class="win32_block" style="text-align: right;"> \
';

      if (iprev) { preview_html += '        <input id="cell_'+url_md5+'_prev_button" type="button" class="win32_button" style="margin-right: 0px;" value="Back" onClick="MochiKit.DOM.getElement(\'cell_'+iprev+'_img\').onclick();"> '; }
            else { preview_html += '        <input id="cell_'+url_md5+'_prev_button" type="button" class="win32_button" style="border: 0px;" value=" ">'; } // end if
      if (inext) { preview_html += '        <input id="cell_'+url_md5+'_next_button" type="button" class="win32_button" value="Next" onClick="MochiKit.DOM.getElement(\'cell_'+inext+'_img\').onclick();"> ';                    } 
            else { preview_html += '        <input id="cell_'+url_md5+'_next_button" type="button" class="win32_button" style="border: 0px;" value=" ">'; } // end if

      preview_html     += ' \
    <input type="button" class="win32_button" value="Cancel" onClick="toggle_object(\''+this.preview_element+'\')"> \
  </div> \
\
\
</div>   \
</div> \
';

      } else {


        preview_html  = '';
        preview_html += '<img border="0" width="'+fdims.w+'" height="'+fdims.h+'" style="border: 1px solid #404040;" src="'+url+'">';

      } // end if

      MochiKit.DOM.getElement(this.preview_element).style.display = 'none';
      MochiKit.DOM.getElement(this.preview_element).innerHTML     = preview_html;

      if ((MochiKit.DOM.getElement(this.preview_element).style.display == 'none') || (this.slideshow.slideshow_on) || (!this.slideshow.slideshow_on && this.slideshow.slideshow_paused)) {

        this.position_preview();

      } // end if

      if (this.current_preview != url_md5) { 

        MochiKit.DOM.getElement(this.preview_element).style.display = '';

      } else {

        toggle_object(this.preview_element);

      } // end if

      this.current_preview = url_md5;

      if (!this.slideshow.slideshow_on) {

        new MochiKit.DragAndDrop.Draggable(this.preview_element, {

          'revert'       : false,
          'ghosting'     : false,
          'handle'       : this.preview_handle_element,
          'starteffect'  : null,
          'reverteffect' : null,
          'endeffect'    : null

        });

      } // end if

    }, // end preview_image()

    rotate_selected_images: function (angle) {

      var ul        = MochiKit.DOM.getElement(this.gallery_element);
      var to_rotate = new Array();

      if (!ul.childNodes || ul.childNodes.length==0) { return false; } // end if
  
      for (var itemi=0; itemi<ul.childNodes.length; itemi++) {
  
        var item = ul.childNodes[itemi];
  
        if (item.nodeName.toUpperCase() == "LI") {

          if (MochiKit.DOM.getElement(item.id+"_selected").checked) { 

            var hash                    = MochiKit.DOM.getElement(item.id+'_selected').value;
            to_rotate[to_rotate.length] = {"hash":hash,"angle":angle};

          } // end if

        } // end if
  
      } // end for

      if (to_rotate.length>0) {

        var to_post      = new Object();
        to_post["files"] = to_rotate;

        window.status    = "Rotating selected images...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "gallery_rotate_selected_images";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          window.status   = "Done";
          window.location = (window.location+"");

        };

        as.post({"to_post":to_post});  

      } // end if

    }, // end rotate_selected_images()

    set_image_comment: function (comment_element,hash) {

      comment_element = MochiKit.DOM.getElement(comment_element);
      var md5         = comment_element.id.substring(5,37);

      if (comment_element) {

        var to_post = {"hash"    : hash,
                       "comment" : comment_element.value};

        window.status = "Saving image comment...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "gallery_save_image_comment";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          if (comment_element.value) {
  
            MochiKit.DOM.getElement("cell_"+md5+"_comment_static_div").innerHTML = comment_element.value;
  
          } else {
  
            MochiKit.DOM.getElement("cell_"+md5+"_comment_static_div").innerHTML = this.pvar.default_comment;
  
          } // end if
  
          this.pvar.toggle_edit_comment(comment_element);
  
          window.status = "Done";

        };

        as.post({"to_post":to_post});  

      } // end if

    }, // end set_image_comment()

    toggle_edit_comment: function (comment_element) {

      comment_element = MochiKit.DOM.getElement(comment_element);

      if (comment_element) {

        var md5            = comment_element.id.substring(5,37);
        var edit_div       = MochiKit.DOM.getElement('cell_'+md5+'_comment_edit_div');
        var edit_div_input = MochiKit.DOM.getElement('cell_'+md5+'_comment');
        var static_div     = MochiKit.DOM.getElement('cell_'+md5+'_comment_static_div');

        if (edit_div && static_div && edit_div_input) {

          if (edit_div.style.display == '') {

            edit_div.style.display   = 'none';
            static_div.style.display = '';

            edit_div_input.blur();

          } else {

            edit_div.style.display   = '';
            static_div.style.display = 'none';

            edit_div_input.focus();

          } // end if

        } // end if

      } // end if

    }, // end toggle_edit_comment()

    toggle_uploader: function () {

      var obj = MochiKit.DOM.getElement("uploader_container");

      if (!obj) {

        var uploader = new MochiKit.DOM.DIV({"id":"uploader_container","style":"display:none; width:650px; height:340px; position: absolute;"}," ");

        document.body.appendChild(uploader);

        var obj      = MochiKit.DOM.getElement("uploader_container");

        var screend  = MochiKit.Style.getViewportDimensions();
        var previewd = MochiKit.Style.getElementDimensions(obj);

        var to_pos   = new Object;
        to_pos.x     = ((screend.w / 2)-(previewd.w / 2));
        to_pos.y     = ((screend.h / 2)-(previewd.h / 2));

        var scroll;
        scroll       = Basis.scroll_coords();

        to_pos.x    += scroll.x;
        to_pos.y    += scroll.y;

        if (to_pos.y < 0) { to_pos.y = 0; } // end if

        MochiKit.Style.setElementPosition(obj, to_pos);

        obj.style.display = "inline";

        var so = new SWFObject("twg_flash_uploader2.swf", "mymovie", "650", "340", "8", "#ffffff");
        so.addVariable("basis_root",escape(decodeBase64(this.root_path)));
        so.addVariable("PHPSESSID",this.sid);
        so.write("uploader_container");

      } else {

        MochiKit.DOM.removeElement("uploader_container");

      } // end if

    } // end toggle_uploader()

  }; // end class Basis.bgallery.gallery

  Basis.bgallery.slideshow = function () {

    this.__init__();

  }; // end slideshow()
  
  Basis.bgallery.slideshow.prototype = {
  
    __init__: function () {

      this.background_element         = 'slideshow';
      this.control_element            = 'slideshow_controls';
      this.table_element              = 'slideshow_controls_table';
      this.variable_name              = '';
      this.gallery                    = {};
      this.slideshow_on               = false;
      this.slideshow_paused           = false;
      this.slideshow_controls_visible = false;
      this.curr_slide                 = 0;
      this.control_padding            = 20;
      this.timeout                    = false;
      this.speed_val                  = 3000;
      this.speed_text                 = '';

    }, // end __init__()
  
    cancel: function () {
  
      if (this.slideshow_paused) {

        this.toggle_pause('off');

      } // end if

      clearTimeout(this.timeout);

      this.slideshow_on            = false;
      document.body.style.overflow = '';
  
      toggle_object(this.background_element,'off');
      toggle_object(this.control_element,'off');
      toggle_object(eval(this.gallery).preview_element,'off');
  
    }, // end cancel()

    compile: function (x) {

      eval(this.gallery).slideshow = this;
      this.slideshow_on            = true;

      this.speed(this.speed_val);

      if (MochiKit.DOM.getElement(this.background_element).style.display == 'none') {

        document.body.style.overflow = 'hidden';
  
        screend   = MochiKit.Style.getViewportDimensions();
      
        to_pos    = new Object;
        to_pos.x  = 0;
        to_pos.y  = 0;
  
        var scroll;
        scroll    = Basis.scroll_coords();
  
        to_pos.x += scroll.x;
        to_pos.y += scroll.y;
  
        MochiKit.DOM.getElement(this.background_element).style.width  = screend.w;
        MochiKit.DOM.getElement(this.background_element).style.height = screend.h;
        MochiKit.Style.setElementPosition(this.background_element, to_pos);
  
        toggle_object(this.background_element,'on');
  
        this.gl_flip    = Basis.array_flip(eval(this.gallery).gallery_images);
        this.curr_slide = 0;

        if (x) {

          this.curr_slide = x;

        } // end if

        toggle_object(eval(this.gallery).preview_element,'on');
        this.show_slide();
  
      } // end if
  
    }, // end compile()

    on_resize: function() {

      this.size_background_and_controls();
      eval(this.gallery).position_preview();

    }, // end on_resize()
  
    show_slide: function (x) {
  
      if ((this.slideshow_on && !this.slideshow_paused)||(!this.slideshow_on && this.slideshow_paused)) {
  
        if (x || (x==0)) { 

          this.curr_slide = x;

          if (this.curr_slide>=eval(eval(this.gallery).num_images)) { this.curr_slide = 0;                               } // end if
          if (this.curr_slide<0)                                    { this.curr_slide = eval(this.gallery).num_images-1; } // end if

          clearTimeout(this.timeout);

        } // end if

        if (this.curr_slide>=eval(eval(this.gallery).num_images)) { this.curr_slide = 0;                               } // end if
        if (this.curr_slide<0)                                    { this.curr_slide = eval(this.gallery).num_images-1; } // end if

        var comment         = MochiKit.DOM.getElement('cell_'+this.gl_flip[this.curr_slide]+'_comment_static_div').innerHTML;
        var comment_element = MochiKit.DOM.getElement('slideshow_controls_comment');

        if (comment && (comment != eval(this.gallery).default_comment)) {

          comment_element.innerHTML        = '<b>'+comment+'</b>';
          comment_element.style.padding    = '10px';
          comment_element.style.paddingTop = '0px';
          comment_element.style.color      = '#ffffff';

        } else {

          comment_element.innerHTML        = '';
          comment_element.style.padding    = '0px';

        } // end if

        this.size_background_and_controls();
  
        if (this.slideshow_on && !this.slideshow_paused) {

          MochiKit.DOM.getElement('cell_'+this.gl_flip[this.curr_slide]+'_img').onclick();
          this.curr_slide++;
          this.timeout = setTimeout(this.variable_name+'.show_slide();',this.speed_val);

        } else {

          MochiKit.DOM.getElement('cell_'+this.gl_flip[this.curr_slide]+'_img').onclick();

        } // end if
  
      } // end if
  
    }, // end show_slide()

    size_background_and_controls: function () {

      if ((this.slideshow_on && !this.slideshow_paused)||(!this.slideshow_on && this.slideshow_paused)) {

        screend   = MochiKit.Style.getViewportDimensions();
        controlsd = MochiKit.Style.getElementDimensions(this.control_element);
  
        to_pos    = new Object;
        to_pos.x  = 0;
        to_pos.y  = 0;
  
        var scroll;
        scroll    = Basis.scroll_coords();
  
        to_pos.x += scroll.x;
        to_pos.y += scroll.y;
  
        MochiKit.DOM.getElement(this.background_element).style.width  = screend.w;
        MochiKit.DOM.getElement(this.background_element).style.height = screend.h;
  
        MochiKit.Style.setElementPosition(this.background_element, to_pos);
  
        to_pos      = new Object;
        to_pos.x    = (this.control_padding);
        to_pos.y    = ((screend.h)-(controlsd.h)-(this.control_padding));
  
        MochiKit.DOM.getElement(this.control_element).style.display = '';
        MochiKit.DOM.getElement(this.control_element).style.width   = screend.w-(this.control_padding*2);
  
        scroll    = Basis.scroll_coords();
  
        to_pos.x += scroll.x;
        to_pos.y += scroll.y;
  
        MochiKit.Style.setElementPosition(this.control_element, to_pos);

      } // end if

    }, // end size_background_and_controls()

    speed: function (speed) {

      if (speed=='slower') {

        this.speed_val += 1000;

      } else if (speed=='faster') {

        this.speed_val -= 1000;

      } // end if

      if (this.speed_val < 1000) { this.speed_val = 1000; } // end if

      this.speed_text = (this.speed_val/1000)+" second";

      if (this.speed_val > 1000) { this.speed_text += "s"; } // end if

      MochiKit.DOM.getElement('slideshow_controls_speed_text').innerHTML = this.speed_text;

    }, // end speed()
  
    toggle_controls: function () {
  
      if (this.slideshow_controls_visible==false) {
  
        this.slideshow_controls_visible = 'in process';
  
        MochiKit.Visual.appear(this.table_element, {
  
          afterFinish: function () {
  
            this.slideshow_controls_visible = true;
  
          }
  
        });
  
      } else if (this.slideshow_controls_visible==true) {
  
        this.slideshow_controls_visible = 'in process';
  
        MochiKit.Visual.fade(this.table_element, {'to': 0.01,
  
          afterFinish: function () {
  
            this.slideshow_controls_visible = false;
  
          }
  
        });
  
      } // end if
  
    }, // end toggle_controls()

    toggle_pause: function (specific) {
  
      if (this.slideshow_on || (specific=='on')) {
  
        this.slideshow_on     = false;
        this.slideshow_paused = true;
        MochiKit.DOM.getElement(this.control_element+'_pause').value   = 'Unpause';
        MochiKit.DOM.getElement(this.control_element+'_back').disabled = false;
        MochiKit.DOM.getElement(this.control_element+'_next').disabled = false;

        this.curr_slide--;
        clearTimeout(this.timeout);
  
      } else if (!this.slideshow_on || (specific=='off')){
  
        this.slideshow_on     = true;
        this.slideshow_paused = false;
        MochiKit.DOM.getElement(this.control_element+'_pause').value   = 'Pause';
        MochiKit.DOM.getElement(this.control_element+'_back').disabled = true;
        MochiKit.DOM.getElement(this.control_element+'_next').disabled = true;

        this.curr_slide++;
        this.show_slide(this.curr_slide);
  
      } // end if
  
    } // end toggle_pause()
  
  } // end class Basis.bgallery.slideshow


  // class.btree.js
  // Based on DynamicTree 1.5.2 by Cezary Tomczak [www.gosu.pl]
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  Basis.btree = function (id) {

    var self              = this;
    this.id               = id;

    this.tree             = new btreeNode("tree", "", null, new Array(), false, true);
    this.cookie           = new Basis.btree.Cookie();

    this.all_nodes        = {};
    this.opened           = [];
    this.image_objects    = [];

    this.count            = 0;
    this.folders_as_links = false;

    self.child_tag        = "A";

    this.path             = "images/images/";
    this.images           = { "branch"        : "tree-branch.gif",
                              "doc"           : "tree-doc.gif",
                              "folder"        : "tree-folder.gif",
                              "folder_open"   : "tree-folder-open.gif",
                              "leaf"          : "tree-leaf.gif",
                              "leaf_end"      : "tree-leaf-end.gif",
                              "node"          : "tree-node.gif",
                              "node_end"      : "tree-node-end.gif",
                              "node_open"     : "tree-node-open.gif",
                              "node_open_end" : "tree-node-open-end.gif" };
    this.active           = "";
    this.cookie_path      = "";
    this.cookie_domain    = "";

    this.after_each_node  = function (s) { return s; };

    this.index                        = Basis.btree.instances.length;
    Basis.btree.instances[this.index] = this;

    this.compile = function () {

      for (var p in this.images) {

        this.images[p] = this.path + this.images[p];

      } // end for

      for (var p in this.images) {

        this.image_objects.push(new Image());

        this.image_objects.btree_get_last().src = this.images[p];
        this.images[p]                          = this.image_objects.btree_get_last().src;

      } // end for

      this.parse(MochiKit.DOM.getElement(this.id).childNodes, this.tree, 1);

      this.load_state();

      this.update_html();

    }; // end compile()

    this.insert_node = function(id, text, type, object) {

      if (Basis && Basis.misc_vars && Basis.misc_vars["multiple_draggables"] && Basis.misc_vars["multiple_draggables"].current_folder) {

        window.status     = "Creating new folder...";

        AjaxRequest._this = this;
        AjaxRequest.tpath = escape(Basis.misc_vars["multiple_draggables"].current_file_root);

        AjaxRequest.get({

          'url'         : 'ajax/folder_create.php?PHPSESSID='+AjaxRequest.sid,
          'queryString' : 'path='+escape(Basis.misc_vars["multiple_draggables"].current_file_root)+'&file='+encodeBase64("New Folder"),
          'onSuccess'   : function(req) {

                            if (req.responseText.substring(0,4)=="true") {

                              var folder_name = req.responseText.substring(5);

                              MochiKit.Logging.log("Created subfolder "+folder_name);

                              window.location.reload();

/*
                              var _this       = AjaxRequest._this;
                              var folder_name = req.responseText.substring(5);

                              MochiKit.Logging.log("Created subfolder "+folder_name);

                              var new_path    = (decodeBase64(AjaxRequest.tpath)+"/"+folder_name);

                              var md5         = Basis.misc_vars["multiple_draggables"].current_folder.substring(0,32);
                              var active      = _this.all_nodes[md5];
                              var node        = new btreeNode();
                              node.id         = hex_md5(encodeBase64());
                              node.text       = folder_name;
                              node.parentNode = active;
                              node.childNodes = new Array();
                              node.is_doc     = (type == "doc");
                              node.is_folder  = (type == "folder");
                              active.childNodes.push(node);
                              _this.all_nodes[node.id] = node;

                              _this.update_html();

                              var obj = MochiKit.DOM.getElement(md5+"-node-container");

                              if (obj) {

                                MochiKit.DOM.setElementClass(obj,"highlighted");

                              } // end if

                              var obj = MochiKit.DOM.getElement(md5+"-node-click");

                              if (obj && obj.onclick) {

                                var el   = MochiKit.DOM.getElement(md5+"-section");
                          
                                if (el.style.display != "block") {

                                  obj.onclick();

                                } // end if

                              } // end if

                              Basis.misc_vars["multiple_draggables"].folder_hash[node.id] = encodeBase64(new_path);

                              var obj = MochiKit.DOM.getElement(node.id+"-link");

                              if (obj) {

                                obj.onclick = function () {

MochiKit.Logging.log(obj.id.substring(0,32));

                                  show_files(obj.id.substring(0,32)+'-node-container',Basis.misc_vars["multiple_draggables"].folder_hash[obj.id.substring(0,32)]);

                                };

                                obj.ondblclick = function () {

                                  edit_folder_name(obj.id);

                                };

                              } // end if

*/

                            } // end if

                            window.status = "Done";

                          }
        });

      } // end if

    }; // end btree_insert_node()

    this.parse = function (nodes, tree) {

      for (var i = 0; i < nodes.length; i++) {

        if (nodes[i].nodeType == 1) {

          if (!nodes[i].className) { continue; } // end if

          if (!nodes[i].id) {

            nodes[i].id = this.id + "-" + (++this.count);

          } // end if

          var node = new btreeNode();

          node.id = nodes[i].id;

          if (nodes[i].firstChild) {

            if (nodes[i].firstChild.tagName == self.child_tag.toUpperCase()) {

              var a = nodes[i].firstChild;

              if (a.firstChild) {

                node.text = a.firstChild.nodeValue.btree_trim();

              } // end if

              if (a.href) {

                node.href = a.href;

              } // end if

              if (a.title) {

                node.title = a.title;

              } // end if

              if (a.target) {

                node.target = a.target;

              } // end if

              if (a.onclick) {

                node.onclick = a.onclick;

              } // end if

              if (a.ondblclick) {

                node.ondblclick = a.ondblclick;

              } // end if

            } else {

              node.text = nodes[i].firstChild.nodeValue.btree_trim();

            } // end if

          } // end if

          node.parentNode         = tree;
          node.childNodes         = (nodes[i].className == "folder" ? new Array() : null);
          node.is_doc             = (nodes[i].className == "doc");
          node.is_folder          = (nodes[i].className == "folder");
          tree.childNodes.push(node);
          this.all_nodes[node.id] = node;

        } // end if

        if (nodes[i].nodeType == 1 && nodes[i].childNodes) {

          this.parse(nodes[i].childNodes, tree.childNodes.btree_get_last());

        } // end if

      } // end for

    }, // end parse()

    this.node_click = function (id) {

      var el   = MochiKit.DOM.getElement(id+"-section");
      var node = MochiKit.DOM.getElement(id+"-node");
      var icon = MochiKit.DOM.getElement(id+"-icon");

      if (el.style.display == "block") {

        el.style.display = "none";

        if (this.all_nodes[id] && this.all_nodes[id].is_last()) {

          node.src = this.images["node_end"];

        } else {

          node.src = this.images["node"];

        } // end if

        icon.src = this.images["folder"];

        this.opened.btree_remove_by_value(id);

      } else {

        el.style.display = "block";

        if (this.all_nodes[id] && this.all_nodes[id].is_last()) {

          node.src = this.images["node_open_end"];

        } else {

          node.src = this.images["node_open"];

        } // end if

        icon.src = this.images["folder_open"];

        this.opened.push(id);

      } // end if

      /* fix ie bug - images not showing */

      if (node.outerHTML) { node.outerHTML = node.outerHTML; } // end if
      if (icon.outerHTML) { icon.outerHTML = icon.outerHTML; } // end if

      this.save_state();

    }; // end node_click()

    this.to_html = function () {

      var s = "";

      var nodes = this.tree.childNodes;

      for (var i = 0; i < nodes.length; i++) {

        s += nodes[i].to_html();

      } // end for

      return s;

    }; // end to_html()

    this.update_html = function () {

      MochiKit.DOM.getElement(this.id).innerHTML = this.to_html();

      Basis.execute_javascript(this.id);

    }; // end update_html()

    this.load_state = function () {

      var opened = this.cookie.get("btree_"+this.index+"_opened");

      if (opened) {

        this.opened = opened.split("|");
        this.opened.btree_filter(function(id) { return self.all_nodes[id] && self.all_nodes[id].is_folder && self.all_nodes[id].childNodes.length; });

      } // end if

    }; // end load_state()

    this.save_state = function () {

      if (this.opened.length) {

        this.cookie.set("btree_"+this.index+"_opened", this.opened.join("|"), 3600*24*30, this.cookie_path, this.cookie_domain);

      } else {

        this.clear_state();

      } // end if

    }; // end save_state()

    this.clear_state = function() {

      this.cookie.remove("btree_"+this.index+"_opened");

    }; // end clear_state()

    function btreeNode(id, text, parentNode, childNodes, is_doc, is_folder) {

      this.id         = id;
      this.text       = text;
      this.parentNode = parentNode;
      this.childNodes = childNodes;
      this.is_doc     = is_doc;
      this.is_folder  = is_folder;

      this.href       = "";
      this.title      = "";
      this.target     = "";

      this.is_last = function () {

        if (this.parentNode) {

          return (this.parentNode.childNodes.btree_get_last().id == this.id);

        } // end if

        throw "Basis.btree.Node.is_last() failed, this function cannot be called for the root element.";

      }; // end is_last()

      this.to_html = function () {

        var s = '<div class="?" id="?">'.btree_format((this.is_folder ? "folder" : "doc"), this.id);

        if (this.is_folder) {

          var node_icon;

          if (this.childNodes.length) {

            node_icon = (self.opened.btree_contains(this.id) ? (this.is_last() ? self.images["node_open_end"] : self.images["node_open"]) : (this.is_last() ? self.images["node_end"] : self.images["node"]));

          } else {

            node_icon = (this.is_last() ? self.images["leaf_end"] : self.images["leaf"]);

          } // end if

          var icon = ((self.opened.btree_contains(this.id) && this.childNodes.length) ? self.images["folder_open"] : self.images["folder"]);

          if (this.childNodes.length) {

            s += '<a href="javascript:void(0)" id="?-node-click" onclick="?.node_click(this.id.substring(0,(this.id.length - ((\'-node-click\').length))));">'.btree_format(this.id, self.id);

          } // end if

          s += '<img id="?-node" src="?" width="18" height="18" alt="" />'.btree_format(this.id, node_icon);

          if (this.childNodes.length) {

            s += '</a>';

          } // end if

          s += '<span id="?-node-container">'.btree_format(this.id);

          s += '<img id="?-icon" src="?" width="18" height="18" alt="" />'.btree_format(this.id, icon);

          if (self.folders_as_links) {

            s += ('<'+self.child_tag+' style="cursor: pointer;" id="?-link" href="?"??>?</'+self.child_tag+'>').btree_format(this.id, this.href, (this.title ? ' title="?"'.btree_format(this.title) : ""), (this.target ? ' target="?"'.btree_format(this.target) : ""), this.text);

            if (this.onclick) {

              s += '<script> var obj = MochiKit.DOM.getElement("'+this.id+'-link"); if (obj) { obj.onclick = '+this.onclick+'; } </script>';

            } // end if

            if (this.ondblclick) {

              s += '<script> var obj = MochiKit.DOM.getElement("'+this.id+'-link"); if (obj) { obj.ondblclick = '+this.ondblclick+'; } </script>';

            } // end if

          } else {

            s += this.text;

          } // end if

          s += '</span>';

          if (this.childNodes.length) {

            s += '<div class="section?" id="?-section"'.btree_format((this.is_last() ? " last" : ""), this.id);

            if (self.opened.btree_contains(this.id)) {

              s += '  style="display: block;"';

            } // end if

            s += '>';

            for (var i = 0; i < this.childNodes.length; i++) {

              s += this.childNodes[i].to_html();

            } // end for

            s += '</div>';

          }  // end if

        }  // end if

        if (this.is_doc) {

          s += '<img src="?" width="18" height="18" alt="" /><img src="?" width="18" height="18" alt="" />'.btree_format((this.is_last() ? self.images["leaf_end"] : self.images["leaf"]), self.images["doc"]);
          s += ('<'+self.child_tag+' href="?"??>?</'+self.child_tag+'>').btree_format(this.href, (this.title ? ' title="?"'.btree_format(this.title) : ""), (this.target ? ' target="?"'.btree_format(this.target) : ""), this.text);

        } // end if

        s += '</div>';

        s  = self.after_each_node(s,this);

        return s;

      }; // end to_html()

    } // end Basis.btree.btreeNode()

  }; // end class Basis.btree

  Basis.btree.instances = [];

  Basis.btree.Cookie = function () {

    this.__init__();

  } // end Basis.btree.Cookie()

  Basis.btree.Cookie.prototype = {

    __init__: function () {

    }, // end __init__()

    get: function (name) {

      var cookies = document.cookie.split(";");

      for (var i = 0; i < cookies.length; ++i) {

        var a = cookies[i].split("=");

        if (a.length == 2) {

          a[0] = a[0].btree_trim();
          a[1] = a[1].btree_trim();

          if (a[0] == name) {

            return unescape(a[1]);

          } // end if

        } // end if

      } // end for

      return "";

    }, // end get()

    remove: function (name) {

      document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";

    }, // end remove()

    set: function (name, value, seconds, path, domain, secure) {

      var cookie = (name + "=" + escape(value));

      if (seconds) {

        var date = new Date(new Date().getTime()+seconds*1000);
        cookie += ("; expires="+date.toGMTString());

      } // end if

      cookie += (path    ? "; path="+path : "");
      cookie += (domain  ? "; domain="+domain : "");
      cookie += (secure  ? "; secure" : "");

      document.cookie = cookie;

    } // end set()

  }; // end class Basis.btree.Cookie

  if (!Array.prototype.btree_contains) {

    Array.prototype.btree_contains = function(s) {

      for (var i = 0; i < this.length; ++i) {

        if (this[i] === s) { return true; } // end if

      } // end for

      return false;

    }; // end btree_contains()

  } // end if

  if (!Array.prototype.btree_remove_by_value) {

    Array.prototype.btree_remove_by_value = function(value) {

      var i, indexes = [];

      for (i = 0; i < this.length; ++i) {

        if (this[i] === value) { indexes.push(i); } // end if

      } // end for

      for (i = indexes.length - 1; i >= 0; --i) {

        this.splice(indexes[i], 1);

      } // end for

    }; // end btree_remove_by_value()

  } // end if

  if (!Array.prototype.btree_filter) {

    Array.prototype.btree_filter = function(func) {

      var i, indexes = [];

      for (i = 0; i < this.length; ++i) {

        if (!func(this[i])) { indexes.push(i); } // end if

      } // end for

      for (i = indexes.length - 1; i >= 0; --i) {

        this.splice(indexes[i], 1);

      } // end for

    }; // end btree_filter()

  } // end if

  if (!Array.prototype.btree_get_last) {

    Array.prototype.btree_get_last = function() {

      return this[this.length-1];

    }; // end btree_get_last()

  } // end if

  if (!String.prototype.btree_trim) {

    String.prototype.btree_trim = function() {

      return this.replace(/^\s*|\s*$/g, "");

    }; // end btree_trim()

  } // end if

  String.prototype.btree_format = function() {

    if (!arguments.length) {

      throw "String.btree_format() failed, no arguments passed, this = "+this;

    } // end if

    var tokens = this.split("?");

    if (arguments.length != (tokens.length - 1)) {

      throw "String.btree_format() failed, tokens != arguments, this = "+this;

    } // end if

    var s = tokens[0];

    for (var i = 0; i < arguments.length; ++i) {

      s += (arguments[i] + tokens[i + 1]);

    } // end for

    return s;

  }; // end btree_format()


  // class.multipleDraggables.js
  // Copyright (c) 2005,2007 Kevin Kaiser / Data Resolutions

  multipleDraggables = function () {

    this.__init__();

  } // end multipleDraggables()

  multipleDraggables.instances = [];

  multipleDraggables.prototype = {

    __init__: function () {

      this.drags                  = new Object();
      this.selected               = new Object();

      this.mousedown              = false;
      this.start_drag             = false;
      this.dragging               = false;
      this.drag_and_drop          = true;
      this.force_single_selection = false;
      this.disable_clickoff       = false;

      this.selected_class         = "selected";
      this.selectable_class       = "selectable";

      this.append_to              = null;
      this.document_onmouseup     = null;

      this.index                               = multipleDraggables.instances.length;
      multipleDraggables.instances[this.index] = this;

      this.condition_to_start = function () {

        return true;

      } // end condition_to_start()

    }, // end __init__()

    add_draggable: function (element) {

      var element = Basis.get_element(element);

      if (element && element.id) {

        if (element && !this.drags[element.id]) {

          element.drag_events       = new Object();
          element.multipleDraggable = this;

          MochiKit.DOM.addElementClass(element, this.selectable_class);

          this.drags[element.id] = true;

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(element, "onmousedown", MochiKit.Base.bind(function (e) {

            this.multipleDraggable.mousedown = true;

            if ((!document.ctrl_down && (Basis.array_length(this.multipleDraggable.selected) < 2)) || this.multipleDraggable.force_single_selection) {

              this.multipleDraggable.clear_selected();

            } // end if

            if (!this.multipleDraggable.selected[this.id] || (document.ctrl_down)) {

              this.multipleDraggable.toggle_select(this);

            } // end if

            return false;

          }, element));

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(element, "onmouseup", MochiKit.Base.bind(function (e) {

            if (!document.ctrl_down || this.multipleDraggable.force_single_selection) {

              this.multipleDraggable.clear_selected();
              this.multipleDraggable.toggle_select(this);

            } // end if

          }, element));

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(document, "onkeydown", function (e) {

            if (e.key().string == "KEY_CTRL") {

              document.ctrl_down = true;

            } // end if

          });

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(document, "onkeyup", function (e) {

            if (e.key().string == "KEY_CTRL") {

              document.ctrl_down = false;

            } // end if

          });

          if (!this.document_onmouseup) {

            this.document_onmouseup = MochiKit.Signal.connect(document, "onmouseup", MochiKit.Base.bind(function (e) {

              this.mousedown  = false;
              this.start_drag = false;
              this.dragging   = false;

              if (MochiKit.DOM.getElement("dragger")) {

                MochiKit.DOM.removeElement("dragger");

                MochiKit.DragAndDrop.Draggables.drags = [];

              } // end if

            }, this));

          } // end if

          if (!this.disable_clickoff) {

            element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(document, "onmousedown", MochiKit.Base.bind(function (e) {

              if (!document.ctrl_down && !this.mousedown) {

                this.clear_selected();

              } // end if

              return false;

            }, this));

          } // end if

          if (this.drag_and_drop) {

            element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(element, "onmousemove", MochiKit.Base.bind(function (e) {

              if (this.multipleDraggable.mousedown & !this.multipleDraggable.dragging && this.multipleDraggable.condition_to_start()) {

                this.multipleDraggable.start_drag = true;

              } // end if

              if (this.multipleDraggable.start_drag) {

                this.multipleDraggable.start_drag = false;
                this.multipleDraggable.dragging   = true;

                if (!document.ctrl_down || this.multipleDraggable.force_single_selection) {

                  if (!this.multipleDraggable.selected[this.id]) {

                    this.multipleDraggable.clear_selected();

                  } // end if

                } // end if

                if (!this.multipleDraggable.selected[this.id]) {

                  this.multipleDraggable.toggle_select(this.id);

                } // end if

                if (!MochiKit.DOM.getElement("dragger")) {

                  var dragger = new MochiKit.DOM.DIV({"id":"dragger","style":"cursor: move; width:40px; height:40px; background-color: #F5F5F5; border: 1px dashed #808080; position: absolute;"}," ");

                  if (this.multipleDraggable.append_to) {

                    if (MochiKit.DOM.getElement(this.multipleDraggable.append_to)) {

                      MochiKit.DOM.getElement(this.multipleDraggable.append_to).appendChild(dragger);

                    } // end if

                  } else {

                    document.body.appendChild(dragger);

                  } // end if

                  new MochiKit.DragAndDrop.Draggable("dragger");

                  MochiKit.DOM.getElement("dragger")._selected = MochiKit.Base.serializeJSON(this.multipleDraggable.selected);

                } // end if

                var pos     = MochiKit.Position.cumulativeOffset(MochiKit.DOM.getElement("dragger"));
                var dim     = MochiKit.Style.getElementDimensions("dragger");
                var scroll  = Basis.scroll_coords();

                var clientX = pos.x + (dim.w/2);
                var clientY = pos.y + (dim.h/2) - scroll.y;

                if (document.createEventObject) {

                  var event     = document.createEventObject();

                  event.clientX = clientX;
                  event.clientY = clientY;
                  event.button  = 1;

                  MochiKit.DOM.getElement("dragger").fireEvent("onmousedown",event);

                  MochiKit.DOM.getElement("dragger").focus();

                } else if (document.createEvent) {

                  var event = document.createEvent("MouseEvents");

                  event.initMouseEvent("mousedown", 1, 1, window, 1, 0, 0, clientX, clientY, 0, 0, 0, 0, 0, MochiKit.DOM.getElement("dragger"));

                  MochiKit.Signal.signal("dragger","onmousedown",event);

                  MochiKit.DOM.getElement("dragger").focus();

                } // end if

              } // end if

            }, element));

          } // end if

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(element, "onmouseover", MochiKit.Base.bind(function (e) {

            if (this.multipleDraggable && !this.multipleDraggable.selected[this.id]) {

              this.style.backgroundColor = "#E8EDF9";

            } // end if

          }, element));

          element.drag_events[Basis.array_length(element.drag_events)] = MochiKit.Signal.connect(element, "onmouseout", MochiKit.Base.bind(function (e) {

            this.style.backgroundColor = "";

          }, element));

        } // end if

      } // end if

    }, // end add_draggable()

    clear_selected: function () {

      for (var i in this.selected) {

        this.toggle_select(i);
        delete this.selected[i];

      } // end for

    }, // end clear_selected()

    on_deselect: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        MochiKit.Style.setStyle(element.id,{'background-color': ''});
        MochiKit.DOM.removeElementClass(element.id, this.selected_class);
        MochiKit.DOM.addElementClass(element.id,this.selectable_class);

      } // end if

    }, // end on_deselect()

    on_select: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        MochiKit.Style.setStyle(element.id,{'background-color': ''});
        MochiKit.DOM.removeElementClass(element.id, this.selectable_class);
        MochiKit.DOM.addElementClass(element.id, this.selected_class);

      } // end if

    }, // end on_select()

    remove_draggable: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element && this.drags[element.id]) {

        if (element.drag_events) {

          for (var i in element.drag_events) {

            MochiKit.Signal.disconnect(element.drag_events[i]);

          } // end for

        } // end if

        delete this.drags[element.id];

      } // end if

    }, // end remove_draggable()

    select_all: function () {

      this.clear_selected();

      for (var i in this.drags) {

        var obj = MochiKit.DOM.getElement(i);

        if (obj) {

          this.toggle_select(i);

        } // end if

      } // end for

    }, // end select_all()

    toggle_select: function (element) {

      var element = MochiKit.DOM.getElement(element);

      if (element) {

        if (!this.selected[element.id]) {

          this.selected[element.id] = true;

          this.on_select(element);

        } else {

          delete this.selected[element.id];

          this.on_deselect(element);

        } // end if

      } // end if

    } // end toggle_select()

  }; // end class multipleDraggables
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 */
function core_md5(x, len)
{
  /* append padding */
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
  var bkey = str2binl(key);
  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

  var ipad = Array(16), opad = Array(16);
  for(var i = 0; i < 16; i++)
  {
    ipad[i] = bkey[i] ^ 0x36363636;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  }

  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 */
function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str = "";
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < bin.length * 32; i += chrsz)
    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i += 3)
  {
    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j = 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
/*
 * DO NOT REMOVE THIS NOTICE
 *
 * PROJECT:   mygosuMenu
 * VERSION:   1.1.6
 * COPYRIGHT: (c) 2003,2004 Cezary Tomczak
 * LINK:      http://gosu.pl/dhtml/mygosumenu.html
 * LICENSE:   BSD (revised)
 */

/*
  Todo, bugs to fix:
  - delay.show = 400 , delay.hide = 400
    go Product Three -> Live Demo -> Test Drive -> Test Three , go fast to Product Four.
    Result: 2 elements highlighted in the same section
  - delay.show = 0 , delay.hide = 400
    go Product Three -> Live Demo , section out , section over, seciont out.
    Result: Live Demo is not highlighted
  - active className changing, unnecessary blink
  - opera: hideSection() exceptions are throwed
*/

function DropDownMenuX(id) {

    /* Type of the menu: "horizontal" or "vertical" */
    this.type = "horizontal";

    /* Delay (in miliseconds >= 0): show-hide menu
     * Hide must be > 0 */
    this.delay = {
        "show": 0,
        "hide": 400
    }
    /* Change the default position of sub-menu by Y pixels from top and X pixels from left
     * Negative values are allowed */
    this.position = {
        "level1": { "top": 0, "left": 0},
        "levelX": { "top": 0, "left": 0}
    }

    /* fix ie selectbox bug ? */
    this.fixIeSelectBoxBug = true;

    /* Z-index property for .section */
    this.zIndex = {
        "visible": 500,
        "hidden": -1
    };

    // Browser detection
    this.browser = {
        "ie": Boolean(document.body.currentStyle),
        "ie5": (navigator.appVersion.indexOf("MSIE 5.5") != -1 || navigator.appVersion.indexOf("MSIE 5.0") != -1),
        "ie6": (navigator.appVersion.indexOf("MSIE 6.0") != -1)
    };
    
    if (!this.browser.ie) {
        this.browser.ie5 = false;
        this.browser.ie6 = false;
    }

    /* Initialize the menu */
    this.init = function() {
        if (!document.getElementById(this.id)) { return alert("DropDownMenuX.init() failed. Element '"+ this.id +"' does not exist."); }
        if (this.type != "horizontal" && this.type != "vertical") { return alert("DropDownMenuX.init() failed. Unknown menu type: '"+this.type+"'"); }
        if (this.browser.ie && this.browser.ie5) { fixWrap(); }
        fixSections();
        parse(document.getElementById(this.id).childNodes, this.tree, this.id);
    }

    /* Search for .section elements and set width for them */
    function fixSections() {
        var arr = document.getElementById(self.id).getElementsByTagName("div");
        var sections = new Array();
        var widths = new Array();
        
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].className == "section") {
                sections.push(arr[i]);
            }
        }
        for (var i = 0; i < sections.length; i++) {
            widths.push(getMaxWidth(sections[i].childNodes));
        }
        for (var i = 0; i < sections.length; i++) {
            sections[i].style.width = (widths[i]) + "px";
        }
        if (self.browser.ie) {
            for (var i = 0; i < sections.length; i++) {
                setMaxWidth(sections[i].childNodes, widths[i]);
            }
        }
    }

    function fixWrap() {
        var elements = document.getElementById(self.id).getElementsByTagName("a");
        for (var i = 0; i < elements.length; i++) {
            if (/item2/.test(elements[i].className)) {
                elements[i].innerHTML = '<div nowrap="nowrap">'+elements[i].innerHTML+'</div>';
            }
        }
    }

    /* Search for an element with highest width among given nodes, return that width */
    function getMaxWidth(nodes) {
        var maxWidth = 0;
        for (var i = 0; i < nodes.length; i++) {
            if (nodes[i].nodeType != 1 || /section/.test(nodes[i].className)) { continue; }
            if (nodes[i].offsetWidth > maxWidth) { maxWidth = nodes[i].offsetWidth; }
        }
        return maxWidth;
    }

    /* Set width for item2 elements */
    function setMaxWidth(nodes, maxWidth) {
        for (var i = 0; i < nodes.length; i++) {
            if (nodes[i].nodeType == 1 && /item2/.test(nodes[i].className) && nodes[i].currentStyle) {
                if (self.browser.ie5) {
                    nodes[i].style.width = (maxWidth) + "px";
                } else {
                    nodes[i].style.width = (maxWidth - parseInt(nodes[i].currentStyle.paddingLeft) - parseInt(nodes[i].currentStyle.paddingRight)) + "px";
                }
            }
        }
    }

    /* Parse nodes, create events, position elements */
    function parse(nodes, tree, id) {
        for (var i = 0; i < nodes.length; i++) {
            if (1 != nodes[i].nodeType) {
                continue;
            }
            switch (true) {
                // .item1
                case /\bitem1\b/.test(nodes[i].className):
                    nodes[i].id = id + "-" + tree.length;
                    tree.push(new Array());
                    nodes[i].onmouseover = itemOver;
                    nodes[i].onmouseout = itemOut;
                    break;
                // .item2
                case /\bitem2\b/.test(nodes[i].className):
                    nodes[i].id = id + "-" + tree.length;
                    tree.push(new Array());
                    nodes[i].onmouseover = itemOver;
                    nodes[i].onmouseout = itemOut;
                    break;
                // .section
                case /\bsection\b/.test(nodes[i].className):
                    // id, events
                    nodes[i].id = id + "-" + (tree.length - 1) + "-section";
                    nodes[i].onmouseover = sectionOver;
                    nodes[i].onmouseout = sectionOut;
                    // position
                    var box1 = document.getElementById(id + "-" + (tree.length - 1));
                    var box2 = document.getElementById(nodes[i].id);
                    var el = new Element(box1.id);
                    if (1 == el.level) {
                        if ("horizontal" == self.type) {
                            box2.style.top = box1.offsetTop + box1.offsetHeight + self.position.level1.top + "px";
                            if (self.browser.ie5) {
                                box2.style.left = self.position.level1.left + "px";
                            } else {
                                box2.style.left = box1.offsetLeft + self.position.level1.left + "px";
                            }
                        } else if ("vertical" == self.type) {
                            box2.style.top = box1.offsetTop + self.position.level1.top + "px";
                            if (self.browser.ie5) {
                                box2.style.left = box1.offsetWidth + self.position.level1.left + "px";
                            } else {
                                box2.style.left = box1.offsetLeft + box1.offsetWidth + self.position.level1.left + "px";
                            }
                        }
                    } else {
                        box2.style.top  = box1.offsetTop + self.position.levelX.top + "px";
                        box2.style.left = box1.offsetLeft + box1.offsetWidth + self.position.levelX.left + "px";
                    }

                    // sections, sectionsShowCnt, sectionsHideCnt
                    self.sections.push(nodes[i].id);
                    self.sectionsShowCnt.push(0);
                    self.sectionsHideCnt.push(0);
                    if (self.fixIeSelectBoxBug && self.browser.ie6) {
                        nodes[i].innerHTML = nodes[i].innerHTML + '<iframe id="'+nodes[i].id+'-iframe" src="javascript:false;" scrolling="no" frameborder="0" style="position: absolute; top: 0px; left: 0px; display: none; filter:alpha(opacity=0);"></iframe>';
                    }
                    break;
            }
            if (nodes[i].childNodes) {
                if (/\bsection\b/.test(nodes[i].className)) {
                    parse(nodes[i].childNodes, tree[tree.length - 1], id + "-" + (tree.length - 1));
                } else {
                    parse(nodes[i].childNodes, tree, id);
                }
            }
        }
    }

    /* event, item:onmouseover */
    function itemOver() {
        //debug("itemOver("+this.id+") , visible = " + self.visible);
        self.itemShowCnt++;
        var id_section = this.id + "-section";
        if (self.visible.length) {
            var el = new Element(self.visible.getLast());
            el = document.getElementById(el.getParent().id);
            if (/item\d-active/.test(el.className)) {
                el.className = el.className.replace(/(item\d)-active/, "$1");
            }
        }
        if (self.sections.contains(id_section)) {
            clearTimers();
            self.sectionsHideCnt[self.sections.indexOf(id_section)]++;
            var cnt = self.sectionsShowCnt[self.sections.indexOf(id_section)];
            var timerId = setTimeout(function(a, b) { return function() { self.showSection(a, b); } } (id_section, cnt), self.delay.show);
            self.timers.push(timerId);
        } else {
            if (self.visible.length) {
                clearTimers();
                var timerId = setTimeout(function(a, b) { return function() { self.showItem(a, b); } } (this.id, self.itemShowCnt), self.delay.show);
                self.timers.push(timerId);
            }
        }
    }

    /* event, item:onmouseout */
    function itemOut() {
        //debug("itemOut("+this.id+") , visible = " + self.visible);
        self.itemShowCnt++;
        var id_section = this.id + "-section";
        if (self.sections.contains(id_section)) {
            self.sectionsShowCnt[self.sections.indexOf(id_section)]++;
            if (self.visible.contains(id_section)) {
                var cnt = self.sectionsHideCnt[self.sections.indexOf(id_section)];
                var timerId = setTimeout(function(a, b) { return function() { self.hideSection(a, b); } }(id_section, cnt), self.delay.hide);
                self.timers.push(timerId);
            }
        }
    }

    /* event, section:onmouseover */
    function sectionOver() {
        //debug("sectionOver("+this.id+") , visible = " + self.visible);
        self.sectionsHideCnt[self.sections.indexOf(this.id)]++;
        var el = new Element(this.id);
        var parent = document.getElementById(el.getParent().id);
        if (!/item\d-active/.test(parent.className)) {
            parent.className = parent.className.replace(/(item\d)/, "$1-active");
        }
    }

    /* event, section:onmouseout */
    function sectionOut() {
        //debug("sectionOut("+this.id+") , visible = " + self.visible);
        self.sectionsShowCnt[self.sections.indexOf(this.id)]++;
        var cnt = self.sectionsHideCnt[self.sections.indexOf(this.id)];
        var timerId = setTimeout(function(a, b) { return function() { self.hideSection(a, b); } }(this.id, cnt), self.delay.hide);
        self.timers.push(timerId);
    }

    /* Show section (1 argument passed)
     * Try to show section (2 arguments passed) - check cnt with sectionShowCnt */
    this.showSection = function(id, cnt) {
        if (typeof cnt != "undefined") {
            if (cnt != this.sectionsShowCnt[this.sections.indexOf(id)]) { return; }
        }
        //debug("showSection("+id+", "+cnt+") , visible = " + this.visible);
        this.sectionsShowCnt[this.sections.indexOf(id)]++;
        if (this.visible.length) {
            if (id == this.visible.getLast()) { return; }
            var el = new Element(id);
            var parents = el.getParentSections();
            //debug("getParentSections("+el.id+") = " + parents);
            for (var i = this.visible.length - 1; i >= 0; i--) {
                if (parents.contains(this.visible[i])) {
                    break;
                } else {
                    this.hideSection(this.visible[i]);
                }
            }
        }
        var el = new Element(id);
        var parent = document.getElementById(el.getParent().id);
        if (!/item\d-active/.test(parent.className)) {
            parent.className = parent.className.replace(/(item\d)/, "$1-active");
        }
        if (document.all) { document.getElementById(id).style.display = "block"; }
        document.getElementById(id).style.visibility = "visible";
        document.getElementById(id).style.zIndex = this.zIndex.visible;
        if (this.fixIeSelectBoxBug && this.browser.ie6) {
            var div = document.getElementById(id);
            var iframe = document.getElementById(id+"-iframe");
            iframe.style.width = div.offsetWidth + parseInt(div.currentStyle.borderLeftWidth) + parseInt(div.currentStyle.borderRightWidth);
            iframe.style.height = div.offsetHeight + parseInt(div.currentStyle.borderTopWidth) + parseInt(div.currentStyle.borderBottomWidth);
            iframe.style.top = -parseInt(div.currentStyle.borderTopWidth);
            iframe.style.left = -parseInt(div.currentStyle.borderLeftWidth);
            iframe.style.zIndex = div.style.zIndex - 1;
            iframe.style.display = "block";
        }
        this.visible.push(id);
    }

    /* Emulating an empty non-existent section, we have to hide elements, works like showSection() */
    this.showItem = function(id, cnt) {
        if (typeof cnt != "undefined") {
            if (cnt != this.itemShowCnt) { return; }
        }
        this.itemShowCnt++;
        if (this.visible.length) {
            var el = new Element(id + "-section");
            var parents = el.getParentSections();
            //debug("showItem() getParentSections("+el.id+") = " + parents);
            for (var i = this.visible.length - 1; i >= 0; i--) {
                if (parents.contains(this.visible[i])) {
                    break;
                } else {
                    this.hideSection(this.visible[i]);
                }
            }
        }
    }

    /* Hide section (1 argument passed)
     * Try to hide section (2 arguments passed) - check cnt with sectionHideCnt */
    this.hideSection = function(id, cnt) {
        if (typeof cnt != "undefined") {
            if (cnt != this.sectionsHideCnt[this.sections.indexOf(id)]) { return; }
            if (id == this.visible.getLast()) {
                //debug("hideSectionAll("+id+", "+cnt+") , visible = " + this.visible);
                for (var i = this.visible.length - 1; i >= 0; i--) {
                    this.hideSection(this.visible[i]);
                }
                return;
            }
        }
        //debug("hideSection("+id+", "+cnt+") , visible = " + this.visible);
        var el = new Element(id);
        var parent = document.getElementById(el.getParent().id);
        if (/item\d-active/.test(parent.className)) {
            parent.className = parent.className.replace(/(item\d)-active/, "$1");
        }
        document.getElementById(id).style.zIndex = this.zIndex.hidden;
        document.getElementById(id).style.visibility = "hidden";
        if (document.all) { document.getElementById(id).style.display = "none"; }
        if (this.fixIeSelectBoxBug && this.browser.ie6) {
            var iframe = document.getElementById(id+"-iframe");
            iframe.style.display = "none";
        }
        if (this.visible.contains(id)) {
            if (id == this.visible.getLast()) {
                this.visible.pop();
            } else {
                //throw "DropDownMenuX.hideSection('"+id+"', "+cnt+") failed, trying to hide a section that is not the deepest visible section";
                return;
            }
        } else {
            //throw "DropDownMenuX.hideSection('"+id+"', "+cnt+") failed, cannot hide element that is not visible";
            return;
        }
        this.sectionsHideCnt[this.sections.indexOf(id)]++;
    }

    /* Element (.section, .item2 etc) */
    function Element(id) {
        
        this.menu = self;
        this.id = id;

        /* Get Level of given id
         * Examples: menu-1 (1 level), menu-1-4 (2 level) */
        this.getLevel = function() {
            var s = this.id.substr(this.menu.id.length);
            return s.substrCount("-");
        }

        /* Get parent Element */
        this.getParent = function() {
            var s = this.id.substr(this.menu.id.length);
            var a = s.split("-");
            a.pop();
            return new Element(this.menu.id + a.join("-"));
        }

        /* Check whether an element has a parent element */
        this.hasParent = function() {
            var s = this.id.substr(this.menu.id.length);
            var a = s.split("-");
            return a.length > 2;
        }

        /* Check whether an element has a sub-section */
        this.hasChilds = function() {
            return Boolean(document.getElementById(this.id + "-section"));
        }

        /* Get parent section elements for current section */
        this.getParentSections = function() {
            var s = this.id.substr(this.menu.id.length);
            s = s.substr(0, s.length - "-section".length);
            var a = s.split("-");
            a.shift();
            a.pop();
            var s = this.menu.id;
            var parents = [];
            for (var i = 0; i < a.length; i++) {
                s += ("-" + a[i]);
                parents.push(s + "-section");
            }
            return parents;
        }
        
        this.level = this.getLevel();
    }

    /* Clear all timers set with setTimeout() */
    function clearTimers() {
        for (var i = self.timers.length - 1; i >= 0; i--) {
            clearTimeout(self.timers[i]);
            self.timers.pop();
        }
    }

    var self = this;
    this.id = id; /* menu id */
    this.tree = []; /* tree structure of menu */
    this.sections = []; /* all sections, required for timeout */
    this.sectionsShowCnt = [];
    this.sectionsHideCnt = [];
    this.itemShowCnt = 0;
    this.timers = []; // timeout ids
    this.visible = []; /* visible section, ex. Array("menu-0-section", ..) , succession is important: top to bottom */
}

/* Finds the index of the first occurence of item in the array, or -1 if not found */
if (typeof Array.prototype.indexOf == "undefined") {
    Array.prototype.indexOf = function(item) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] === item) {
                return i;
            }
        }
        return -1;
    }
}

/* Check whether array contains given string */
if (typeof Array.prototype.contains == "undefined") {
    Array.prototype.contains = function(s) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] === s) {
                return true;
            }
        }
        return false;
    }
}

/* Counts the number of substring occurrences */
if (typeof String.prototype.substrCount == "undefined") {
    String.prototype.substrCount = function(s) {
        return this.split(s).length - 1;
    }
}

/* Get the last element from the array */
if (typeof Array.prototype.getLast == "undefined") {
    Array.prototype.getLast = function() {
        return this[this.length-1];
    }
}
if(typeof(dojo)!='undefined'){dojo.provide("MochiKit.Base");}
if(typeof(MochiKit)=='undefined'){MochiKit={};}
if(typeof(MochiKit.Base)=='undefined'){MochiKit.Base={};}
if(typeof(MochiKit.__export__)=="undefined"){MochiKit.__export__=(MochiKit.__compat__||(typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined'));}
MochiKit.Base.VERSION="1.4";MochiKit.Base.NAME="MochiKit.Base";MochiKit.Base.update=function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){self[k]=o[k];}}}
return self;};MochiKit.Base.update(MochiKit.Base,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]";},toString:function(){return this.__repr__();},camelize:function(selector){var arr=selector.split('-');var cc=arr[0];for(var i=1;i<arr.length;i++){cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);}
return cc;},counter:function(n){if(arguments.length===0){n=1;}
return function(){return n++;};},clone:function(obj){var me=arguments.callee;if(arguments.length==1){me.prototype=obj;return new me();}},_deps:function(module,deps){if(!(module in MochiKit)){MochiKit[module]={};}
if(typeof(dojo)!='undefined'){dojo.provide('MochiKit.'+module);}
for(var i=0;i<deps.length;i++){if(typeof(dojo)!='undefined'){dojo.require('MochiKit.'+deps[i]);}
if(typeof(JSAN)!='undefined'){JSAN.use('MochiKit.'+deps[i],[]);}
if(!(deps[i]in MochiKit)){throw'MochiKit.'+module+' depends on MochiKit.'+deps[i]+'!'}}},_flattenArray:function(res,lst){for(var i=0;i<lst.length;i++){var o=lst[i];if(o instanceof Array){arguments.callee(res,o);}else{res.push(o);}}
return res;},flattenArray:function(lst){return MochiKit.Base._flattenArray([],lst);},flattenArguments:function(lst){var res=[];var m=MochiKit.Base;var args=m.extend(null,arguments);while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){for(var i=o.length-1;i>=0;i--){args.unshift(o[i]);}}else{res.push(o);}}
return res;},extend:function(self,obj,skip){if(!skip){skip=0;}
if(obj){var l=obj.length;if(typeof(l)!='number'){if(typeof(MochiKit.Iter)!="undefined"){obj=MochiKit.Iter.list(obj);l=obj.length;}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(!self){self=[];}
for(var i=skip;i<l;i++){self.push(obj[i]);}}
return self;},updatetree:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){var v=o[k];if(typeof(self[k])=='object'&&typeof(v)=='object'){arguments.callee(self[k],v);}else{self[k]=v;}}}}
return self;},setdefault:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var k in o){if(!(k in self)){self[k]=o[k];}}}
return self;},keys:function(obj){var rval=[];for(var prop in obj){rval.push(prop);}
return rval;},values:function(obj){var rval=[];for(var prop in obj){rval.push(obj[prop]);}
return rval;},items:function(obj){var rval=[];var e;for(var prop in obj){var v;try{v=obj[prop];}catch(e){continue;}
rval.push([prop,v]);}
return rval;},_newNamedError:function(module,name,func){func.prototype=new MochiKit.Base.NamedError(module.NAME+"."+name);module[name]=func;},operator:{truth:function(a){return!!a;},lognot:function(a){return!a;},identity:function(a){return a;},not:function(a){return~a;},neg:function(a){return-a;},add:function(a,b){return a+b;},sub:function(a,b){return a-b;},div:function(a,b){return a/b;},mod:function(a,b){return a%b;},mul:function(a,b){return a*b;},and:function(a,b){return a&b;},or:function(a,b){return a|b;},xor:function(a,b){return a^b;},lshift:function(a,b){return a<<b;},rshift:function(a,b){return a>>b;},zrshift:function(a,b){return a>>>b;},eq:function(a,b){return a==b;},ne:function(a,b){return a!=b;},gt:function(a,b){return a>b;},ge:function(a,b){return a>=b;},lt:function(a,b){return a<b;},le:function(a,b){return a<=b;},seq:function(a,b){return a===b;},sne:function(a,b){return a!==b;},ceq:function(a,b){return MochiKit.Base.compare(a,b)===0;},cne:function(a,b){return MochiKit.Base.compare(a,b)!==0;},cgt:function(a,b){return MochiKit.Base.compare(a,b)==1;},cge:function(a,b){return MochiKit.Base.compare(a,b)!=-1;},clt:function(a,b){return MochiKit.Base.compare(a,b)==-1;},cle:function(a,b){return MochiKit.Base.compare(a,b)!=1;},logand:function(a,b){return a&&b;},logor:function(a,b){return a||b;},contains:function(a,b){return b in a;}},forwardCall:function(func){return function(){return this[func].apply(this,arguments);};},itemgetter:function(func){return function(arg){return arg[func];};},typeMatcher:function(){var types={};for(var i=0;i<arguments.length;i++){var typ=arguments[i];types[typ]=typ;}
return function(){for(var i=0;i<arguments.length;i++){if(!(typeof(arguments[i])in types)){return false;}}
return true;};},isNull:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==null){return false;}}
return true;},isUndefinedOrNull:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(!(typeof(o)=='undefined'||o===null)){return false;}}
return true;},isEmpty:function(obj){return!MochiKit.Base.isNotEmpty.apply(this,arguments);},isNotEmpty:function(obj){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(!(o&&o.length)){return false;}}
return true;},isArrayLike:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];var typ=typeof(o);if((typ!='object'&&!(typ=='function'&&typeof(o.item)=='function'))||o===null||typeof(o.length)!='number'||o.nodeType===3||o.nodeType===4){return false;}}
return true;},isDateLike:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!="object"||o===null||typeof(o.getTime)!='function'){return false;}}
return true;},xmap:function(fn){if(fn===null){return MochiKit.Base.extend(null,arguments,1);}
var rval=[];for(var i=1;i<arguments.length;i++){rval.push(fn(arguments[i]));}
return rval;},map:function(fn,lst){var m=MochiKit.Base;var itr=MochiKit.Iter;var isArrayLike=m.isArrayLike;if(arguments.length<=2){if(!isArrayLike(lst)){if(itr){lst=itr.list(lst);if(fn===null){return lst;}}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(fn===null){return m.extend(null,lst);}
var rval=[];for(var i=0;i<lst.length;i++){rval.push(fn(lst[i]));}
return rval;}else{if(fn===null){fn=Array;}
var length=null;for(i=1;i<arguments.length;i++){if(!isArrayLike(arguments[i])){if(itr){return itr.list(itr.imap.apply(null,arguments));}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
var l=arguments[i].length;if(length===null||length>l){length=l;}}
rval=[];for(i=0;i<length;i++){var args=[];for(var j=1;j<arguments.length;j++){args.push(arguments[j][i]);}
rval.push(fn.apply(this,args));}
return rval;}},xfilter:function(fn){var rval=[];if(fn===null){fn=MochiKit.Base.operator.truth;}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(fn(o)){rval.push(o);}}
return rval;},filter:function(fn,lst,self){var rval=[];var m=MochiKit.Base;if(!m.isArrayLike(lst)){if(MochiKit.Iter){lst=MochiKit.Iter.list(lst);}else{throw new TypeError("Argument not an array-like and MochiKit.Iter not present");}}
if(fn===null){fn=m.operator.truth;}
if(typeof(Array.prototype.filter)=='function'){return Array.prototype.filter.call(lst,fn,self);}else if(typeof(self)=='undefined'||self===null){for(var i=0;i<lst.length;i++){var o=lst[i];if(fn(o)){rval.push(o);}}}else{for(i=0;i<lst.length;i++){o=lst[i];if(fn.call(self,o)){rval.push(o);}}}
return rval;},_wrapDumbFunction:function(func){return function(){switch(arguments.length){case 0:return func();case 1:return func(arguments[0]);case 2:return func(arguments[0],arguments[1]);case 3:return func(arguments[0],arguments[1],arguments[2]);}
var args=[];for(var i=0;i<arguments.length;i++){args.push("arguments["+i+"]");}
return eval("(func("+args.join(",")+"))");};},methodcaller:function(func){var args=MochiKit.Base.extend(null,arguments,1);if(typeof(func)=="function"){return function(obj){return func.apply(obj,args);};}else{return function(obj){return obj[func].apply(obj,args);};}},method:function(self,func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,self],arguments,2));},compose:function(f1,f2){var fnlist=[];var m=MochiKit.Base;if(arguments.length===0){throw new TypeError("compose() requires at least one argument");}
for(var i=0;i<arguments.length;i++){var fn=arguments[i];if(typeof(fn)!="function"){throw new TypeError(m.repr(fn)+" is not a function");}
fnlist.push(fn);}
return function(){var args=arguments;for(var i=fnlist.length-1;i>=0;i--){args=[fnlist[i].apply(this,args)];}
return args[0];};},bind:function(func,self){if(typeof(func)=="string"){func=self[func];}
var im_func=func.im_func;var im_preargs=func.im_preargs;var im_self=func.im_self;var m=MochiKit.Base;if(typeof(func)=="function"&&typeof(func.apply)=="undefined"){func=m._wrapDumbFunction(func);}
if(typeof(im_func)!='function'){im_func=func;}
if(typeof(self)!='undefined'){im_self=self;}
if(typeof(im_preargs)=='undefined'){im_preargs=[];}else{im_preargs=im_preargs.slice();}
m.extend(im_preargs,arguments,2);var newfunc=function(){var args=arguments;var me=arguments.callee;if(me.im_preargs.length>0){args=m.concat(me.im_preargs,args);}
var self=me.im_self;if(!self){self=this;}
return me.im_func.apply(self,args);};newfunc.im_self=im_self;newfunc.im_func=im_func;newfunc.im_preargs=im_preargs;return newfunc;},bindMethods:function(self){var bind=MochiKit.Base.bind;for(var k in self){var func=self[k];if(typeof(func)=='function'){self[k]=bind(func,self);}}},registerComparator:function(name,check,comparator,override){MochiKit.Base.comparatorRegistry.register(name,check,comparator,override);},_primitives:{'boolean':true,'string':true,'number':true},compare:function(a,b){if(a==b){return 0;}
var aIsNull=(typeof(a)=='undefined'||a===null);var bIsNull=(typeof(b)=='undefined'||b===null);if(aIsNull&&bIsNull){return 0;}else if(aIsNull){return-1;}else if(bIsNull){return 1;}
var m=MochiKit.Base;var prim=m._primitives;if(!(typeof(a)in prim&&typeof(b)in prim)){try{return m.comparatorRegistry.match(a,b);}catch(e){if(e!=m.NotFound){throw e;}}}
if(a<b){return-1;}else if(a>b){return 1;}
var repr=m.repr;throw new TypeError(repr(a)+" and "+repr(b)+" can not be compared");},compareDateLike:function(a,b){return MochiKit.Base.compare(a.getTime(),b.getTime());},compareArrayLike:function(a,b){var compare=MochiKit.Base.compare;var count=a.length;var rval=0;if(count>b.length){rval=1;count=b.length;}else if(count<b.length){rval=-1;}
for(var i=0;i<count;i++){var cmp=compare(a[i],b[i]);if(cmp){return cmp;}}
return rval;},registerRepr:function(name,check,wrap,override){MochiKit.Base.reprRegistry.register(name,check,wrap,override);},repr:function(o){if(typeof(o)=="undefined"){return"undefined";}else if(o===null){return"null";}
try{if(typeof(o.__repr__)=='function'){return o.__repr__();}else if(typeof(o.repr)=='function'&&o.repr!=arguments.callee){return o.repr();}
return MochiKit.Base.reprRegistry.match(o);}catch(e){if(typeof(o.NAME)=='string'&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){return o.NAME;}}
try{var ostring=(o+"");}catch(e){return"["+typeof(o)+"]";}
if(typeof(o)=="function"){ostring=ostring.replace(/^\s+/,"").replace(/\s+/g," ");ostring=ostring.replace(/,(\S)/,", $1");var idx=ostring.indexOf("{");if(idx!=-1){ostring=ostring.substr(0,idx)+"{...}";}}
return ostring;},reprArrayLike:function(o){var m=MochiKit.Base;return"["+m.map(m.repr,o).join(", ")+"]";},reprString:function(o){return('"'+o.replace(/(["\\])/g,'\\$1')+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\v]/g,"\\v").replace(/[\r]/g,"\\r");},reprNumber:function(o){return o+"";},registerJSON:function(name,check,wrap,override){MochiKit.Base.jsonRegistry.register(name,check,wrap,override);},evalJSON:function(){return eval("("+MochiKit.Base._filterJSON(arguments[0])+")");},_filterJSON:function(s){var m=s.match(/^\s*\/\*(.*)\*\/\s*$/);if(m){return m[1];}
return s;},serializeJSON:function(o){if(!o){return"";}
var objtype=typeof(o);if(objtype=="number"||objtype=="boolean"){return o+"";}else if(o===null){return"null";}else if(objtype=="string"){var res="";for(var i=0;i<o.length;i++){var c=o.charAt(i);if(c=='\"'){res+='\\"';}else if(c=='\\'){res+='\\\\';}else if(c=='\b'){res+='\\b';}else if(c=='\f'){res+='\\f';}else if(c=='\n'){res+='\\n';}else if(c=='\r'){res+='\\r';}else if(c=='\t'){res+='\\t';}else if(o.charCodeAt(i)<=0x1F){var hex=o.charCodeAt(i).toString(16);if(hex.length<2){hex='0'+hex;}
res+='\\u00'+hex.toUpperCase();}else{res+=c;}}
return'"'+res+'"';}
var me=arguments.callee;var newObj;if(typeof(o.__json__)=="function"){newObj=o.__json__();if(o!==newObj){return me(newObj);}}
if(typeof(o.json)=="function"){newObj=o.json();if(o!==newObj){return me(newObj);}}
if(objtype!="function"&&typeof(o.length)=="number"){var res=[];for(var i=0;i<o.length;i++){var val=me(o[i]);if(typeof(val)!="string"){continue;}
res.push(val);}
return"["+res.join(", ")+"]";}
var m=MochiKit.Base;try{newObj=m.jsonRegistry.match(o);if(o!==newObj){return me(newObj);}}catch(e){if(e!=m.NotFound){throw e;}}
if(objtype=="undefined"){throw new TypeError("undefined can not be serialized as JSON");}
if(objtype=="function"){return null;}
res=[];for(var k in o){var useKey;if(typeof(k)=="number"){useKey='"'+k+'"';}else if(typeof(k)=="string"){useKey=me(k);}else{continue;}
val=me(o[k]);if(typeof(val)!="string"){continue;}
res.push(useKey+":"+val);}
return"{"+res.join(", ")+"}";},objEqual:function(a,b){return(MochiKit.Base.compare(a,b)===0);},arrayEqual:function(self,arr){if(self.length!=arr.length){return false;}
return(MochiKit.Base.compare(self,arr)===0);},concat:function(){var rval=[];var extend=MochiKit.Base.extend;for(var i=0;i<arguments.length;i++){extend(rval,arguments[i]);}
return rval;},keyComparator:function(key){var m=MochiKit.Base;var compare=m.compare;if(arguments.length==1){return function(a,b){return compare(a[key],b[key]);};}
var compareKeys=m.extend(null,arguments);return function(a,b){var rval=0;for(var i=0;(rval===0)&&(i<compareKeys.length);i++){var key=compareKeys[i];rval=compare(a[key],b[key]);}
return rval;};},reverseKeyComparator:function(key){var comparator=MochiKit.Base.keyComparator.apply(this,arguments);return function(a,b){return comparator(b,a);};},partial:function(func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,undefined],arguments,1));},listMinMax:function(which,lst){if(lst.length===0){return null;}
var cur=lst[0];var compare=MochiKit.Base.compare;for(var i=1;i<lst.length;i++){var o=lst[i];if(compare(o,cur)==which){cur=o;}}
return cur;},objMax:function(){return MochiKit.Base.listMinMax(1,arguments);},objMin:function(){return MochiKit.Base.listMinMax(-1,arguments);},findIdentical:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
for(var i=start;i<end;i++){if(lst[i]===value){return i;}}
return-1;},mean:function(){var sum=0;var m=MochiKit.Base;var args=m.extend(null,arguments);var count=args.length;while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){count+=o.length-1;for(var i=o.length-1;i>=0;i--){sum+=o[i];}}else{sum+=o;}}
if(count<=0){throw new TypeError('mean() requires at least one argument');}
return sum/count;},median:function(){var data=MochiKit.Base.flattenArguments(arguments);if(data.length===0){throw new TypeError('median() requires at least one argument');}
data.sort(compare);if(data.length%2==0){var upper=data.length/2;return(data[upper]+data[upper-1])/2;}else{return data[(data.length-1)/2];}},findValue:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
var cmp=MochiKit.Base.compare;for(var i=start;i<end;i++){if(cmp(lst[i],value)===0){return i;}}
return-1;},nodeWalk:function(node,visitor){var nodes=[node];var extend=MochiKit.Base.extend;while(nodes.length){var res=visitor(nodes.shift());if(res){extend(nodes,res);}}},nameFunctions:function(namespace){var base=namespace.NAME;if(typeof(base)=='undefined'){base='';}else{base=base+'.';}
for(var name in namespace){var o=namespace[name];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+name;}catch(e){}}}},queryString:function(names,values){if(typeof(MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof(names)=="string"||(typeof(names.nodeType)!="undefined"&&names.nodeType>0))){var kv=MochiKit.DOM.formContents(names);names=kv[0];values=kv[1];}else if(arguments.length==1){if(typeof(names.length)=="number"&&names.length==2){return arguments.callee(names[0],names[1]);}
var o=names;names=[];values=[];for(var k in o){var v=o[k];if(typeof(v)=="function"){continue;}else if(MochiKit.Base.isArrayLike(v)){for(var i=0;i<v.length;i++){names.push(k);values.push(v[i]);}}else{names.push(k);values.push(v);}}}
var rval=[];var len=Math.min(names.length,values.length);var urlEncode=MochiKit.Base.urlEncode;for(var i=0;i<len;i++){v=values[i];if(typeof(v)!='undefined'&&v!==null){rval.push(urlEncode(names[i])+"="+urlEncode(v));}}
return rval.join("&");},parseQueryString:function(encodedString,useArrays){var qstr=(encodedString.charAt(0)=="?")?encodedString.substring(1):encodedString;var pairs=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/);var o={};var decode;if(typeof(decodeURIComponent)!="undefined"){decode=decodeURIComponent;}else{decode=unescape;}
if(useArrays){for(var i=0;i<pairs.length;i++){var pair=pairs[i].split("=");var name=decode(pair.shift());if(!name){continue;}
var arr=o[name];if(!(arr instanceof Array)){arr=[];o[name]=arr;}
arr.push(decode(pair.join("=")));}}else{for(i=0;i<pairs.length;i++){pair=pairs[i].split("=");var name=pair.shift();if(!name){continue;}
o[decode(name)]=decode(pair.join("="));}}
return o;}});MochiKit.Base.AdapterRegistry=function(){this.pairs=[];};MochiKit.Base.AdapterRegistry.prototype={register:function(name,check,wrap,override){if(override){this.pairs.unshift([name,check,wrap]);}else{this.pairs.push([name,check,wrap]);}},match:function(){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[1].apply(this,arguments)){return pair[2].apply(this,arguments);}}
throw MochiKit.Base.NotFound;},unregister:function(name){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[0]==name){this.pairs.splice(i,1);return true;}}
return false;}};MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"];MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];MochiKit.Base._exportSymbols=function(globals,module){if(!MochiKit.__export__){return;}
var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}};MochiKit.Base.__new__=function(){var m=this;m.noop=m.operator.identity;m.forward=m.forwardCall;m.find=m.findValue;if(typeof(encodeURIComponent)!="undefined"){m.urlEncode=function(unencoded){return encodeURIComponent(unencoded).replace(/\'/g,'%27');};}else{m.urlEncode=function(unencoded){return escape(unencoded).replace(/\+/g,'%2B').replace(/\"/g,'%22').rval.replace(/\'/g,'%27');};}
m.NamedError=function(name){this.message=name;this.name=name;};m.NamedError.prototype=new Error();m.update(m.NamedError.prototype,{repr:function(){if(this.message&&this.message!=this.name){return this.name+"("+m.repr(this.message)+")";}else{return this.name+"()";}},toString:m.forwardCall("repr")});m.NotFound=new m.NamedError("MochiKit.Base.NotFound");m.listMax=m.partial(m.listMinMax,1);m.listMin=m.partial(m.listMinMax,-1);m.isCallable=m.typeMatcher('function');m.isUndefined=m.typeMatcher('undefined');m.merge=m.partial(m.update,null);m.zip=m.partial(m.map,null);m.average=m.mean;m.comparatorRegistry=new m.AdapterRegistry();m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);m.reprRegistry=new m.AdapterRegistry();m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);m.registerRepr("string",m.typeMatcher("string"),m.reprString);m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);m.jsonRegistry=new m.AdapterRegistry();var all=m.concat(m.EXPORT,m.EXPORT_OK);m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};m.nameFunctions(this);};MochiKit.Base.__new__();if(MochiKit.__export__){compare=MochiKit.Base.compare;compose=MochiKit.Base.compose;serializeJSON=MochiKit.Base.serializeJSON;mean=MochiKit.Base.mean;median=MochiKit.Base.median;}
MochiKit.Base._exportSymbols(this,MochiKit.Base);;MochiKit.Base._deps('Iter',['Base']);MochiKit.Iter.NAME="MochiKit.Iter";MochiKit.Iter.VERSION="1.4";MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]";},toString:function(){return this.__repr__();},registerIteratorFactory:function(name,check,iterfactory,override){MochiKit.Iter.iteratorRegistry.register(name,check,iterfactory,override);},iter:function(iterable,sentinel){var self=MochiKit.Iter;if(arguments.length==2){return self.takewhile(function(a){return a!=sentinel;},iterable);}
if(typeof(iterable.next)=='function'){return iterable;}else if(typeof(iterable.iter)=='function'){return iterable.iter();}
try{return self.iteratorRegistry.match(iterable);}catch(e){var m=MochiKit.Base;if(e==m.NotFound){e=new TypeError(typeof(iterable)+": "+m.repr(iterable)+" is not iterable");}
throw e;}},count:function(n){if(!n){n=0;}
var m=MochiKit.Base;return{repr:function(){return"count("+n+")";},toString:m.forwardCall("repr"),next:m.counter(n)};},cycle:function(p){var self=MochiKit.Iter;var m=MochiKit.Base;var lst=[];var iterator=self.iter(p);return{repr:function(){return"cycle(...)";},toString:m.forwardCall("repr"),next:function(){try{var rval=iterator.next();lst.push(rval);return rval;}catch(e){if(e!=self.StopIteration){throw e;}
if(lst.length===0){this.next=function(){throw self.StopIteration;};}else{var i=-1;this.next=function(){i=(i+1)%lst.length;return lst[i];};}
return this.next();}}};},repeat:function(elem,n){var m=MochiKit.Base;if(typeof(n)=='undefined'){return{repr:function(){return"repeat("+m.repr(elem)+")";},toString:m.forwardCall("repr"),next:function(){return elem;}};}
return{repr:function(){return"repeat("+m.repr(elem)+", "+n+")";},toString:m.forwardCall("repr"),next:function(){if(n<=0){throw MochiKit.Iter.StopIteration;}
n-=1;return elem;}};},next:function(iterator){return iterator.next();},izip:function(p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var next=self.next;var iterables=m.map(self.iter,arguments);return{repr:function(){return"izip(...)";},toString:m.forwardCall("repr"),next:function(){return m.map(next,iterables);}};},ifilter:function(pred,seq){var m=MochiKit.Base;seq=MochiKit.Iter.iter(seq);if(pred===null){pred=m.operator.truth;}
return{repr:function(){return"ifilter(...)";},toString:m.forwardCall("repr"),next:function(){while(true){var rval=seq.next();if(pred(rval)){return rval;}}
return undefined;}};},ifilterfalse:function(pred,seq){var m=MochiKit.Base;seq=MochiKit.Iter.iter(seq);if(pred===null){pred=m.operator.truth;}
return{repr:function(){return"ifilterfalse(...)";},toString:m.forwardCall("repr"),next:function(){while(true){var rval=seq.next();if(!pred(rval)){return rval;}}
return undefined;}};},islice:function(seq){var self=MochiKit.Iter;var m=MochiKit.Base;seq=self.iter(seq);var start=0;var stop=0;var step=1;var i=-1;if(arguments.length==2){stop=arguments[1];}else if(arguments.length==3){start=arguments[1];stop=arguments[2];}else{start=arguments[1];stop=arguments[2];step=arguments[3];}
return{repr:function(){return"islice("+["...",start,stop,step].join(", ")+")";},toString:m.forwardCall("repr"),next:function(){var rval;while(i<start){rval=seq.next();i++;}
if(start>=stop){throw self.StopIteration;}
start+=step;return rval;}};},imap:function(fun,p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var iterables=m.map(self.iter,m.extend(null,arguments,1));var map=m.map;var next=self.next;return{repr:function(){return"imap(...)";},toString:m.forwardCall("repr"),next:function(){return fun.apply(this,map(next,iterables));}};},applymap:function(fun,seq,self){seq=MochiKit.Iter.iter(seq);var m=MochiKit.Base;return{repr:function(){return"applymap(...)";},toString:m.forwardCall("repr"),next:function(){return fun.apply(self,seq.next());}};},chain:function(p,q){var self=MochiKit.Iter;var m=MochiKit.Base;if(arguments.length==1){return self.iter(arguments[0]);}
var argiter=m.map(self.iter,arguments);return{repr:function(){return"chain(...)";},toString:m.forwardCall("repr"),next:function(){while(argiter.length>1){try{var result=argiter[0].next();return result;}catch(e){if(e!=self.StopIteration){throw e;}
argiter.shift();var result=argiter[0].next();return result;}}
if(argiter.length==1){var arg=argiter.shift();this.next=m.bind("next",arg);return this.next();}
throw self.StopIteration;}};},takewhile:function(pred,seq){var self=MochiKit.Iter;seq=self.iter(seq);return{repr:function(){return"takewhile(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){var rval=seq.next();if(!pred(rval)){this.next=function(){throw self.StopIteration;};this.next();}
return rval;}};},dropwhile:function(pred,seq){seq=MochiKit.Iter.iter(seq);var m=MochiKit.Base;var bind=m.bind;return{"repr":function(){return"dropwhile(...)";},"toString":m.forwardCall("repr"),"next":function(){while(true){var rval=seq.next();if(!pred(rval)){break;}}
this.next=bind("next",seq);return rval;}};},_tee:function(ident,sync,iterable){sync.pos[ident]=-1;var m=MochiKit.Base;var listMin=m.listMin;return{repr:function(){return"tee("+ident+", ...)";},toString:m.forwardCall("repr"),next:function(){var rval;var i=sync.pos[ident];if(i==sync.max){rval=iterable.next();sync.deque.push(rval);sync.max+=1;sync.pos[ident]+=1;}else{rval=sync.deque[i-sync.min];sync.pos[ident]+=1;if(i==sync.min&&listMin(sync.pos)!=sync.min){sync.min+=1;sync.deque.shift();}}
return rval;}};},tee:function(iterable,n){var rval=[];var sync={"pos":[],"deque":[],"max":-1,"min":-1};if(arguments.length==1||typeof(n)=="undefined"||n===null){n=2;}
var self=MochiKit.Iter;iterable=self.iter(iterable);var _tee=self._tee;for(var i=0;i<n;i++){rval.push(_tee(i,sync,iterable));}
return rval;},list:function(iterable){var rval;if(iterable instanceof Array){return iterable.slice();}
if(typeof(iterable)=="function"&&!(iterable instanceof Function)&&typeof(iterable.length)=='number'){rval=[];for(var i=0;i<iterable.length;i++){rval.push(iterable[i]);}
return rval;}
var self=MochiKit.Iter;iterable=self.iter(iterable);var rval=[];var a_val;try{while(true){a_val=iterable.next();rval.push(a_val);}}catch(e){if(e!=self.StopIteration){throw e;}
return rval;}
return undefined;},reduce:function(fn,iterable,initial){var i=0;var x=initial;var self=MochiKit.Iter;iterable=self.iter(iterable);if(arguments.length<3){try{x=iterable.next();}catch(e){if(e==self.StopIteration){e=new TypeError("reduce() of empty sequence with no initial value");}
throw e;}
i++;}
try{while(true){x=fn(x,iterable.next());}}catch(e){if(e!=self.StopIteration){throw e;}}
return x;},range:function(){var start=0;var stop=0;var step=1;if(arguments.length==1){stop=arguments[0];}else if(arguments.length==2){start=arguments[0];stop=arguments[1];}else if(arguments.length==3){start=arguments[0];stop=arguments[1];step=arguments[2];}else{throw new TypeError("range() takes 1, 2, or 3 arguments!");}
if(step===0){throw new TypeError("range() step must not be 0");}
return{next:function(){if((step>0&&start>=stop)||(step<0&&start<=stop)){throw MochiKit.Iter.StopIteration;}
var rval=start;start+=step;return rval;},repr:function(){return"range("+[start,stop,step].join(", ")+")";},toString:MochiKit.Base.forwardCall("repr")};},sum:function(iterable,start){if(typeof(start)=="undefined"||start===null){start=0;}
var x=start;var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){x+=iterable.next();}}catch(e){if(e!=self.StopIteration){throw e;}}
return x;},exhaust:function(iterable){var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){iterable.next();}}catch(e){if(e!=self.StopIteration){throw e;}}},forEach:function(iterable,func,self){var m=MochiKit.Base;if(arguments.length>2){func=m.bind(func,self);}
if(m.isArrayLike(iterable)){try{for(var i=0;i<iterable.length;i++){func(iterable[i]);}}catch(e){if(e!=MochiKit.Iter.StopIteration){throw e;}}}else{self=MochiKit.Iter;self.exhaust(self.imap(func,iterable));}},every:function(iterable,func){var self=MochiKit.Iter;try{self.ifilterfalse(func,iterable).next();return false;}catch(e){if(e!=self.StopIteration){throw e;}
return true;}},sorted:function(iterable,cmp){var rval=MochiKit.Iter.list(iterable);if(arguments.length==1){cmp=MochiKit.Base.compare;}
rval.sort(cmp);return rval;},reversed:function(iterable){var rval=MochiKit.Iter.list(iterable);rval.reverse();return rval;},some:function(iterable,func){var self=MochiKit.Iter;try{self.ifilter(func,iterable).next();return true;}catch(e){if(e!=self.StopIteration){throw e;}
return false;}},iextend:function(lst,iterable){if(MochiKit.Base.isArrayLike(iterable)){for(var i=0;i<iterable.length;i++){lst.push(iterable[i]);}}else{var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){lst.push(iterable.next());}}catch(e){if(e!=self.StopIteration){throw e;}}}
return lst;},groupby:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity;}
iterable=self.iter(iterable);var pk=undefined;var k=undefined;var v;function fetch(){v=iterable.next();k=keyfunc(v);};function eat(){var ret=v;v=undefined;return ret;};var first=true;var compare=m.compare;return{repr:function(){return"groupby(...)";},next:function(){while(compare(k,pk)===0){fetch();if(first){first=false;break;}}
pk=k;return[k,{next:function(){if(v==undefined){fetch();}
if(compare(k,pk)!==0){throw self.StopIteration;}
return eat();}}];}};},groupby_as_array:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity;}
iterable=self.iter(iterable);var result=[];var first=true;var prev_key;var compare=m.compare;while(true){try{var value=iterable.next();var key=keyfunc(value);}catch(e){if(e==self.StopIteration){break;}
throw e;}
if(first||compare(key,prev_key)!==0){var values=[];result.push([key,values]);}
values.push(value);first=false;prev_key=key;}
return result;},arrayLikeIter:function(iterable){var i=0;return{repr:function(){return"arrayLikeIter(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){if(i>=iterable.length){throw MochiKit.Iter.StopIteration;}
return iterable[i++];}};},hasIterateNext:function(iterable){return(iterable&&typeof(iterable.iterateNext)=="function");},iterateNextIter:function(iterable){return{repr:function(){return"iterateNextIter(...)";},toString:MochiKit.Base.forwardCall("repr"),next:function(){var rval=iterable.iterateNext();if(rval===null||rval===undefined){throw MochiKit.Iter.StopIteration;}
return rval;}};}});MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter"];MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"];MochiKit.Iter.__new__=function(){var m=MochiKit.Base;if(typeof(StopIteration)!="undefined"){this.StopIteration=StopIteration;}else{this.StopIteration=new m.NamedError("StopIteration");}
this.iteratorRegistry=new m.AdapterRegistry();this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter);this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Iter.__new__();if(MochiKit.__export__){reduce=MochiKit.Iter.reduce;}
MochiKit.Base._exportSymbols(this,MochiKit.Iter);;MochiKit.Base._deps('Logging',['Base']);MochiKit.Logging.NAME="MochiKit.Logging";MochiKit.Logging.VERSION="1.4";MochiKit.Logging.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Logging.toString=function(){return this.__repr__();};MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"];MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"];MochiKit.Logging.LogMessage=function(num,level,info){this.num=num;this.level=level;this.info=info;this.timestamp=new Date();};MochiKit.Logging.LogMessage.prototype={repr:function(){var m=MochiKit.Base;return'LogMessage('+
m.map(m.repr,[this.num,this.level,this.info]).join(', ')+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(minLevel){var self=MochiKit.Logging;if(typeof(minLevel)=='string'){minLevel=self.LogLevel[minLevel];}
return function(msg){var msgLevel=msg.level;if(typeof(msgLevel)=='string'){msgLevel=self.LogLevel[msgLevel];}
return msgLevel>=minLevel;};},isLogMessage:function(){var LogMessage=MochiKit.Logging.LogMessage;for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof LogMessage)){return false;}}
return true;},compareLogMessage:function(a,b){return MochiKit.Base.compare([a.level,a.info],[b.level,b.info]);},alertListener:function(msg){alert("num: "+msg.num+"\nlevel: "+msg.level+"\ninfo: "+msg.info.join(" "));}});MochiKit.Logging.Logger=function(maxSize){this.counter=0;if(typeof(maxSize)=='undefined'||maxSize===null){maxSize=-1;}
this.maxSize=maxSize;this._messages=[];this.listeners={};this.useNativeConsole=false;};MochiKit.Logging.Logger.prototype={clear:function(){this._messages.splice(0,this._messages.length);},logToConsole:function(msg){if(typeof(window)!="undefined"&&window.console&&window.console.log){window.console.log(msg.replace(/%/g,'\uFF05'));}else if(typeof(opera)!="undefined"&&opera.postError){opera.postError(msg);}else if(typeof(printfire)=="function"){printfire(msg);}else if(typeof(Debug)!="undefined"&&Debug.writeln){Debug.writeln(msg);}else if(typeof(debug)!="undefined"&&debug.trace){debug.trace(msg);}},dispatchListeners:function(msg){for(var k in this.listeners){var pair=this.listeners[k];if(pair.ident!=k||(pair[0]&&!pair[0](msg))){continue;}
pair[1](msg);}},addListener:function(ident,filter,listener){if(typeof(filter)=='string'){filter=MochiKit.Logging.logLevelAtLeast(filter);}
var entry=[filter,listener];entry.ident=ident;this.listeners[ident]=entry;},removeListener:function(ident){delete this.listeners[ident];},baseLog:function(level,message){var msg=new MochiKit.Logging.LogMessage(this.counter,level,MochiKit.Base.extend(null,arguments,1));this._messages.push(msg);this.dispatchListeners(msg);if(this.useNativeConsole){this.logToConsole(msg.level+": "+msg.info.join(" "));}
this.counter+=1;while(this.maxSize>=0&&this._messages.length>this.maxSize){this._messages.shift();}},getMessages:function(howMany){var firstMsg=0;if(!(typeof(howMany)=='undefined'||howMany===null)){firstMsg=Math.max(0,this._messages.length-howMany);}
return this._messages.slice(firstMsg);},getMessageText:function(howMany){if(typeof(howMany)=='undefined'||howMany===null){howMany=30;}
var messages=this.getMessages(howMany);if(messages.length){var lst=map(function(m){return'\n  ['+m.num+'] '+m.level+': '+m.info.join(' ');},messages);lst.unshift('LAST '+messages.length+' MESSAGES:');return lst.join('');}
return'';},debuggingBookmarklet:function(inline){if(typeof(MochiKit.LoggingPane)=="undefined"){alert(this.getMessageText());}else{MochiKit.LoggingPane.createLoggingPane(inline||false);}}};MochiKit.Logging.__new__=function(){this.LogLevel={ERROR:40,FATAL:50,WARNING:30,INFO:20,DEBUG:10};var m=MochiKit.Base;m.registerComparator("LogMessage",this.isLogMessage,this.compareLogMessage);var partial=m.partial;var Logger=this.Logger;var baseLog=Logger.prototype.baseLog;m.update(this.Logger.prototype,{debug:partial(baseLog,'DEBUG'),log:partial(baseLog,'INFO'),error:partial(baseLog,'ERROR'),fatal:partial(baseLog,'FATAL'),warning:partial(baseLog,'WARNING')});var self=this;var connectLog=function(name){return function(){self.logger[name].apply(self.logger,arguments);};};this.log=connectLog('log');this.logError=connectLog('error');this.logDebug=connectLog('debug');this.logFatal=connectLog('fatal');this.logWarning=connectLog('warning');this.logger=new Logger();this.logger.useNativeConsole=true;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};if(typeof(printfire)=="undefined"&&typeof(document)!="undefined"&&document.createEvent&&typeof(dispatchEvent)!="undefined"){printfire=function(){printfire.args=arguments;var ev=document.createEvent("Events");ev.initEvent("printfire",false,true);dispatchEvent(ev);};}
MochiKit.Logging.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Logging);;MochiKit.Base._deps('DateTime',['Base']);MochiKit.DateTime.NAME="MochiKit.DateTime";MochiKit.DateTime.VERSION="1.4";MochiKit.DateTime.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.DateTime.toString=function(){return this.__repr__();};MochiKit.DateTime.isoDate=function(str){str=str+"";if(typeof(str)!="string"||str.length===0){return null;}
var iso=str.split('-');if(iso.length===0){return null;}
var date=new Date(iso[0],iso[1]-1,iso[2]);date.setFullYear(iso[0]);date.setMonth(iso[1]-1);date.setDate(iso[2]);return date;};MochiKit.DateTime._isoRegexp=/(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/;MochiKit.DateTime.isoTimestamp=function(str){str=str+"";if(typeof(str)!="string"||str.length===0){return null;}
var res=str.match(MochiKit.DateTime._isoRegexp);if(typeof(res)=="undefined"||res===null){return null;}
var year,month,day,hour,min,sec,msec;year=parseInt(res[1],10);if(typeof(res[2])=="undefined"||res[2]===''){return new Date(year);}
month=parseInt(res[2],10)-1;day=parseInt(res[3],10);if(typeof(res[4])=="undefined"||res[4]===''){return new Date(year,month,day);}
hour=parseInt(res[4],10);min=parseInt(res[5],10);sec=(typeof(res[6])!="undefined"&&res[6]!=='')?parseInt(res[6],10):0;if(typeof(res[7])!="undefined"&&res[7]!==''){msec=Math.round(1000.0*parseFloat("0."+res[7]));}else{msec=0;}
if((typeof(res[8])=="undefined"||res[8]==='')&&(typeof(res[9])=="undefined"||res[9]==='')){return new Date(year,month,day,hour,min,sec,msec);}
var ofs;if(typeof(res[9])!="undefined"&&res[9]!==''){ofs=parseInt(res[10],10)*3600000;if(typeof(res[11])!="undefined"&&res[11]!==''){ofs+=parseInt(res[11],10)*60000;}
if(res[9]=="-"){ofs=-ofs;}}else{ofs=0;}
return new Date(Date.UTC(year,month,day,hour,min,sec,msec)-ofs);};MochiKit.DateTime.toISOTime=function(date,realISO){if(typeof(date)=="undefined"||date===null){return null;}
var hh=date.getHours();var mm=date.getMinutes();var ss=date.getSeconds();var lst=[((realISO&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];return lst.join(":");};MochiKit.DateTime.toISOTimestamp=function(date,realISO){if(typeof(date)=="undefined"||date===null){return null;}
var sep=realISO?"T":" ";var foot=realISO?"Z":"";if(realISO){date=new Date(date.getTime()+(date.getTimezoneOffset()*60000));}
return MochiKit.DateTime.toISODate(date)+sep+MochiKit.DateTime.toISOTime(date,realISO)+foot;};MochiKit.DateTime.toISODate=function(date){if(typeof(date)=="undefined"||date===null){return null;}
var _padTwo=MochiKit.DateTime._padTwo;var _padFour=MochiKit.DateTime._padFour;return[_padFour(date.getFullYear()),_padTwo(date.getMonth()+1),_padTwo(date.getDate())].join("-");};MochiKit.DateTime.americanDate=function(d){d=d+"";if(typeof(d)!="string"||d.length===0){return null;}
var a=d.split('/');return new Date(a[2],a[0]-1,a[1]);};MochiKit.DateTime._padTwo=function(n){return(n>9)?n:"0"+n;};MochiKit.DateTime._padFour=function(n){switch(n.toString().length){case 1:return"000"+n;break;case 2:return"00"+n;break;case 3:return"0"+n;break;case 4:default:return n;}};MochiKit.DateTime.toPaddedAmericanDate=function(d){if(typeof(d)=="undefined"||d===null){return null;}
var _padTwo=MochiKit.DateTime._padTwo;return[_padTwo(d.getMonth()+1),_padTwo(d.getDate()),d.getFullYear()].join('/');};MochiKit.DateTime.toAmericanDate=function(d){if(typeof(d)=="undefined"||d===null){return null;}
return[d.getMonth()+1,d.getDate(),d.getFullYear()].join('/');};MochiKit.DateTime.EXPORT=["isoDate","isoTimestamp","toISOTime","toISOTimestamp","toISODate","americanDate","toPaddedAmericanDate","toAmericanDate"];MochiKit.DateTime.EXPORT_OK=[];MochiKit.DateTime.EXPORT_TAGS={":common":MochiKit.DateTime.EXPORT,":all":MochiKit.DateTime.EXPORT};MochiKit.DateTime.__new__=function(){var base=this.NAME+".";for(var k in this){var o=this[k];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+k;}catch(e){}}}};MochiKit.DateTime.__new__();if(typeof(MochiKit.Base)!="undefined"){MochiKit.Base._exportSymbols(this,MochiKit.DateTime);}else{(function(globals,module){if((typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined')||(MochiKit.__export__===false)){var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}}})(this,MochiKit.DateTime);};MochiKit.Base._deps('Format',['Base']);MochiKit.Format.NAME="MochiKit.Format";MochiKit.Format.VERSION="1.4";MochiKit.Format.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Format.toString=function(){return this.__repr__();};MochiKit.Format._numberFormatter=function(placeholder,header,footer,locale,isPercent,precision,leadingZeros,separatorAt,trailingZeros){return function(num){num=parseFloat(num);if(typeof(num)=="undefined"||num===null||isNaN(num)){return placeholder;}
var curheader=header;var curfooter=footer;if(num<0){num=-num;}else{curheader=curheader.replace(/-/,"");}
var me=arguments.callee;var fmt=MochiKit.Format.formatLocale(locale);if(isPercent){num=num*100.0;curfooter=fmt.percent+curfooter;}
num=MochiKit.Format.roundToFixed(num,precision);var parts=num.split(/\./);var whole=parts[0];var frac=(parts.length==1)?"":parts[1];var res="";while(whole.length<leadingZeros){whole="0"+whole;}
if(separatorAt){while(whole.length>separatorAt){var i=whole.length-separatorAt;res=fmt.separator+whole.substring(i,whole.length)+res;whole=whole.substring(0,i);}}
res=whole+res;if(precision>0){while(frac.length<trailingZeros){frac=frac+"0";}
res=res+fmt.decimal+frac;}
return curheader+res+curfooter;};};MochiKit.Format.numberFormatter=function(pattern,placeholder,locale){if(typeof(placeholder)=="undefined"){placeholder="";}
var match=pattern.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);if(!match){throw TypeError("Invalid pattern");}
var header=pattern.substr(0,match.index);var footer=pattern.substr(match.index+match[0].length);if(header.search(/-/)==-1){header=header+"-";}
var whole=match[1];var frac=(typeof(match[2])=="string"&&match[2]!="")?match[2]:"";var isPercent=(typeof(match[3])=="string"&&match[3]!="");var tmp=whole.split(/,/);var separatorAt;if(typeof(locale)=="undefined"){locale="default";}
if(tmp.length==1){separatorAt=null;}else{separatorAt=tmp[1].length;}
var leadingZeros=whole.length-whole.replace(/0/g,"").length;var trailingZeros=frac.length-frac.replace(/0/g,"").length;var precision=frac.length;var rval=MochiKit.Format._numberFormatter(placeholder,header,footer,locale,isPercent,precision,leadingZeros,separatorAt,trailingZeros);var m=MochiKit.Base;if(m){var fn=arguments.callee;var args=m.concat(arguments);rval.repr=function(){return[self.NAME,"(",map(m.repr,args).join(", "),")"].join("");};}
return rval;};MochiKit.Format.formatLocale=function(locale){if(typeof(locale)=="undefined"||locale===null){locale="default";}
if(typeof(locale)=="string"){var rval=MochiKit.Format.LOCALE[locale];if(typeof(rval)=="string"){rval=arguments.callee(rval);MochiKit.Format.LOCALE[locale]=rval;}
return rval;}else{return locale;}};MochiKit.Format.twoDigitAverage=function(numerator,denominator){if(denominator){var res=numerator/denominator;if(!isNaN(res)){return MochiKit.Format.twoDigitFloat(res);}}
return"0";};MochiKit.Format.twoDigitFloat=function(aNumber){var res=roundToFixed(aNumber,2);if(res.indexOf(".00")>0){return res.substring(0,res.length-3);}else if(res.charAt(res.length-1)=="0"){return res.substring(0,res.length-1);}else{return res;}};MochiKit.Format.lstrip=function(str,chars){str=str+"";if(typeof(str)!="string"){return null;}
if(!chars){return str.replace(/^\s+/,"");}else{return str.replace(new RegExp("^["+chars+"]+"),"");}};MochiKit.Format.rstrip=function(str,chars){str=str+"";if(typeof(str)!="string"){return null;}
if(!chars){return str.replace(/\s+$/,"");}else{return str.replace(new RegExp("["+chars+"]+$"),"");}};MochiKit.Format.strip=function(str,chars){var self=MochiKit.Format;return self.rstrip(self.lstrip(str,chars),chars);};MochiKit.Format.truncToFixed=function(aNumber,precision){var res=Math.floor(aNumber).toFixed(0);if(aNumber<0){res=Math.ceil(aNumber).toFixed(0);if(res.charAt(0)!="-"&&precision>0){res="-"+res;}}
if(res.indexOf("e")<0&&precision>0){var tail=aNumber.toString();if(tail.indexOf("e")>0){tail=".";}else if(tail.indexOf(".")<0){tail=".";}else{tail=tail.substring(tail.indexOf("."));}
if(tail.length-1>precision){tail=tail.substring(0,precision+1);}
while(tail.length-1<precision){tail+="0";}
res+=tail;}
return res;};MochiKit.Format.roundToFixed=function(aNumber,precision){var upper=Math.abs(aNumber)+0.5*Math.pow(10,-precision);var res=MochiKit.Format.truncToFixed(upper,precision);if(aNumber<0){res="-"+res;}
return res;};MochiKit.Format.percentFormat=function(aNumber){return MochiKit.Format.twoDigitFloat(100*aNumber)+'%';};MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"];MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},pt_BR:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"};MochiKit.Format.EXPORT_OK=[];MochiKit.Format.EXPORT_TAGS={':all':MochiKit.Format.EXPORT,':common':MochiKit.Format.EXPORT};MochiKit.Format.__new__=function(){var base=this.NAME+".";var k,v,o;for(k in this.LOCALE){o=this.LOCALE[k];if(typeof(o)=="object"){o.repr=function(){return this.NAME;};o.NAME=base+"LOCALE."+k;}}
for(k in this){o=this[k];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+k;}catch(e){}}}};MochiKit.Format.__new__();if(typeof(MochiKit.Base)!="undefined"){MochiKit.Base._exportSymbols(this,MochiKit.Format);}else{(function(globals,module){if((typeof(JSAN)=='undefined'&&typeof(dojo)=='undefined')||(MochiKit.__export__===false)){var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[all[i]];}}})(this,MochiKit.Format);};MochiKit.Base._deps('Async',['Base']);MochiKit.Async.NAME="MochiKit.Async";MochiKit.Async.VERSION="1.4";MochiKit.Async.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Async.toString=function(){return this.__repr__();};MochiKit.Async.Deferred=function(canceller){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=canceller;this.silentlyCancelled=false;this.chained=false;};MochiKit.Async.Deferred.prototype={repr:function(){var state;if(this.fired==-1){state='unfired';}else if(this.fired===0){state='success';}else{state='error';}
return'Deferred('+this.id+', '+state+')';},toString:MochiKit.Base.forwardCall("repr"),_nextId:MochiKit.Base.counter(),cancel:function(){var self=MochiKit.Async;if(this.fired==-1){if(this.canceller){this.canceller(this);}else{this.silentlyCancelled=true;}
if(this.fired==-1){this.errback(new self.CancelledError(this));}}else if((this.fired===0)&&(this.results[0]instanceof self.Deferred)){this.results[0].cancel();}},_resback:function(res){this.fired=((res instanceof Error)?1:0);this.results[this.fired]=res;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new MochiKit.Async.AlreadyCalledError(this);}
this.silentlyCancelled=false;return;}},callback:function(res){this._check();if(res instanceof MochiKit.Async.Deferred){throw new Error("Deferred instances can only be chained if they are the result of a callback");}
this._resback(res);},errback:function(res){this._check();var self=MochiKit.Async;if(res instanceof self.Deferred){throw new Error("Deferred instances can only be chained if they are the result of a callback");}
if(!(res instanceof Error)){res=new self.GenericError(res);}
this._resback(res);},addBoth:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,fn);},addCallback:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,null);},addErrback:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(null,fn);},addCallbacks:function(cb,eb){if(this.chained){throw new Error("Chained Deferreds can not be re-used");}
this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}
return this;},_fire:function(){var chain=this.chain;var fired=this.fired;var res=this.results[fired];var self=this;var cb=null;while(chain.length>0&&this.paused===0){var pair=chain.shift();var f=pair[fired];if(f===null){continue;}
try{res=f(res);fired=((res instanceof Error)?1:0);if(res instanceof MochiKit.Async.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused===0)&&(self.fired>=0)){self._fire();}};this.paused++;}}catch(err){fired=1;if(!(err instanceof Error)){err=new MochiKit.Async.GenericError(err);}
res=err;}}
this.fired=fired;this.results[fired]=res;if(cb&&this.paused){res.addBoth(cb);res.chained=true;}}};MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(req){return MochiKit.Base.evalJSON(req.responseText);},succeed:function(result){var d=new MochiKit.Async.Deferred();d.callback.apply(d,arguments);return d;},fail:function(result){var d=new MochiKit.Async.Deferred();d.errback.apply(d,arguments);return d;},getXMLHttpRequest:function(){var self=arguments.callee;if(!self.XMLHttpRequest){var tryThese=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP');},function(){return new ActiveXObject('Microsoft.XMLHTTP');},function(){return new ActiveXObject('Msxml2.XMLHTTP.4.0');},function(){throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest");}];for(var i=0;i<tryThese.length;i++){var func=tryThese[i];try{self.XMLHttpRequest=func;return func();}catch(e){}}}
return self.XMLHttpRequest();},_xhr_onreadystatechange:function(d){var m=MochiKit.Base;if(this.readyState==4){try{this.onreadystatechange=null;}catch(e){try{this.onreadystatechange=m.noop;}catch(e){}}
var status=null;try{status=this.status;if(!status&&m.isNotEmpty(this.responseText)){status=304;}}catch(e){}
if(status==200||status==201||status==204||status==304||status==1223){d.callback(this);}else{var err=new MochiKit.Async.XMLHttpRequestError(this,"Request failed");if(err.number){d.errback(err);}else{d.errback(err);}}}},_xhr_canceller:function(req){try{req.onreadystatechange=null;}catch(e){try{req.onreadystatechange=MochiKit.Base.noop;}catch(e){}}
req.abort();},sendXMLHttpRequest:function(req,sendContent){if(typeof(sendContent)=="undefined"||sendContent===null){sendContent="";}
var m=MochiKit.Base;var self=MochiKit.Async;var d=new self.Deferred(m.partial(self._xhr_canceller,req));try{req.onreadystatechange=m.bind(self._xhr_onreadystatechange,req,d);req.send(sendContent);}catch(e){try{req.onreadystatechange=null;}catch(ignore){}
d.errback(e);}
return d;},doXHR:function(url,opts){var self=MochiKit.Async;return self.callLater(0,self._doXHR,url,opts);},_doXHR:function(url,opts){var m=MochiKit.Base;opts=m.update({method:'GET',sendContent:''},opts);var self=MochiKit.Async;var req=self.getXMLHttpRequest();if(opts.queryString){var qs=m.queryString(opts.queryString);if(qs){url+="?"+qs;}}
if('username'in opts){req.open(opts.method,url,true,opts.username,opts.password);}else{req.open(opts.method,url,true);}
if(req.overrideMimeType&&opts.mimeType){req.overrideMimeType(opts.mimeType);}
req.setRequestHeader("X-Requested-With","XMLHttpRequest");if(opts.headers){var headers=opts.headers;if(!m.isArrayLike(headers)){headers=m.items(headers);}
for(var i=0;i<headers.length;i++){var header=headers[i];var name=header[0];var value=header[1];req.setRequestHeader(name,value);}}
return self.sendXMLHttpRequest(req,opts.sendContent);},_buildURL:function(url){if(arguments.length>1){var m=MochiKit.Base;var qs=m.queryString.apply(null,m.extend(null,arguments,1));if(qs){return url+"?"+qs;}}
return url;},doSimpleXMLHttpRequest:function(url){var self=MochiKit.Async;url=self._buildURL.apply(self,arguments);return self.doXHR(url);},loadJSONDoc:function(url){var self=MochiKit.Async;url=self._buildURL.apply(self,arguments);var d=self.doXHR(url,{'mimeType':'text/plain','headers':[['Accept','application/json']]});d=d.addCallback(self.evalJSONRequest);return d;},wait:function(seconds,value){var d=new MochiKit.Async.Deferred();var m=MochiKit.Base;if(typeof(value)!='undefined'){d.addCallback(function(){return value;});}
var timeout=setTimeout(m.bind("callback",d),Math.floor(seconds*1000));d.canceller=function(){try{clearTimeout(timeout);}catch(e){}};return d;},callLater:function(seconds,func){var m=MochiKit.Base;var pfunc=m.partial.apply(m,m.extend(null,arguments,1));return MochiKit.Async.wait(seconds).addCallback(function(res){return pfunc();});}});MochiKit.Async.DeferredLock=function(){this.waiting=[];this.locked=false;this.id=this._nextId();};MochiKit.Async.DeferredLock.prototype={__class__:MochiKit.Async.DeferredLock,acquire:function(){var d=new MochiKit.Async.Deferred();if(this.locked){this.waiting.push(d);}else{this.locked=true;d.callback(this);}
return d;},release:function(){if(!this.locked){throw TypeError("Tried to release an unlocked DeferredLock");}
this.locked=false;if(this.waiting.length>0){this.locked=true;this.waiting.shift().callback(this);}},_nextId:MochiKit.Base.counter(),repr:function(){var state;if(this.locked){state='locked, '+this.waiting.length+' waiting';}else{state='unlocked';}
return'DeferredLock('+this.id+', '+state+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Async.DeferredList=function(list,fireOnOneCallback,fireOnOneErrback,consumeErrors,canceller){MochiKit.Async.Deferred.apply(this,[canceller]);this.list=list;var resultList=[];this.resultList=resultList;this.finishedCount=0;this.fireOnOneCallback=fireOnOneCallback;this.fireOnOneErrback=fireOnOneErrback;this.consumeErrors=consumeErrors;var cb=MochiKit.Base.bind(this._cbDeferred,this);for(var i=0;i<list.length;i++){var d=list[i];resultList.push(undefined);d.addCallback(cb,i,true);d.addErrback(cb,i,false);}
if(list.length===0&&!fireOnOneCallback){this.callback(this.resultList);}};MochiKit.Async.DeferredList.prototype=new MochiKit.Async.Deferred();MochiKit.Async.DeferredList.prototype._cbDeferred=function(index,succeeded,result){this.resultList[index]=[succeeded,result];this.finishedCount+=1;if(this.fired==-1){if(succeeded&&this.fireOnOneCallback){this.callback([index,result]);}else if(!succeeded&&this.fireOnOneErrback){this.errback(result);}else if(this.finishedCount==this.list.length){this.callback(this.resultList);}}
if(!succeeded&&this.consumeErrors){result=null;}
return result;};MochiKit.Async.gatherResults=function(deferredList){var d=new MochiKit.Async.DeferredList(deferredList,false,true,false);d.addCallback(function(results){var ret=[];for(var i=0;i<results.length;i++){ret.push(results[i][1]);}
return ret;});return d;};MochiKit.Async.maybeDeferred=function(func){var self=MochiKit.Async;var result;try{var r=func.apply(null,MochiKit.Base.extend([],arguments,1));if(r instanceof self.Deferred){result=r;}else if(r instanceof Error){result=self.fail(r);}else{result=self.succeed(r);}}catch(e){result=self.fail(e);}
return result;};MochiKit.Async.EXPORT=["AlreadyCalledError","CancelledError","BrowserComplianceError","GenericError","XMLHttpRequestError","Deferred","succeed","fail","getXMLHttpRequest","doSimpleXMLHttpRequest","loadJSONDoc","wait","callLater","sendXMLHttpRequest","DeferredLock","DeferredList","gatherResults","maybeDeferred","doXHR"];MochiKit.Async.EXPORT_OK=["evalJSONRequest"];MochiKit.Async.__new__=function(){var m=MochiKit.Base;var ne=m.partial(m._newNamedError,this);ne("AlreadyCalledError",function(deferred){this.deferred=deferred;});ne("CancelledError",function(deferred){this.deferred=deferred;});ne("BrowserComplianceError",function(msg){this.message=msg;});ne("GenericError",function(msg){this.message=msg;});ne("XMLHttpRequestError",function(req,msg){this.req=req;this.message=msg;try{this.number=req.status;}catch(e){}});this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Async.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Async);;MochiKit.Base._deps('DOM',['Base']);MochiKit.DOM.NAME="MochiKit.DOM";MochiKit.DOM.VERSION="1.4";MochiKit.DOM.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.DOM.toString=function(){return this.__repr__();};MochiKit.DOM.unique_ids_assigned=0;MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","H4","H5","H6","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","DL","DT","DD","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","escapeHTML","toHTML","emitHTML","scrapeText","isParent","getFirstParentByTagAndClassName","makeClipping","undoClipping","makePositioned","undoPositioned","getFirstElementByTagAndClassName"];MochiKit.DOM.EXPORT_OK=["domConverters"];MochiKit.DOM.DEPRECATED=[['computedStyle','MochiKit.Style.getStyle','1.4'],['elementDimensions','MochiKit.Style.getElementDimensions','1.4'],['elementPosition','MochiKit.Style.getElementPosition','1.4'],['hideElement','MochiKit.Style.hideElement','1.4'],['setElementDimensions','MochiKit.Style.setElementDimensions','1.4'],['setElementPosition','MochiKit.Style.setElementPosition','1.4'],['setDisplayForElement','MochiKit.Style.setDisplayForElement','1.4'],['setOpacity','MochiKit.Style.setOpacity','1.4'],['showElement','MochiKit.Style.showElement','1.4'],['Coordinates','MochiKit.Style.Coordinates','1.4'],['Dimensions','MochiKit.Style.Dimensions','1.4']];MochiKit.DOM.getViewportDimensions=new Function(''+'if (!MochiKit["Style"]) {'+'    throw new Error("This function has been deprecated and depends on MochiKit.Style.");'+'}'+'return MochiKit.Style.getViewportDimensions.apply(this, arguments);');MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){return MochiKit.DOM._window;},currentDocument:function(){return MochiKit.DOM._document;},withWindow:function(win,func){var self=MochiKit.DOM;var oldDoc=self._document;var oldWin=self._window;var rval;try{self._window=win;self._document=win.document;rval=func();}catch(e){self._window=oldWin;self._document=oldDoc;throw e;}
self._window=oldWin;self._document=oldDoc;return rval;},formContents:function(elem){var names=[];var values=[];var m=MochiKit.Base;var self=MochiKit.DOM;if(typeof(elem)=="undefined"||elem===null){elem=self._document.body;}else{elem=self.getElement(elem);}
m.nodeWalk(elem,function(elem){var name=elem.name;if(m.isNotEmpty(name)){var tagName=elem.tagName.toUpperCase();if(tagName==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){return null;}
if(tagName==="SELECT"){if(elem.type=="select-one"){if(elem.selectedIndex>=0){var opt=elem.options[elem.selectedIndex];var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);return null;}
names.push(name);values.push("");return null;}else{var opts=elem.options;if(!opts.length){names.push(name);values.push("");return null;}
for(var i=0;i<opts.length;i++){var opt=opts[i];if(!opt.selected){continue;}
var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);}
return null;}}
if(tagName==="FORM"||tagName==="P"||tagName==="SPAN"||tagName==="DIV"){return elem.childNodes;}
names.push(name);values.push(elem.value||'');return null;}
return elem.childNodes;});return[names,values];},withDocument:function(doc,func){var self=MochiKit.DOM;var oldDoc=self._document;var rval;try{self._document=doc;rval=func();}catch(e){self._document=oldDoc;throw e;}
self._document=oldDoc;return rval;},registerDOMConverter:function(name,check,wrap,override){MochiKit.DOM.domConverters.register(name,check,wrap,override);},coerceToDOM:function(node,ctx){var m=MochiKit.Base;var im=MochiKit.Iter;var self=MochiKit.DOM;if(im){var iter=im.iter;var repeat=im.repeat;var map=m.map;}
var domConverters=self.domConverters;var coerceToDOM=arguments.callee;var NotFound=m.NotFound;while(true){if(typeof(node)=='undefined'||node===null){return null;}
if(typeof(node)=="function"&&typeof(node.length)=="number"&&!(node instanceof Function)){node=im.list(node);}
if(typeof(node.nodeType)!='undefined'&&node.nodeType>0){return node;}
if(typeof(node)=='number'||typeof(node)=='boolean'){node=node.toString();}
if(typeof(node)=='string'){return self._document.createTextNode(node);}
if(typeof(node.__dom__)=='function'){node=node.__dom__(ctx);continue;}
if(typeof(node.dom)=='function'){node=node.dom(ctx);continue;}
if(typeof(node)=='function'){node=node.apply(ctx,[ctx]);continue;}
if(im){var iterNodes=null;try{iterNodes=iter(node);}catch(e){}
if(iterNodes){return map(coerceToDOM,iterNodes,repeat(ctx));}}
try{node=domConverters.match(node,ctx);continue;}catch(e){if(e!=NotFound){throw e;}}
return self._document.createTextNode(node.toString());}
return undefined;},isChildNode:function(node,maybeparent){var self=MochiKit.DOM;if(typeof(node)=="string"){node=self.getElement(node);}
if(typeof(maybeparent)=="string"){maybeparent=self.getElement(maybeparent);}
if(typeof(node)=='undefined'||node===null){return false;}
while(node!=null&&node!==self._document){if(node===maybeparent){return true;}
node=node.parentNode;}
return false;},setNodeAttribute:function(node,attr,value){var o={};o[attr]=value;try{return MochiKit.DOM.updateNodeAttributes(node,o);}catch(e){}
return null;},getNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.getAttribute(attr);}catch(e){}
return null;},removeNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.removeAttribute(attr);}catch(e){}
return null;},updateNodeAttributes:function(node,attrs){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
if(attrs){var updatetree=MochiKit.Base.updatetree;if(self.attributeArray.compliant){for(var k in attrs){var v=attrs[k];if(typeof(v)=='object'&&typeof(elem[k])=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(elem[k],v);}}else if(k.substring(0,2)=="on"){if(typeof(v)=="string"){v=new Function(v);}
elem[k]=v;}else{elem.setAttribute(k,v);}}}else{var renames=self.attributeArray.renames;for(var k in attrs){v=attrs[k];var renamed=renames[k];if(k=="style"&&typeof(v)=="string"){elem.style.cssText=v;}else if(typeof(renamed)=="string"){elem[renamed]=v;}else if(typeof(elem[k])=='object'&&typeof(v)=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(elem[k],v);}}else if(k.substring(0,2)=="on"){if(typeof(v)=="string"){v=new Function(v);}
elem[k]=v;}else{elem.setAttribute(k,v);}}}}
return elem;},appendChildNodes:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){elem.appendChild(n);}else{nodeStack=concat(n,nodeStack);}}
return elem;},insertSiblingNodesBefore:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var parentnode=elem.parentNode;var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){parentnode.insertBefore(n,elem);}else{nodeStack=concat(n,nodeStack);}}
return parentnode;},insertSiblingNodesAfter:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];if(elem.nextSibling){return self.insertSiblingNodesBefore(elem.nextSibling,nodeStack);}
else{return self.appendChildNodes(elem.parentNode,nodeStack);}},replaceChildNodes:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);arguments[0]=elem;}
var child;while((child=elem.firstChild)){elem.removeChild(child);}
if(arguments.length<2){return elem;}else{return self.appendChildNodes.apply(this,arguments);}},createDOM:function(name,attrs){var elem;var self=MochiKit.DOM;var m=MochiKit.Base;if(typeof(attrs)=="string"||typeof(attrs)=="number"){var args=m.extend([name,null],arguments,1);return arguments.callee.apply(this,args);}
if(typeof(name)=='string'){var xhtml=self._xhtml;if(attrs&&!self.attributeArray.compliant){var contents="";if('name'in attrs){contents+=' name="'+self.escapeHTML(attrs.name)+'"';}
if(name=='input'&&'type'in attrs){contents+=' type="'+self.escapeHTML(attrs.type)+'"';}
if(contents){name="<"+name+contents+">";xhtml=false;}}
var d=self._document;if(xhtml&&d===document){elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);}else{elem=d.createElement(name);}}else{elem=name;}
if(attrs){MochiKit.DOM.unique_ids_assigned++;attrs["id"]=attrs["id"]?attrs["id"]:("element_"+MochiKit.DOM.unique_ids_assigned);self.updateNodeAttributes(elem,attrs);}
if(arguments.length<=2){return elem;}else{var args=m.extend([elem],arguments,2);return self.appendChildNodes.apply(this,args);}},createDOMFunc:function(){var m=MochiKit.Base;return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));},removeElement:function(elem){var e=MochiKit.DOM.getElement(elem);e.parentNode.removeChild(e);return e;},swapDOM:function(dest,src){var self=MochiKit.DOM;dest=self.getElement(dest);var parent=dest.parentNode;if(src){src=self.getElement(src);parent.replaceChild(src,dest);}else{parent.removeChild(dest);}
return src;},getElement:function(id){var self=MochiKit.DOM;if(arguments.length==1){return((typeof(id)=="string")?self._document.getElementById(id):id);}else{return MochiKit.Base.map(self.getElement,arguments);}},getElementsByTagAndClassName:function(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return MochiKit.Base.extend(null,children);}
var elements=[];for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(typeof(cls)!="string"){cls=child.getAttribute("class");}
if(typeof(cls)=="string"){var classNames=cls.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){elements.push(child);break;}}}}
return elements;},_newCallStack:function(path,once){var rval=function(){var callStack=arguments.callee.callStack;for(var i=0;i<callStack.length;i++){if(callStack[i].apply(this,arguments)===false){break;}}
if(once){try{this[path]=null;}catch(e){}}};rval.callStack=[];return rval;},addToCallStack:function(target,path,func,once){var self=MochiKit.DOM;var existing=target[path];var regfunc=existing;if(!(typeof(existing)=='function'&&typeof(existing.callStack)=="object"&&existing.callStack!==null)){regfunc=self._newCallStack(path,once);if(typeof(existing)=='function'){regfunc.callStack.push(existing);}
target[path]=regfunc;}
regfunc.callStack.push(func);},addLoadEvent:function(func){var self=MochiKit.DOM;self.addToCallStack(self._window,"onload",func,true);},focusOnLoad:function(element){var self=MochiKit.DOM;self.addLoadEvent(function(){element=self.getElement(element);if(element){element.focus();}});},setElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);if(self.attributeArray.compliant){obj.setAttribute("class",className);}else{obj.setAttribute("className",className);}},toggleElementClass:function(className){var self=MochiKit.DOM;for(var i=1;i<arguments.length;i++){var obj=self.getElement(arguments[i]);if(!self.addElementClass(obj,className)){self.removeElementClass(obj,className);}}},addElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"||cls.length===0){self.setElementClass(obj,className);return true;}
if(cls==className){return false;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){return false;}}
self.setElementClass(obj,cls+" "+className);return true;},removeElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"||cls.length===0){return false;}
if(cls==className){self.setElementClass(obj,"");return true;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){classes.splice(i,1);self.setElementClass(obj,classes.join(" "));return true;}}
return false;},swapElementClass:function(element,fromClass,toClass){var obj=MochiKit.DOM.getElement(element);var res=MochiKit.DOM.removeElementClass(obj,fromClass);if(res){MochiKit.DOM.addElementClass(obj,toClass);}
return res;},hasElementClass:function(element,className){var obj=MochiKit.DOM.getElement(element);var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class");}
if(typeof(cls)!="string"){return false;}
var classes=cls.split(" ");for(var i=1;i<arguments.length;i++){var good=false;for(var j=0;j<classes.length;j++){if(classes[j]==arguments[i]){good=true;break;}}
if(!good){return false;}}
return true;},escapeHTML:function(s){return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");},toHTML:function(dom){return MochiKit.DOM.emitHTML(dom).join("");},emitHTML:function(dom,lst){if(typeof(lst)=='undefined'||lst===null){lst=[];}
var queue=[dom];var self=MochiKit.DOM;var escapeHTML=self.escapeHTML;var attributeArray=self.attributeArray;while(queue.length){dom=queue.pop();if(typeof(dom)=='string'){lst.push(dom);}else if(dom.nodeType==1){lst.push('<'+dom.tagName.toLowerCase());var attributes=[];var domAttr=attributeArray(dom);for(var i=0;i<domAttr.length;i++){var a=domAttr[i];attributes.push([" ",a.name,'="',escapeHTML(a.value),'"']);}
attributes.sort();for(i=0;i<attributes.length;i++){var attrs=attributes[i];for(var j=0;j<attrs.length;j++){lst.push(attrs[j]);}}
if(dom.hasChildNodes()){lst.push(">");queue.push("</"+dom.tagName.toLowerCase()+">");var cnodes=dom.childNodes;for(i=cnodes.length-1;i>=0;i--){queue.push(cnodes[i]);}}else{lst.push('/>');}}else if(dom.nodeType==3){lst.push(escapeHTML(dom.nodeValue));}}
return lst;},scrapeText:function(node,asArray){var rval=[];(function(node){var cn=node.childNodes;if(cn){for(var i=0;i<cn.length;i++){arguments.callee.call(this,cn[i]);}}
var nodeValue=node.nodeValue;if(typeof(nodeValue)=='string'){rval.push(nodeValue);}})(MochiKit.DOM.getElement(node));if(asArray){return rval;}else{return rval.join("");}},removeEmptyTextNodes:function(element){element=MochiKit.DOM.getElement(element);for(var i=0;i<element.childNodes.length;i++){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue)){node.parentNode.removeChild(node);}}},makeClipping:function(element){element=MochiKit.DOM.getElement(element);var oldOverflow=element.style.overflow;if((MochiKit.Style.getStyle(element,'overflow')||'visible')!='hidden'){element.style.overflow='hidden';}
return oldOverflow;},undoClipping:function(element,overflow){element=MochiKit.DOM.getElement(element);if(!overflow){return;}
element.style.overflow=overflow;},makePositioned:function(element){element=MochiKit.DOM.getElement(element);var pos=MochiKit.Style.getStyle(element,'position');if(pos=='static'||!pos){element.style.position='relative';if(/Opera/.test(navigator.userAgent)){element.style.top=0;element.style.left=0;}}},undoPositioned:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=='relative'){element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}},getFirstElementByTagAndClassName:function(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return children[0];}
for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(typeof(cls)!="string"){cls=child.getAttribute("class");}
if(typeof(cls)=="string"){var classNames=cls.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){return child;}}}}},getFirstParentByTagAndClassName:function(elem,tagName,className){var self=MochiKit.DOM;elem=self.getElement(elem);if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}else{tagName=tagName.toUpperCase();}
if(typeof(className)=='undefined'||className===null){className=null;}
if(elem){elem=elem.parentNode;}
while(elem&&elem.tagName){var curTagName=elem.tagName.toUpperCase();if((tagName==='*'||tagName==curTagName)&&(className===null||self.hasElementClass(elem,className))){return elem;}
elem=elem.parentNode;}
return null;},isParent:function(child,element){if(!child.parentNode||child==element){return false;}
if(child.parentNode==element){return true;}
return MochiKit.DOM.isParent(child.parentNode,element);},__new__:function(win){var m=MochiKit.Base;if(typeof(document)!="undefined"){this._document=document;var kXULNSURI="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===kXULNSURI);}else if(MochiKit.MockDOM){this._document=MochiKit.MockDOM.document;}
this._window=win;this.domConverters=new m.AdapterRegistry();var __tmpElement=this._document.createElement("span");var attributeArray;if(__tmpElement&&__tmpElement.attributes&&__tmpElement.attributes.length>0){var filter=m.filter;attributeArray=function(node){return filter(attributeArray.ignoreAttrFilter,node.attributes);};attributeArray.ignoreAttr={};var attrs=__tmpElement.attributes;var ignoreAttr=attributeArray.ignoreAttr;for(var i=0;i<attrs.length;i++){var a=attrs[i];ignoreAttr[a.name]=a.value;}
attributeArray.ignoreAttrFilter=function(a){return(attributeArray.ignoreAttr[a.name]!=a.value);};attributeArray.compliant=false;attributeArray.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};}else{attributeArray=function(node){return node.attributes;};attributeArray.compliant=true;attributeArray.renames={};}
this.attributeArray=attributeArray;var _deprecated=function(fromModule,arr){var fromName=arr[0];var toName=arr[1];var toModule=toName.split('.')[1];var str='';str+='if (!MochiKit.'+toModule+') { throw new Error("';str+='This function has been deprecated and depends on MochiKit.';str+=toModule+'.");}';str+='return '+toName+'.apply(this, arguments);';MochiKit[fromModule][fromName]=new Function(str);}
for(var i=0;i<MochiKit.DOM.DEPRECATED.length;i++){_deprecated('DOM',MochiKit.DOM.DEPRECATED[i]);}
var createDOMFunc=this.createDOMFunc;this.UL=createDOMFunc("ul");this.OL=createDOMFunc("ol");this.LI=createDOMFunc("li");this.DL=createDOMFunc("dl");this.DT=createDOMFunc("dt");this.DD=createDOMFunc("dd");this.TD=createDOMFunc("td");this.TR=createDOMFunc("tr");this.TBODY=createDOMFunc("tbody");this.THEAD=createDOMFunc("thead");this.TFOOT=createDOMFunc("tfoot");this.TABLE=createDOMFunc("table");this.TH=createDOMFunc("th");this.INPUT=createDOMFunc("input");this.SPAN=createDOMFunc("span");this.A=createDOMFunc("a");this.DIV=createDOMFunc("div");this.IMG=createDOMFunc("img");this.BUTTON=createDOMFunc("button");this.TT=createDOMFunc("tt");this.PRE=createDOMFunc("pre");this.H1=createDOMFunc("h1");this.H2=createDOMFunc("h2");this.H3=createDOMFunc("h3");this.H4=createDOMFunc("h4");this.H5=createDOMFunc("h5");this.H6=createDOMFunc("h6");this.BR=createDOMFunc("br");this.HR=createDOMFunc("hr");this.LABEL=createDOMFunc("label");this.TEXTAREA=createDOMFunc("textarea");this.FORM=createDOMFunc("form");this.P=createDOMFunc("p");this.SELECT=createDOMFunc("select");this.OPTION=createDOMFunc("option");this.OPTGROUP=createDOMFunc("optgroup");this.LEGEND=createDOMFunc("legend");this.FIELDSET=createDOMFunc("fieldset");this.STRONG=createDOMFunc("strong");this.CANVAS=createDOMFunc("canvas");this.$=this.getElement;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.DOM.__new__(((typeof(window)=="undefined")?this:window));if(MochiKit.__export__){withWindow=MochiKit.DOM.withWindow;withDocument=MochiKit.DOM.withDocument;}
MochiKit.Base._exportSymbols(this,MochiKit.DOM);;MochiKit.Base._deps('Selector',['Base','DOM','Iter']);MochiKit.Selector.NAME="MochiKit.Selector";MochiKit.Selector.VERSION="1.4";MochiKit.Selector.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Selector.toString=function(){return this.__repr__();};MochiKit.Selector.EXPORT=["Selector","findChildElements","findDocElements","$$"];MochiKit.Selector.EXPORT_OK=[];MochiKit.Selector.Selector=function(expression){this.params={classNames:[],pseudoClassNames:[]};this.expression=expression.toString().replace(/(^\s+|\s+$)/g,'');this.parseExpression();this.compileMatcher();};MochiKit.Selector.Selector.prototype={__class__:MochiKit.Selector.Selector,parseExpression:function(){function abort(message){throw'Parse error in selector: '+message;}
if(this.expression==''){abort('empty expression');}
var repr=MochiKit.Base.repr;var params=this.params;var expr=this.expression;var 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':':params.pseudoClassNames.push(clause);break;case'':case undefined:params.tagName=clause.toUpperCase();break;default:abort(repr(expr));}
expr=rest;}
if(expr.length>0){abort(repr(expr));}},buildMatchExpression:function(){var repr=MochiKit.Base.repr;var params=this.params;var conditions=[];var clause,i;function childElements(element){return"MochiKit.Base.filter(function (node) { return node.nodeType == 1; }, "+element+".childNodes)";}
if(params.wildcard){conditions.push('true');}
if(clause=params.id){conditions.push('element.id == '+repr(clause));}
if(clause=params.tagName){conditions.push('element.tagName.toUpperCase() == '+repr(clause));}
if((clause=params.classNames).length>0){for(i=0;i<clause.length;i++){conditions.push('MochiKit.DOM.hasElementClass(element, '+repr(clause[i])+')');}}
if((clause=params.pseudoClassNames).length>0){for(i=0;i<clause.length;i++){var match=clause[i].match(/^([^(]+)(?:\((.*)\))?$/);var pseudoClass=match[1];var pseudoClassArgument=match[2];switch(pseudoClass){case'root':conditions.push('element.nodeType == 9 || element === element.ownerDocument.documentElement');break;case'nth-child':case'nth-last-child':case'nth-of-type':case'nth-last-of-type':match=pseudoClassArgument.match(/^((?:(\d+)n\+)?(\d+)|odd|even)$/);if(!match){throw"Invalid argument to pseudo element nth-child: "+pseudoClassArgument;}
var a,b;if(match[0]=='odd'){a=2;b=1;}else if(match[0]=='even'){a=2;b=0;}else{a=match[2]&&parseInt(match)||null;b=parseInt(match[3]);}
conditions.push('this.nthChild(element,'+a+','+b
+','+!!pseudoClass.match('^nth-last')
+','+!!pseudoClass.match('of-type$')
+')');break;case'first-child':conditions.push('this.nthChild(element, null, 1)');break;case'last-child':conditions.push('this.nthChild(element, null, 1, true)');break;case'first-of-type':conditions.push('this.nthChild(element, null, 1, false, true)');break;case'last-of-type':conditions.push('this.nthChild(element, null, 1, true, true)');break;case'only-child':conditions.push(childElements('element.parentNode')+'.length == 1');break;case'only-of-type':conditions.push('MochiKit.Base.filter(function (node) { return node.tagName == element.tagName; }, '+childElements('element.parentNode')+').length == 1');break;case'empty':conditions.push('element.childNodes.length == 0');break;case'enabled':conditions.push('(this.isUIElement(element) && element.disabled === false)');break;case'disabled':conditions.push('(this.isUIElement(element) && element.disabled === true)');break;case'checked':conditions.push('(this.isUIElement(element) && element.checked === true)');break;case'not':var subselector=new MochiKit.Selector.Selector(pseudoClassArgument);conditions.push('!( '+subselector.buildMatchExpression()+')')
break;}}}
if(clause=params.attributes){MochiKit.Base.map(function(attribute){var value='MochiKit.DOM.getNodeAttribute(element, '+repr(attribute.name)+')';var splitValueBy=function(delimiter){return value+'.split('+repr(delimiter)+')';}
switch(attribute.operator){case'=':conditions.push(value+' == '+repr(attribute.value));break;case'~=':conditions.push(value+' && MochiKit.Base.findValue('+splitValueBy(' ')+', '+repr(attribute.value)+') > -1');break;case'^=':conditions.push(value+'.substring(0, '+attribute.value.length+') == '+repr(attribute.value));break;case'$=':conditions.push(value+'.substring('+value+'.length - '+attribute.value.length+') == '+repr(attribute.value));break;case'*=':conditions.push(value+'.match('+repr(attribute.value)+')');break;case'|=':conditions.push(value+' && '+splitValueBy('-')+'[0].toUpperCase() == '+repr(attribute.value.toUpperCase()));break;case'!=':conditions.push(value+' != '+repr(attribute.value));break;case'':case undefined:conditions.push(value+' != null');break;default:throw'Unknown operator '+attribute.operator+' in selector';}},clause);}
return conditions.join(' && ');},compileMatcher:function(){this.match=new Function('element','if (!element.tagName) return false; \
                return '+this.buildMatchExpression());},nthChild:function(element,a,b,reverse,sametag){var siblings=MochiKit.Base.filter(function(node){return node.nodeType==1;},element.parentNode.childNodes);if(sametag){siblings=MochiKit.Base.filter(function(node){return node.tagName==element.tagName;},siblings);}
if(reverse){siblings=MochiKit.Iter.reversed(siblings);}
if(a){var actualIndex=MochiKit.Base.findIdentical(siblings,element);return((actualIndex+1-b)/a)%1==0;}else{return b==MochiKit.Base.findIdentical(siblings,element)+1;}},isUIElement:function(element){return MochiKit.Base.findValue(['input','button','select','option','textarea','object'],element.tagName.toLowerCase())>-1;},findElements:function(scope,axis){var element;if(axis==undefined){axis="";}
function inScope(element,scope){if(axis==""){return MochiKit.DOM.isChildNode(element,scope);}else if(axis==">"){return element.parentNode==scope;}else if(axis=="+"){return element==nextSiblingElement(scope);}else if(axis=="~"){var sibling=scope;while(sibling=nextSiblingElement(sibling)){if(element==sibling){return true;}}
return false;}else{throw"Invalid axis: "+axis;}}
if(element=MochiKit.DOM.getElement(this.params.id)){if(this.match(element)){if(!scope||inScope(element,scope)){return[element];}}}
function nextSiblingElement(node){node=node.nextSibling;while(node&&node.nodeType!=1){node=node.nextSibling;}
return node;}
if(axis==""){scope=(scope||MochiKit.DOM.currentDocument()).getElementsByTagName(this.params.tagName||'*');}else if(axis==">"){if(!scope){throw"> combinator not allowed without preceeding expression";}
scope=MochiKit.Base.filter(function(node){return node.nodeType==1;},scope.childNodes);}else if(axis=="+"){if(!scope){throw"+ combinator not allowed without preceeding expression";}
scope=nextSiblingElement(scope)&&[nextSiblingElement(scope)];}else if(axis=="~"){if(!scope){throw"~ combinator not allowed without preceeding expression";}
var newscope=[];while(nextSiblingElement(scope)){scope=nextSiblingElement(scope);newscope.push(scope);}
scope=newscope;}
if(!scope){return[];}
var results=MochiKit.Base.filter(MochiKit.Base.bind(function(scopeElt){return this.match(scopeElt);},this),scope);return results;},repr:function(){return'Selector('+this.expression+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Base.update(MochiKit.Selector,{findChildElements:function(element,expressions){return MochiKit.Base.flattenArray(MochiKit.Base.map(function(expression){var nextScope="";return MochiKit.Iter.reduce(function(results,expr){if(match=expr.match(/^[>+~]$/)){nextScope=match[0];return results;}else{var selector=new MochiKit.Selector.Selector(expr);var elements=MochiKit.Iter.reduce(function(elements,result){return MochiKit.Base.extend(elements,selector.findElements(result||element,nextScope));},results,[]);nextScope="";return elements;}},expression.replace(/(^\s+|\s+$)/g,'').split(/\s+/),[null]);},expressions));},findDocElements:function(){return MochiKit.Selector.findChildElements(MochiKit.DOM.currentDocument(),arguments);},__new__:function(){var m=MochiKit.Base;this.$$=this.findDocElements;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.Selector.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Selector);;MochiKit.Base._deps('Style',['Base','DOM']);MochiKit.Style.NAME='MochiKit.Style';MochiKit.Style.VERSION='1.4';MochiKit.Style.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Style.toString=function(){return this.__repr__();};MochiKit.Style.EXPORT_OK=[];MochiKit.Style.EXPORT=['setStyle','setOpacity','getStyle','getElementDimensions','elementDimensions','setElementDimensions','getElementPosition','elementPosition','setElementPosition','setDisplayForElement','hideElement','showElement','getViewportDimensions','getViewportPosition','Dimensions','Coordinates'];MochiKit.Style.Dimensions=function(w,h){this.w=w;this.h=h;};MochiKit.Style.Dimensions.prototype.__repr__=function(){var repr=MochiKit.Base.repr;return'{w: '+repr(this.w)+', h: '+repr(this.h)+'}';};MochiKit.Style.Dimensions.prototype.toString=function(){return this.__repr__();};MochiKit.Style.Coordinates=function(x,y){this.x=x;this.y=y;};MochiKit.Style.Coordinates.prototype.__repr__=function(){var repr=MochiKit.Base.repr;return'{x: '+repr(this.x)+', y: '+repr(this.y)+'}';};MochiKit.Style.Coordinates.prototype.toString=function(){return this.__repr__();};MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,cssProperty){var dom=MochiKit.DOM;var d=dom._document;elem=dom.getElement(elem);cssProperty=MochiKit.Base.camelize(cssProperty);if(!elem||elem==d){return undefined;}
if(cssProperty=='opacity'&&typeof(elem.filters)!='undefined'){var opacity=(MochiKit.Style.getStyle(elem,'filter')||'').match(/alpha\(opacity=(.*)\)/);if(opacity&&opacity[1]){return parseFloat(opacity[1])/100;}
return 1.0;}
if(cssProperty=='float'||cssProperty=='cssFloat'||cssProperty=='styleFloat'){if(elem.style["float"]){return elem.style["float"];}else if(elem.style.cssFloat){return elem.style.cssFloat;}else if(elem.style.styleFloat){return elem.style.styleFloat;}else{return"none";}}
var value=elem.style?elem.style[cssProperty]:null;if(!value){if(d.defaultView&&d.defaultView.getComputedStyle){var css=d.defaultView.getComputedStyle(elem,null);cssProperty=cssProperty.replace(/([A-Z])/g,'-$1').toLowerCase();value=css?css.getPropertyValue(cssProperty):null;}else if(elem.currentStyle){value=elem.currentStyle[cssProperty];if(/^\d/.test(value)&&!/px$/.test(value)){var left=elem.style.left;var rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=value||0;value=elem.style.pixelLeft+"px";elem.style.left=left;elem.runtimeStyle.left=rsLeft;}}}
if(cssProperty=='opacity'){value=parseFloat(value);}
if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.findValue(['left','top','right','bottom'],cssProperty)!=-1)){if(MochiKit.Style.getStyle(elem,'position')=='static'){value='auto';}}
return value=='auto'?null:value;},setStyle:function(elem,style){elem=MochiKit.DOM.getElement(elem);for(var name in style){switch(name){case'opacity':MochiKit.Style.setOpacity(elem,style[name]);break;case'float':case'cssFloat':case'styleFloat':if(typeof(elem.style["float"])!="undefined"){elem.style["float"]=style[name];}else if(typeof(elem.style.cssFloat)!="undefined"){elem.style.cssFloat=style[name];}else{elem.style.styleFloat=style[name];}
break;default:elem.style[MochiKit.Base.camelize(name)]=style[name];}}},setOpacity:function(elem,o){elem=MochiKit.DOM.getElement(elem);var self=MochiKit.Style;if(o==1){var toSet=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));elem.style["opacity"]=toSet?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)){elem.style['filter']=self.getStyle(elem,'filter').replace(/alpha\([^\)]*\)/gi,'');}}else{if(o<0.00001){o=0;}
elem.style["opacity"]=o;if(/MSIE/.test(navigator.userAgent)){elem.style['filter']=self.getStyle(elem,'filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+o*100+')';}}},getElementPosition:function(elem,relativeTo){var self=MochiKit.Style;var dom=MochiKit.DOM;elem=dom.getElement(elem);if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,'display')=='none'))){return undefined;}
var c=new self.Coordinates(0,0);var box=null;var parent=null;var d=MochiKit.DOM._document;var de=d.documentElement;var b=d.body;if(!elem.parentNode&&elem.x&&elem.y){c.x+=elem.x||0;c.y+=elem.y||0;}else if(elem.getBoundingClientRect){box=elem.getBoundingClientRect();c.x+=box.left+
(de.scrollLeft||b.scrollLeft)-
(de.clientLeft||0);c.y+=box.top+
(de.scrollTop||b.scrollTop)-
(de.clientTop||0);}else if(elem.offsetParent){c.x+=elem.offsetLeft;c.y+=elem.offsetTop;parent=elem.offsetParent;if(parent!=elem){while(parent){c.x+=parent.offsetLeft;c.y+=parent.offsetTop;parent=parent.offsetParent;}}
var ua=navigator.userAgent.toLowerCase();if((typeof(opera)!='undefined'&&parseFloat(opera.version())<9)||(ua.indexOf('AppleWebKit')!=-1&&self.getStyle(elem,'position')=='absolute')){c.x-=b.offsetLeft;c.y-=b.offsetTop;}
if(elem.parentNode){parent=elem.parentNode;}else{parent=null;}
while(parent){var tagName=parent.tagName.toUpperCase();if(tagName==='BODY'||tagName==='HTML'){break;}
var disp=self.getStyle(parent,'display');if(disp.search(/^inline|table-row.*$/i)){c.x-=parent.scrollLeft;c.y-=parent.scrollTop;}
if(parent.parentNode){parent=parent.parentNode;}else{parent=null;}}}
if(typeof(relativeTo)!='undefined'){relativeTo=arguments.callee(relativeTo);if(relativeTo){c.x-=(relativeTo.x||0);c.y-=(relativeTo.y||0);}}
return c;},setElementPosition:function(elem,newPos,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newPos.x)){newStyle['left']=newPos.x+units;}
if(!isUndefNull(newPos.y)){newStyle['top']=newPos.y+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},getElementDimensions:function(elem,contentSize){var self=MochiKit.Style;var dom=MochiKit.DOM;if(typeof(elem.w)=='number'||typeof(elem.h)=='number'){return new self.Dimensions(elem.w||0,elem.h||0);}
elem=dom.getElement(elem);if(!elem){return undefined;}
var disp=self.getStyle(elem,'display');if(disp=='none'||disp==''||typeof(disp)=='undefined'){var s=elem.style;var originalVisibility=s.visibility;var originalPosition=s.position;var originalDisplay=s.display;s.visibility='hidden';s.position='absolute';s.display='';var originalWidth=elem.offsetWidth;var originalHeight=elem.offsetHeight;s.display=originalDisplay;s.position=originalPosition;s.visibility=originalVisibility;}else{originalWidth=elem.offsetWidth||0;originalHeight=elem.offsetHeight||0;}
if(contentSize){originalWidth-=Math.round((parseFloat(self.getStyle(elem,'paddingLeft'))||0)
+(parseFloat(self.getStyle(elem,'paddingRight'))||0)
+(parseFloat(self.getStyle(elem,'borderLeftWidth'))||0)
+(parseFloat(self.getStyle(elem,'borderRightWidth'))||0));originalHeight-=Math.round((parseFloat(self.getStyle(elem,'paddingTop'))||0)
+(parseFloat(self.getStyle(elem,'paddingBottom'))||0)
+(parseFloat(self.getStyle(elem,'borderTopWidth'))||0)
+(parseFloat(self.getStyle(elem,'borderBottomWidth'))||0));}
return new self.Dimensions(originalWidth,originalHeight);},setElementDimensions:function(elem,newSize,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newSize.w)){newStyle['width']=newSize.w+units;}
if(!isUndefNull(newSize.h)){newStyle['height']=newSize.h+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},setDisplayForElement:function(display,element){var elements=MochiKit.Base.extend(null,arguments,1);var getElement=MochiKit.DOM.getElement;for(var i=0;i<elements.length;i++){element=getElement(elements[i]);if(element){element.style.display=display;}}},getViewportDimensions:function(){var d=new MochiKit.Style.Dimensions();var w=MochiKit.DOM._window;var b=MochiKit.DOM._document.body;if(w.innerWidth){d.w=w.innerWidth;d.h=w.innerHeight;}else if(b.parentElement.clientWidth){d.w=b.parentElement.clientWidth;d.h=b.parentElement.clientHeight;}else if(b&&b.clientWidth){d.w=b.clientWidth;d.h=b.clientHeight;}
return d;},getViewportPosition:function(){var c=new MochiKit.Style.Coordinates(0,0);var d=MochiKit.DOM._document;var de=d.documentElement;var db=d.body;if(de&&(de.scrollTop||de.scrollLeft)){c.x=de.scrollLeft;c.y=de.scrollTop;}else if(db){c.x=db.scrollLeft;c.y=db.scrollTop;}
return c;},__new__:function(){var m=MochiKit.Base;this.elementPosition=this.getElementPosition;this.elementDimensions=this.getElementDimensions;this.hideElement=m.partial(this.setDisplayForElement,'none');this.showElement=m.partial(this.setDisplayForElement,'block');this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);}});MochiKit.Style.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Style);;MochiKit.Base._deps('LoggingPane',['Base','Logging']);MochiKit.LoggingPane.NAME="MochiKit.LoggingPane";MochiKit.LoggingPane.VERSION="1.4";MochiKit.LoggingPane.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.LoggingPane.toString=function(){return this.__repr__();};MochiKit.LoggingPane.createLoggingPane=function(inline){var m=MochiKit.LoggingPane;inline=!(!inline);if(m._loggingPane&&m._loggingPane.inline!=inline){m._loggingPane.closePane();m._loggingPane=null;}
if(!m._loggingPane||m._loggingPane.closed){m._loggingPane=new m.LoggingPane(inline,MochiKit.Logging.logger);}
return m._loggingPane;};MochiKit.LoggingPane.LoggingPane=function(inline,logger){if(typeof(logger)=="undefined"||logger===null){logger=MochiKit.Logging.logger;}
this.logger=logger;var update=MochiKit.Base.update;var updatetree=MochiKit.Base.updatetree;var bind=MochiKit.Base.bind;var clone=MochiKit.Base.clone;var win=window;var uid="_MochiKit_LoggingPane";if(typeof(MochiKit.DOM)!="undefined"){win=MochiKit.DOM.currentWindow();}
if(!inline){var url=win.location.href.split("?")[0].replace(/[#:\/.><&%-]/g,"_");var name=uid+"_"+url;var nwin=win.open("",name,"dependent,resizable,height=200");if(!nwin){alert("Not able to open debugging window due to pop-up blocking.");return undefined;}
nwin.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
+'"http://www.w3.org/TR/html4/loose.dtd">'
+'<html><head><title>[MochiKit.LoggingPane]</title></head>'
+'<body></body></html>');nwin.document.close();nwin.document.title+=' '+win.document.title;win=nwin;}
var doc=win.document;this.doc=doc;var debugPane=doc.getElementById(uid);var existing_pane=!!debugPane;if(debugPane&&typeof(debugPane.loggingPane)!="undefined"){debugPane.loggingPane.logger=this.logger;debugPane.loggingPane.buildAndApplyFilter();return debugPane.loggingPane;}
if(existing_pane){var child;while((child=debugPane.firstChild)){debugPane.removeChild(child);}}else{debugPane=doc.createElement("div");debugPane.id=uid;}
debugPane.loggingPane=this;var levelFilterField=doc.createElement("input");var infoFilterField=doc.createElement("input");var filterButton=doc.createElement("button");var loadButton=doc.createElement("button");var clearButton=doc.createElement("button");var closeButton=doc.createElement("button");var logPaneArea=doc.createElement("div");var logPane=doc.createElement("div");var listenerId=uid+"_Listener";this.colorTable=clone(this.colorTable);var messages=[];var messageFilter=null;var messageLevel=function(msg){var level=msg.level;if(typeof(level)=="number"){level=MochiKit.Logging.LogLevel[level];}
return level;};var messageText=function(msg){return msg.info.join(" ");};var addMessageText=bind(function(msg){var level=messageLevel(msg);var text=messageText(msg);var c=this.colorTable[level];var p=doc.createElement("span");p.className="MochiKit-LogMessage MochiKit-LogLevel-"+level;p.style.cssText="margin: 0px; white-space: -moz-pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; wrap-option: emergency; color: "+c;p.appendChild(doc.createTextNode(level+": "+text));logPane.appendChild(p);logPane.appendChild(doc.createElement("br"));if(logPaneArea.offsetHeight>logPaneArea.scrollHeight){logPaneArea.scrollTop=0;}else{logPaneArea.scrollTop=logPaneArea.scrollHeight;}},this);var addMessage=function(msg){messages[messages.length]=msg;addMessageText(msg);};var buildMessageFilter=function(){var levelre,infore;try{levelre=new RegExp(levelFilterField.value);infore=new RegExp(infoFilterField.value);}catch(e){logDebug("Error in filter regex: "+e.message);return null;}
return function(msg){return(levelre.test(messageLevel(msg))&&infore.test(messageText(msg)));};};var clearMessagePane=function(){while(logPane.firstChild){logPane.removeChild(logPane.firstChild);}};var clearMessages=function(){messages=[];clearMessagePane();};var closePane=bind(function(){if(this.closed){return;}
this.closed=true;if(MochiKit.LoggingPane._loggingPane==this){MochiKit.LoggingPane._loggingPane=null;}
this.logger.removeListener(listenerId);try{try{debugPane.loggingPane=null;}catch(e){logFatal("Bookmarklet was closed incorrectly.");}
if(inline){debugPane.parentNode.removeChild(debugPane);}else{this.win.close();}}catch(e){}},this);var filterMessages=function(){clearMessagePane();for(var i=0;i<messages.length;i++){var msg=messages[i];if(messageFilter===null||messageFilter(msg)){addMessageText(msg);}}};this.buildAndApplyFilter=function(){messageFilter=buildMessageFilter();filterMessages();this.logger.removeListener(listenerId);this.logger.addListener(listenerId,messageFilter,addMessage);};var loadMessages=bind(function(){messages=this.logger.getMessages();filterMessages();},this);var filterOnEnter=bind(function(event){event=event||window.event;key=event.which||event.keyCode;if(key==13){this.buildAndApplyFilter();}},this);var style="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont;if(inline){style+="; height: 10em; border-top: 2px solid black";}else{style+="; height: 100%;";}
debugPane.style.cssText=style;if(!existing_pane){doc.body.appendChild(debugPane);}
style={"cssText":"width: 33%; display: inline; font: "+this.logFont};updatetree(levelFilterField,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":filterOnEnter,"style":style});debugPane.appendChild(levelFilterField);updatetree(infoFilterField,{"value":".*","onkeypress":filterOnEnter,"style":style});debugPane.appendChild(infoFilterField);style="width: 8%; display:inline; font: "+this.logFont;filterButton.appendChild(doc.createTextNode("Filter"));filterButton.onclick=bind("buildAndApplyFilter",this);filterButton.style.cssText=style;debugPane.appendChild(filterButton);loadButton.appendChild(doc.createTextNode("Load"));loadButton.onclick=loadMessages;loadButton.style.cssText=style;debugPane.appendChild(loadButton);clearButton.appendChild(doc.createTextNode("Clear"));clearButton.onclick=clearMessages;clearButton.style.cssText=style;debugPane.appendChild(clearButton);closeButton.appendChild(doc.createTextNode("Close"));closeButton.onclick=closePane;closeButton.style.cssText=style;debugPane.appendChild(closeButton);logPaneArea.style.cssText="overflow: auto; width: 100%";logPane.style.cssText="width: 100%; height: "+(inline?"8em":"100%");logPaneArea.appendChild(logPane);debugPane.appendChild(logPaneArea);this.buildAndApplyFilter();loadMessages();if(inline){this.win=undefined;}else{this.win=win;}
this.inline=inline;this.closePane=closePane;this.closed=false;return this;};MochiKit.LoggingPane.LoggingPane.prototype={"logFont":"8pt Verdana,sans-serif","colorTable":{"ERROR":"red","FATAL":"darkred","WARNING":"blue","INFO":"black","DEBUG":"green"}};MochiKit.LoggingPane.EXPORT_OK=["LoggingPane"];MochiKit.LoggingPane.EXPORT=["createLoggingPane"];MochiKit.LoggingPane.__new__=function(){this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};MochiKit.Base.nameFunctions(this);MochiKit.LoggingPane._loggingPane=null;};MochiKit.LoggingPane.__new__();MochiKit.Base._exportSymbols(this,MochiKit.LoggingPane);;MochiKit.Base._deps('Color',['Base','DOM','Style']);MochiKit.Color.NAME="MochiKit.Color";MochiKit.Color.VERSION="1.4";MochiKit.Color.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Color.toString=function(){return this.__repr__();};MochiKit.Color.Color=function(red,green,blue,alpha){if(typeof(alpha)=='undefined'||alpha===null){alpha=1.0;}
this.rgb={r:red,g:green,b:blue,a:alpha};};MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(alpha){var rgb=this.rgb;var m=MochiKit.Color;return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,alpha);},colorWithHue:function(hue){var hsl=this.asHSL();hsl.h=hue;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},colorWithSaturation:function(saturation){var hsl=this.asHSL();hsl.s=saturation;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},colorWithLightness:function(lightness){var hsl=this.asHSL();hsl.l=lightness;var m=MochiKit.Color;return m.Color.fromHSL(hsl);},darkerColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.max(hsl.l-level,0);var m=MochiKit.Color;return m.Color.fromHSL(hsl);},lighterColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.min(hsl.l+level,1);var m=MochiKit.Color;return m.Color.fromHSL(hsl);},blendedColor:function(other,fraction){if(typeof(fraction)=='undefined'||fraction===null){fraction=0.5;}
var sf=1.0-fraction;var s=this.rgb;var d=other.rgb;var df=fraction;return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));},compareRGB:function(other){var a=this.asRGB();var b=other.asRGB();return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);},isLight:function(){return this.asHSL().b>0.5;},isDark:function(){return(!this.isLight());},toHSLString:function(){var c=this.asHSL();var ccc=MochiKit.Color.clampColorComponent;var rval=this._hslString;if(!rval){var mid=(ccc(c.h,360).toFixed(0)
+","+ccc(c.s,100).toPrecision(4)+"%"
+","+ccc(c.l,100).toPrecision(4)+"%");var a=c.a;if(a>=1){a=1;rval="hsl("+mid+")";}else{if(a<=0){a=0;}
rval="hsla("+mid+","+a+")";}
this._hslString=rval;}
return rval;},toRGBString:function(){var c=this.rgb;var ccc=MochiKit.Color.clampColorComponent;var rval=this._rgbString;if(!rval){var mid=(ccc(c.r,255).toFixed(0)
+","+ccc(c.g,255).toFixed(0)
+","+ccc(c.b,255).toFixed(0));if(c.a!=1){rval="rgba("+mid+","+c.a+")";}else{rval="rgb("+mid+")";}
this._rgbString=rval;}
return rval;},asRGB:function(){return MochiKit.Base.clone(this.rgb);},toHexString:function(){var m=MochiKit.Color;var c=this.rgb;var ccc=MochiKit.Color.clampColorComponent;var rval=this._hexString;if(!rval){rval=("#"+
m.toColorPart(ccc(c.r,255))+
m.toColorPart(ccc(c.g,255))+
m.toColorPart(ccc(c.b,255)));this._hexString=rval;}
return rval;},asHSV:function(){var hsv=this.hsv;var c=this.rgb;if(typeof(hsv)=='undefined'||hsv===null){hsv=MochiKit.Color.rgbToHSV(this.rgb);this.hsv=hsv;}
return MochiKit.Base.clone(hsv);},asHSL:function(){var hsl=this.hsl;var c=this.rgb;if(typeof(hsl)=='undefined'||hsl===null){hsl=MochiKit.Color.rgbToHSL(this.rgb);this.hsl=hsl;}
return MochiKit.Base.clone(hsl);},toString:function(){return this.toRGBString();},repr:function(){var c=this.rgb;var col=[c.r,c.g,c.b,c.a];return this.__class__.NAME+"("+col.join(", ")+")";}};MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,green,blue,alpha){var Color=MochiKit.Color.Color;if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;if(typeof(rgb.a)=='undefined'){alpha=undefined;}else{alpha=rgb.a;}}
return new Color(red,green,blue,alpha);},fromHSL:function(hue,saturation,lightness,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));},fromHSV:function(hue,saturation,value,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));},fromName:function(name){var Color=MochiKit.Color.Color;if(name.charAt(0)=='"'){name=name.substr(1,name.length-2);}
var htmlColor=Color._namedColors[name.toLowerCase()];if(typeof(htmlColor)=='string'){return Color.fromHexString(htmlColor);}else if(name=="transparent"){return Color.transparentColor();}
return null;},fromString:function(colorString){var self=MochiKit.Color.Color;var three=colorString.substr(0,3);if(three=="rgb"){return self.fromRGBString(colorString);}else if(three=="hsl"){return self.fromHSLString(colorString);}else if(colorString.charAt(0)=="#"){return self.fromHexString(colorString);}
return self.fromName(colorString);},fromHexString:function(hexCode){if(hexCode.charAt(0)=='#'){hexCode=hexCode.substring(1);}
var components=[];var i,hex;if(hexCode.length==3){for(i=0;i<3;i++){hex=hexCode.substr(i,1);components.push(parseInt(hex+hex,16)/255.0);}}else{for(i=0;i<6;i+=2){hex=hexCode.substr(i,2);components.push(parseInt(hex,16)/255.0);}}
var Color=MochiKit.Color.Color;return Color.fromRGB.apply(Color,components);},_fromColorString:function(pre,method,scales,colorCode){if(colorCode.indexOf(pre)===0){colorCode=colorCode.substring(colorCode.indexOf("(",3)+1,colorCode.length-1);}
var colorChunks=colorCode.split(/\s*,\s*/);var colorFloats=[];for(var i=0;i<colorChunks.length;i++){var c=colorChunks[i];var val;var three=c.substring(c.length-3);if(c.charAt(c.length-1)=='%'){val=0.01*parseFloat(c.substring(0,c.length-1));}else if(three=="deg"){val=parseFloat(c)/360.0;}else if(three=="rad"){val=parseFloat(c)/(Math.PI*2);}else{val=scales[i]*parseFloat(c);}
colorFloats.push(val);}
return this[method].apply(this,colorFloats);},fromComputedStyle:function(elem,style){var d=MochiKit.DOM;var cls=MochiKit.Color.Color;for(elem=d.getElement(elem);elem;elem=elem.parentNode){var actualColor=MochiKit.Style.getStyle.apply(d,arguments);if(!actualColor){continue;}
var color=cls.fromString(actualColor);if(!color){break;}
if(color.asRGB().a>0){return color;}}
return null;},fromBackground:function(elem){var cls=MochiKit.Color.Color;return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();},fromText:function(elem){var cls=MochiKit.Color.Color;return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();},namedColors:function(){return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);}});MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,scale){v*=scale;if(v<0){return 0;}else if(v>scale){return scale;}else{return v;}},_hslValue:function(n1,n2,hue){if(hue>6.0){hue-=6.0;}else if(hue<0.0){hue+=6.0;}
var val;if(hue<1.0){val=n1+(n2-n1)*hue;}else if(hue<3.0){val=n2;}else if(hue<4.0){val=n1+(n2-n1)*(4.0-hue);}else{val=n1;}
return val;},hsvToRGB:function(hue,saturation,value,alpha){if(arguments.length==1){var hsv=hue;hue=hsv.h;saturation=hsv.s;value=hsv.v;alpha=hsv.a;}
var red;var green;var blue;if(saturation===0){red=value;green=value;blue=value;}else{var i=Math.floor(hue*6);var f=(hue*6)-i;var p=value*(1-saturation);var q=value*(1-(saturation*f));var t=value*(1-(saturation*(1-f)));switch(i){case 1:red=q;green=value;blue=p;break;case 2:red=p;green=value;blue=t;break;case 3:red=p;green=q;blue=value;break;case 4:red=t;green=p;blue=value;break;case 5:red=value;green=p;blue=q;break;case 6:case 0:red=value;green=t;blue=p;break;}}
return{r:red,g:green,b:blue,a:alpha};},hslToRGB:function(hue,saturation,lightness,alpha){if(arguments.length==1){var hsl=hue;hue=hsl.h;saturation=hsl.s;lightness=hsl.l;alpha=hsl.a;}
var red;var green;var blue;if(saturation===0){red=lightness;green=lightness;blue=lightness;}else{var m2;if(lightness<=0.5){m2=lightness*(1.0+saturation);}else{m2=lightness+saturation-(lightness*saturation);}
var m1=(2.0*lightness)-m2;var f=MochiKit.Color._hslValue;var h6=hue*6.0;red=f(m1,m2,h6+2);green=f(m1,m2,h6);blue=f(m1,m2,h6-2);}
return{r:red,g:green,b:blue,a:alpha};},rgbToHSV:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a;}
var max=Math.max(Math.max(red,green),blue);var min=Math.min(Math.min(red,green),blue);var hue;var saturation;var value=max;if(min==max){hue=0;saturation=0;}else{var delta=(max-min);saturation=delta/max;if(red==max){hue=(green-blue)/delta;}else if(green==max){hue=2+((blue-red)/delta);}else{hue=4+((red-green)/delta);}
hue/=6;if(hue<0){hue+=1;}
if(hue>1){hue-=1;}}
return{h:hue,s:saturation,v:value,a:alpha};},rgbToHSL:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a;}
var max=Math.max(red,Math.max(green,blue));var min=Math.min(red,Math.min(green,blue));var hue;var saturation;var lightness=(max+min)/2.0;var delta=max-min;if(delta===0){hue=0;saturation=0;}else{if(lightness<=0.5){saturation=delta/(max+min);}else{saturation=delta/(2-max-min);}
if(red==max){hue=(green-blue)/delta;}else if(green==max){hue=2+((blue-red)/delta);}else{hue=4+((red-green)/delta);}
hue/=6;if(hue<0){hue+=1;}
if(hue>1){hue-=1;}}
return{h:hue,s:saturation,l:lightness,a:alpha};},toColorPart:function(num){num=Math.round(num);var digits=num.toString(16);if(num<16){return'0'+digits;}
return digits;},__new__:function(){var m=MochiKit.Base;this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1.0/255.0,1.0/255.0,1.0/255.0,1]);this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1.0/360.0,0.01,0.01,1]);var third=1.0/3.0;var colors={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[third,third,third],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*third,2*third,2*third],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};var makeColor=function(name,r,g,b,a){var rval=this.fromRGB(r,g,b,a);this[name]=function(){return rval;};return rval;};for(var k in colors){var name=k+"Color";var bindArgs=m.concat([makeColor,this.Color,name],colors[k]);this.Color[name]=m.bind.apply(null,bindArgs);}
var isColor=function(){for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof MochiKit.Color.Color)){return false;}}
return true;};var compareColor=function(a,b){return a.compareRGB(b);};m.nameFunctions(this);m.registerComparator(this.Color.NAME,isColor,compareColor);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};}});MochiKit.Color.EXPORT=["Color"];MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];MochiKit.Color.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Color);MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};;MochiKit.Base._deps('Signal',['Base','DOM','Style']);MochiKit.Signal.NAME='MochiKit.Signal';MochiKit.Signal.VERSION='1.4';MochiKit.Signal._observers=[];MochiKit.Signal.Event=function(src,e){this._event=e||window.event;this._src=src;};MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){var repr=MochiKit.Base.repr;var str='{event(): '+repr(this.event())+', src(): '+repr(this.src())+', type(): '+repr(this.type())+', target(): '+repr(this.target());if(this.type()&&this.type().indexOf('key')===0||this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu'){str+=', modifier(): '+'{alt: '+repr(this.modifier().alt)+', ctrl: '+repr(this.modifier().ctrl)+', meta: '+repr(this.modifier().meta)+', shift: '+repr(this.modifier().shift)+', any: '+repr(this.modifier().any)+'}';}
if(this.type()&&this.type().indexOf('key')===0){str+=', key(): {code: '+repr(this.key().code)+', string: '+repr(this.key().string)+'}';}
if(this.type()&&(this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu')){str+=', mouse(): {page: '+repr(this.mouse().page)+', client: '+repr(this.mouse().client);if(this.type()!='mousemove'&&this.type()!='mousewheel'){str+=', button: {left: '+repr(this.mouse().button.left)+', middle: '+repr(this.mouse().button.middle)+', right: '+repr(this.mouse().button.right)+'}';}
if(this.type()=='mousewheel'){str+=', wheel: '+repr(this.mouse().wheel);}
str+='}';}
if(this.type()=='mouseover'||this.type()=='mouseout'||this.type()=='mouseenter'||this.type()=='mouseleave'){str+=', relatedTarget(): '+repr(this.relatedTarget());}
str+='}';return str;},toString:function(){return this.__repr__();},src:function(){return this._src;},event:function(){return this._event;},type:function(){if(this._event.type==="DOMMouseScroll"){return"mousewheel";}else{return this._event.type||undefined;}},target:function(){return this._event.target||this._event.srcElement;},_relatedTarget:null,relatedTarget:function(){if(this._relatedTarget!==null){return this._relatedTarget;}
var elem=null;if(this.type()=='mouseover'||this.type()=='mouseenter'){elem=(this._event.relatedTarget||this._event.fromElement);}else if(this.type()=='mouseout'||this.type()=='mouseleave'){elem=(this._event.relatedTarget||this._event.toElement);}
if(elem!==null){this._relatedTarget=elem;return elem;}
return undefined;},_modifier:null,modifier:function(){if(this._modifier!==null){return this._modifier;}
var m={};m.alt=this._event.altKey;m.ctrl=this._event.ctrlKey;m.meta=this._event.metaKey||false;m.shift=this._event.shiftKey;m.any=m.alt||m.ctrl||m.shift||m.meta;this._modifier=m;return m;},_key:null,key:function(){if(this._key!==null){return this._key;}
var k={};if(this.type()&&this.type().indexOf('key')===0){if(this.type()=='keydown'||this.type()=='keyup'){k.code=this._event.keyCode;k.string=(MochiKit.Signal._specialKeys[k.code]||'KEY_UNKNOWN');this._key=k;return k;}else if(this.type()=='keypress'){k.code=0;k.string='';if(typeof(this._event.charCode)!='undefined'&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){k.code=this._event.charCode;k.string=String.fromCharCode(k.code);}else if(this._event.keyCode&&typeof(this._event.charCode)=='undefined'){k.code=this._event.keyCode;k.string=String.fromCharCode(k.code);}
this._key=k;return k;}}
return undefined;},_mouse:null,mouse:function(){if(this._mouse!==null){return this._mouse;}
var m={};var e=this._event;if(this.type()&&(this.type().indexOf('mouse')===0||this.type().indexOf('click')!=-1||this.type()=='contextmenu')){m.client=new MochiKit.Style.Coordinates(0,0);if(e.clientX||e.clientY){m.client.x=(!e.clientX||e.clientX<0)?0:e.clientX;m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;}
m.page=new MochiKit.Style.Coordinates(0,0);if(e.pageX||e.pageY){m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;m.page.y=(!e.pageY||e.pageY<0)?0:e.pageY;}else{var de=MochiKit.DOM._document.documentElement;var b=MochiKit.DOM._document.body;m.page.x=e.clientX+
(de.scrollLeft||b.scrollLeft)-
(de.clientLeft||0);m.page.y=e.clientY+
(de.scrollTop||b.scrollTop)-
(de.clientTop||0);}
if(this.type()!='mousemove'&&this.type()!='mousewheel'){m.button={};m.button.left=false;m.button.right=false;m.button.middle=false;if(e.which){m.button.left=(e.which==1);m.button.middle=(e.which==2);m.button.right=(e.which==3);}else{m.button.left=!!(e.button&1);m.button.right=!!(e.button&2);m.button.middle=!!(e.button&4);}}
if(this.type()=='mousewheel'){m.wheel=new MochiKit.Style.Coordinates(0,0);if(e.wheelDeltaX||e.wheelDeltaY){m.wheel.x=e.wheelDeltaX/-40||0;m.wheel.y=e.wheelDeltaY/-40||0;}else if(e.wheelDelta){m.wheel.y=e.wheelDelta/-40;}else{m.wheel.y=e.detail||0;}}
this._mouse=m;return m;}
return undefined;},stop:function(){this.stopPropagation();this.preventDefault();},stopPropagation:function(){if(this._event.stopPropagation){this._event.stopPropagation();}else{this._event.cancelBubble=true;}},preventDefault:function(){if(this._event.preventDefault){this._event.preventDefault();}else if(this._confirmUnload===null){this._event.returnValue=false;}},_confirmUnload:null,confirmUnload:function(msg){if(this.type()=='beforeunload'){this._confirmUnload=msg;this._event.returnValue=msg;}}});MochiKit.Signal._specialMacKeys={3:'KEY_ENTER',63289:'KEY_NUM_PAD_CLEAR',63276:'KEY_PAGE_UP',63277:'KEY_PAGE_DOWN',63275:'KEY_END',63273:'KEY_HOME',63234:'KEY_ARROW_LEFT',63232:'KEY_ARROW_UP',63235:'KEY_ARROW_RIGHT',63233:'KEY_ARROW_DOWN',63302:'KEY_INSERT',63272:'KEY_DELETE'};(function(){var _specialMacKeys=MochiKit.Signal._specialMacKeys;for(i=63236;i<=63242;i++){_specialMacKeys[i]='KEY_F'+(i-63236+1);}})();MochiKit.Signal._specialKeys={8:'KEY_BACKSPACE',9:'KEY_TAB',12:'KEY_NUM_PAD_CLEAR',13:'KEY_ENTER',16:'KEY_SHIFT',17:'KEY_CTRL',18:'KEY_ALT',19:'KEY_PAUSE',20:'KEY_CAPS_LOCK',27:'KEY_ESCAPE',32:'KEY_SPACEBAR',33:'KEY_PAGE_UP',34:'KEY_PAGE_DOWN',35:'KEY_END',36:'KEY_HOME',37:'KEY_ARROW_LEFT',38:'KEY_ARROW_UP',39:'KEY_ARROW_RIGHT',40:'KEY_ARROW_DOWN',44:'KEY_PRINT_SCREEN',45:'KEY_INSERT',46:'KEY_DELETE',59:'KEY_SEMICOLON',91:'KEY_WINDOWS_LEFT',92:'KEY_WINDOWS_RIGHT',93:'KEY_SELECT',106:'KEY_NUM_PAD_ASTERISK',107:'KEY_NUM_PAD_PLUS_SIGN',109:'KEY_NUM_PAD_HYPHEN-MINUS',110:'KEY_NUM_PAD_FULL_STOP',111:'KEY_NUM_PAD_SOLIDUS',144:'KEY_NUM_LOCK',145:'KEY_SCROLL_LOCK',186:'KEY_SEMICOLON',187:'KEY_EQUALS_SIGN',188:'KEY_COMMA',189:'KEY_HYPHEN-MINUS',190:'KEY_FULL_STOP',191:'KEY_SOLIDUS',192:'KEY_GRAVE_ACCENT',219:'KEY_LEFT_SQUARE_BRACKET',220:'KEY_REVERSE_SOLIDUS',221:'KEY_RIGHT_SQUARE_BRACKET',222:'KEY_APOSTROPHE'};(function(){var _specialKeys=MochiKit.Signal._specialKeys;for(var i=48;i<=57;i++){_specialKeys[i]='KEY_'+(i-48);}
for(i=65;i<=90;i++){_specialKeys[i]='KEY_'+String.fromCharCode(i);}
for(i=96;i<=105;i++){_specialKeys[i]='KEY_NUM_PAD_'+(i-96);}
for(i=112;i<=123;i++){_specialKeys[i]='KEY_F'+(i-112+1);}})();MochiKit.Signal.Ident=function(ident){this.source=ident.source;this.signal=ident.signal;this.listener=ident.listener;this.isDOM=ident.isDOM;this.objOrFunc=ident.objOrFunc;this.funcOrStr=ident.funcOrStr;this.connected=ident.connected;};MochiKit.Signal.Ident.prototype={};MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){return'['+this.NAME+' '+this.VERSION+']';},toString:function(){return this.__repr__();},_unloadCache:function(){var self=MochiKit.Signal;var observers=self._observers;for(var i=0;i<observers.length;i++){if(observers[i].signal!=='onload'&&observers[i].signal!=='onunload'){self._disconnect(observers[i]);}}},_listener:function(src,sig,func,obj,isDOM){var self=MochiKit.Signal;var E=self.Event;if(!isDOM){if(typeof(func.im_self)=='undefined'){return MochiKit.Base.bind(func,obj);}else{return func;}}
obj=obj||src;if(typeof(func)=="string"){if(sig==='onload'||sig==='onunload'){return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);};}}else{if(sig==='onload'||sig==='onunload'){return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);};}}},_browserAlreadyHasMouseEnterAndLeave:function(){return/MSIE/.test(navigator.userAgent);},_browserLacksMouseWheelEvent:function(){return/(Gecko\/)/.test(navigator.userAgent);},_mouseEnterListener:function(src,sig,func,obj){var E=MochiKit.Signal.Event;return function(nativeEvent){var e=new E(src,nativeEvent);try{e.relatedTarget().nodeName;}catch(err){return;}
e.stop();if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){return;}
e.type=function(){return sig;};if(typeof(func)=="string"){return obj[func].apply(obj,[e]);}else{return func.apply(obj,[e]);}};},_getDestPair:function(objOrFunc,funcOrStr){var obj=null;var func=null;if(typeof(funcOrStr)!='undefined'){obj=objOrFunc;func=funcOrStr;if(typeof(funcOrStr)=='string'){if(typeof(objOrFunc[funcOrStr])!="function"){throw new Error("'funcOrStr' must be a function on 'objOrFunc'");}}else if(typeof(funcOrStr)!='function'){throw new Error("'funcOrStr' must be a function or string");}}else if(typeof(objOrFunc)!="function"){throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");}else{func=objOrFunc;}
return[obj,func];},connect:function(src,sig,objOrFunc,funcOrStr){src=MochiKit.DOM.getElement(src);var self=MochiKit.Signal;if(typeof(sig)!='string'){throw new Error("'sig' must be a string");}
var destPair=self._getDestPair(objOrFunc,funcOrStr);var obj=destPair[0];var func=destPair[1];if(typeof(obj)=='undefined'||obj===null){obj=src;}
var isDOM=!!(src.addEventListener||src.attachEvent);if(isDOM&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){var listener=self._mouseEnterListener(src,sig.substr(2),func,obj);if(sig==="onmouseenter"){sig="onmouseover";}else{sig="onmouseout";}}else if(isDOM&&sig=="onmousewheel"&&self._browserLacksMouseWheelEvent()){var listener=self._listener(src,sig,func,obj,isDOM);sig="onDOMMouseScroll";}else{var listener=self._listener(src,sig,func,obj,isDOM);}
if(src.addEventListener){src.addEventListener(sig.substr(2),listener,false);}else if(src.attachEvent){src.attachEvent(sig,listener);}
var ident=new MochiKit.Signal.Ident({source:src,signal:sig,listener:listener,isDOM:isDOM,objOrFunc:objOrFunc,funcOrStr:funcOrStr,connected:true});self._observers.push(ident);if(!isDOM&&typeof(src.__connect__)=='function'){var args=MochiKit.Base.extend([ident],arguments,1);src.__connect__.apply(src,args);}
return ident;},_disconnect:function(ident){if(!ident.connected){return;}
ident.connected=false;var src=ident.source;var sig=ident.signal;var listener=ident.listener;if(!ident.isDOM){if(typeof(src.__disconnect__)=='function'){src.__disconnect__(ident,sig,ident.objOrFunc,ident.funcOrStr);}
return;}
if(src.removeEventListener){src.removeEventListener(sig.substr(2),listener,false);}else if(src.detachEvent){src.detachEvent(sig,listener);}else{throw new Error("'src' must be a DOM element");}},disconnect:function(ident){var self=MochiKit.Signal;var observers=self._observers;var m=MochiKit.Base;if(arguments.length>1){var src=MochiKit.DOM.getElement(arguments[0]);var sig=arguments[1];var obj=arguments[2];var func=arguments[3];for(var i=observers.length-1;i>=0;i--){var o=observers[i];if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){self._disconnect(o);if(!self._lock){observers.splice(i,1);}else{self._dirty=true;}
return true;}}}else{var idx=m.findIdentical(observers,ident);if(idx>=0){self._disconnect(ident);if(!self._lock){observers.splice(idx,1);}else{self._dirty=true;}
return true;}}
return false;},disconnectAllTo:function(objOrFunc,funcOrStr){var self=MochiKit.Signal;var observers=self._observers;var disconnect=self._disconnect;var locked=self._lock;var dirty=self._dirty;if(typeof(funcOrStr)==='undefined'){funcOrStr=null;}
for(var i=observers.length-1;i>=0;i--){var ident=observers[i];if(ident.objOrFunc===objOrFunc&&(funcOrStr===null||ident.funcOrStr===funcOrStr)){disconnect(ident);if(locked){dirty=true;}else{observers.splice(i,1);}}}
self._dirty=dirty;},disconnectAll:function(src,sig){src=MochiKit.DOM.getElement(src);var m=MochiKit.Base;var signals=m.flattenArguments(m.extend(null,arguments,1));var self=MochiKit.Signal;var disconnect=self._disconnect;var observers=self._observers;var i,ident;var locked=self._lock;var dirty=self._dirty;if(signals.length===0){for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}else{var sigs={};for(i=0;i<signals.length;i++){sigs[signals[i]]=true;}
for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src&&ident.signal in sigs){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}
self._dirty=dirty;},signal:function(src,sig){var self=MochiKit.Signal;var observers=self._observers;src=MochiKit.DOM.getElement(src);var args=MochiKit.Base.extend(null,arguments,2);var errors=[];self._lock=true;for(var i=0;i<observers.length;i++){var ident=observers[i];if(ident.source===src&&ident.signal===sig&&ident.connected){try{ident.listener.apply(src,args);}catch(e){errors.push(e);}}}
self._lock=false;if(self._dirty){self._dirty=false;for(var i=observers.length-1;i>=0;i--){if(!observers[i].connected){observers.splice(i,1);}}}
if(errors.length==1){throw errors[0];}else if(errors.length>1){var e=new Error("Multiple errors thrown in handling 'sig', see errors property");e.errors=errors;throw e;}}});MochiKit.Signal.EXPORT_OK=[];MochiKit.Signal.EXPORT=['connect','disconnect','signal','disconnectAll','disconnectAllTo'];MochiKit.Signal.__new__=function(win){var m=MochiKit.Base;this._document=document;this._window=win;this._lock=false;this._dirty=false;try{this.connect(window,'onunload',this._unloadCache);}catch(e){}
this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Signal.__new__(this);if(MochiKit.__export__){connect=MochiKit.Signal.connect;disconnect=MochiKit.Signal.disconnect;disconnectAll=MochiKit.Signal.disconnectAll;signal=MochiKit.Signal.signal;}
MochiKit.Base._exportSymbols(this,MochiKit.Signal);;MochiKit.Base._deps('Position',['Base','DOM','Style']);MochiKit.Position.NAME='MochiKit.Position';MochiKit.Position.VERSION='1.4';MochiKit.Position.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Position.toString=function(){return this.__repr__();};MochiKit.Position.EXPORT_OK=[];MochiKit.Position.EXPORT=[];MochiKit.Base.update(MochiKit.Position,{includeScrollOffsets:false,prepare:function(){var deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;var deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;this.windowOffset=new MochiKit.Style.Coordinates(deltaX,deltaY);},cumulativeOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},realOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},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);if(element.style.position=="fixed"){this.offset.x+=this.windowOffset.x;this.offset.y+=this.windowOffset.y;}
return(y>=this.offset.y&&y<this.offset.y+element.offsetHeight&&x>=this.offset.x&&x<this.offset.x+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache.x-this.windowOffset.x;this.ycomp=y+offsetcache.y-this.windowOffset.y;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset.y&&this.ycomp<this.offset.y+element.offsetHeight&&this.xcomp>=this.offset.x&&this.xcomp<this.offset.x+element.offsetWidth);},overlap:function(mode,element){if(!mode){return 0;}
if(mode=='vertical'){return((this.offset.y+element.offsetHeight)-this.ycomp)/element.offsetHeight;}
if(mode=='horizontal'){return((this.offset.x+element.offsetWidth)-this.xcomp)/element.offsetWidth;}},absolutize:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=='absolute'){return;}
MochiKit.Position.prepare();var offsets=MochiKit.Position.positionedOffset(element);var width=element.clientWidth;var height=element.clientHeight;var oldStyle={'position':element.style.position,'left':offsets.x-parseFloat(element.style.left||0),'top':offsets.y-parseFloat(element.style.top||0),'width':element.style.width,'height':element.style.height};element.style.position='absolute';element.style.top=offsets.y+'px';element.style.left=offsets.x+'px';element.style.width=width+'px';element.style.height=height+'px';return oldStyle;},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=MochiKit.Style.getStyle(element,'position');if(p=='relative'||p=='absolute'){break;}}}while(element);return new MochiKit.Style.Coordinates(valueL,valueT);},relativize:function(element,oldPos){element=MochiKit.DOM.getElement(element);if(element.style.position=='relative'){return;}
MochiKit.Position.prepare();var top=parseFloat(element.style.top||0)-
(oldPos['top']||0);var left=parseFloat(element.style.left||0)-
(oldPos['left']||0);element.style.position=oldPos['position'];element.style.top=top+'px';element.style.left=left+'px';element.style.width=oldPos['width'];element.style.height=oldPos['height'];},clone:function(source,target){source=MochiKit.DOM.getElement(source);target=MochiKit.DOM.getElement(target);target.style.position='absolute';var offsets=this.cumulativeOffset(source);target.style.top=offsets.y+'px';target.style.left=offsets.x+'px';target.style.width=source.offsetWidth+'px';target.style.height=source.offsetHeight+'px';},page:function(forElement){var valueT=0;var valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&MochiKit.Style.getStyle(element,'position')=='absolute'){break;}}while(element=element.offsetParent);element=forElement;do{valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}while(element=element.parentNode);return new MochiKit.Style.Coordinates(valueL,valueT);}});MochiKit.Position.__new__=function(win){var m=MochiKit.Base;this.EXPORT_TAGS={':common':this.EXPORT,':all':m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Position.__new__(this);;MochiKit.Base._deps('Visual',['Base','DOM','Style','Color','Position']);MochiKit.Visual.NAME="MochiKit.Visual";MochiKit.Visual.VERSION="1.4";MochiKit.Visual.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Visual.toString=function(){return this.__repr__();};MochiKit.Visual._RoundCorners=function(e,options){e=MochiKit.DOM.getElement(e);this._setOptions(options);if(this.options.__unstable__wrapElement){e=this._doWrap(e);}
var color=this.options.color;var C=MochiKit.Color.Color;if(this.options.color==="fromElement"){color=C.fromBackground(e);}else if(!(color instanceof C)){color=C.fromString(color);}
this.isTransparent=(color.asRGB().a<=0);var bgColor=this.options.bgColor;if(this.options.bgColor==="fromParent"){bgColor=C.fromBackground(e.offsetParent);}else if(!(bgColor instanceof C)){bgColor=C.fromString(bgColor);}
this._roundCornersImpl(e,color,bgColor);};MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){var parent=e.parentNode;var doc=MochiKit.DOM.currentDocument();if(typeof(doc.defaultView)==="undefined"||doc.defaultView===null){return e;}
var style=doc.defaultView.getComputedStyle(e,null);if(typeof(style)==="undefined"||style===null){return e;}
var wrapper=MochiKit.DOM.DIV({"style":{display:"block",marginTop:style.getPropertyValue("padding-top"),marginRight:style.getPropertyValue("padding-right"),marginBottom:style.getPropertyValue("padding-bottom"),marginLeft:style.getPropertyValue("padding-left"),padding:"0px"}});wrapper.innerHTML=e.innerHTML;e.innerHTML="";e.appendChild(wrapper);return e;},_roundCornersImpl:function(e,color,bgColor){if(this.options.border){this._renderBorder(e,bgColor);}
if(this._isTopRounded()){this._roundTopCorners(e,color,bgColor);}
if(this._isBottomRounded()){this._roundBottomCorners(e,color,bgColor);}},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++){corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));}
el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));}
el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var dom=MochiKit.DOM;return dom.DIV({style:{backgroundColor:bgColor.toString()}});},_createCornerSlice:function(color,bgColor,n,position){var slice=MochiKit.DOM.SPAN();var inStyle=slice.style;inStyle.backgroundColor=color.toString();inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n===0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor.toString();}else if(borderColor){inStyle.borderColor=borderColor.toString();inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";}
if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";}
this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};MochiKit.Base.update(this.options,options);this.options.numSlices=(this.options.compact?2:4);},_whichSideTop:function(){var corners=this.options.corners;if(this._hasString(corners,"all","top")){return"";}
var has_tl=(corners.indexOf("tl")!=-1);var has_tr=(corners.indexOf("tr")!=-1);if(has_tl&&has_tr){return"";}
if(has_tl){return"left";}
if(has_tr){return"right";}
return"";},_whichSideBottom:function(){var corners=this.options.corners;if(this._hasString(corners,"all","bottom")){return"";}
var has_bl=(corners.indexOf('bl')!=-1);var has_br=(corners.indexOf('br')!=-1);if(has_bl&&has_br){return"";}
if(has_bl){return"left";}
if(has_br){return"right";}
return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return bgColor.blendedColor(color);}
return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.marginLeft=marginSize;style.marginRight="0px";}else if(whichSide=="right"){style.marginRight=marginSize;style.marginLeft="0px";}else{style.marginLeft=marginSize;style.marginRight=marginSize;}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.borderLeftWidth=borderSize;style.borderRightWidth="0px";}else if(whichSide=="right"){style.borderRightWidth=borderSize;style.borderLeftWidth="0px";}else{style.borderLeftWidth=borderSize;style.borderRightWidth=borderSize;}},_marginSize:function(n){if(this.isTransparent){return 0;}
var o=this.options;if(o.compact&&o.blend){var smBlendedMarginSizes=[1,0];return smBlendedMarginSizes[n];}else if(o.compact){var compactMarginSizes=[2,1];return compactMarginSizes[n];}else if(o.blend){var blendedMarginSizes=[3,2,1,0];return blendedMarginSizes[n];}else{var marginSizes=[5,3,2,1];return marginSizes[n];}},_borderSize:function(n){var o=this.options;var borderSizes;if(o.compact&&(o.blend||this.isTransparent)){return 1;}else if(o.compact){borderSizes=[1,0];}else if(o.blend){borderSizes=[2,1,1,1];}else if(o.border){borderSizes=[0,2,0,0];}else if(this.isTransparent){borderSizes=[5,3,2,1];}else{return 0;}
return borderSizes[n];},_hasString:function(str){for(var i=1;i<arguments.length;i++){if(str.indexOf(arguments[i])!=-1){return true;}}
return false;},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return(el.childNodes.length==1&&el.childNodes[0].nodeType==3);}};MochiKit.Visual.roundElement=function(e,options){new MochiKit.Visual._RoundCorners(e,options);};MochiKit.Visual.roundClass=function(tagName,className,options){var elements=MochiKit.DOM.getElementsByTagAndClassName(tagName,className);for(var i=0;i<elements.length;i++){MochiKit.Visual.roundElement(elements[i],options);}};MochiKit.Visual.tagifyText=function(element,tagifyStyle){tagifyStyle=tagifyStyle||'position:relative';if(/MSIE/.test(navigator.userAgent)){tagifyStyle+=';zoom:1';}
element=MochiKit.DOM.getElement(element);var ma=MochiKit.Base.map;ma(function(child){if(child.nodeType==3){ma(function(character){element.insertBefore(MochiKit.DOM.SPAN({style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);},child.nodeValue.split(''));MochiKit.DOM.removeElement(child);}},element.childNodes);};MochiKit.Visual.forceRerendering=function(element){try{element=MochiKit.DOM.getElement(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};MochiKit.Visual.multiple=function(elements,effect,options){options=MochiKit.Base.update({speed:0.1,delay:0.0},options);var masterDelay=options.delay;var index=0;MochiKit.Base.map(function(innerelement){options.delay=index*options.speed+masterDelay;new effect(innerelement,options);index+=1;},elements);};MochiKit.Visual.PAIRS={'slide':['slideDown','slideUp'],'blind':['blindDown','blindUp'],'appear':['appear','fade'],'size':['grow','shrink']};MochiKit.Visual.toggle=function(element,effect,options){element=MochiKit.DOM.getElement(element);effect=(effect||'appear').toLowerCase();options=MochiKit.Base.update({queue:{position:'end',scope:(element.id||'global'),limit:1}},options);var v=MochiKit.Visual;v[MochiKit.Style.getStyle(element,'display')!='none'?v.PAIRS[effect][1]:v.PAIRS[effect][0]](element,options);};MochiKit.Visual.Transitions={};MochiKit.Visual.Transitions.linear=function(pos){return pos;};MochiKit.Visual.Transitions.sinoidal=function(pos){return 0.5-Math.cos(pos*Math.PI)/2;};MochiKit.Visual.Transitions.reverse=function(pos){return 1-pos;};MochiKit.Visual.Transitions.flicker=function(pos){return 0.25-Math.cos(pos*Math.PI)/4+Math.random()/2;};MochiKit.Visual.Transitions.wobble=function(pos){return 0.5-Math.cos(9*pos*Math.PI)/2;};MochiKit.Visual.Transitions.pulse=function(pos,pulses){if(pulses){pos*=2*pulses;}else{pos*=10;}
var decimals=pos-Math.floor(pos);return(Math.floor(pos)%2==0)?decimals:1-decimals;};MochiKit.Visual.Transitions.parabolic=function(pos){return pos*pos;};MochiKit.Visual.Transitions.none=function(pos){return 0;};MochiKit.Visual.Transitions.full=function(pos){return 1;};MochiKit.Visual.ScopedQueue=function(){var cls=arguments.callee;if(!(this instanceof cls)){return new cls();}
this.__init__();};MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype,{__init__:function(){this.effects=[];this.interval=null;},add:function(effect){var timestamp=new Date().getTime();var position=(typeof(effect.options.queue)=='string')?effect.options.queue:effect.options.queue.position;var ma=MochiKit.Base.map;switch(position){case'front':ma(function(e){if(e.state=='idle'){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;}},this.effects);break;case'end':var finish;ma(function(e){var i=e.finishOn;if(i>=(finish||i)){finish=i;}},this.effects);timestamp=finish||timestamp;break;case'break':ma(function(e){e.finalize();},this.effects);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=this.startLoop(MochiKit.Base.bind(this.loop,this),40);}},startLoop:function(func,interval){return setInterval(func,interval);},remove:function(effect){this.effects=MochiKit.Base.filter(function(e){return e!=effect;},this.effects);if(!this.effects.length){this.stopLoop(this.interval);this.interval=null;}},stopLoop:function(interval){clearInterval(interval);},loop:function(){var timePos=new Date().getTime();MochiKit.Base.map(function(effect){effect.loop(timePos);},this.effects);}});MochiKit.Visual.Queues={instances:{},get:function(queueName){if(typeof(queueName)!='string'){return queueName;}
if(!this.instances[queueName]){this.instances[queueName]=new MochiKit.Visual.ScopedQueue();}
return this.instances[queueName];}};MochiKit.Visual.Queue=MochiKit.Visual.Queues.get('global');MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1.0,fps:25.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'};MochiKit.Visual.Base=function(){};MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(options){var v=MochiKit.Visual;this.options=MochiKit.Base.setdefault(options,v.DefaultOptions);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){v.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){return this.finalize();}
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');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.event('beforeUpdate');this.update(pos);this.event('afterUpdate');}},cancel:function(){if(!this.options.sync){MochiKit.Visual.Queues.get(typeof(this.options.queue)=='string'?'global':this.options.queue.scope).remove(this);}
this.state='finished';},finalize:function(){this.render(1.0);this.cancel();this.event('beforeFinish');this.finish();this.event('afterFinish');},setup:function(){},finish:function(){},update:function(position){},event:function(eventName){if(this.options[eventName+'Internal']){this.options[eventName+'Internal'](this);}
if(this.options[eventName]){this.options[eventName](this);}},repr:function(){return'['+this.__class__.NAME+', options:'+
MochiKit.Base.repr(this.options)+']';}};MochiKit.Visual.Parallel=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options);}
this.__init__(effects,options);};MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(effects,options){this.effects=effects||[];this.start(options);},update:function(position){MochiKit.Base.map(function(effect){effect.render(position);},this.effects);},finish:function(){MochiKit.Base.map(function(effect){effect.finalize();},this.effects);}});MochiKit.Visual.Sequence=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options);}
this.__init__(effects,options);};MochiKit.Visual.Sequence.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Sequence.prototype,{__class__:MochiKit.Visual.Sequence,__init__:function(effects,options){var defs={transition:MochiKit.Visual.Transitions.linear,duration:0};this.effects=effects||[];MochiKit.Base.map(function(effect){defs.duration+=effect.options.duration;},this.effects);MochiKit.Base.setdefault(options,defs);this.start(options);},update:function(position){var time=position*this.options.duration;for(var i=0;i<this.effects.length;i++){var effect=this.effects[i];if(time<=effect.options.duration){effect.render(time/effect.options.duration);break;}else{time-=effect.options.duration;}}},finish:function(){MochiKit.Base.map(function(effect){effect.finalize();},this.effects);}});MochiKit.Visual.Opacity=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(element,options){var b=MochiKit.Base;var s=MochiKit.Style;this.element=MochiKit.DOM.getElement(element);if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){s.setStyle(this.element,{zoom:1});}
options=b.update({from:s.getStyle(this.element,'opacity')||0.0,to:1.0},options);this.start(options);},update:function(position){MochiKit.Style.setStyle(this.element,{'opacity':position});}});MochiKit.Visual.Move=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({x:0,y:0,mode:'relative'},options);this.start(options);},setup:function(){MochiKit.DOM.makePositioned(this.element);var s=this.element.style;var originalVisibility=s.visibility;var originalDisplay=s.display;if(originalDisplay=='none'){s.visibility='hidden';s.display='';}
this.originalLeft=parseFloat(MochiKit.Style.getStyle(this.element,'left')||'0');this.originalTop=parseFloat(MochiKit.Style.getStyle(this.element,'top')||'0');if(this.options.mode=='absolute'){this.options.x-=this.originalLeft;this.options.y-=this.originalTop;}
if(originalDisplay=='none'){s.visibility=originalVisibility;s.display=originalDisplay;}},update:function(position){MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*position+this.originalLeft)+'px',top:Math.round(this.options.y*position+this.originalTop)+'px'});}});MochiKit.Visual.Scale=function(element,percent,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,percent,options);}
this.__init__(element,percent,options);};MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(element,percent,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},options);this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=MochiKit.Style.getStyle(this.element,'position');var ma=MochiKit.Base.map;var b=MochiKit.Base.bind;this.originalStyle={};ma(b(function(k){this.originalStyle[k]=this.element.style[k];},this),['top','left','width','height','fontSize']);this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=MochiKit.Style.getStyle(this.element,'font-size')||'100%';ma(b(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}},this),['em','px','%']);this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth];}else if(this.options.scaleMode=='box'){this.dims=[this.element.offsetHeight,this.element.offsetWidth];}else{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){MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*currentScale+this.fontSizeType});}
this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(){if(this.restoreAfterFinish){MochiKit.Style.setStyle(this.element,this.originalStyle);}},setDimensions:function(height,width){var d={};var r=Math.round;if(/MSIE/.test(navigator.userAgent)){r=Math.ceil;}
if(this.options.scaleX){d.width=r(width)+'px';}
if(this.options.scaleY){d.height=r(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';}}}
MochiKit.Style.setStyle(this.element,d);}});MochiKit.Visual.Highlight=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({startcolor:'#ffff99'},options);this.start(options);},setup:function(){var b=MochiKit.Base;var s=MochiKit.Style;if(s.getStyle(this.element,'display')=='none'){this.cancel();return;}
this.oldStyle={backgroundImage:s.getStyle(this.element,'background-image')};s.setStyle(this.element,{backgroundImage:'none'});if(!this.options.endcolor){this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString();}
if(b.isUndefinedOrNull(this.options.restorecolor)){this.options.restorecolor=s.getStyle(this.element,'background-color');}
this._base=b.map(b.bind(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);},this),[0,1,2]);this._delta=b.map(b.bind(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)
-this._base[i];},this),[0,1,2]);},update:function(position){var m='#';MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+
this._delta[i]*position));},this),[0,1,2]);MochiKit.Style.setStyle(this.element,{backgroundColor:m});},finish:function(){MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});MochiKit.Visual.ScrollTo=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options);},setup:function(){var p=MochiKit.Position;p.prepare();var offsets=p.cumulativeOffset(this.element);if(this.options.offset){offsets.y+=this.options.offset;}
var max;if(window.innerHeight){max=window.innerHeight-window.height;}else if(document.documentElement&&document.documentElement.clientHeight){max=document.documentElement.clientHeight-
document.body.scrollHeight;}else if(document.body){max=document.body.clientHeight-document.body.scrollHeight;}
this.scrollStart=p.windowOffset.y;this.delta=(offsets.y>max?max:offsets.y)-this.scrollStart;},update:function(position){var p=MochiKit.Position;p.prepare();window.scrollTo(p.windowOffset.x,this.scrollStart+(position*this.delta));}});MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;MochiKit.Visual.Morph=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options);},setup:function(){var b=MochiKit.Base;var style=this.options.style;this.styleStart={};this.styleEnd={};this.units={};var value,unit;for(var s in style){value=style[s];s=b.camelize(s);if(MochiKit.Visual.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;this.styleEnd[s]=value;this.units[s]=unit;value=MochiKit.Style.getStyle(this.element,s);components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);this.styleStart[s]=value;}else{var c=MochiKit.Color.Color;value=c.fromString(value);if(value){this.units[s]="color";this.styleEnd[s]=value.toHexString();value=MochiKit.Style.getStyle(this.element,s);this.styleStart[s]=c.fromString(value).toHexString();this.styleStart[s]=b.map(b.bind(function(i){return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16);},this),[0,1,2]);this.styleEnd[s]=b.map(b.bind(function(i){return parseInt(this.styleEnd[s].slice(i*2+1,i*2+3),16);},this),[0,1,2]);}}}},update:function(position){var value;for(var s in this.styleStart){if(this.units[s]=="color"){var m='#';var start=this.styleStart[s];var end=this.styleEnd[s];MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(start[i]+
(end[i]-start[i])*position));},this),[0,1,2]);this.element.style[s]=m;}else{value=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*position*1000)/1000+this.units[s];this.element.style[s]=value;}}}});MochiKit.Visual.fade=function(element,options){var s=MochiKit.Style;var oldOpacity=s.getStyle(element,'opacity');options=MochiKit.Base.update({from:s.getStyle(element,'opacity')||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!==0){return;}
s.hideElement(effect.element);s.setStyle(effect.element,{'opacity':oldOpacity});}},options);return new MochiKit.Visual.Opacity(element,options);};MochiKit.Visual.appear=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;options=MochiKit.Base.update({from:(s.getStyle(element,'display')=='none'?0.0:s.getStyle(element,'opacity')||0.0),to:1.0,afterFinishInternal:function(effect){v.forceRerendering(effect.element);},beforeSetupInternal:function(effect){s.setStyle(effect.element,{'opacity':effect.options.from});s.showElement(effect.element);}},options);return new v.Opacity(element,options);};MochiKit.Visual.puff=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;element=MochiKit.DOM.getElement(element);var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var oldStyle={position:s.getStyle(element,'position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height,opacity:s.getStyle(element,'opacity')};options=MochiKit.Base.update({beforeSetupInternal:function(effect){MochiKit.Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);},scaleContent:true,scaleFromCenter:true},options);return new v.Parallel([new v.Scale(element,200,{sync:true,scaleFromCenter:options.scaleFromCenter,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:options.scaleContent,restoreAfterFinish:true}),new v.Opacity(element,{sync:true,to:0.0})],options);};MochiKit.Visual.blindUp=function(element,options){var d=MochiKit.DOM;element=d.getElement(element);var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var elemClip=d.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterFinishInternal:function(effect){MochiKit.Style.hideElement(effect.element);d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,0,options);};MochiKit.Visual.blindDown=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){elemClip=d.makeClipping(effect.element);s.setStyle(effect.element,{height:'0px'});s.showElement(effect.element);},afterFinishInternal:function(effect){d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,100,options);};MochiKit.Visual.switchOff=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldOpacity=s.getStyle(element,'opacity');var elemClip;options=MochiKit.Base.update({duration:0.7,restoreAfterFinish:true,beforeSetupInternal:function(effect){d.makePositioned(element);elemClip=d.makeClipping(element);},afterFinishInternal:function(effect){s.hideElement(element);d.undoClipping(element,elemClip);d.undoPositioned(element);s.setStyle(element,{'opacity':oldOpacity});}},options);var v=MochiKit.Visual;return new v.Sequence([new v.appear(element,{sync:true,duration:0.57*options.duration,from:0,transition:v.Transitions.flicker}),new v.Scale(element,1,{sync:true,duration:0.43*options.duration,scaleFromCenter:true,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:false,restoreAfterFinish:true})],options);};MochiKit.Visual.dropOut=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,'top'),left:s.getStyle(element,'left'),opacity:s.getStyle(element,'opacity')};options=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(effect){d.makePositioned(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);var v=MochiKit.Visual;return new v.Parallel([new v.Move(element,{x:0,y:options.distance,sync:true}),new v.Opacity(element,{sync:true,to:0.0})],options);};MochiKit.Visual.shake=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,'top'),left:s.getStyle(element,'left')};options=MochiKit.Base.update({duration:0.5,afterFinishInternal:function(effect){d.undoPositioned(element);s.setStyle(element,oldStyle);}},options);return new v.Sequence([new v.Move(element,{sync:true,duration:0.1*options.duration,x:20,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.1*options.duration,x:-20,y:0})],options);};MochiKit.Visual.slideDown=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideDown must be used on a element with a child");}
d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,'bottom')||0;var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){d.makePositioned(effect.element);d.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:''});}
elemClip=d.makeClipping(effect.element);s.setStyle(effect.element,{height:'0px'});s.showElement(effect.element);},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+'px'});},afterFinishInternal:function(effect){d.undoClipping(effect.element,elemClip);if(/MSIE/.test(navigator.userAgent)){d.undoPositioned(effect.element);d.undoPositioned(effect.element.firstChild);}else{d.undoPositioned(effect.element.firstChild);d.undoPositioned(effect.element);}
s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom});}},options);return new MochiKit.Visual.Scale(element,100,options);};MochiKit.Visual.slideUp=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideUp must be used on a element with a child");}
d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,'bottom');var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){d.makePositioned(effect.element);d.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:''});}
elemClip=d.makeClipping(effect.element);s.showElement(effect.element);},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+'px'});},afterFinishInternal:function(effect){s.hideElement(effect.element);d.undoClipping(effect.element,elemClip);d.undoPositioned(effect.element.firstChild);d.undoPositioned(effect.element);s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom});}},options);return new MochiKit.Visual.Scale(element,0,options);};MochiKit.Visual.squish=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var elemClip;options=b.update({restoreAfterFinish:true,scaleMode:{originalHeight:elementDimensions.w,originalWidth:elementDimensions.h},beforeSetupInternal:function(effect){elemClip=d.makeClipping(effect.element);},afterFinishInternal:function(effect){MochiKit.Style.hideElement(effect.element);d.undoClipping(effect.element,elemClip);}},options);return new MochiKit.Visual.Scale(element,/Opera/.test(navigator.userAgent)?1:0,options);};MochiKit.Visual.grow=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:'center',moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,'opacity')};var dims=s.getElementDimensions(element,true);var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.w;initialMoveY=moveY=0;moveX=-dims.w;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.h;moveY=-dims.h;break;case'bottom-right':initialMoveX=dims.w;initialMoveY=dims.h;moveX=-dims.w;moveY=-dims.h;break;case'center':initialMoveX=dims.w/2;initialMoveY=dims.h/2;moveX=-dims.w/2;moveY=-dims.h/2;break;}
var optionsParallel=MochiKit.Base.update({beforeSetupInternal:function(effect){s.setStyle(effect.effects[0].element,{height:'0px'});s.showElement(effect.effects[0].element);},afterFinishInternal:function(effect){d.undoClipping(effect.effects[0].element);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);return new v.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetupInternal:function(effect){s.hideElement(effect.element);d.makeClipping(effect.element);d.makePositioned(effect.element);},afterFinishInternal:function(effect){new v.Parallel([new v.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new v.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new v.Scale(effect.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true})],optionsParallel);}});};MochiKit.Visual.shrink=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:'center',moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,'opacity')};var dims=s.getElementDimensions(element,true);var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.w;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.h;break;case'bottom-right':moveX=dims.w;moveY=dims.h;break;case'center':moveX=dims.w/2;moveY=dims.h/2;break;}
var elemClip;var optionsParallel=MochiKit.Base.update({beforeStartInternal:function(effect){elemClip=d.makePositioned(effect.effects[0].element);d.makeClipping(effect.effects[0].element);},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);d.undoClipping(effect.effects[0].element,elemClip);d.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle);}},options);return new v.Parallel([new v.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new v.Scale(element,/Opera/.test(navigator.userAgent)?1:0,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true}),new v.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],optionsParallel);};MochiKit.Visual.pulsate=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var b=MochiKit.Base;var oldOpacity=MochiKit.Style.getStyle(element,'opacity');options=b.update({duration:3.0,from:0,afterFinishInternal:function(effect){MochiKit.Style.setStyle(effect.element,{'opacity':oldOpacity});}},options);var transition=options.transition||v.Transitions.sinoidal;options.transition=function(pos){return transition(1-v.Transitions.pulse(pos,options.pulses));};return new v.Opacity(element,options);};MochiKit.Visual.fold=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};var elemClip=d.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){new v.Scale(element,1,{scaleContent:false,scaleY:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){s.hideElement(effect.element);d.undoClipping(effect.element,elemClip);s.setStyle(effect.element,oldStyle);}});}},options);return new v.Scale(element,5,options);};MochiKit.Visual.Color=MochiKit.Color.Color;MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle;MochiKit.Visual.__new__=function(){var m=MochiKit.Base;m.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};};MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Parallel","Sequence","Opacity","Move","Scale","Highlight","ScrollTo","Morph","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"];MochiKit.Visual.EXPORT_OK=["Base","PAIRS"];MochiKit.Visual.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Visual);;MochiKit.Base._deps('DragAndDrop',['Base','Iter','DOM','Signal','Visual','Position']);MochiKit.DragAndDrop.NAME='MochiKit.DragAndDrop';MochiKit.DragAndDrop.VERSION='1.4';MochiKit.DragAndDrop.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.DragAndDrop.toString=function(){return this.__repr__();};MochiKit.DragAndDrop.EXPORT=["Droppable","Draggable"];MochiKit.DragAndDrop.EXPORT_OK=["Droppables","Draggables"];MochiKit.DragAndDrop.Droppables={drops:[],remove:function(element){this.drops=MochiKit.Base.filter(function(d){return d.element!=MochiKit.DOM.getElement(element);},this.drops);},register:function(drop){this.drops.push(drop);},unregister:function(drop){this.drops=MochiKit.Base.filter(function(d){return d!=drop;},this.drops);},prepare:function(element){MochiKit.Base.map(function(drop){if(drop.isAccepted(element)){if(drop.options.activeclass){MochiKit.DOM.addElementClass(drop.element,drop.options.activeclass);}
drop.options.onactive(drop.element,element);}},this.drops);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i){if(MochiKit.DOM.isParent(drops[i].element,deepest.element)){deepest=drops[i];}}
return deepest;},show:function(point,element){if(!this.drops.length){return;}
var affected=[];if(this.last_active){this.last_active.deactivate();}
MochiKit.Iter.forEach(this.drops,function(drop){if(drop.isAffected(point,element)){affected.push(drop);}});if(affected.length>0){drop=this.findDeepestChild(affected);MochiKit.Position.within(drop.element,point.page.x,point.page.y);drop.options.onhover(element,drop.element,MochiKit.Position.overlap(drop.options.overlap,drop.element));drop.activate();}},fire:function(event,element){if(!this.last_active){return;}
MochiKit.Position.prepare();if(this.last_active.isAffected(event.mouse(),element)){this.last_active.options.ondrop(element,this.last_active.element,event);}},reset:function(element){MochiKit.Base.map(function(drop){if(drop.options.activeclass){MochiKit.DOM.removeElementClass(drop.element,drop.options.activeclass);}
drop.options.ondesactive(drop.element,element);},this.drops);if(this.last_active){this.last_active.deactivate();}}};MochiKit.DragAndDrop.Droppable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.DragAndDrop.Droppable.prototype={__class__:MochiKit.DragAndDrop.Droppable,__init__:function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;this.element=d.getElement(element);this.options=b.update({greedy:true,hoverclass:null,activeclass:null,hoverfunc:b.noop,accept:null,onactive:b.noop,ondesactive:b.noop,onhover:b.noop,ondrop:b.noop,containment:[],tree:false},options);this.options._containers=[];b.map(MochiKit.Base.bind(function(c){this.options._containers.push(d.getElement(c));},this),this.options.containment);d.makePositioned(this.element);MochiKit.DragAndDrop.Droppables.register(this);},isContained:function(element){if(this.options._containers.length){var containmentNode;if(this.options.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
return MochiKit.Iter.some(this.options._containers,function(c){return containmentNode==c;});}else{return true;}},isAccepted:function(element){return((!this.options.accept)||MochiKit.Iter.some(this.options.accept,function(c){return MochiKit.DOM.hasElementClass(element,c);}));},isAffected:function(point,element){return((this.element!=element)&&this.isContained(element)&&this.isAccepted(element)&&MochiKit.Position.within(this.element,point.page.x,point.page.y));},deactivate:function(){if(this.options.hoverclass){MochiKit.DOM.removeElementClass(this.element,this.options.hoverclass);}
this.options.hoverfunc(this.element,false);MochiKit.DragAndDrop.Droppables.last_active=null;},activate:function(){if(this.options.hoverclass){MochiKit.DOM.addElementClass(this.element,this.options.hoverclass);}
this.options.hoverfunc(this.element,true);MochiKit.DragAndDrop.Droppables.last_active=this;},destroy:function(){MochiKit.DragAndDrop.Droppables.unregister(this);},repr:function(){return'['+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";}};MochiKit.DragAndDrop.Draggables={drags:[],register:function(draggable){if(this.drags.length===0){var conn=MochiKit.Signal.connect;this.eventMouseUp=conn(document,'onmouseup',this,this.endDrag);this.eventMouseMove=conn(document,'onmousemove',this,this.updateDrag);this.eventKeypress=conn(document,'onkeypress',this,this.keyPress);}
this.drags.push(draggable);},unregister:function(draggable){this.drags=MochiKit.Base.filter(function(d){return d!=draggable;},this.drags);if(this.drags.length===0){var disc=MochiKit.Signal.disconnect;disc(this.eventMouseUp);disc(this.eventMouseMove);disc(this.eventKeypress);}},activate:function(draggable){window.focus();this.activeDraggable=draggable;},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable){return;}
var pointer=event.mouse();if(this._lastPointer&&(MochiKit.Base.repr(this._lastPointer.page)==MochiKit.Base.repr(pointer.page))){return;}
this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(!this.activeDraggable){return;}
this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable){this.activeDraggable.keyPress(event);}},notify:function(eventName,draggable,event){MochiKit.Signal.signal(this,eventName,draggable,event);}};MochiKit.DragAndDrop.Draggable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options);}
this.__init__(element,options);};MochiKit.DragAndDrop.Draggable.prototype={__class__:MochiKit.DragAndDrop.Draggable,__init__:function(element,options){var v=MochiKit.Visual;var b=MochiKit.Base;options=b.update({handle:false,starteffect:function(innerelement){this._savedOpacity=MochiKit.Style.getStyle(innerelement,'opacity')||1.0;new v.Opacity(innerelement,{duration:0.2,from:this._savedOpacity,to:0.7});},reverteffect:function(innerelement,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+
Math.abs(left_offset^2))*0.02;return new v.Move(innerelement,{x:-left_offset,y:-top_offset,duration:dur});},endeffect:function(innerelement){new v.Opacity(innerelement,{duration:0.2,from:0.7,to:this._savedOpacity});},onchange:b.noop,zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},options);var d=MochiKit.DOM;this.element=d.getElement(element);if(options.handle&&(typeof(options.handle)=='string')){this.handle=d.getFirstElementByTagAndClassName(null,options.handle,this.element);}
if(!this.handle){this.handle=d.getElement(options.handle);}
if(!this.handle){this.handle=this.element;}
if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=d.getElement(options.scroll);this._isScrollChild=MochiKit.DOM.isChildNode(this.element,options.scroll);}
d.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=MochiKit.Signal.connect(this.handle,'onmousedown',this,this.initDrag);MochiKit.DragAndDrop.Draggables.register(this);},destroy:function(){MochiKit.Signal.disconnect(this.eventMouseDown);MochiKit.DragAndDrop.Draggables.unregister(this);},currentDelta:function(){var s=MochiKit.Style.getStyle;return[parseInt(s(this.element,'left')||'0'),parseInt(s(this.element,'top')||'0')];},initDrag:function(event){if(!event.mouse().button.left){return;}
var src=event.target()?event.target():{};var tagName=(src.tagName||'').toUpperCase();if(tagName==='INPUT'||tagName==='SELECT'||tagName==='OPTION'||tagName==='BUTTON'||tagName==='TEXTAREA'){return;}
if(this._revert){this._revert.cancel();this._revert=null;}
var pointer=event.mouse();var pos=MochiKit.Position.cumulativeOffset(this.element);this.offset=[pointer.page.x-pos.x,pointer.page.y-pos.y];MochiKit.DragAndDrop.Draggables.activate(this);event.stop();},startDrag:function(event){this.dragging=true;if(this.options.selectclass){MochiKit.DOM.addElementClass(this.element,this.options.selectclass);}
if(this.options.zindex){this.originalZ=parseInt(MochiKit.Style.getStyle(this.element,'z-index')||'0');this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this.ghostPosition=MochiKit.Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
MochiKit.DragAndDrop.Droppables.prepare(this.element);MochiKit.DragAndDrop.Draggables.notify('start',this,event);if(this.options.starteffect){this.options.starteffect(this.element);}},updateDrag:function(event,pointer){if(!this.dragging){this.startDrag(event);}
MochiKit.Position.prepare();MochiKit.DragAndDrop.Droppables.show(pointer,this.element);MochiKit.DragAndDrop.Draggables.notify('drag',this,event);this.draw(pointer);this.options.onchange(this);if(this.options.scroll){this.stopScrolling();var p,q;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);p=new MochiKit.Style.Coordinates(s.left,s.top);q=new MochiKit.Style.Coordinates(s.left+s.width,s.top+s.height);}else{p=MochiKit.Position.page(this.options.scroll);p.x+=this.options.scroll.scrollLeft;p.y+=this.options.scroll.scrollTop;p.x+=(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0);p.y+=(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0);q=new MochiKit.Style.Coordinates(p.x+this.options.scroll.offsetWidth,p.y+this.options.scroll.offsetHeight);}
var speed=[0,0];if(pointer.page.x>(q.x-this.options.scrollSensitivity)){speed[0]=pointer.page.x-(q.x-this.options.scrollSensitivity);}else if(pointer.page.x<(p.x+this.options.scrollSensitivity)){speed[0]=pointer.page.x-(p.x+this.options.scrollSensitivity);}
if(pointer.page.y>(q.y-this.options.scrollSensitivity)){speed[1]=pointer.page.y-(q.y-this.options.scrollSensitivity);}else if(pointer.page.y<(p.y+this.options.scrollSensitivity)){speed[1]=pointer.page.y-(p.y+this.options.scrollSensitivity);}
this.startScrolling(speed);}
if(/AppleWebKit/.test(navigator.appVersion)){window.scrollBy(0,0);}
event.stop();},finishDrag:function(event,success){var dr=MochiKit.DragAndDrop;this.dragging=false;if(this.options.selectclass){MochiKit.DOM.removeElementClass(this.element,this.options.selectclass);}
if(this.options.ghosting){MochiKit.Position.relativize(this.element,this.ghostPosition);MochiKit.DOM.removeElement(this._clone);this._clone=null;}
if(success){dr.Droppables.fire(event,this.element);}
dr.Draggables.notify('end',this,event);var revert=this.options.revert;if(revert&&typeof(revert)=='function'){revert=revert(this.element);}
var d=this.currentDelta();if(revert&&this.options.reverteffect){this._revert=this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
if(this.options.zindex){this.element.style.zIndex=this.originalZ;}
if(this.options.endeffect){this.options.endeffect(this.element);}
dr.Draggables.deactivate();dr.Droppables.reset(this.element);},keyPress:function(event){if(event.key().string!="KEY_ESCAPE"){return;}
this.finishDrag(event,false);event.stop();},endDrag:function(event){if(!this.dragging){return;}
this.stopScrolling();this.finishDrag(event,true);event.stop();},draw:function(point){var pos=MochiKit.Position.cumulativeOffset(this.element);var d=this.currentDelta();pos.x-=d[0];pos.y-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos.y-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[point.page.x-pos.x-this.offset[0],point.page.y-pos.y-this.offset[1]];if(this.options.snap){if(typeof(this.options.snap)=='function'){p=this.options.snap(p[0],p[1]);}else{if(this.options.snap instanceof Array){var i=-1;p=MochiKit.Base.map(MochiKit.Base.bind(function(v){i+=1;return Math.round(v/this.options.snap[i])*this.options.snap[i];},this),p);}else{p=MochiKit.Base.map(MochiKit.Base.bind(function(v){return Math.round(v/this.options.snap)*this.options.snap;},this),p);}}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal')){style.left=p[0]+'px';}
if((!this.options.constraint)||(this.options.constraint=='vertical')){style.top=p[1]+'px';}
if(style.visibility=='hidden'){style.visibility='';}},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;MochiKit.DragAndDrop.Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!speed[0]&&!speed[1]){return;}
this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(MochiKit.Base.bind(this.scroll,this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);if(this.scrollSpeed[0]||this.scrollSpeed[1]){var dm=delta/1000;this.options.scroll.scrollTo(s.left+dm*this.scrollSpeed[0],s.top+dm*this.scrollSpeed[1]);}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
var d=MochiKit.DragAndDrop;MochiKit.Position.prepare();d.Droppables.show(d.Draggables._lastPointer,this.element);d.Draggables.notify('drag',this);if(this._isScrollChild){d.Draggables._lastScrollPointer=d.Draggables._lastScrollPointer||d.Draggables._lastPointer;d.Draggables._lastScrollPointer.x+=this.scrollSpeed[0]*delta/1000;d.Draggables._lastScrollPointer.y+=this.scrollSpeed[1]*delta/1000;if(d.Draggables._lastScrollPointer.x<0){d.Draggables._lastScrollPointer.x=0;}
if(d.Draggables._lastScrollPointer.y<0){d.Draggables._lastScrollPointer.y=0;}
this.draw(d.Draggables._lastScrollPointer);}
this.options.onchange(this);},_getWindowScroll:function(win){var vp,w,h;MochiKit.DOM.withWindow(win,function(){vp=MochiKit.Style.getViewportPosition(win.document);});if(win.innerWidth){w=win.innerWidth;h=win.innerHeight;}else if(win.document.documentElement&&win.document.documentElement.clientWidth){w=win.document.documentElement.clientWidth;h=win.document.documentElement.clientHeight;}else{w=win.document.body.offsetWidth;h=win.document.body.offsetHeight;}
return{top:vp.y,left:vp.x,width:w,height:h};},repr:function(){return'['+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";}};MochiKit.DragAndDrop.__new__=function(){MochiKit.Base.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};};MochiKit.DragAndDrop.__new__();MochiKit.Base._exportSymbols(this,MochiKit.DragAndDrop);;if(typeof(MochiKit)=="undefined"){MochiKit={};}
if(typeof(MochiKit.MockDOM)=="undefined"){MochiKit.MockDOM={};}
MochiKit.MockDOM.NAME="MochiKit.MockDOM";MochiKit.MockDOM.VERSION="1.4";MochiKit.MockDOM.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.MockDOM.toString=function(){return this.__repr__();};MochiKit.MockDOM.createDocument=function(){var doc=new MochiKit.MockDOM.MockElement("DOCUMENT");doc.body=doc.createElement("BODY");doc.appendChild(doc.body);return doc;};MochiKit.MockDOM.MockElement=function(name,data,ownerDocument){this.tagName=this.nodeName=name.toUpperCase();this.ownerDocument=ownerDocument||null;if(name=="DOCUMENT"){this.nodeType=9;this.childNodes=[];}else if(typeof(data)=="string"){this.nodeValue=data;this.nodeType=3;}else{this.nodeType=1;this.childNodes=[];}
if(name.substring(0,1)=="<"){var nameattr=name.substring(name.indexOf('"')+1,name.lastIndexOf('"'));name=name.substring(1,name.indexOf(" "));this.tagName=this.nodeName=name.toUpperCase();this.setAttribute("name",nameattr);}};MochiKit.MockDOM.MockElement.prototype={createElement:function(tagName){return new MochiKit.MockDOM.MockElement(tagName,null,this.nodeType==9?this:this.ownerDocument);},createTextNode:function(text){return new MochiKit.MockDOM.MockElement("text",text,this.nodeType==9?this:this.ownerDocument);},setAttribute:function(name,value){this[name]=value;},getAttribute:function(name){return this[name];},appendChild:function(child){this.childNodes.push(child);},toString:function(){return"MockElement("+this.tagName+")";},getElementsByTagName:function(tagName){var foundElements=[];MochiKit.Base.nodeWalk(this,function(node){if(tagName=='*'||tagName==node.tagName){foundElements.push(node);return node.childNodes;}});return foundElements;}};MochiKit.MockDOM.EXPORT_OK=["mockElement","createDocument"];MochiKit.MockDOM.EXPORT=["document"];MochiKit.MockDOM.__new__=function(){this.document=this.createDocument();};MochiKit.MockDOM.__new__();;MochiKit.Base._deps('Sortable',['Base','Iter','DOM','Position','DragAndDrop']);MochiKit.Sortable.NAME='MochiKit.Sortable';MochiKit.Sortable.VERSION='1.4';MochiKit.Sortable.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};MochiKit.Sortable.toString=function(){return this.__repr__();};MochiKit.Sortable.EXPORT=[];MochiKit.Sortable.EXPORT_OK=[];MochiKit.Base.update(MochiKit.Sortable,{sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&MochiKit.Sortable.sortables[element.id]){return element;}
element=element.parentNode;}},options:function(element){element=MochiKit.Sortable._findRootElement(MochiKit.DOM.getElement(element));if(!element){return;}
return MochiKit.Sortable.sortables[element.id];},destroy:function(element){var s=MochiKit.Sortable.options(element);var b=MochiKit.Base;var d=MochiKit.DragAndDrop;if(s){MochiKit.Signal.disconnect(s.startHandle);MochiKit.Signal.disconnect(s.endHandle);b.map(function(dr){d.Droppables.remove(dr);},s.droppables);b.map(function(dr){dr.destroy();},s.draggables);delete MochiKit.Sortable.sortables[s.element.id];}},create:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;options=MochiKit.Base.update({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:[element],handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:MochiKit.Base.noop,onUpdate:MochiKit.Base.noop,accept:null},options);self.destroy(element);var options_for_draggable={revert:true,ghosting:options.ghosting,scroll:options.scroll,scrollSensitivity:options.scrollSensitivity,scrollSpeed:options.scrollSpeed,constraint:options.constraint,handle:options.handle};if(options.starteffect){options_for_draggable.starteffect=options.starteffect;}
if(options.reverteffect){options_for_draggable.reverteffect=options.reverteffect;}else if(options.ghosting){options_for_draggable.reverteffect=function(innerelement){innerelement.style.top=0;innerelement.style.left=0;};}
if(options.endeffect){options_for_draggable.endeffect=options.endeffect;}
if(options.zindex){options_for_draggable.zindex=options.zindex;}
var options_for_droppable={overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,onhover:self.onHover,tree:options.tree,accept:options.accept}
var options_for_tree={onhover:self.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,accept:options.accept}
MochiKit.DOM.removeEmptyTextNodes(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){new MochiKit.DragAndDrop.Droppable(element,options_for_tree);options.droppables.push(element);}
MochiKit.Base.map(function(e){var handle=options.handle?MochiKit.DOM.getFirstElementByTagAndClassName(null,options.handle,e):e;options.draggables.push(new MochiKit.DragAndDrop.Draggable(e,MochiKit.Base.update(options_for_draggable,{handle:handle})));new MochiKit.DragAndDrop.Droppable(e,options_for_droppable);if(options.tree){e.treeNode=element;}
options.droppables.push(e);},(self.findElements(element,options)||[]));if(options.tree){MochiKit.Base.map(function(e){new MochiKit.DragAndDrop.Droppable(e,options_for_tree);e.treeNode=element;options.droppables.push(e);},(self.findTreeElements(element,options)||[]));}
self.sortables[element.id]=options;options.lastValue=self.serialize(element);options.startHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,'start',MochiKit.Base.partial(self.onStart,element));options.endHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,'end',MochiKit.Base.partial(self.onEnd,element));},onStart:function(element,draggable){var self=MochiKit.Sortable;var options=self.options(element);options.lastValue=self.serialize(options.element);},onEnd:function(element,draggable){var self=MochiKit.Sortable;self.unmark();var options=self.options(element);if(options.lastValue!=self.serialize(options.element)){options.onUpdate(options.element);}},findElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree?true:false,options.treeTag);},findChildren:function(element,only,recursive,tagName){if(!element.hasChildNodes()){return null;}
tagName=tagName.toUpperCase();if(only){only=MochiKit.Base.flattenArray([only]);}
var elements=[];MochiKit.Base.map(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||MochiKit.Iter.some(only,function(c){return MochiKit.DOM.hasElementClass(e,c);}))){elements.push(e);}
if(recursive){var grandchildren=MochiKit.Sortable.findChildren(e,only,recursive,tagName);if(grandchildren&&grandchildren.length>0){elements=elements.concat(grandchildren);}}},element.childNodes);return elements;},onHover:function(element,dropon,overlap){if(MochiKit.DOM.isParent(dropon,element)){return;}
var self=MochiKit.Sortable;if(overlap>.33&&overlap<.66&&self.options(dropon).tree){return;}else if(overlap>0.5){self.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility='hidden';dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element);}
self.options(dropon.parentNode).onChange(element);}}else{self.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility='hidden';dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element);}
self.options(dropon.parentNode).onChange(element);}}},_offsetSize:function(element,type){if(type=='vertical'||type=='height'){return element.offsetHeight;}else{return element.offsetWidth;}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var self=MochiKit.Sortable;var droponOptions=self.options(dropon);if(!MochiKit.DOM.isParent(dropon,element)){var index;var children=self.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=self._offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-self._offsetSize(children[index],droponOptions.overlap)>=0){offset-=self._offsetSize(children[index],droponOptions.overlap);}else if(offset-(self._offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
dropon.insertBefore(element,child);self.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){var m=MochiKit.Sortable._marker;if(m){MochiKit.Style.hideElement(m);}},mark:function(dropon,position){var d=MochiKit.DOM;var self=MochiKit.Sortable;var sortable=self.options(dropon.parentNode);if(sortable&&!sortable.ghosting){return;}
if(!self._marker){self._marker=d.getElement('dropmarker')||document.createElement('DIV');MochiKit.Style.hideElement(self._marker);d.addElementClass(self._marker,'dropmarker');self._marker.style.position='absolute';document.getElementsByTagName('body').item(0).appendChild(self._marker);}
var offsets=MochiKit.Position.cumulativeOffset(dropon);self._marker.style.left=offsets.x+'px';self._marker.style.top=offsets.y+'px';if(position=='after'){if(sortable.overlap=='horizontal'){self._marker.style.left=(offsets.x+dropon.clientWidth)+'px';}else{self._marker.style.top=(offsets.y+dropon.clientHeight)+'px';}}
MochiKit.Style.showElement(self._marker);},_tree:function(element,options,parent){var self=MochiKit.Sortable;var children=self.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match){continue;}
var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:self._findChildrenElement(children[i],options.treeTag.toUpperCase())}
if(child.container){self._tree(child.container,options,child)}
parent.children.push(child);}
return parent;},_findChildrenElement:function(element,containerTag){if(element&&element.hasChildNodes){containerTag=containerTag.toUpperCase();for(var i=0;i<element.childNodes.length;++i){if(element.childNodes[i].tagName.toUpperCase()==containerTag){return element.childNodes[i];}}}
return null;},tree:function(element,options){element=MochiKit.DOM.getElement(element);var sortableOptions=MochiKit.Sortable.options(element);options=MochiKit.Base.update({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},options||{});var root={id:null,parent:null,children:new Array,container:element,position:0}
return MochiKit.Sortable._tree(element,options,root);},setSequence:function(element,newSequence,options){var self=MochiKit.Sortable;var b=MochiKit.Base;element=MochiKit.DOM.getElement(element);options=b.update(self.options(element),options||{});var nodeMap={};b.map(function(n){var m=n.id.match(options.format);if(m){nodeMap[m[1]]=[n,n.parentNode];}
n.parentNode.removeChild(n);},self.findElements(element,options));b.map(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}},newSequence);},_constructIndex:function(node){var index='';do{if(node.id){index='['+node.position+']'+index;}}while((node=node.parent)!=null);return index;},sequence:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;var options=MochiKit.Base.update(self.options(element),options||{});return MochiKit.Base.map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';},MochiKit.DOM.getElement(self.findElements(element,options)||[]));},serialize:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;options=MochiKit.Base.update(self.options(element),options||{});var name=encodeURIComponent(options.name||element.id);if(options.tree){return MochiKit.Base.flattenArray(MochiKit.Base.map(function(item){return[name+self._constructIndex(item)+"[id]="+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));},self.tree(element,options).children)).join('&');}else{return MochiKit.Base.map(function(item){return name+"[]="+encodeURIComponent(item);},self.sequence(element,options)).join('&');}}});MochiKit.Sortable.Sortable=MochiKit.Sortable;;MochiKit.Base._deps('Test',['Base']);MochiKit.Test.NAME="MochiKit.Test";MochiKit.Test.VERSION="1.4";MochiKit.Test.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};MochiKit.Test.toString=function(){return this.__repr__();};MochiKit.Test.EXPORT=["runTests"];MochiKit.Test.EXPORT_OK=[];MochiKit.Test.runTests=function(obj){if(typeof(obj)=="string"){obj=JSAN.use(obj);}
var suite=new MochiKit.Test.Suite();suite.run(obj);};MochiKit.Test.Suite=function(){this.testIndex=0;MochiKit.Base.bindMethods(this);};MochiKit.Test.Suite.prototype={run:function(obj){try{obj(this);}catch(e){this.traceback(e);}},traceback:function(e){var items=MochiKit.Iter.sorted(MochiKit.Base.items(e));print("not ok "+this.testIndex+" - Error thrown");for(var i=0;i<items.length;i++){var kv=items[i];if(kv[0]=="stack"){kv[1]=kv[1].split(/\n/)[0];}
this.print("# "+kv.join(": "));}},print:function(s){print(s);},is:function(got,expected,message){var res=1;var msg=null;try{res=MochiKit.Base.compare(got,expected);}catch(e){msg="Can not compare "+typeof(got)+":"+typeof(expected);}
if(res){msg="Expected value did not compare equal";}
if(!res){return this.testResult(true,message);}
return this.testResult(false,message,[[msg],["got:",got],["expected:",expected]]);},testResult:function(pass,msg,failures){this.testIndex+=1;if(pass){this.print("ok "+this.testIndex+" - "+msg);return;}
this.print("not ok "+this.testIndex+" - "+msg);if(failures){for(var i=0;i<failures.length;i++){this.print("# "+failures[i].join(" "));}}},isDeeply:function(got,expected,message){var m=MochiKit.Base;var res=1;try{res=m.compare(got,expected);}catch(e){}
if(res===0){return this.ok(true,message);}
var gk=m.keys(got);var ek=m.keys(expected);gk.sort();ek.sort();if(m.compare(gk,ek)){var cmp={};var i;for(i=0;i<gk.length;i++){cmp[gk[i]]="got";}
for(i=0;i<ek.length;i++){if(ek[i]in cmp){delete cmp[ek[i]];}else{cmp[ek[i]]="expected";}}
var diffkeys=m.keys(cmp);diffkeys.sort();var gotkeys=[];var expkeys=[];while(diffkeys.length){var k=diffkeys.shift();if(k in Object.prototype){continue;}
(cmp[k]=="got"?gotkeys:expkeys).push(k);}}
return this.testResult((!res),msg,(msg?[["got:",got],["expected:",expected]]:undefined));},ok:function(res,message){return this.testResult(res,message);}};MochiKit.Test.__new__=function(){var m=MochiKit.Base;this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};m.nameFunctions(this);};MochiKit.Test.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Test);;MochiKit.Style.constrainedElements=[];MochiKit.Style.resizeConstrainedElements=function(){MochiKit.Style.constrainedElements=Basis.array_sequentialize(Basis.array_flip(Basis.array_flip(MochiKit.Style.constrainedElements)));var list=MochiKit.Style.constrainedElements;var levels=[];if(list.length>0){for(var i=0;i<list.length;i++){var list_item=MochiKit.DOM.getElement(list[i]);if(!Basis.is_element(list_item)){list=Basis.array_delete_index(list,i);i--;}
if(Basis.is_element_visible(list_item)){var nest=0;var parent=list_item.parentNode;while(parent!=document.body.parentNode){nest++;parent=parent.parentNode;}
if(!levels[nest]){levels[nest]=[];}
levels[nest].push(list_item);}}
levels=Basis.ksort(levels);for(var i in levels){if(typeof(levels[i])!="function"){for(var x in levels[i]){var list_item=MochiKit.DOM.getElement(levels[i][x]);if(Basis.is_element(list_item)){Basis.set_style(list_item,{"height":"0px","width":"0px"});MochiKit.Iter.forEach(list_item.childNodes,function(node){if(node&&node.style){node.style.display="none";}});}}}}
for(var i in levels){if(typeof(levels[i])!="function"){for(var x in levels[i]){var list_item=MochiKit.DOM.getElement(levels[i][x]);if(Basis.is_element(list_item)){MochiKit.Style.resizeElements(list_item);MochiKit.Iter.forEach(list_item.childNodes,function(node){if(node&&node.style){node.style.display="";}});}}}}}
if(MochiKit.Style.resizeConstrainedElements.callbacks){for(var i=0;i<MochiKit.Style.resizeConstrainedElements.callbacks.length;i++){if(Basis.is_function(MochiKit.Style.resizeConstrainedElements.callbacks[i])){MochiKit.Style.resizeConstrainedElements.callbacks[i]();}}}};MochiKit.Style.resizeConstrainedElements.callbacks=[];MochiKit.Style.registerSizeConstraints=function(node,width,height,aspect,subtract_sibling_heights){node=MochiKit.DOM.getElement(node);var sc=node.sizeConstraints={w:null,h:null,a:null,"subtract_sibling_heights":subtract_sibling_heights};if(typeof(width)=="number"){sc.w=function(w,h){return width;}}else if(typeof(width)=="function"){sc.w=width;}else if(typeof(width)=="string"){var code="return "+width.replace(/%/g,"*0.01*w")+";";sc.w=new Function("w","h",code);}
if(typeof(height)=="number"){sc.h=function(w,h){return height;}}else if(typeof(height)=="function"){sc.h=height;}else if(typeof(height)=="string"){var code="return "+height.replace(/%/g,"*0.01*h")+";";sc.h=new Function("w","h",code);}
if(typeof(aspect)=="number"){sc.a=function(w,h){return aspect;}}else if(typeof(aspect)=="function"){sc.a=aspect;}else if(typeof(aspect)=="string"){var code="return "+aspect.replace(/%/g,"*0.01*w/h")+";";sc.a=new Function("w","h",code);}
var list=MochiKit.Style.constrainedElements;if(list.length>0){var push=true;for(var i=0;i<list.length;i++){if(list[i].id==node.id){push=false;}}
if(push){list.push(node.id);}}else{list.push(node.id);}}
MochiKit.Style.resizeElements=function(){var args=MochiKit.Base.flattenArray(arguments);for(var i=0;i<args.length;i++){var node=MochiKit.DOM.getElement(args[i]);if((node!=null)&&(node.nodeType===1)&&(node.parentNode!=null)&&(node.sizeConstraints!=null)){var p_dim=MochiKit.Style.getElementDimensions(node.parentNode);if(node.sizeConstraints.subtract_sibling_heights){for(var i=0;i<node.parentNode.childNodes.length;i++){var obj=MochiKit.DOM.getElement(node.parentNode.childNodes[i]);if(obj&&obj.tagName&&(obj!==node)){var o_dim=MochiKit.Style.getElementDimensions(obj);p_dim.h-=o_dim.h;}}}
var borders=Basis.sum_of_element(node.parentNode,"border");var padding=Basis.sum_of_element(node.parentNode,"padding");var adjust_h=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_w=(borders.left+borders.right+padding.left+padding.right);var ref={"w":(p_dim.w-adjust_w),"h":(p_dim.h-adjust_h)};var dim=MochiKit.Style._evalConstraints(node.sizeConstraints,ref);MochiKit.Style.setElementDimensions(node,dim);node.w=dim.w;node.h=dim.h;}
if(node!=null&&typeof(node.resizeContent)=="function"){node.resizeContent();}else{node=node.firstChild;while(node!=null){if(node.nodeType===1){MochiKit.Style.resizeElements(node);}
node=node.nextSibling;}}}}
MochiKit.Style._evalConstraints=function(sc,ref){var log=MochiKit.Logging.logError;if(typeof(sc.w)=="function"){try{var w=Math.max(0,sc.w(ref.w,ref.h));}catch(e){MochiKit.Logging.log("Error evaluating width size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(typeof(sc.h)=="function"){try{var h=Math.max(0,sc.h(ref.w,ref.h));}catch(e){MochiKit.Logging.log("Error evaluating height size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(typeof(sc.a)=="function"){try{var a=sc.a(ref.w,ref.h);w=w||ref.w;h=h||ref.h;if(h*a>ref.w){h=ref.w/a;}
if(w/a>ref.h){w=ref.h*a;}
if(w>h*a){w=h*a;}else{h=w/a;}}catch(e){MochiKit.Logging.log("Error evaluating aspect size constraint; "+"w: "+ref.w+", h: "+ref.h,e);}}
if(w!=null){w=Math.floor(w);}
if(h!=null){h=Math.floor(h);}
return new MochiKit.Style.Dimensions(w,h);}
function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
Tween=function(obj,prop,func,begin,finish,duration,suffixe){this.init(obj,prop,func,begin,finish,duration,suffixe)}
var t=Tween.prototype;t.obj=new Object();t.prop='';t.func=function(t,b,c,d){return c*t/d+b;};t.begin=0;t.change=0;t.prevTime=0;t.prevPos=0;t.looping=false;t._duration=0;t._time=0;t._pos=0;t._position=0;t._startTime=0;t._finish=0;t.name='';t.suffixe='';t._listeners=new Array();t.setTime=function(t){this.prevTime=this._time;if(t>this.getDuration()){if(this.looping){this.rewind(t-this._duration);this.update();this.broadcastMessage('onMotionLooped',{target:this,type:'onMotionLooped'});}else{this._time=this._duration;this.update();this.stop();this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}}else if(t<0){this.rewind();this.update();}else{this._time=t;this.update();}}
t.getTime=function(){return this._time;}
t.setDuration=function(d){this._duration=(d==null||d<=0)?100000:d;}
t.getDuration=function(){return this._duration;}
t.setPosition=function(p){this.prevPos=this._pos;var a=this.suffixe!=''?this.suffixe:'';this.obj[this.prop]=Math.round(p)+a;this._pos=p;this.broadcastMessage('onMotionChanged',{target:this,type:'onMotionChanged'});}
t.getPosition=function(t){if(t==undefined)t=this._time;return this.func(t,this.begin,this.change,this._duration);};t.setFinish=function(f){this.change=f-this.begin;};t.geFinish=function(){return this.begin+this.change;};t.init=function(obj,prop,func,begin,finish,duration,suffixe){if(!arguments.length)return;this._listeners=new Array();this.addListener(this);if(suffixe)this.suffixe=suffixe;this.obj=obj;this.prop=prop;this.begin=begin;this._pos=begin;this.setDuration(duration);if(func!=null&&func!=''){this.func=func;}
this.setFinish(finish);}
t.start=function(){this.rewind();this.startEnterFrame();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
t.rewind=function(t){this.stop();this._time=(t==undefined)?0:t;this.fixTime();this.update();}
t.fforward=function(){this._time=this._duration;this.fixTime();this.update();}
t.update=function(){this.setPosition(this.getPosition(this._time));}
t.startEnterFrame=function(){this.stopEnterFrame();this.isPlaying=true;this.onEnterFrame();}
t.onEnterFrame=function(){if(this.isPlaying){this.nextFrame();setTimeout(Delegate.create(this,this.onEnterFrame),0);}}
t.nextFrame=function(){this.setTime((this.getTimer()-this._startTime)/1000);}
t.stop=function(){this.stopEnterFrame();this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
t.stopEnterFrame=function(){this.isPlaying=false;}
t.continueTo=function(finish,duration){this.begin=this._pos;this.setFinish(finish);if(this._duration!=undefined)
this.setDuration(duration);this.start();}
t.resume=function(){this.fixTime();this.startEnterFrame();this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionResumed'});}
t.yoyo=function(){this.continueTo(this.begin,this._time);}
t.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
t.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
t.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}}
t.fixTime=function(){this._startTime=this.getTimer()-this._time*1000;}
t.getTimer=function(){return new Date().getTime()-this._time;}
Tween.backEaseIn=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;}
Tween.backEaseOut=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;}
Tween.backEaseInOut=function(t,b,c,d,a,p){if(s==undefined)var s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;}
Tween.elasticEaseIn=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}
else
var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}
Tween.elasticEaseOut=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return(a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b);}
Tween.elasticEaseInOut=function(t,b,c,d,a,p){if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)var p=d*(.3*1.5);if(!a||a<Math.abs(c)){var a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;}
Tween.bounceEaseOut=function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}}
Tween.bounceEaseIn=function(t,b,c,d){return c-Tween.bounceEaseOut(d-t,0,c,d)+b;}
Tween.bounceEaseInOut=function(t,b,c,d){if(t<d/2)return Tween.bounceEaseIn(t*2,0,c,d)*.5+b;else return Tween.bounceEaseOut(t*2-d,0,c,d)*.5+c*.5+b;}
Tween.strongEaseInOut=function(t,b,c,d){return c*(t/=d)*t*t*t*t+b;}
Tween.regularEaseIn=function(t,b,c,d){return c*(t/=d)*t+b;}
Tween.regularEaseOut=function(t,b,c,d){return-c*(t/=d)*(t-2)+b;}
Tween.regularEaseInOut=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;}
Tween.strongEaseIn=function(t,b,c,d){return c*(t/=d)*t*t*t*t+b;}
Tween.strongEaseOut=function(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;}
Tween.strongEaseInOut=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;};ColorTween.prototype=new Tween();ColorTween.prototype.constructor=Tween;ColorTween.superclass=Tween.prototype;function ColorTween(obj,prop,func,fromColor,toColor,duration){this.targetObject=obj;this.targetProperty=prop;this.fromColor=fromColor;this.toColor=toColor;this.init(new Object(),'x',func,0,100,duration);this.listenerObj=new Object();this.listenerObj.onMotionChanged=Delegate.create(this,this.onColorChanged);this.addListener(this.listenerObj);}
var o=ColorTween.prototype;o.targetObject={};o.targetProperty={};o.fromColor='';o.toColor='';o.currentColor='';o.listenerObj={};o.onColorChanged=function(){this.currentColor=this.getColor(this.fromColor,this.toColor,this._pos);this.targetObject[this.targetProperty]=this.currentColor;}
o.getColor=function(start,end,percent)
{var r1=this.hex2dec(start.slice(0,2));var g1=this.hex2dec(start.slice(2,4));var b1=this.hex2dec(start.slice(4,6));var r2=this.hex2dec(end.slice(0,2));var g2=this.hex2dec(end.slice(2,4));var b2=this.hex2dec(end.slice(4,6));var pc=percent/100;r=Math.floor(r1+(pc*(r2-r1))+.5);g=Math.floor(g1+(pc*(g2-g1))+.5);b=Math.floor(b1+(pc*(b2-b1))+.5);return("#"+this.dec2hex(r)+this.dec2hex(g)+this.dec2hex(b));}
o.dec2hex=function(dec){return(this.hexDigit[dec>>4]+this.hexDigit[dec&15]);}
o.hexDigit=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");o.hex2dec=function(hex){return(parseInt(hex,16))};;OpacityTween.prototype=new Tween();OpacityTween.prototype.constructor=Tween;OpacityTween.superclass=Tween.prototype;function OpacityTween(obj,func,fromOpacity,toOpacity,duration){this.targetObject=obj;this.init(new Object(),'x',func,fromOpacity,toOpacity,duration);}
var o=OpacityTween.prototype;o.targetObject={};o.onMotionChanged=function(evt){var v=evt.target._pos;var t=this.targetObject;t.style['opacity']=v/100;t.style['-moz-opacity']=v/100;if(t.filters)t.filters.alpha['opacity']=v;};TextTween.prototype=new Tween();TextTween.prototype.constructor=Tween;TextTween.superclass=Tween.prototype;function TextTween(obj,property,txt,func,duration){this.targetObject=obj;this.targetProperty=property;this.txt=txt;if(func!=null&&func!=''){this.func=func;}
this.init(new Object(),'x',func,0,txt.length,duration);}
var o=TextTween.prototype;o.targetObject={};o.targetProperty={};o.fromColor='';o.toColor='';o.currentColor='';o.onMotionChanged=function(evt){var v=evt.target._pos;this.targetObject[this.targetProperty]=this.txt.substr(0,v);};function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
function Sequence(){this.children=new Array();this.currentChildIndex=0;this._listeners=new Array();this.nextObject=new Object();this.addListener(this);}
var s=Sequence.prototype;s.addChild=function(tween){this.children.push(tween)}
s.removeChild=function(tween){var a=this.children;var i=a.length;while(i--){if(a[i]==tween){a.splice(i,1);return true;}}
return false;}
s.start=function(){this.rewind();this.play();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
s.next=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);if(this.currentChildIndex<this.children.length-1){this.currentChildIndex++;this.play();}
else{this.stop();this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}}
s.play=function(){this.nextObject=new Object();this.nextObject.onMotionFinished=Delegate.create(this,this.next);this.children[this.currentChildIndex].addListener(this.nextObject);this.children[this.currentChildIndex].start();}
s.stop=function(){this.children[this.currentChildIndex].stop();this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
s.rewind=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);this.currentChildIndex=0;for(var i=0;i<this.children.length;i++){this.children[i].rewind();}}
s.fforward=function(){this.children[this.currentChildIndex].removeListener(this.nextObject);for(var i=0;i<this.children.length;i++){this.children[i].fforward();}
this.currentChildIndex=this.children.length-1;}
s.resume=function(){this.children[this.currentChildIndex].resume();this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionStopped'});}
s.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
s.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
s.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}};function Delegate(){}
Delegate.create=function(o,f){var a=new Array();var l=arguments.length;for(var i=2;i<l;i++)a[i-2]=arguments[i];return function(){var aP=[].concat(arguments,a);f.apply(o,aP);}}
function Parallel(){this.children=new Array();this.numChildren=0;this._listeners=new Array();this.addListener(this);}
var s=Parallel.prototype;s.endObject=new Object();s.addChild=function(tween){this.children.push(tween)
this.numChildren++;}
s.start=function(){this.play();this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});}
s.play=function(){for(var u=0;u<this.numChildren;u++){if(u==(this.numChildren-1)){this.endObject=new Object();this.endObject.onMotionFinished=Delegate.create(this,this.end);this.children[u].addListener(this.endObject);}
this.children[u].start();}}
s.end=function(){this.children[this.numChildren-1].removeListener(this.endObject);this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});}
s.stop=function(){this.enumAction('stop');this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});}
s.rewind=function(){this.enumAction('rewind');}
s.fforward=function(){this.enumAction('fforward');}
s.resume=function(){this.enumAction('resume');this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionResumed'});}
s.yoyo=function(){this.enumAction('yoyo');}
s.enumAction=function(action){for(var u=0;u<this.numChildren;u++){this.children[u][action]();}}
s.addListener=function(o){this.removeListener(o);return this._listeners.push(o);}
s.removeListener=function(o){var a=this._listeners;var i=a.length;while(i--){if(a[i]==o){a.splice(i,1);return true;}}
return false;}
s.broadcastMessage=function(){var arr=new Array();for(var i=0;i<arguments.length;i++){arr.push(arguments[i])}
var e=arr.shift();var a=this._listeners;var l=a.length;for(var i=0;i<l;i++){if(a[i][e])
a[i][e].apply(a[i],arr);}}
if(typeof(Basis)=='undefined'){Basis={};}
Basis.NAME="Basis";Basis.VERSION="0.1";Basis.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};Basis.misc_vars={};;var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return}f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return}if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return}}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return}var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return}var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return}AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();;var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;};function asort(inputArr,sort_flags){var valArr=[],keyArr=[],k,i,ret,sorter,that=this;switch(sort_flags){case'SORT_STRING':sorter=function(a,b){return that.strnatcmp(a,b);};break;case'SORT_LOCALE_STRING':var loc=i18n_loc_get_default();sorter=this.php_js.i18nLocales[loc].sorting;break;case'SORT_NUMERIC':sorter=function(a,b){return(a-b);};break;case'SORT_REGULAR':default:sorter=function(a,b){if(a>b){return 1;}
if(a<b){return-1;}
return 0;};break;}
var bubbleSort=function(keyArr,inputArr){var i,j,tempValue,tempKeyVal;for(i=inputArr.length-2;i>=0;i--){for(j=0;j<=i;j++){ret=sorter(inputArr[j+1],inputArr[j]);if(ret<0){tempValue=inputArr[j];inputArr[j]=inputArr[j+1];inputArr[j+1]=tempValue;tempKeyVal=keyArr[j];keyArr[j]=keyArr[j+1];keyArr[j+1]=tempKeyVal;}}}};for(k in inputArr){valArr.push(inputArr[k]);keyArr.push(k);delete inputArr[k];}
try{bubbleSort(keyArr,valArr);}catch(e){return false;}
for(i=0;i<valArr.length;i++){inputArr[keyArr[i]]=valArr[i];}
return true;}
function getenv(varname){if(!this.php_js||!this.php_js.ENV||!this.php_js.ENV[varname]){return false;}
return this.php_js.ENV[varname];}
function i18n_loc_get_default(){this.php_js=this.php_js||{};return this.php_js.i18nLocale||(i18n_loc_set_default('en_US_POSIX'),'en_US_POSIX');}
function i18n_loc_set_default(name){this.php_js=this.php_js||{};this.php_js.i18nLocales={en_US_POSIX:{sorting:function(str1,str2){return(str1==str2)?0:((str1>str2)?1:-1);}}};this.php_js.i18nLocale=name;return true;}
function ksort(array,sort_flags){var tmp_arr={},keys=[],sorter,i,key,that=this;switch(sort_flags){case'SORT_STRING':sorter=function(a,b){return that.strnatcmp(a,b);};break;case'SORT_LOCALE_STRING':var loc=i18n_loc_get_default();sorter=this.php_js.i18nLocales[loc].sorting;break;case'SORT_NUMERIC':sorter=function(a,b){return(a-b);};break;case'SORT_REGULAR':default:sorter=function(a,b){if(a>b){return 1;}
if(a<b){return-1;}
return 0;};break;}
for(key in array){keys.push(key);}
keys.sort(sorter);for(i=0;i<keys.length;i++){key=keys[i];tmp_arr[key]=array[key];delete array[key];}
for(i in tmp_arr){array[i]=tmp_arr[i];}
return true;}
function setlocale(category,locale){var categ='',cats=[],i=0,d=this.window.document;var _copy=function _copy(orig){var newObj={};for(var i in orig){if(typeof orig[i]==='object'){newObj[i]=_copy(orig[i]);}
else{newObj[i]=orig[i];}}
return newObj;};this.php_js=this.php_js||{};var phpjs=this.php_js;if(!phpjs.locales){phpjs.locales={};phpjs.locales.en={'LC_COLLATE':function(str1,str2){return(str1==str2)?0:((str1>str2)?1:-1);},'LC_CTYPE':{an:/^[A-Za-z\d]+$/g,al:/^[A-Za-z]+$/g,ct:/^[\u0000-\u001F\u007F]+$/g,dg:/^[\d]+$/g,gr:/^[\u0021-\u007E]+$/g,lw:/^[a-z]+$/g,pr:/^[\u0020-\u007E]+$/g,pu:/^[\u0021-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]+$/g,sp:/^[\f\n\r\t\v ]+$/g,up:/^[A-Z]+$/g,xd:/^[A-Fa-f\d]+$/g,CODESET:'UTF-8',lower:'abcdefghijklmnopqrstuvwxyz',upper:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'},'LC_TIME':{a:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],A:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],b:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],B:['January','February','March','April','May','June','July','August','September','October','November','December'],c:'%a %d %b %Y %r %Z',p:['AM','PM'],P:['am','pm'],r:'%I:%M:%S %p',x:'%m/%d/%Y',X:'%r',alt_digits:'',ERA:'',ERA_YEAR:'',ERA_D_T_FMT:'',ERA_D_FMT:'',ERA_T_FMT:''},'LC_MONETARY':{int_curr_symbol:'USD',currency_symbol:'$',mon_decimal_point:'.',mon_thousands_sep:',',mon_grouping:[3],positive_sign:'',negative_sign:'-',int_frac_digits:2,frac_digits:2,p_cs_precedes:1,p_sep_by_space:0,n_cs_precedes:1,n_sep_by_space:0,p_sign_posn:3,n_sign_posn:0},'LC_NUMERIC':{decimal_point:'.',thousands_sep:',',grouping:[3]},'LC_MESSAGES':{YESEXPR:'^[yY].*',NOEXPR:'^[nN].*',YESSTR:'',NOSTR:''}};phpjs.locales.en_US=_copy(phpjs.locales.en);phpjs.locales.en_US.LC_TIME.c='%a %d %b %Y %r %Z';phpjs.locales.en_US.LC_TIME.x='%D';phpjs.locales.en_US.LC_TIME.X='%r';phpjs.locales.en_US.LC_MONETARY.int_curr_symbol='USD ';phpjs.locales.en_US.LC_MONETARY.p_sign_posn=1;phpjs.locales.en_US.LC_MONETARY.n_sign_posn=1;phpjs.locales.en_US.LC_MONETARY.mon_grouping=[3,3];phpjs.locales.en_US.LC_NUMERIC.thousands_sep='';phpjs.locales.en_US.LC_NUMERIC.grouping=[];phpjs.locales.en_GB=_copy(phpjs.locales.en);phpjs.locales.en_GB.LC_TIME.r='%l:%M:%S %P %Z';phpjs.locales.en_AU=_copy(phpjs.locales.en_GB);phpjs.locales.C=_copy(phpjs.locales.en);phpjs.locales.C.LC_CTYPE.CODESET='ANSI_X3.4-1968';phpjs.locales.C.LC_MONETARY={int_curr_symbol:'',currency_symbol:'',mon_decimal_point:'',mon_thousands_sep:'',mon_grouping:[],p_cs_precedes:127,p_sep_by_space:127,n_cs_precedes:127,n_sep_by_space:127,p_sign_posn:127,n_sign_posn:127,positive_sign:'',negative_sign:'',int_frac_digits:127,frac_digits:127};phpjs.locales.C.LC_NUMERIC={decimal_point:'.',thousands_sep:'',grouping:[]};phpjs.locales.C.LC_TIME.c='%a %b %e %H:%M:%S %Y';phpjs.locales.C.LC_TIME.x='%m/%d/%y';phpjs.locales.C.LC_TIME.X='%H:%M:%S';phpjs.locales.C.LC_MESSAGES.YESEXPR='^[yY]';phpjs.locales.C.LC_MESSAGES.NOEXPR='^[nN]';phpjs.locales.fr=_copy(phpjs.locales.en);phpjs.locales.fr.LC_TIME.a=['dim','lun','mar','mer','jeu','ven','sam'];phpjs.locales.fr.LC_TIME.A=['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'];phpjs.locales.fr.LC_TIME.b=['jan','f\u00E9v','mar','avr','mai','jun','jui','ao\u00FB','sep','oct','nov','d\u00E9c'];phpjs.locales.fr.LC_TIME.B=['janvier','f\u00E9vrier','mars','avril','mai','juin','juillet','ao\u00FBt','septembre','octobre','novembre','d\u00E9cembre'];phpjs.locales.fr.LC_TIME.c='%a %d %b %Y %T %Z';phpjs.locales.fr.LC_TIME.p=['',''];phpjs.locales.fr.LC_TIME.P=['',''];phpjs.locales.fr.LC_TIME.x='%d.%m.%Y';phpjs.locales.fr.LC_TIME.X='%T';phpjs.locales.fr_CA=_copy(phpjs.locales.fr);phpjs.locales.fr_CA.LC_TIME.x='%Y-%m-%d';}
if(!phpjs.locale){phpjs.locale='en_US';var NS_XHTML='http://www.w3.org/1999/xhtml';var NS_XML='http://www.w3.org/XML/1998/namespace';if(d.getElementsByTagNameNS&&d.getElementsByTagNameNS(NS_XHTML,'html')[0]){if(d.getElementsByTagNameNS(NS_XHTML,'html')[0].getAttributeNS&&d.getElementsByTagNameNS(NS_XHTML,'html')[0].getAttributeNS(NS_XML,'lang')){phpjs.locale=d.getElementsByTagName(NS_XHTML,'html')[0].getAttributeNS(NS_XML,'lang');}else if(d.getElementsByTagNameNS(NS_XHTML,'html')[0].lang){phpjs.locale=d.getElementsByTagNameNS(NS_XHTML,'html')[0].lang;}}else if(d.getElementsByTagName('html')[0]&&d.getElementsByTagName('html')[0].lang){phpjs.locale=d.getElementsByTagName('html')[0].lang;}}
phpjs.locale=phpjs.locale.replace('-','_');if(!(phpjs.locale in phpjs.locales)){if(phpjs.locale.replace(/_[a-zA-Z]+$/,'')in phpjs.locales){phpjs.locale=phpjs.locale.replace(/_[a-zA-Z]+$/,'');}}
if(!phpjs.localeCategories){phpjs.localeCategories={'LC_COLLATE':phpjs.locale,'LC_CTYPE':phpjs.locale,'LC_MONETARY':phpjs.locale,'LC_NUMERIC':phpjs.locale,'LC_TIME':phpjs.locale,'LC_MESSAGES':phpjs.locale};}
if(locale===null||locale===''){locale=getenv(category)||getenv('LANG');}else if(locale instanceof Array){for(i=0;i<locale.length;i++){if(!(locale[i]in this.php_js.locales)){if(i===locale.length-1){return false;}
continue;}
locale=locale[i];break;}}
if(locale==='0'||locale===0){if(category==='LC_ALL'){for(categ in this.php_js.localeCategories){cats.push(categ+'='+this.php_js.localeCategories[categ]);}
return cats.join(';');}
return this.php_js.localeCategories[category];}
if(!(locale in this.php_js.locales)){return false;}
if(category==='LC_ALL'){for(categ in this.php_js.localeCategories){this.php_js.localeCategories[categ]=locale;}}else{this.php_js.localeCategories[category]=locale;}
return locale;}
function strcmp(str1,str2){return((str1==str2)?0:((str1>str2)?1:-1));}
function strftime(fmt,timestamp){this.php_js=this.php_js||{};setlocale('LC_ALL',0);var phpjs=this.php_js;var _xPad=function(x,pad,r){if(typeof r==='undefined'){r=10;}
for(;parseInt(x,10)<r&&r>1;r/=10){x=pad.toString()+x;}
return x.toString();};var locale=phpjs.localeCategories.LC_TIME;var locales=phpjs.locales;var _formats={a:function(d){return locales[locale].LC_TIME.a[d.getDay()];},A:function(d){return locales[locale].LC_TIME.A[d.getDay()];},b:function(d){return locales[locale].LC_TIME.b[d.getMonth()];},B:function(d){return locales[locale].LC_TIME.B[d.getMonth()];},C:function(d){return _xPad(parseInt(d.getFullYear()/100,10),0);},d:['getDate','0'],e:['getDate',' '],g:function(d){return _xPad(parseInt(this.G(d)/100,10),0);},G:function(d){var y=d.getFullYear();var V=parseInt(_formats.V(d),10);var W=parseInt(_formats.W(d),10);if(W>V){y++;}
else if(W===0&&V>=52){y--;}
return y;},H:['getHours','0'],I:function(d){var I=d.getHours()%12;return _xPad(I===0?12:I,0);},j:function(d){var ms=d-new Date(''+d.getFullYear()+'/1/1 GMT');ms+=d.getTimezoneOffset()*60000;var doy=parseInt(ms/60000/60/24,10)+1;return _xPad(doy,0,100);},k:['getHours','0'],l:function(d){var l=d.getHours()%12;return _xPad(l===0?12:l,' ');},m:function(d){return _xPad(d.getMonth()+1,0);},M:['getMinutes','0'],p:function(d){return locales[locale].LC_TIME.p[d.getHours()>=12?1:0];},P:function(d){return locales[locale].LC_TIME.P[d.getHours()>=12?1:0];},s:function(d){return Date.parse(d)/1000;},S:['getSeconds','0'],u:function(d){var dow=d.getDay();return((dow===0)?7:dow);},U:function(d){var doy=parseInt(_formats.j(d),10);var rdow=6-d.getDay();var woy=parseInt((doy+rdow)/7,10);return _xPad(woy,0);},V:function(d){var woy=parseInt(_formats.W(d),10);var dow1_1=(new Date(''+d.getFullYear()+'/1/1')).getDay();var idow=woy+(dow1_1>4||dow1_1<=1?0:1);if(idow===53&&(new Date(''+d.getFullYear()+'/12/31')).getDay()<4){idow=1;}
else if(idow===0){idow=_formats.V(new Date(''+(d.getFullYear()-1)+'/12/31'));}
return _xPad(idow,0);},w:'getDay',W:function(d){var doy=parseInt(_formats.j(d),10);var rdow=7-_formats.u(d);var woy=parseInt((doy+rdow)/7,10);return _xPad(woy,0,10);},y:function(d){return _xPad(d.getFullYear()%100,0);},Y:'getFullYear',z:function(d){var o=d.getTimezoneOffset();var H=_xPad(parseInt(Math.abs(o/60),10),0);var M=_xPad(o%60,0);return(o>0?'-':'+')+H+M;},Z:function(d){return d.toString().replace(/^.*\(([^)]+)\)$/,'$1');},'%':function(d){return'%';}};var _date=((typeof(timestamp)=='undefined')?new Date():(typeof(timestamp)=='object')?new Date(timestamp):new Date(timestamp*1000));var _aggregates={c:'locale',D:'%m/%d/%y',F:'%y-%m-%d',h:'%b',n:'\n',r:'locale',R:'%H:%M',t:'\t',T:'%H:%M:%S',x:'locale',X:'locale'};while(fmt.match(/%[cDFhnrRtTxX]/)){fmt=fmt.replace(/%([cDFhnrRtTxX])/g,function(m0,m1)
{var f=_aggregates[m1];return(f==='locale'?locales[locale].LC_TIME[m1]:f);});}
var str=fmt.replace(/%([aAbBCdegGHIjklmMpPsSuUVwWyYzZ%])/g,function(m0,m1){var f=_formats[m1];if(typeof f==='string'){return _date[f]();}else if(typeof f==='function'){return f(_date);}else if(typeof f==='object'&&typeof(f[0])==='string'){return _xPad(_date[f[0]](),f[1]);}else{return m1;}});return str;}
function strnatcmp(f_string1,f_string2,f_version){var i=0;if(f_version==undefined){f_version=false;}
var __strnatcmp_split=function(f_string){var result=[];var buffer='';var chr='';var i=0,f_stringl=0;var text=true;f_stringl=f_string.length;for(i=0;i<f_stringl;i++){chr=f_string.substring(i,i+1);if(chr.match(/[0-9]/)){if(text){if(buffer.length>0){result[result.length]=buffer;buffer='';}
text=false;}
buffer+=chr;}else if((text==false)&&(chr=='.')&&(i<(f_string.length-1))&&(f_string.substring(i+1,i+2).match(/[0-9]/))){result[result.length]=buffer;buffer='';}else{if(text==false){if(buffer.length>0){result[result.length]=parseInt(buffer,10);buffer='';}
text=true;}
buffer+=chr;}}
if(buffer.length>0){if(text){result[result.length]=buffer;}else{result[result.length]=parseInt(buffer,10);}}
return result;};var array1=__strnatcmp_split(f_string1+'');var array2=__strnatcmp_split(f_string2+'');var len=array1.length;var text=true;var result=-1;var r=0;if(len>array2.length){len=array2.length;result=1;}
for(i=0;i<len;i++){if(isNaN(array1[i])){if(isNaN(array2[i])){text=true;if((r=strcmp(array1[i],array2[i]))!=0){return r;}}else if(text){return 1;}else{return-1;}}else if(isNaN(array2[i])){if(text){return-1;}else{return 1;}}else{if(text||f_version){if((r=(array1[i]-array2[i]))!=0){return r;}}else{if((r=strcmp(array1[i].toString(),array2[i].toString()))!=0){return r;}}
text=false;}}
return result;}
function strtotime(str,now){var i,match,s,strTmp='',parse='';strTmp=str;strTmp=strTmp.replace(/\s{2,}|^\s|\s$/g,' ');strTmp=strTmp.replace(/[\t\r\n]/g,'');if(strTmp=='now'){return(new Date()).getTime()/1000;}else if(!isNaN(parse=Date.parse(strTmp))){return(parse/1000);}else if(now){now=new Date(now*1000);}else{now=new Date();}
strTmp=strTmp.toLowerCase();var __is={day:{'sun':0,'mon':1,'tue':2,'wed':3,'thu':4,'fri':5,'sat':6},mon:{'jan':0,'feb':1,'mar':2,'apr':3,'may':4,'jun':5,'jul':6,'aug':7,'sep':8,'oct':9,'nov':10,'dec':11}};var process=function(m){var ago=(m[2]&&m[2]=='ago');var num=(num=m[0]=='last'?-1:1)*(ago?-1:1);switch(m[0]){case'last':case'next':switch(m[1].substring(0,3)){case'yea':now.setFullYear(now.getFullYear()+num);break;case'mon':now.setMonth(now.getMonth()+num);break;case'wee':now.setDate(now.getDate()+(num*7));break;case'day':now.setDate(now.getDate()+num);break;case'hou':now.setHours(now.getHours()+num);break;case'min':now.setMinutes(now.getMinutes()+num);break;case'sec':now.setSeconds(now.getSeconds()+num);break;default:var day;if(typeof(day=__is.day[m[1].substring(0,3)])!='undefined'){var diff=day-now.getDay();if(diff==0){diff=7*num;}else if(diff>0){if(m[0]=='last'){diff-=7;}}else{if(m[0]=='next'){diff+=7;}}
now.setDate(now.getDate()+diff);}}
break;default:if(/\d+/.test(m[0])){num*=parseInt(m[0],10);switch(m[1].substring(0,3)){case'yea':now.setFullYear(now.getFullYear()+num);break;case'mon':now.setMonth(now.getMonth()+num);break;case'wee':now.setDate(now.getDate()+(num*7));break;case'day':now.setDate(now.getDate()+num);break;case'hou':now.setHours(now.getHours()+num);break;case'min':now.setMinutes(now.getMinutes()+num);break;case'sec':now.setSeconds(now.getSeconds()+num);break;}}else{return false;}
break;}
return true;};match=strTmp.match(/^(\d{2,4}-\d{2}-\d{2})(?:\s(\d{1,2}:\d{2}(:\d{2})?)?(?:\.(\d+))?)?$/);if(match!=null){if(!match[2]){match[2]='00:00:00';}else if(!match[3]){match[2]+=':00';}
s=match[1].split(/-/g);for(i in __is.mon){if(__is.mon[i]==s[1]-1){s[1]=i;}}
s[0]=parseInt(s[0],10);s[0]=(s[0]>=0&&s[0]<=69)?'20'+(s[0]<10?'0'+s[0]:s[0]+''):(s[0]>=70&&s[0]<=99)?'19'+s[0]:s[0]+'';return parseInt(strtotime(s[2]+' '+s[1]+' '+s[0]+' '+match[2])+(match[4]?match[4]/1000:''),10);}
var regex='([+-]?\\d+\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday)'+'|(last|next)\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday))'+'(\\sago)?';match=strTmp.match(new RegExp(regex,'gi'));if(match==null){return false;}
for(i=0;i<match.length;i++){if(!process(match[i].split(' '))){return false;}}
return(now.getTime()/1000);};var isIE=(navigator.appVersion.indexOf("MSIE")!=-1)?true:false;var isWin=(navigator.appVersion.toLowerCase().indexOf("win")!=-1)?true:false;var isOpera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false;function ControlVersion()
{var version;var axo;var e;try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");version=axo.GetVariable("$version");}catch(e){}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version="WIN 6,0,21,0";axo.AllowScriptAccess="always";version=axo.GetVariable("$version");}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version=axo.GetVariable("$version");}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version="WIN 3,0,18,0";}catch(e){}}
if(!version)
{try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");version="WIN 2,0,0,11";}catch(e){version=-1;}}
return version;}
function GetSwfVer(){var flashVer=-1;if(navigator.plugins!=null&&navigator.plugins.length>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";var flashDescription=navigator.plugins["Shockwave Flash"+swVer2].description;var descArray=flashDescription.split(" ");var tempArrayMajor=descArray[2].split(".");var versionMajor=tempArrayMajor[0];var versionMinor=tempArrayMajor[1];var versionRevision=descArray[3];if(versionRevision==""){versionRevision=descArray[4];}
if(versionRevision[0]=="d"){versionRevision=versionRevision.substring(1);}else if(versionRevision[0]=="r"){versionRevision=versionRevision.substring(1);if(versionRevision.indexOf("d")>0){versionRevision=versionRevision.substring(0,versionRevision.indexOf("d"));}}
var flashVer=versionMajor+"."+versionMinor+"."+versionRevision;}}
else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6")!=-1)flashVer=4;else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5")!=-1)flashVer=3;else if(navigator.userAgent.toLowerCase().indexOf("webtv")!=-1)flashVer=2;else if(isIE&&isWin&&!isOpera){flashVer=ControlVersion();}
return flashVer;}
function DetectFlashVer(reqMajorVer,reqMinorVer,reqRevision)
{versionStr=GetSwfVer();if(versionStr==-1){return false;}else if(versionStr!=0){if(isIE&&isWin&&!isOpera){tempArray=versionStr.split(" ");tempString=tempArray[1];versionArray=tempString.split(",");}else{versionArray=versionStr.split(".");}
var versionMajor=versionArray[0];var versionMinor=versionArray[1];var versionRevision=versionArray[2];if(versionMajor>parseFloat(reqMajorVer)){return true;}else if(versionMajor==parseFloat(reqMajorVer)){if(versionMinor>parseFloat(reqMinorVer))
return true;else if(versionMinor==parseFloat(reqMinorVer)){if(versionRevision>=parseFloat(reqRevision))
return true;}}
return false;}}
function AC_AddExtension(src,ext)
{if(src.indexOf('?')!=-1)
return src.replace(/\?/,ext+'?');else
return src+ext;}
function AC_Generateobj(objAttrs,params,embedAttrs)
{var str='';if(isIE&&isWin&&!isOpera)
{str+='<object ';for(var i in objAttrs)
str+=i+'="'+objAttrs[i]+'" ';for(var i in params)
str+='><param name="'+i+'" value="'+params[i]+'" /> ';str+='></object>';}else{str+='<embed ';for(var i in embedAttrs)
str+=i+'="'+embedAttrs[i]+'" ';str+='> </embed>';}
document.write(str);}
function AC_FL_RunContent(){var ret=AC_GetArgs
(arguments,".swf","movie","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash");AC_Generateobj(ret.objAttrs,ret.params,ret.embedAttrs);}
function AC_GetArgs(args,ext,srcParamName,classid,mimeType){var ret=new Object();ret.embedAttrs=new Object();ret.params=new Object();ret.objAttrs=new Object();for(var i=0;i<args.length;i=i+2){var currArg=args[i].toLowerCase();switch(currArg){case"classid":break;case"pluginspage":ret.embedAttrs[args[i]]=args[i+1];break;case"src":case"movie":args[i+1]=AC_AddExtension(args[i+1],ext);ret.embedAttrs["src"]=args[i+1];ret.params[srcParamName]=args[i+1];break;case"onafterupdate":case"onbeforeupdate":case"onblur":case"oncellchange":case"onclick":case"ondblClick":case"ondrag":case"ondragend":case"ondragenter":case"ondragleave":case"ondragover":case"ondrop":case"onfinish":case"onfocus":case"onhelp":case"onmousedown":case"onmouseup":case"onmouseover":case"onmousemove":case"onmouseout":case"onkeypress":case"onkeydown":case"onkeyup":case"onload":case"onlosecapture":case"onpropertychange":case"onreadystatechange":case"onrowsdelete":case"onrowenter":case"onrowexit":case"onrowsinserted":case"onstart":case"onscroll":case"onbeforeeditfocus":case"onactivate":case"onbeforedeactivate":case"ondeactivate":case"type":case"codebase":ret.objAttrs[args[i]]=args[i+1];break;case"id":case"width":case"height":case"align":case"vspace":case"hspace":case"class":case"title":case"accesskey":case"name":case"tabindex":ret.embedAttrs[args[i]]=ret.objAttrs[args[i]]=args[i+1];break;default:ret.embedAttrs[args[i]]=ret.params[args[i]]=args[i+1];}}
ret.objAttrs["classid"]=classid;if(mimeType)ret.embedAttrs["type"]=mimeType;return ret;};var misc_vars=new Object();var tabs=new Object();var active_tab="";var detect=navigator.userAgent.toLowerCase();var OS,browser,version,total,thestring;if(check_it('konqueror')){browser="Konqueror";OS="Linux";}else if(check_it('safari')){browser="Safari";}
else if(check_it('omniweb')){browser="OmniWeb";}
else if(check_it('opera')){browser="Opera";}
else if(check_it('webtv')){browser="WebTV";}
else if(check_it('icab')){browser="iCab";}
else if(check_it('msie')){browser="Internet Explorer";}
else if(!check_it('compatible')){browser="Netscape Navigator";version=detect.charAt(8);}else{browser="An unknown browser";}
if(!version)version=detect.charAt(place+thestring.length);if(!OS){if(check_it('linux')){OS="Linux";}
else if(check_it('x11')){OS="Unix";}
else if(check_it('mac')){OS="Mac"}
else if(check_it('win')){OS="Windows"}
else{OS="an unknown operating system";}}
function check_it(string){place=detect.indexOf(string)+1;thestring=string;return place;}
function ie_getElementsByTagName(str){if(str=="*"){return document.all;}else{return document.all.tags(str);}}
if(document.all){document.getElementsByTagName=ie_getElementsByTagName;}
delete_form_lookup=new Object();duplicate_form_lookup=new Object();notified=new Object();selected_menu_item="";function submit_delete_form(mik_md5){if(delete_form_lookup[mik_md5]){if(MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5])){MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5]).submit();}}}
function submit_duplicate_form(mik_md5){if(duplicate_form_lookup[mik_md5]){if(MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5])){MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5]).submit();}}}
function toggle_menu_item(item_idnum,prepend,a,b){if(!a){a="menu_item_parent";}
if(!b){b="menu_item_child";}
if(!prepend){prepend="";}
a_parent=prepend+"menu_parent_"+item_idnum;if(MochiKit.DOM.getElement(a_parent)){if((prepend+item_idnum)!=selected_menu_item){a_child=prepend+"menu_child_"+item_idnum;a_img=prepend+"menu_child_img_"+item_idnum;if(MochiKit.DOM.getElement(a_parent).className==a+"_off"){MochiKit.DOM.getElement(a_parent).className=a+"_on";}else{MochiKit.DOM.getElement(a_parent).className=a+"_off";}
if(MochiKit.DOM.getElement(a_child).className==b+"_off"){MochiKit.DOM.getElement(a_child).className=b+"_on";MochiKit.DOM.getElement(a_img).src="images/images/menu_item_on.gif";}else{MochiKit.DOM.getElement(a_child).className=b+"_off";MochiKit.DOM.getElement(a_img).src="images/images/menu_item_off.gif";}}}}
function set_tab_type(idnum,type){MochiKit.DOM.getElement("tab"+idnum+"_a_img").src="images/images/spacer.gif";switch(type){case"regular_selected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/tab_on_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/tab_on_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="tab_regular_on_middle";break;case"regular_unselected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/tab_off_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/tab_off_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="tab_regular_off_middle";break;case"end_selected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/right_tab_on_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/right_tab_on_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="right_tab_on_middle";break;case"end_unselected":MochiKit.DOM.getElement("tab"+idnum+"_b_img").src="images/images/right_tab_off_left.gif";MochiKit.DOM.getElement("tab"+idnum+"_d_img").src="images/images/right_tab_off_right.gif";MochiKit.DOM.getElement("tab"+idnum+"_c").className="right_tab_off_middle";break;}}
function load_tab(current_tab,to_tab,form_id){if(current_tab==to_tab){return false;}else{MochiKit.DOM.getElement(form_id).submit();return true;}
if(active_tab=="tab"){MochiKit.DOM.getElement(form_id).submit();return true;}
if(current_tab!=to_tab){export_form_values('form_0');if(tabs[to_tab]["json"]){restore_form_values(to_tab,'form_0');for(x=0;x<MochiKit.DOM.getElement('form_0').elements.length;x++){tid=MochiKit.DOM.getElement('form_0').elements[x].id;tv=MochiKit.DOM.getElement('form_0').elements[x].value;tdiv=(tid.substr(0,(tid.length-6))+"div");if(tv=="Show / Edit Note"){toggle_object(tdiv,"off");}else if(tv=="Hide Note"){toggle_object(tdiv,"on");}}
tindex=current_tab.substr(3);tab_class=MochiKit.DOM.getElement(current_tab+"_c").className;if(tab_class=="tab_regular_on_middle"){set_tab_type(tindex,"regular_unselected");}
if(tab_class=="right_tab_on_middle"){set_tab_type(tindex,"end_unselected");}
tindex=to_tab.substr(3);tab_class=MochiKit.DOM.getElement(to_tab+"_c").className;if(tab_class=="tab_regular_off_middle"){set_tab_type(tindex,"regular_selected");}
if(tab_class=="right_tab_off_middle"){set_tab_type(tindex,"end_selected");}
active_tab=to_tab;return false;}else{var tabs_field=document.createElement("input");tabs_field.setAttribute("name","current_tabs");tabs_field.setAttribute("id","current_tabs");tabs_field.setAttribute("type","hidden");tabs_field.setAttribute("value",encodeBase64(MochiKit.Base.serializeJSON(tabs)));MochiKit.DOM.getElement(form_id).appendChild(tabs_field);MochiKit.DOM.getElement(form_id).submit();return true;}}}
function htmlentities(text){var v=text;var s="";var c;for(var i=0;i<v.length;i++){c=v.charAt(i);c=c.charCodeAt(0);c='&#'+c+';'
s+=c;}
return s;}
function auto_save(form,refresh_speed){window.status="Auto-saving form...";AjaxRequest.submit(form,{'url':MochiKit.DOM.getElement(form).action,'onSuccess':function(req){window.status="Done";}});init_auto_save(form,refresh_speed);}
function init_auto_save(form,refresh_speed){if(!refresh_speed){refresh_speed=300000;}
window.setTimeout("auto_save('"+form+"',"+refresh_speed+")",refresh_speed);}
function export_form_values(form){output=new Array();style=new Array();for(x=0;x<MochiKit.DOM.getElement(form).elements.length;x++){tstyle=new Object();output[x]=new Object();output[x]["id"]=MochiKit.DOM.getElement(form).elements[x].id;output[x]["name"]=MochiKit.DOM.getElement(form).elements[x].name;output[x]["value"]=MochiKit.DOM.getElement(form).elements[x].value;}
tabs[active_tab]=new Object();tabs[active_tab]["link"]=document.URL;tabs[active_tab]["json"]=MochiKit.Base.serializeJSON(output);}
function restore_form_values(from_tab,to_form){output=new Array();output=MochiKit.Base.evalJSON(tabs[from_tab]["json"]);theform=MochiKit.DOM.getElement(to_form);for(var x in output){theform.elements[x].id=output[x]["id"];theform.elements[x].name=output[x]["name"];theform.elements[x].value=output[x]["value"];}}
function print_r(theObj){if(theObj){var output="";if((theObj.constructor==Array)||(theObj.constructor==Object)){output+="<ul>";for(var p in theObj){if((theObj[p].constructor==Array)||(theObj[p].constructor==Object)){output+="<li>["+p+"] => "+(typeof theObj)+"</li>";output+="<ul>";output+=print_r(theObj[p]);output+="</ul>";}else{output+="<li>["+p+"] => "+theObj[p]+"</li>";}}
output+="</ul>";}
return output;}}
function list_add_item(e){if(!confirm('Are you sure you want to add this item?')){return;}
list=new Object();window.status="Adding item to list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-13))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);list["options"]=new Object();rrv_length=0;for(var chi=list["id"].length;chi>0;chi--){if(list["id"].substring(chi,chi-1)=="_"){chi=0;}
rrv_length++;}
if(MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value){select_add_option(list["id"],null,MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value);for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function list_rename_item(e){if(!confirm('Are you sure you want to rename this item with the text currently typed into the "Add This Item" text box?')){return;}
list=new Object();window.status="Renaming item in list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);list["options"]=new Object();index=MochiKit.DOM.getElement(list["id"]).selectedIndex;rrv_length=0;for(var chi=list["id"].length;chi>0;chi--){if(list["id"].substring(chi,chi-1)=="_"){chi=0;}
rrv_length++;}
if(MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value){MochiKit.DOM.getElement(list["id"]).options[index].text=MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value;MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value="";for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function list_delete_item(e){if(confirm("Are you sure you want to delete this item?")){list=new Object();window.status="Deleting item from list...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
list["id"]=target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);list["list_name"]=list_name;list["name"]=MochiKit.DOM.getElement(list["id"]).name;list["options"]=new Object();index=MochiKit.DOM.getElement(list["id"]).selectedIndex;MochiKit.DOM.getElement(list["id"]).options[index]=null;for(x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=MochiKit.DOM.getElement(list["id"]).options[x].value;list["options"][x]["text"]=MochiKit.DOM.getElement(list["id"]).options[x].text;}
var to_post=list;AjaxRequest.post({'url':'ajax/list.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){eval(req.responseText);window.status="Done";}});}}}
function update_date_dropdowns(e){date_array=new Object();window.status="Updating date dropdown...";if(!e){window.status="done";return false;}
if(is_string(e)){var target=MochiKit.DOM.getElement(e);}
if(e){if(!target){var target=detectTarget(e);}
date_array["id"]=target.id;temp=date_array["id"].split("_");date_array["rrv"]=temp[temp.length-1];date_array["oid"]=temp[temp.length-2];temp=date_array["id"].substr(0,(date_array["id"].length-temp[temp.length-1].length-temp[temp.length-2].length)-2);date_array["id"]=temp;date_array["month"]=MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).selectedIndex].text;date_array["year"]=MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).selectedIndex].text;var to_post=date_array;AjaxRequest.post({'url':'ajax/date.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),'onSuccess':function(req){return_response=MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));update_days(return_response);MochiKit.Signal.signal(target,"update_calendar");}});}}
function update_days(return_array){id=return_array["id"]+"_day_"+return_array["rrv"];var obj=MochiKit.DOM.getElement(id);if(obj){var sel_id=obj.selectedIndex;obj.options.length=0;for(var x=0;x<return_array["days"];x++){obj.options[x]=new Option(x+1,x);}
if(obj.options.length>sel_id){obj.selectedIndex=sel_id;}else{obj.selectedIndex=obj.options.length-1;}}
window.status="Done";}
function update_json_variables(e){window.status="Validating form fields...";if(e){var target=detectTarget(e);var rrv_run=target.id.split("_");rrv_run=rrv_run[rrv_run.length-1];}
notified[target.id]="";for(var i in variables["form_"+rrv_run]){if(!MochiKit.DOM.getElement(i+"_"+rrv_run)){alert("update_json_variables() failed for element ["+i+"_"+rrv_run+"]");}else{variables["form_"+rrv_run][i]=MochiKit.DOM.getElement(i+"_"+rrv_run).value;}}
validate_array["form_"+rrv_run]["variables"]=variables["form_"+rrv_run];validate_array["form_"+rrv_run]["require_variables"]=require_variables["form_"+rrv_run];validate_array["form_"+rrv_run]["submit_buttons"]=submit_buttons["form_"+rrv_run];validate_array["form_"+rrv_run]["rrv_run"]=rrv_run;validate(validate_array["form_"+rrv_run]);}
function notify_validation(return_response){notify_text="";num_false=0;var rrv_run=return_response["rrv_run"];var submit_buttons=return_response["submit_buttons"];return_response=return_response["array"];for(var key in return_response){for(var rule in return_response[key]){if(is_object(return_response[key][rule])){if(return_response[key][rule][0]==false){if(MochiKit.DOM.getElement(key+"_"+rrv_run)){MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor="#FF0000";num_false++;if((!notified[key+"_"+rrv_run])||(notified[key+"_"+rrv_run]=="")){notified[key+"_"+rrv_run]="notified";notify_text=notify_text+"Variable \""+key+"_"+rrv_run+"\" does not meet the requirements of constraint \""+rule+"\".\n";}}}else if(return_response[key][rule][0]==true){if(MochiKit.DOM.getElement(key+"_"+rrv_run)){MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor="";notified[key+"_"+rrv_run]=null;}}}}}
if(num_false>0){for(var button in submit_buttons){if(MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)){MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled=true;}}
if(!is_empty(notify_text)){alert(notify_text);}}else{for(var button in submit_buttons){if(MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)){MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled=false;}}}
window.status="Done";}
function validate(input_array){AjaxRequest.post({'url':'ajax/validate.php','queryString':'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(input_array))),'onSuccess':function(req){return_response=MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));notify_validation(return_response);}});}
function checkRegExpress(obj,submit){if(!obj.value.match(/\d\d-\d\d\d-\d\d$/)){if(obj.value.match(/\d\d-\d\d\d-\d\dP$/)){obj.style.backgroundColor='';submit.disabled=false;return true;}
obj.style.backgroundColor='#FF0000';alert("Internal IDs are in the form:\n\txx-xxx-xx");submit.disabled=true;return false;}else{obj.style.backgroundColor='';submit.disabled=false;return true;}}
function set_date(when,monthfield,dayfield,yearfield){if(when=="today"){var today=new Date();var month=today.getMonth();var day=today.getDate()-1;var year=today.getYear();if(year>99){year=2000+(year-100);}
else{year=1900+year;}
monthfield[month].selected=true;dayfield[day].selected=true;for(i=0;i<yearfield.length;i++){if(yearfield[i].text==year){yearfield[i].selected=true;}}}}
function note_onoff(objtxt,rrv_run){obj=MochiKit.DOM.getElement(objtxt+'_notediv');button=MochiKit.DOM.getElement(objtxt+'_notebutton');texta=MochiKit.DOM.getElement(objtxt+'_note'+'_'+rrv_run);if(obj.style.display=="none"){obj.style.display="";button.value="Delete Note";}else{if(confirm('Are you sure you want to delete this note?')==true){obj.style.display="none";button.value="Add Note";texta.value="";}}}
function toggle_image(theobj,a,b){theobj=MochiKit.DOM.getElement(theobj);if(theobj.src==a.src){theobj.src=b.src;}else if(theobj.src==b.src){theobj.src=a.src;}}
function toggle_object(obj,specific){if(!is_object(obj)){if(MochiKit.DOM.getElement(obj)){obj=MochiKit.DOM.getElement(obj);}}
if(!specific){if(obj.style.display=="none"){obj.style.display="";}else{obj.style.display="none";}}else{if(specific=="on"){obj.style.display="";}else if(specific=="off"){obj.style.display="none";}}}
function detectTarget(e){var targ;if(!e)var e=window.event;if(e.target){targ=e.target;}
else if(e.srcElement){targ=e.srcElement;}
if(targ.nodeType==3){targ=targ.parentNode;}
return targ;}
function CJL_RegisterEvent(elemName,elem,type,listener,useCapture,noAutoStart){var proto=arguments.callee.prototype;this.e=elem;this.type=type;this.cap=useCapture;this.l=listener;proto.start=function(){if(!elem){alert("CJL_RegisterEvent() failed for element ["+elemName+"]");return;}
if(this.e.attachEvent){this.e.attachEvent("on"+this.type,this.l);}else if(this.e.addEventListener){this.e.addEventListener(this.type,this.l,this.cap);}}
if(!noAutoStart){this.start(elem,type,listener);}
proto.stop=function(){if(this.e.detachEvent){this.e.detachEvent("on"+this.type,this.l);}else if(this.e.removeEventListener){this.e.removeEventListener(this.type,this.l,this.cap);}}}
var END_OF_INPUT=-1;var base64Chars=new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/');var reverseBase64Chars=new Array();for(var i=0;i<base64Chars.length;i++){reverseBase64Chars[base64Chars[i]]=i;}
var base64Str;var base64Count;function setBase64Str(str){base64Str=str;base64Count=0;}
function readBase64(){if(!base64Str){return END_OF_INPUT;}
if(base64Count>=base64Str.length){return END_OF_INPUT;}
var c=base64Str.charCodeAt(base64Count)&0xff;base64Count++;return c;}
function encodeBase64(str){setBase64Str(str);var result='';var inBuffer=new Array(3);var lineCount=0;var done=false;while(!done&&(inBuffer[0]=readBase64())!=END_OF_INPUT){inBuffer[1]=readBase64();inBuffer[2]=readBase64();result+=(base64Chars[inBuffer[0]>>2]);if(inBuffer[1]!=END_OF_INPUT){result+=(base64Chars[((inBuffer[0]<<4)&0x30)|(inBuffer[1]>>4)]);if(inBuffer[2]!=END_OF_INPUT){result+=(base64Chars[((inBuffer[1]<<2)&0x3c)|(inBuffer[2]>>6)]);result+=(base64Chars[inBuffer[2]&0x3F]);}else{result+=(base64Chars[((inBuffer[1]<<2)&0x3c)]);result+=('=');done=true;}}else{result+=(base64Chars[((inBuffer[0]<<4)&0x30)]);result+=('=');result+=('=');done=true;}}
return result;}
function readReverseBase64(){if(!base64Str)return END_OF_INPUT;while(true){if(base64Count>=base64Str.length)return END_OF_INPUT;var nextCharacter=base64Str.charAt(base64Count);base64Count++;if(reverseBase64Chars[nextCharacter]){return reverseBase64Chars[nextCharacter];}
if(nextCharacter=='A')return 0;}
return END_OF_INPUT;}
function ntos(n){n=n.toString(16);if(n.length==1)n="0"+n;n="%"+n;return unescape(n);}
function decodeBase64(str){setBase64Str(str);var result="";var inBuffer=new Array(4);var done=false;while(!done&&(inBuffer[0]=readReverseBase64())!=END_OF_INPUT&&(inBuffer[1]=readReverseBase64())!=END_OF_INPUT){inBuffer[2]=readReverseBase64();inBuffer[3]=readReverseBase64();result+=ntos((((inBuffer[0]<<2)&0xff)|inBuffer[1]>>4));if(inBuffer[2]!=END_OF_INPUT){result+=ntos((((inBuffer[1]<<4)&0xff)|inBuffer[2]>>2));if(inBuffer[3]!=END_OF_INPUT){result+=ntos((((inBuffer[2]<<6)&0xff)|inBuffer[3]));}else{done=true;}}else{done=true;}}
return result;}
function urlencode(val)
{var SAFECHARS="0123456789"+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"abcdefghijklmnopqrstuvwxyz"+"-_.!~*'()";var HEX="0123456789ABCDEF";var plaintext=val;var encoded="";for(var i=0;i<plaintext.length;i++){var ch=plaintext.charAt(i);if(ch==" "){encoded+="+";}else if(SAFECHARS.indexOf(ch)!=-1){encoded+=ch;}else{var charCode=ch.charCodeAt(0);if(charCode>255){alert("Unicode Character '"
+ch
+"' cannot be encoded using standard URL encoding.\n"+"(URL encoding only supports 8-bit characters.)\n"+"A space (+) will be substituted.");encoded+="+";}else{encoded+="%";encoded+=HEX.charAt((charCode>>4)&0xF);encoded+=HEX.charAt(charCode&0xF);}}}
return encoded;};function urldecode(val)
{var HEXCHARS="0123456789ABCDEFabcdef";var encoded=val;var plaintext="";var i=0;while(i<encoded.length){var ch=encoded.charAt(i);if(ch=="+"){plaintext+=" ";i++;}else if(ch=="%"){if(i<(encoded.length-2)&&HEXCHARS.indexOf(encoded.charAt(i+1))!=-1&&HEXCHARS.indexOf(encoded.charAt(i+2))!=-1){plaintext+=unescape(encoded.substr(i,3));i+=3;}else{alert('Bad escape combination near ...'+encoded.substr(i));plaintext+="%[ERROR]";i++;}}else{plaintext+=ch;i++;}}
return plaintext;};function is_alien(a){return is_object(a)&&typeof a.constructor!='function';}
function is_array(a){return is_object(a)&&a.constructor==Array;}
function is_boolean(a){return typeof a=='boolean';}
function is_empty(o){var i,v;if(is_object(o)){for(i in o){v=o[i];if(is_undefined(v)&&is_function(v)){return false;}}}else if(is_string(o)){if(o.length>0){return false;}}
return true;}
function is_function(a){return typeof a=='function';}
function is_null(a){return typeof a=='object'&&!a;}
function is_number(a){return typeof a=='number'&&isFinite(a);}
function is_object(a){return(a&&typeof a=='object')||is_function(a);}
function is_string(a){return typeof a=='string';}
function is_undefined(a){return typeof a=='undefined';}
function select_add_option(theobj,tvalue,ttext){var temp=document.createElement('option');temp.value=tvalue;temp.text=ttext;if(is_string(theobj)){theobj=MochiKit.DOM.getElement(theobj);}
try{theobj.add(temp,null);}
catch(ex){theobj.add(temp);}}
function calendar_add_date(liid,pid,button_elem){thevar='calendar'+liid+'_add_date';screend=MochiKit.Style.getViewportDimensions();dated=MochiKit.Style.getElementDimensions(thevar);to_pos=new Object;to_pos.x=((screend.w/2)-(dated.w/2));to_pos.y=((screend.h/2)-(dated.h/2));MochiKit.Style.setElementPosition(thevar,to_pos);if(eval('calendar'+liid+'_adding')==true){eval('calendar'+liid+'_adding = false;');button_elem.style.backgroundImage='url(${root}images/images/edit.gif)';button_elem.value='Add Date to Calendar';}else{eval('calendar'+liid+'_adding = true;');button_elem.style.backgroundImage='url(${root}images/images/cancel.gif)';button_elem.value='Cancel';}
toggle_object(thevar);}
function set_date_dropdowns_date(id,rrv,date){temp=date.split("-");year=eval(temp[0]);month=eval(temp[1]);day=eval(temp[2]);year_field=MochiKit.DOM.getElement((id+'_year_'+rrv));month_field=MochiKit.DOM.getElement((id+'_month_'+rrv));day_field=MochiKit.DOM.getElement((id+'_day_'+rrv));year_idx=null;month_idx=null;day_idx=null;for(x=0;x<year_field.options.length;x++){if(year_field.options[x].text==year){year_idx=year_field.options[x].value;}}
for(x=0;x<month_field.options.length;x++){if(month_field.options[x].value==(month-1)){month_idx=month_field.options[x].value;}}
for(x=0;x<day_field.options.length;x++){if(day_field.options[x].text==day){day_idx=day_field.options[x].value;}}
if(year_idx){year_field.selectedIndex=year_idx;}
if(month_idx){month_field.selectedIndex=month_idx;}
if(day_idx){day_field.selectedIndex=day_idx;}}
multipleDraggables=function(){this.__init__();}
multipleDraggables.instances=[];multipleDraggables.prototype={__init__:function(){this.drags=new Object();this.selected=new Object();this.start_drag=false;this.dragging=false;this.drag_and_drop=true;this.force_single_selection=false;this.disable_clickoff=false;this.default_events_set_up=false;this.commit=true;this.selected_class="selected";this.selectable_class="selectable";this.append_to=null;this.document_onmouseup=null;this.index=multipleDraggables.instances.length;multipleDraggables.instances[this.index]=this;this.condition_to_start=function(){return true;}},add_draggable:function(element){if(!this.default_events_set_up){this.set_up_default_events();}
var element=Basis.get_element(element);if(element&&element.id){if(element&&!this.drags[element.id]){element.multipleDraggable=this;MochiKit.DOM.addElementClass(element,this.selectable_class);this.drags[element.id]=true;Basis.signal_handler.connect(element,"onmousedown.greedy.swallow",MochiKit.Base.bind(function(e){if(((Basis.key_handler.key_state("KEY_CTRL")=="up")&&(!this.multipleDraggable.selected[this.id]))||((Basis.key_handler.key_state("KEY_CTRL")=="up")&&(this.multipleDraggable.selected.length==0))||this.multipleDraggable.force_single_selection){this.multipleDraggable.clear_selected();}
if((!this.multipleDraggable.selected[this.id]||(Basis.key_handler.key_state("KEY_CTRL")=="down"))&&!Basis.dragging_any_multiple_draggable){this.multipleDraggable.toggle_select(this);}},element),this.commit);Basis.signal_handler.connect(element,"onmouseup.greedy",MochiKit.Base.bind(function(e){if(((Basis.key_handler.key_state("KEY_CTRL")=="up")||this.multipleDraggable.force_single_selection)&&!this.multipleDraggable.dragging){this.multipleDraggable.clear_selected();this.multipleDraggable.toggle_select(this);}},element),this.commit);if(this.drag_and_drop){Basis.signal_handler.connect(element,"onmousemove.greedy.swallow",MochiKit.Base.bind(function(e){if((Basis.mouse_handler.button_state("left")=="down")&!this.multipleDraggable.dragging&&this.multipleDraggable.condition_to_start()){this.multipleDraggable.start_drag=true;}
if(this.multipleDraggable.start_drag){this.multipleDraggable.start_drag=false;this.multipleDraggable.dragging=true;Basis.dragging_any_multiple_draggable=true;if((Basis.key_handler.key_state("KEY_CTRL")=="up")||this.multipleDraggable.force_single_selection){if(!this.multipleDraggable.selected[this.id]){this.multipleDraggable.clear_selected();}}
if(!this.multipleDraggable.selected[this.id]){this.multipleDraggable.toggle_select(this.id);}
if(!MochiKit.DOM.getElement("dragger")){var dragger=new MochiKit.DOM.DIV({"id":"dragger","style":"cursor: move; width:40px; height:40px; background-color: #F5F5F5; border: 1px dashed #808080; position: absolute;"}," ");if(this.multipleDraggable.append_to){if(MochiKit.DOM.getElement(this.multipleDraggable.append_to)){MochiKit.DOM.getElement(this.multipleDraggable.append_to).appendChild(dragger);}}else{document.body.appendChild(dragger);}
new MochiKit.DragAndDrop.Draggable("dragger",{"scroll":true});MochiKit.DOM.getElement("dragger")._selected=MochiKit.Base.serializeJSON(this.multipleDraggable.selected);}
var pos=MochiKit.Position.cumulativeOffset(MochiKit.DOM.getElement("dragger"));var dim=MochiKit.Style.getElementDimensions("dragger");var scroll=Basis.scroll_coords();var clientX=pos.x+(dim.w/2);var clientY=pos.y+(dim.h/2)-scroll.y;if(document.createEventObject){var event=document.createEventObject();event.clientX=clientX;event.clientY=clientY;event.button=1;MochiKit.DOM.getElement("dragger").fireEvent("onmousedown",event);MochiKit.DOM.getElement("dragger").focus();}else if(document.createEvent){var event=document.createEvent("MouseEvents");event.initMouseEvent("mousedown",1,1,window,1,0,0,clientX,clientY,0,0,0,0,0,MochiKit.DOM.getElement("dragger"));MochiKit.Signal.signal("dragger","onmousedown",event);MochiKit.DOM.getElement("dragger").focus();}}},element),this.commit);}
Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(this.multipleDraggable&&!this.multipleDraggable.selected[this.id]){this.style.backgroundColor="#E8EDF9";}},element),this.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){this.style.backgroundColor="";},element),this.commit);}}},clear_selected:function(){for(var i in this.selected){this.toggle_select(i);delete this.selected[i];}},on_deselect:function(element){var element=MochiKit.DOM.getElement(element);if(element){MochiKit.Style.setStyle(element.id,{'background-color':''});MochiKit.DOM.removeElementClass(element.id,this.selected_class);MochiKit.DOM.addElementClass(element.id,this.selectable_class);}},on_select:function(element){var element=MochiKit.DOM.getElement(element);if(element){MochiKit.Style.setStyle(element.id,{'background-color':''});MochiKit.DOM.removeElementClass(element.id,this.selectable_class);MochiKit.DOM.addElementClass(element.id,this.selected_class);}},select_all:function(){this.clear_selected();for(var i in this.drags){var obj=MochiKit.DOM.getElement(i);if(obj){this.toggle_select(i);}}},set_up_default_events:function(){if(!this.disable_clickoff){Basis.signal_handler.connect(document.body,"onmousedown.greedy",MochiKit.Base.bind(function(){if(Basis.key_handler.key_state("KEY_CTRL")=="up"){this.clear_selected();}},this),this.commit);}
MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(e){this.start_drag=false;this.dragging=false;Basis.dragging_any_multiple_draggable=false;if(MochiKit.DOM.getElement("dragger")){MochiKit.DOM.removeElement("dragger");MochiKit.DragAndDrop.Draggables.drags=[];}},this));this.default_events_set_up=true;},toggle_select:function(element){var element=MochiKit.DOM.getElement(element);if(element){if(!this.selected[element.id]){this.selected[element.id]=true;this.on_select(element);}else{delete this.selected[element.id];this.on_deselect(element);}}}};Basis._int=function(value){return(!isNaN(parseInt(value))?parseInt(value):0);};Basis._return=function(value){return value;};Basis.add_content_element=function(page_id,replacement_id,type){var type=(type!==null)?type:"";if(page_id&&replacement_id&&confirm("Are you sure you want to add a new content element to this page?")){var to_post={};to_post["page_id"]=page_id;to_post["replacement_id"]=replacement_id;to_post["type"]=type;var as=new Basis.ajax_scaffold;as.alias="add_content_element";as.on_success=function(req){if(req.responseText=="true"){window.location=""+window.location+"";}else{MochiKit.Logging.log("Unable to add content element!");}
window.status="Done";};return as.post({"to_post":to_post});}};Basis.align_element_to_element=function(element,dest,how,offset,animation,duration){var element=MochiKit.DOM.getElement(element);var dest=MochiKit.DOM.getElement(dest);if(element&&dest&&how){var e_disp=element.style.display;var d_disp=dest.style.display;if(e_disp=="none"){element.style.display="";}
if(d_disp=="none"){element.style.display="";}
var e_pos=MochiKit.Style.getElementPosition(element);var e_dim=MochiKit.Style.getElementDimensions(element);var d_pos=MochiKit.Style.getElementPosition(dest);var d_dim=MochiKit.Style.getElementDimensions(dest);var d_anchor={};if(e_pos&&e_dim&&d_pos&&d_dim){switch(how){case"center":var e_center={"x":e_pos.x+Math.floor(e_dim.w/2),"y":e_pos.y+Math.floor(e_dim.h/2)};var d_center={"x":d_pos.x+Math.floor(d_dim.w/2),"y":d_pos.y+Math.floor(d_dim.h/2)};var d_anchor={"x":(d_center.x-(e_center.x-e_pos.x)),"y":(d_center.y-(e_center.y-e_pos.y))};break;case"bottom_to_top":var d_anchor={"x":e_pos.x,"y":e_pos.y+(d_pos.y-e_pos.y-e_dim.h)};break;case"bottom_to_bottom":var d_anchor={"x":e_pos.x,"y":e_pos.y-((e_pos.y+e_dim.h)-(d_pos.y+d_dim.h))};break;case"top_to_bottom":var d_anchor={"x":e_pos.x,"y":e_pos.y+(d_pos.y-e_pos.y+d_dim.h)};break;case"top_to_top":var d_anchor={"x":e_pos.x,"y":e_pos.y-(e_pos.y-d_pos.y)};break;case"left_to_right":var d_anchor={"x":e_pos.x+d_pos.x+d_dim.w,"y":e_pos.y};break;case"left_to_left":var d_anchor={"x":d_pos.x,"y":e_pos.y};break;case"right_to_left":var d_anchor={"x":e_pos.x+(d_pos.x-e_pos.x-e_dim.w),"y":e_pos.y};break;case"right_to_right":var d_anchor={"x":d_pos.x+(d_dim.w-e_dim.w),"y":e_pos.y};break;}
if(offset&&offset.x){d_anchor.x+=offset.x;}
if(offset&&offset.y){d_anchor.y+=offset.y;}
if(!((d_anchor.x==0)&&(d_anchor.y==0))){element.style.position="absolute";if(!animation){MochiKit.Style.setElementPosition(element,d_anchor);}else{if(!duration){duration=0.50;}
MochiKit.Visual.Move(element,{"x":d_anchor.x,"y":d_anchor.y,"duration":duration,"mode":element.style.position});}}}
element.style.display=e_disp;dest.style.display=d_disp;return d_anchor;}};Basis.array_flip=function(arr){temp=new Object();for(var i in arr){temp[arr[i]]=i;}
return temp;};Basis.array_insert=function(arr,index,value){if(arr&&arr.splice){arr.splice(index,0,value);}
return arr;};Basis.array_length=function(element){var x=0;if(element){switch(typeof(element)){case"string":case"number":case"function":case"boolean":case"undefined":return x;break;}
for(var i in element){if(typeof(element[i])!="function"){x++;}}}
return x;};Basis.array_search=function(arr,value){var index=MochiKit.Base.findValue(arr,value);return(index==-1)?null:index;};Basis.array_size=function(arr){return Basis.array_length(arr);};Basis.attach_tooltip=function(element,text,is_html,commit,is_error_message){var is_error_message=(is_error_message==true)?true:false;element.position_tooltip=MochiKit.Base.noop;var element=Basis.get_element(element);if(element&&text){element.tooltip_text=text;element.is_html=(is_html==true)?true:false;Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(Basis.show_tooltips){var tooltip=DIV({"id":"Basis.tooltip","class":"Basis.tooltip"+(is_error_message?".error":""),"style":"white-space: nowrap; z-index: 5000;"},(element.is_html?null:element.tooltip_text));tooltip.signals=tooltip.signals?tooltip.signals:[];if(element.is_html){tooltip.innerHTML=element.tooltip_text;}
element.tooltip=tooltip;var dim=MochiKit.Style.getElementDimensions(tooltip);Basis.set_style(tooltip,{"position":"absolute"});document.body.appendChild(tooltip);Basis.updated_live_dom();}
element.position_tooltip=MochiKit.Base.bind(function(){if(Basis.show_tooltips){var scroll=Basis.scroll_coords();var mouse={"x":Basis.misc_vars.mouse_x,"y":Basis.misc_vars.mouse_y};MochiKit.Style.setElementPosition(this,{"x":(mouse.x+scroll.x+15),"y":(mouse.y+scroll.y+10)});if(BrowserDetect){if((BrowserDetect.browser=="Firefox")&&(BrowserDetect.version>=2)){var pos=MochiKit.Style.getElementPosition(this);var dim=MochiKit.Style.getElementDimensions(this);var viewport=MochiKit.Style.getViewportDimensions();if((pos.x+dim.w)>(viewport.w+scroll.x)){MochiKit.Style.setElementPosition(this,{"x":(mouse.x+scroll.x-dim.w-15),"y":(mouse.y+scroll.y+10)});}}}}},tooltip);Basis.signal_handler.connect(tooltip,"onmouseover",MochiKit.Base.bind(function(){Basis.remove_element(this);},tooltip));this.position_tooltip();},element),commit);Basis.signal_handler.connect(element,"onmousemove",MochiKit.Base.bind(function(){this.position_tooltip();},element),commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){Basis.remove_element(this.tooltip);},element),commit);}};Basis.blank_object=function(){var a={};for(var i in a){if(Basis.is_function(a[i])){delete a[i];}}
return a;};Basis.center_element=function(element,animation,duration){var obj=MochiKit.DOM.getElement(element);if(obj){var screend=MochiKit.Style.getViewportDimensions();var elementd=MochiKit.Style.getElementDimensions(obj);var to_pos=new Object;to_pos.x=((screend.w/2)-(elementd.w/2));to_pos.y=((screend.h/2)-(elementd.h/2));var scroll;scroll=Basis.scroll_coords();to_pos.x+=scroll.x;to_pos.y+=scroll.y;if(to_pos.y<0){to_pos.y=0;}
if(!animation){MochiKit.Style.setElementPosition(obj,to_pos);}else{if(!duration){duration=0.50;}
MochiKit.Visual.Move(obj,{"x":to_pos.x,"y":to_pos.y,"duration":duration,"mode":"absolute"});}}};Basis.clone=function(obj){if(Basis.is_element(obj)){return obj.cloneNode(true);}else{if(obj&&obj.prototype){return MochiKit.Base.clone(obj);}else if(obj&&!obj.prototype){return MochiKit.Base.update({},obj);}}};Basis.connect_unload=function(func){if(Basis.is_function(func)){MochiKit.Signal.connect(window,"onbeforeunload",func);}};Basis.convert_nested_elements_to_tree=function(element,nested_tag,default_expanded,ignore_root,nested_tag_class_name,attach_events,commit){if(!Basis.trees){Basis.trees={};}
var default_expanded=(default_expanded!=null)?default_expanded:false;var ignore_root=(ignore_root!=null)?ignore_root:false;var attach_events=(attach_events!=null)?attach_events:true;var nested_tag=nested_tag?nested_tag:"div";var nested_tag_class_name=nested_tag_class_name?nested_tag_class_name:null;var element=MochiKit.DOM.getElement(element);if(element){var index=(element.id?element.id:Basis.array_length(Basis.trees));Basis.trees[index]={"nodes":{"with_children":[],"without_children":[]}};element.tree=Basis.trees[index];MochiKit.Base.nodeWalk(element,function(node){var parent=node.parentNode;if(parent){var container=MochiKit.DOM.createDOM(nested_tag,{"id":(node.id+"_c")});var children=MochiKit.DOM.getElementsByTagAndClassName(nested_tag,nested_tag_class_name,node);if(!node.nextSibling){var next_sibling=DIV({"style":"display: none;"});parent.appendChild(next_sibling);parent.insertBefore(container,next_sibling);Basis.remove_element(next_sibling);}else{parent.insertBefore(container,node.nextSibling);}
for(var i=0;i<children.length;i++){if(children[i].parentNode==node){container.appendChild(children[i]);}}
node.tree_children=container;container.tree_parent=node;MochiKit.DOM.addElementClass(container,"Basis.file_explorer.container");if(container.nextSibling){MochiKit.DOM.addElementClass(container,"has_remaining_siblings");}
if(container.childNodes.length==0){MochiKit.DOM.addElementClass(container,"invisible");}
if(ignore_root&&(node==element)){var placeholder=TD();var new_node=TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},IMG({"src":"images/images/spacer.gif","width":"18","height":"18"})),placeholder)));}else{if(!default_expanded){var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";}else{var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));}
var image=IMG({"src":image_src,"id":(node.id+"_toggle"),"class":"Basis.convert_nested_elements_to_tree.toggle","style":((container.childNodes.length==0)?"":"cursor: pointer;")});image.open=default_expanded;if(container.childNodes.length>0){element.tree["nodes"]["with_children"].push(image);if(attach_events){Basis.signal_handler.connect(image,{"onclick":[MochiKit.Base.bind(function(){var container=MochiKit.DOM.getElement((this.id.substring(0,(this.id.length-("_toggle").length))+"_c"));if(container){if(this.open){var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";this.src=image_src;this.open=false;}else{var image_src=(container.childNodes.length==0)?((container.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));container.style.display="";this.src=image_src;this.open=true;}}},image)]},null,commit);}}else{element.tree["nodes"]["without_children"].push(image);}
var placeholder=TD();var branch_image=TD({"width":"18","style":"vertical-align: top;"},image);var new_node=TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,branch_image,placeholder)));if(container.nextSibling){}}
if(node.nextSibling){node.parentNode.insertBefore(new_node,node.nextSibling);}else{node.parentNode.appendChild(new_node);}
placeholder.appendChild(node);var blank_container=SPAN({"id":node.id+"_wrapper","style":"display: block; position: static;","class":"Basis.file_explorer.node_container"});new_node.parentNode.insertBefore(blank_container,new_node);blank_container.appendChild(new_node);blank_container.appendChild(container);return container.childNodes;}});}};Basis.decode64=function(input){if(!input){return"";}
var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};Basis.decode_html_entities=function(string){if(string){var htmlentities={"nbsp":160,"iexcl":161,"cent":162,"pound":163,"curren":164,"yen":165,"brvbar":166,"sect":167,"uml":168,"copy":169,"ordf":170,"laquo":171,"not":172,"shy":173,"reg":174,"macr":175,"deg":176,"plusmn":177,"sup2":178,"sup3":179,"acute":180,"micro":181,"para":182,"middot":183,"cedil":184,"sup1":185,"ordm":186,"raquo":187,"frac14":188,"frac12":189,"frac34":190,"iquest":191,"Agrave":192,"Aacute":193,"Acirc":194,"Atilde":195,"Auml":196,"Aring":197,"AElig":198,"Ccedil":199,"Egrave":200,"Eacute":201,"Ecirc":202,"Euml":203,"Igrave":204,"Iacute":205,"Icirc":206,"Iuml":207,"ETH":208,"Ntilde":209,"Ograve":210,"Oacute":211,"Ocirc":212,"Otilde":213,"Ouml":214,"times":215,"Oslash":216,"Ugrave":217,"Uacute":218,"Ucirc":219,"Uuml":220,"Yacute":221,"THORN":222,"szlig":223,"agrave":224,"aacute":225,"acirc":226,"atilde":227,"auml":228,"aring":229,"aelig":230,"ccedil":231,"egrave":232,"eacute":233,"ecirc":234,"euml":235,"igrave":236,"iacute":237,"icirc":238,"iuml":239,"eth":240,"ntilde":241,"ograve":242,"oacute":243,"ocirc":244,"otilde":245,"ouml":246,"divide":247,"oslash":248,"ugrave":249,"uacute":250,"ucirc":251,"uuml":252,"yacute":253,"thorn":254,"yuml":255,"fnof":402,"Alpha":913,"Beta":914,"Gamma":915,"Delta":916,"Epsilon":917,"Zeta":918,"Eta":919,"Theta":920,"Iota":921,"Kappa":922,"Lambda":923,"Mu":924,"Nu":925,"Xi":926,"Omicron":927,"Pi":928,"Rho":929,"Sigma":931,"Tau":932,"Upsilon":933,"Phi":934,"Chi":935,"Psi":936,"Omega":937,"alpha":945,"beta":946,"gamma":947,"delta":948,"epsilon":949,"zeta":950,"eta":951,"theta":952,"iota":953,"kappa":954,"lambda":955,"mu":956,"nu":957,"xi":958,"omicron":959,"pi":960,"rho":961,"sigmaf":962,"sigma":963,"tau":964,"upsilon":965,"phi":966,"chi":967,"psi":968,"omega":969,"thetasym":977,"upsih":978,"piv":982,"bull":8226,"hellip":8230,"prime":8242,"Prime":8243,"oline":8254,"frasl":8260,"weierp":8472,"image":8465,"real":8476,"trade":8482,"alefsym":8501,"larr":8592,"uarr":8593,"rarr":8594,"darr":8595,"harr":8596,"crarr":8629,"lArr":8656,"uArr":8657,"rArr":8658,"dArr":8659,"hArr":8660,"forall":8704,"part":8706,"exist":8707,"empty":8709,"nabla":8711,"isin":8712,"notin":8713,"ni":8715,"prod":8719,"sum":8721,"minus":8722,"lowast":8727,"radic":8730,"prop":8733,"infin":8734,"ang":8736,"and":8743,"or":8744,"cap":8745,"cup":8746,"int":8747,"there4":8756,"sim":8764,"cong":8773,"asymp":8776,"ne":8800,"equiv":8801,"le":8804,"ge":8805,"sub":8834,"sup":8835,"nsub":8836,"sube":8838,"supe":8839,"oplus":8853,"otimes":8855,"perp":8869,"sdot":8901,"lceil":8968,"rceil":8969,"lfloor":8970,"rfloor":8971,"lang":9001,"rang":9002,"loz":9674,"spades":9824,"clubs":9827,"hearts":9829,"diams":9830,"quot":34,"amp":38,"lt":60,"gt":62,"OElig":338,"oelig":339,"Scaron":352,"scaron":353,"Yuml":376,"circ":710,"tilde":732,"ensp":8194,"emsp":8195,"thinsp":8201,"zwnj":8204,"zwj":8205,"lrm":8206,"rlm":8207,"ndash":8211,"mdash":8212,"lsquo":8216,"rsquo":8217,"sbquo":8218,"ldquo":8220,"rdquo":8221,"bdquo":8222,"dagger":8224,"Dagger":8225,"permil":8240,"lsaquo":8249,"rsaquo":8250,"euro":8364};var return_string=string;for(var i in htmlentities){return_string=return_string.replace(new RegExp(("&"+i+";"),"gi"),String.fromCharCode(htmlentities[i]));}}
return return_string;};Basis.delete_content_element=function(content_element_id){if(content_element_id&&confirm("Are you sure you want to delete this content element?")){var to_post={};to_post["content_element_id"]=content_element_id;var as=new Basis.ajax_scaffold;as.alias="delete_content_element";as.on_success=function(req){if(req.responseText=="true"){Basis.remove_element(getElement("ce_"+content_element_id).parentNode);}else{MochiKit.Logging.log("Unable to delete content element #"+content_element_id);}};return as.post({"to_post":to_post});}};Basis.encode64=function(input){if(!input){return"";}
var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+
keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;}
Basis.execute_javascript=function(element){var element=MochiKit.DOM.getElement(element);if(element){var st=element.getElementsByTagName("SCRIPT");var string_to_execute;for(var i=0;i<st.length;i++){string_to_execute=st[i].innerHTML;try{eval(string_to_execute.split("<!--").join("").split("-->").join(""));}catch(e){MochiKit.Logging.log(e);}}}};Basis.filter_number=function(value){if(value!=null){if(value==0){return 0;}
var unpad=value.toString().replace(/(^[0]+)/,"");var unpad=unpad.toString().replace(/([^0-9\.]+)/,"");var retval=(unpad.match(/\./g)?parseFloat(unpad):parseInt(unpad));return(!isNaN(retval))?retval:null;}
return null;};Basis.find_key=function(list,value){if(list&&(Basis.array_length(list)>0)){for(var i in list){if(typeof(list[i])!="function"){if(list[i]==value){return i;}}}}
return false;};Basis.format_filesize=function(size){var size=Basis.parse_number(size);var type="bytes";var string="";if(size){if((size>0)&&(size<1024)){type="bytes";size=(size).toFixed(0);}else if((size>=1024)&&(size<(1024*1024))){type="kilobytes";size=(size/1024).toFixed(2);}else if((size>=(1024*1024))&&(size<(1024*1024*1024))){type="megabytes";size=(size/(1024*1024)).toFixed(2);}else if((size>=(1024*1024*1024))&&(size<(1024*1024*1024*1024))){type="gigabytes";size=(size/(1024*1024*1024)).toFixed(2);}
size=numberFormatter("###,###.##")(size);switch(type){case"bytes":string=size+" bytes";break;case"kilobytes":string=size+" KB";break;case"megabytes":string=size+" MB";break;case"gigabytes":string=size+" GB";break;}
return string;}};Basis.get_child_elements_by_tag=function(element,tag){var element=MochiKit.DOM.getElement(element);var tag=tag.toUpperCase();var children=[];if(element&&tag){for(var y in element.childNodes){if(element.childNodes[y]&&element.childNodes[y].tagName&&(element.childNodes[y].tagName.toUpperCase()==tag)){children[children.length]=element.childNodes[y];}}}
return children;};Basis.get_cookie=function(cookie_name){if(document.cookie.length>0){var c_start=document.cookie.indexOf(cookie_name+"=");if(c_start!=-1){c_start=c_start+cookie_name.length+1;var c_end=document.cookie.indexOf(";",c_start)
if(c_end==-1){c_end=document.cookie.length;}
return unescape(document.cookie.substring(c_start,c_end));}}
return"";};Basis.get_css=function(selector){if(selector&&document.styleSheets){for(var i=(document.styleSheets.length-1);i>=0;i--){if(document.styleSheets[i]&&document.styleSheets[i].href&&(document.styleSheets[i].href.indexOf("http://")!=-1)&&(document.styleSheets[i].href.split("http://")[1].split("/")[0]!=window.location.href.split("http://")[1].split("/")[0])){continue;}
var list=document.styleSheets[i].cssRules?document.styleSheets[i].cssRules:document.styleSheets[i].rules;if(list){for(var x=0;x<list.length;x++){if(list[x].selectorText&&(list[x].selectorText.toLowerCase()==selector.replace(/ /g,"").toLowerCase())){var text=list[x].style.cssText;var rgbs=text.match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/g);if(rgbs&&(rgbs.length>0)){for(var y=0;y<rgbs.length;y++){var temp=rgbs[y].match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/);if(temp.length==4){text=text.replace(rgbs[y],("#"+((parseInt(temp[1]).toString(16).length==1)?("0"+parseInt(temp[1]).toString(16)):parseInt(temp[1]).toString(16))+
((parseInt(temp[2]).toString(16).length==1)?("0"+parseInt(temp[2]).toString(16)):parseInt(temp[2]).toString(16))+
((parseInt(temp[3]).toString(16).length==1)?("0"+parseInt(temp[3]).toString(16)):parseInt(temp[3]).toString(16))+";"));}}}
return text.toLowerCase();}}}}}
return null;}
Basis.get_direct_child_elements_by_tag_and_class_name=function(tag_name,class_name,parent){var tag_name=tag_name?tag_name:null;var class_name=class_name?class_name:null;var parent=MochiKit.DOM.getElement(parent)?MochiKit.DOM.getElement(parent):document;var children=[];if((tag_name||class_name)&&parent){var potential_children=MochiKit.DOM.getElementsByTagAndClassName(tag_name,class_name,parent);if(potential_children.length>0){for(var i=0;i<potential_children.length;i++){if(potential_children[i].parentNode&&(potential_children[i].parentNode==parent)){children.push(potential_children[i]);}}}}
return children;};Basis.get_element=function(element){return Basis.is_element(element)?element:MochiKit.DOM.getElement(element);};Basis.get_element_dimensions=function(element){var element=MochiKit.DOM.getElement(element);var dim={"x":0,"y":0};if(element){MochiKit.DOM.makePositioned(element);var dim=MochiKit.Style.getElementDimensions(element);MochiKit.DOM.undoPositioned(element);}
return dim;};Basis.get_style=function(element,style){var got="";var element=MochiKit.DOM.getElement(element);if(element&&style){got=MochiKit.Style.getStyle(element,style);}
return(got?got:"");};Basis.hide_all_object_elements=function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("object");if(objs.length>0){for(x=0;x<objs.length;x++){var pnode=objs[x].parentNode;if(pnode){var dims=MochiKit.Style.getElementDimensions(pnode);pnode.style.width=dims.w;pnode.style.height=dims.h;}
objs[x].style.display="none";}
return true;}
return false;};Basis.idle_timeout=function(duration,sid,url){if(duration&&sid&&url){Basis.misc_vars["keepalive_timeout"]=MochiKit.Async.callLater(duration,function(){Basis.misc_vars.timeout_popup=Basis.popup({"id":"timeout_popup","window_title":"You are idle","html":'\
\
          <div>You have been idle for too long! Do you want to remain logged in?</div>\
          <div align="right" style="padding-top: 10px;">\
            <input type="button" value="Yes" id="timeout_popup_yes">\
            <input type="button" value="No" id="timeout_popup_no">\
          </div>\
          <script>\
\
            MochiKit.Signal.connect("timeout_popup_yes","onclick",function () {\
\
              new Basis.keep_alive({"sid"       : "'+sid+'",\
                                    "url"       : "'+url+'",\
                                    "propagate" : false,\
                                    "duration"  : 1});\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
              Basis.idle_timeout('+duration+',"'+sid+'","'+url+'");\
\
            });\
\
            MochiKit.Signal.connect("timeout_popup_no","onclick",function () {\
\
              var url = ""+window.location+"";\
\
              if (url.indexOf("?") == -1) {\
\
                window.location = (url + "?logout=true");\
\
              } else {\
\
                window.location = (url + "&logout=true");\
\
              }\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
            });\
\
          </script>'});Basis.misc_vars["final_timeout"]=MochiKit.Async.callLater(30,function(){var url=""+window.location+"";if(url.indexOf("?")==-1){window.location=(url+"?logout=true");}else{window.location=(url+"&logout=true");}});});}};Basis.image_rotator=function(element,array,options){var options=options?options:{};var d=MochiKit.DOM.currentDocument();if(d.images){if(!d.preloaded_images){d.preloaded_images=new Object();}
if(!d.preloaded_images["rotate"]){d.preloaded_images["rotate"]=new Array();}
var fade=options["fade"]?true:false;var duration=options["duration"]?options["duration"]:2000;var index=d.preloaded_images["rotate"].length;var obj=MochiKit.DOM.getElement(element);d.preloaded_images["rotate"][index]=new Array();d.preloaded_images["rotate"][index][0]=element;if(obj){if(fade){var image_dimensions=MochiKit.Style.getElementDimensions(obj);var layer_a=DIV({"style":"position: absolute; top: 0px; left: 0px; display: none;"});var layer_b=DIV({"style":"position: absolute; top: 0px; left: 0px; display: none;"});var container=DIV({"style":"overflow: hidden; position: relative;"});var obj_b=IMG({"src":obj.src});MochiKit.Style.setElementDimensions(container,image_dimensions);MochiKit.Style.setElementDimensions(layer_a,image_dimensions);MochiKit.Style.setElementDimensions(layer_b,image_dimensions);MochiKit.Style.setOpacity(layer_a,100);MochiKit.Style.setOpacity(layer_b,0);obj.parentNode.insertBefore(container,obj);layer_a.appendChild(obj);layer_b.appendChild(obj_b);container.appendChild(layer_a);container.appendChild(layer_b);layer_a.style.display="";layer_b.style.display="";}
for(var i in array){var idx=d.preloaded_images["rotate"][index].length;d.preloaded_images["rotate"][index][idx]=new Image();d.preloaded_images["rotate"][index][idx].src=array[i];}
if(fade){obj.rotate=MochiKit.Base.bind(function(index,idx){var d=MochiKit.DOM.currentDocument();var current_image=(this.layer_a.style.display=="none")?this.image_b:this.image_a;var swap_to_image=(current_image==this.image_a)?this.image_b:this.image_a;if(d.preloaded_images["rotate"][index][idx]&&d.preloaded_images["rotate"][index][idx].src){swap_to_image.src=d.preloaded_images["rotate"][index][idx].src;MochiKit.Visual.fade(current_image.parentNode,0,{"duration":0.50,"afterFinish":MochiKit.Base.bind(function(){this.style.display="none";},current_image)});MochiKit.Visual.appear(swap_to_image.parentNode,100,{"duration":0.50,"afterFinish":MochiKit.Base.bind(function(){this.style.display="";},swap_to_image)});}
var max=d.preloaded_images["rotate"][index].length;if(idx==(max-1)){var nidx=1;}else{var nidx=idx+1;}
setTimeout(("MochiKit.DOM.getElement('"+this.element.id+"').rotate("+index+","+nidx+");"),duration);},{"element":obj,"layer_a":layer_a,"layer_b":layer_b,"image_a":obj,"image_b":obj_b});}else{obj.rotate=function(index,idx){var element=MochiKit.DOM.getElement(d.preloaded_images["rotate"][index][0]);if(element){if(d.preloaded_images["rotate"][index][idx]&&d.preloaded_images["rotate"][index][idx].src){element.src=d.preloaded_images["rotate"][index][idx].src;}
var max=d.preloaded_images["rotate"][index].length;if(idx==(max-1)){var nidx=1;}else{var nidx=idx+1;}
setTimeout(("MochiKit.DOM.getElement('"+element.id+"').rotate("+index+","+nidx+");"),duration);}};}
if(d.preloaded_images["rotate"][index].length>1){obj.rotate(index,1);}
return container;}}};Basis.is_element=function(element){return(element&&(typeof(element)=="object")&&element.tagName)?true:false;};Basis.is_formfield=function(element){var retval=false;var element=MochiKit.DOM.getElement(element);if(element&&element.tagName){switch(element.tagName.toUpperCase()){case"INPUT":case"SELECT":case"TEXTAREA":retval=true;break;}}
return retval;};Basis.is_function=function(variable){return(typeof(variable)=="function")?true:false;};Basis.is_mouse_leave_or_enter=function(e,handler){var related_target=e.relatedTarget?e.relatedTarget:((e.type=="mouseout")?e.toElement:e.fromElement);while(related_target&&(related_target!=handler)){related_target=related_target.parentNode;}
return(related_target!=handler);};Basis.is_number=function(value){if(value&&value.match&&(value.match(/([^0-9\.])/g)!=null)){return false;}
return(Basis.parse_number(value)!=null)?true:false;};Basis.is_visible=function(element){return!MochiKit.DOM.hasElementClass(element,"invisible");};Basis.keys=function(root,recursive){if(root){var recursive=recursive?true:false;var keys=[];for(var i in root){if(typeof(root[i])!="function"){keys.push(i);if(recursive){var tkeys=Basis.keys(root[i],recursive);keys=flattenArray([keys,tkeys]);}}}
return keys;}}
Basis.ksort=function(arr){var sorted_array={};var temp_sorted={};var temp_array=[];var x=0;this.pad=function(count,chr){var count=(parseInt(count)>0)?parseInt(count):0;var retval="";if(chr){for(var x=0;x<count;x++){retval+=chr;}}
return retval;};for(i in arr){var key=(!i.toString().match(/[^0-9]/g))?(this.pad((10-parseInt(i).toString().length),"0")+parseInt(i).toString()):i;switch(typeof(arr[i])){case"function":break;case"array":case"object":temp_sorted[key]=Basis.is_element(arr[i])?arr[i]:Basis.ksort(arr[i]);temp_array[x++]=key+"|Basis.ksort.temp_sorted";break;default:temp_array[x++]=key+"|"+arr[i];break;}}
temp_array=temp_array.sort();for(var i in temp_array){switch(typeof(temp_array[i])){case"function":case"array":case"object":break;default:var x=temp_array[i].split("|");if(x[1]=="Basis.ksort.temp_sorted"){sorted_array[x[0]]=temp_sorted[x[0]];}else{sorted_array[x[0]]=x[1];}
break;}}
return sorted_array;};Basis.load_external_javascript=function(url){if(url){var script=MochiKit.DOM.createDOM("script");script.src=url;script.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(script);}};Basis.load_rollover_images=function(array){var d=MochiKit.DOM.currentDocument();if(d.images){if(!d.preloaded_images){d.preloaded_images=new Object();}
for(var i in array){if(array[i]["id"]&&MochiKit.DOM.getElement(array[i]["id"])){d.preloaded_images[array[i]["id"]]=new Object();d.preloaded_images[array[i]["id"]].off=new Image();d.preloaded_images[array[i]["id"]].off.src=array[i]["off"];d.preloaded_images[array[i]["id"]].on=new Image();d.preloaded_images[array[i]["id"]].on.src=array[i]["on"];var obj=MochiKit.DOM.getElement(array[i]["id"]);if(obj){obj.swap=function(toggle){if((this.src==d.preloaded_images[this.id].off.src)||(toggle=="on")){this.src=d.preloaded_images[this.id].on.src;}else{this.src=d.preloaded_images[this.id].off.src;}}
if(!array[i]["noswap"]&&(array[i]["link_image"]!=false)){MochiKit.Signal.connect(obj,"onmouseover",function(){this.swap("on");});MochiKit.Signal.connect(obj,"onmouseout",function(){this.swap("off");});}}
if(array[i]["ids"]){for(var x in array[i]["ids"]){var eobj=MochiKit.DOM.getElement(array[i]["ids"][x]);if(eobj){MochiKit.Signal.connect(eobj,"onmouseover",obj,function(){this.swap("on");});MochiKit.Signal.connect(eobj,"onmouseout",obj,function(){this.swap("off");});}}}}}}};Basis.make_invisible=function(element){MochiKit.DOM.addElementClass(element,"invisible");};Basis.make_text_element_dropdown=function(element,dropdown_options,scaffold_options){var element=MochiKit.DOM.getElement(element);if(element){element.value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editing=false;element.signals=[];element.clear_signals=MochiKit.Base.bind(function(){if(this.signals){for(var i=0;i<this.signals.length;i++){MochiKit.Signal.disconnect(this.signals[i]);}}
if(this.shadow&&this.shadow.signals){for(var i=0;i<this.shadow.signals.length;i++){MochiKit.Signal.disconnect(this.shadow.signals[i]);}}},element);if(!Basis.is_formfield(element)){element.make_dropdown=MochiKit.Base.bind(function(){if(!this.editing){this.editing=true;var select=SELECT({"id":(this.id+"_select"),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});Basis.select_add_options(select,dropdown_options);Basis.select_select_item_by_text(select,this.value);var dim=Basis.get_element_dimensions(this);select.signals=[];this.font_multiplier=(dim.w/this.value.length);Basis.set_style(select,{"width":Math.floor(this.font_multiplier*this.value.length)+30,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});select.shadow=this;this.shadow=select;MochiKit.DOM.swapDOM(this,select);select.save_editable_dropdown_changes=MochiKit.Base.bind(function(){window.status="Saving...";if(this.options[this.selectedIndex].text==this.shadow.value){this.cancel_save_editable_dropdown_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(scaffold_options["is_time"]||scaffold_options["is_date"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;case"year":var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"month":var year=Basis.get_element(base+"_year_"+rrv);var month_val=(this.options[this.selectedIndex].value.length==1)?("0"+this.options[this.selectedIndex].value):this.options[this.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"day":var year=Basis.get_element(base+"_year_"+rrv);var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+this.options[this.selectedIndex].text;break;}}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.select=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){this.select.shadow.innerHTML=this.select.options[this.select.selectedIndex].text;this.select.shadow.value=this.select.options[this.select.selectedIndex].text;MochiKit.DOM.swapDOM(this.select,this.select.shadow);}else{this.select.cancel_save_editable_dropdown_changes();}
this.select.shadow.clear_signals();this.select.shadow.editing=false;window.status="Done";};as.post({"to_post":to_post});}},select);select.cancel_save_editable_dropdown_changes=MochiKit.Base.bind(function(){if(this.shadow.editing){MochiKit.Logging.log(this.id+".cancel_save_editable_dropdown_changes()");this.shadow.clear_signals();MochiKit.DOM.swapDOM(this,this.shadow);this.shadow.editing=false;}},select);select.signals.push(MochiKit.Signal.connect(select,"onblur",MochiKit.Base.bind(function(){if(this.shadow.editing){MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},select)));this.signals.push(MochiKit.Signal.connect(document,"onclick",MochiKit.Base.bind(function(e){MochiKit.Logging.log("document.onclick()");if(e.target()&&(e.target()!=this)&&(e.target()!=this.shadow)){MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},select)));select.signals.push(MochiKit.Signal.connect(select,"onkeydown",MochiKit.Base.bind(function(e){var key=e.key();if(key.code==13){MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}else if(key.code==27){MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_dropdown_changes()!");this.cancel_save_editable_dropdown_changes();}},select)));select.focus();}},element);element.onmouseleave=MochiKit.Base.bind(function(){if(!this.editing){var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.make_dropdown.highlight");this.appendChild(restore_text);var dim=Basis.get_element_dimensions(this);MochiKit.Style.setElementDimensions(this,dim);this.clear_signals();}}},element);MochiKit.Signal.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editing){this.onmouseleave();var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","style":"cursor: pointer;","class":"Basis.make_dropdown.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},this.firstChild),TD({"style":"padding-left: 5px;"},pencil_image))));this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){this.onmouseleave();this.make_dropdown();},this);this.signals.push(MochiKit.Signal.connect(pencil_image,"onclick",edit));this.signals.push(MochiKit.Signal.connect(pencil,"ondblclick",edit));}},element));MochiKit.Signal.connect(element,"onmouseleave",element.onmouseleave);}else{element.original_value=element.value;element.save_editable_dropdown_changes=MochiKit.Base.bind(function(){window.status="Saving...";var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(scaffold_options["is_time"]||scaffold_options["is_date"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;case"year":var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"month":var year=Basis.get_element(base+"_year_"+rrv);var month_val=(this.options[this.selectedIndex].value.length==1)?("0"+this.options[this.selectedIndex].value):this.options[this.selectedIndex].value;var day=Basis.get_element(base+"_day_"+rrv);to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+day.options[day.selectedIndex].text;break;case"day":var year=Basis.get_element(base+"_year_"+rrv);var month=Basis.get_element(base+"_month_"+rrv);var month_val=(month.options[month.selectedIndex].value.length==1)?("0"+month.options[month.selectedIndex].value):month.options[month.selectedIndex].value;to_post["to"]=year.options[year.selectedIndex].text+"-"+month_val+"-"+this.options[this.selectedIndex].text;break;}}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.element=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){as.element.original_value=as.element.value;}
window.status="Done";};as.post({"to_post":to_post});},element);element.signals.push(MochiKit.Signal.connect(element,"onblur",MochiKit.Base.bind(function(){if(element.value!=element.original_value){MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}},element)));element.signals.push(MochiKit.Signal.connect(document,"onclick",MochiKit.Base.bind(function(e){if(element.value!=element.original_value){if(e.target()&&(e.target()!=this)){MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}}},element)));element.signals.push(MochiKit.Signal.connect(element,"onkeydown",MochiKit.Base.bind(function(e){var key=e.key();if(key.code==13){if(element.value!=element.original_value){MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");this.save_editable_dropdown_changes();}}},element)));}}};Basis.force_make_text_element_editable_save=function(element,scaffold_options){var save_editable_element_changes=MochiKit.Base.bind(function(){window.status="Saving...";var to_post=new Object();to_post["to"]=scaffold_options["to"]?scaffold_options["to"]:this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(!to_post["to"]){delete to_post["to"];}
if(!to_post["resource_id"]){delete to_post["resource_id"];}
if(!to_post["database"]){delete to_post["database"];}
if(!to_post["table"]){delete to_post["table"];}
if(!to_post["row_id"]){delete to_post["row_id"];}
if(!to_post["field"]){delete to_post["field"];}
if(!to_post["custom_action"]){delete to_post["custom_action"];}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";as.on_success=function(req){window.status="Done";};as.post({"to_post":to_post});},element);save_editable_element_changes();};Basis.make_text_element_editable=function(element,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=MochiKit.DOM.getElement(element);if(element){element.editable_element={};element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.set_up_interaction=MochiKit.Base.bind(function(){var input=this.editable_element.shadow;if(input){Basis.signal_handler.connect(input,"onclick.greedy.swallow",function(){},this.editable_element.commit);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",MochiKit.Base.bind(function(){this.editable_element.cancel_save_editable_element_changes();},input));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",MochiKit.Base.bind(function(){this.editable_element.save_editable_element_changes();},input));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",MochiKit.Base.bind(function(e){this.editable_element.save_editable_element_changes();},input),this.editable_element.commit);Basis.state_handler.enter_state("Basis.make_text_element_editable");input.editable_element.save_editable_element_changes=MochiKit.Base.bind(function(){window.status="Saving...";if(this.value==this.editable_element.shadow.editable_element.value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=this.value;to_post["resource_id"]=scaffold_options["resource_id"]?scaffold_options["resource_id"]:"";to_post["database"]=scaffold_options["database"]?scaffold_options["database"]:"";to_post["table"]=scaffold_options["table"]?scaffold_options["table"]:"";to_post["row_id"]=scaffold_options["row_id"]?scaffold_options["row_id"]:"";to_post["field"]=scaffold_options["field"]?scaffold_options["field"]:"";to_post["custom_action"]=scaffold_options["custom_action"]?scaffold_options["custom_action"]:"";if(!to_post["to"]){delete to_post["to"];}
if(!to_post["resource_id"]){delete to_post["resource_id"];}
if(!to_post["database"]){delete to_post["database"];}
if(!to_post["table"]){delete to_post["table"];}
if(!to_post["row_id"]){delete to_post["row_id"];}
if(!to_post["field"]){delete to_post["field"];}
if(!to_post["custom_action"]){delete to_post["custom_action"];}
var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.input=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(this.input.editable_element.shadow.editable_element.is_password){this.input.editable_element.shadow.innerHTML=this.input.editable_element.shadow.editable_element.value;}else{this.input.editable_element.shadow.innerHTML=this.input.value;this.input.editable_element.shadow.editable_element.value=this.input.value;}
this.input.editable_element.cancel_save_editable_element_changes();}else{this.input.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}},input);input.editable_element.cancel_save_editable_element_changes=MochiKit.Base.bind(function(){if(this.editable_element.shadow.editable_element.editing){MochiKit.DOM.swapDOM(this,this.editable_element.shadow);this.editable_element.shadow.editable_element.editing=false;Basis.state_handler.revert();Basis.updated_live_dom();}},input);input.focus();input.select();}},element);if(!Basis.is_formfield(element)){element.editable_element.editing=false;element.editable_element.value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)){Basis.make_text_element_editable.currently_editing.editable_element.shadow.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=element;var input=INPUT({"id":(this.id+"_input"),"type":(this.editable_element.is_password?"password":"text"),"value":(this.editable_element.is_password?"":this.editable_element.value),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});input.editable_element={};var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.value.length)+15,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});input.editable_element.shadow=this;this.editable_element.shadow=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
MochiKit.DOM.swapDOM(this,input);this.editable_element.set_up_interaction();}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing){var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","style":"cursor: pointer;","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing){var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}else{element.editable_element.editing=true;element.editable_element.set_up_interaction();}}};Basis.make_visible=function(element){MochiKit.DOM.removeElementClass(element,"invisible");};Basis.mouse_coords=function(e){var posx=0;var posy=0;if(!e){var e=window.event;}
if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY;}else if(e.clientX||e.clientY){posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}
return{"x":posx,"y":posy};};Basis.parse_number=function(value){if(value!=null){if(value===0){return 0;}
if(value&&(value.toString().replace(/([^0]+)/,"")==value.toString())){return 0;}
var unpad=value.toString().replace(/(^[0]+)/,"");if(unpad.length==0){return null;}
var retval=(unpad.match(/\./g)?parseFloat(unpad):parseInt(unpad));return(!isNaN(retval))?retval:null;}
return null;};Basis.pluralize=function(input){if(input){if(input.substring(input.length-1)=="y"){var ch=input.substring(input.length-2);switch(ch){case"a":case"e":case"i":case"o":case"u":input+="s";break;default:input=input.substring(0,(input.length-1))+"ies";break;}}else if((input.substring(input.length-2)=="ss")||(input.substring(input.length-2)=="ch")){input+="es";}else if(input.substring(input.length-1)!="s"){input+="s";}
return input;}};Basis.popup=function(options){if(options&&options["id"]&&options["html"]){if(!options["window_title"]){options["window_title"]="&nbsp;";}
if(options["center_element"]==null){options["center_element"]=true;}
var obj=MochiKit.DOM.getElement(options["id"]);if(!obj){var popup=new MochiKit.DOM.DIV({"id":options["id"],"class":"Basis.popup.container","style":"display: none; position: absolute; "+options["style"]},null);document.body.appendChild(popup);}
var obj=MochiKit.DOM.getElement(options["id"]);if(obj){if(!Basis.misc_vars.popups){Basis.misc_vars.popups=new Array;}
obj.pindex=Basis.misc_vars.popups.length;Basis.misc_vars.popups[obj.pindex]=obj;if(!options["bare"]){obj.innerHTML="<table><tr><td><div id=\""+obj.id+"_handle\" style=\"cursor: move; background-color: #F3F8FF; font-weight: bold;\">"+options["window_title"]+"</td><td align=\"right\" style=\"\"><img id=\""+obj.id+"_img\" src=\"images/images/x_off.gif\" style=\"cursor: pointer;\" onclick=\"var element = MochiKit.DOM.getElement('"+obj.id+"'); if (element && element.close) { element.close(); }\"></div></td></tr><tr><td id=\""+obj.id+"_html_container\">"+options["html"]+"</td></tr></table><script>Basis.load_rollover_images({0:{\"id\":\""+obj.id+"_img\",\"off\":\"images/images/x_off.gif\",\"on\":\"images/images/x_on.gif\"}});</script>";}else{obj.innerHTML="<div id=\""+obj.id+"_html_container\">"+options["html"]+"</div>";}
new MochiKit.DragAndDrop.Draggable(obj.id,{"handle":(obj.id+"_handle"),"starteffect":MochiKit.Base.noop,"endeffect":MochiKit.Base.noop});for(var i in Draggables.drags){if(Draggables.drags[i]&&Draggables.drags[i].element&&Draggables.drags[i].element.id&&(Draggables.drags[i].element.id==obj.id)){var date=new Date();Draggables.drags[i].element.timestamp=date.getTime();}}
obj.sort_popups=MochiKit.Base.bind(function(){var date=new Date();this.timestamp=date.getTime();var order=new Array;for(var i in Draggables.drags){if(Draggables.drags[i]&&Draggables.drags[i].element&&Draggables.drags[i].element.id&&Draggables.drags[i].element.timestamp){order[order.length]=Draggables.drags[i].element.timestamp+":"+i;}}
order.sort(Basis.sort_function);var start_z=1000;for(var i=0;i<order.length;i++){el=order[i].split(":");if(Draggables.drags[el[1]].element.style.zIndex<start_z){start_z=Draggables.drags[el[1]].element.style.zIndex;}}
for(var i=0;i<order.length;i++){el=order[i].split(":");Draggables.drags[el[1]].originalZ=start_z;Draggables.drags[el[1]].element.style.zIndex=start_z;start_z++;}},obj);obj.sort_popups();MochiKit.Signal.connect(obj.id,"onmousedown",obj.sort_popups);if(!options["bare"]){MochiKit.Signal.connect((obj.id+"_handle"),"onmousedown",obj.sort_popups);}
obj.close=MochiKit.Base.bind(function(){MochiKit.Signal.disconnectAll(this);delete Basis.misc_vars.popups[this.pindex];Basis.remove_element(this.id);},obj);Basis.execute_javascript(obj);if(options["center_element"]){Basis.center_element(obj);}
if(options["move_to"]&&options["move_to"].x&&options["move_to"].y){MochiKit.Style.setElementPosition(obj,options["move_to"]);}
obj.style.display=(obj.style.display=="none")?"inline":"none";var html_container=MochiKit.DOM.getElement(obj.id+"_html_container");var window_title=MochiKit.DOM.getElement(obj.id+"_handle");if(html_container&&window_title){return{"html_container":html_container,"window_title":window_title,"reference":obj.pindex};}}}}
Basis.post_throw=function(url,token,options){if(url&&token&&options){var data=[];options["throw_verify"]=hex_md5(Basis.get_cookie("PHPSESSID"));options["throw_vars"]=Basis.encode64("a:1:{i:0;s:"+token.length+':"'+token+'";}');for(var i in options){if(!Basis.is_function(options[i])){data.push(INPUT({"type":"text","name":i,"value":options[i]}));}}
var form=new FORM({"action":url,"style":"display: none;","method":"POST"},data);document.body.appendChild(form);form.submit();}};Basis.preserve_url=function(options){var options=(options&&(Basis.array_length(options)>0))?options:{};var just_keys=options["just_keys"]?options["just_keys"]:false;var original_url=options["original_url"]?options["original_url"]:null;var keys_add=options["keys_add"]?options["keys_add"]:{};var force_https=options["force_https"]?options["force_https"]:false;var force_http=options["force_http"]?options["force_http"]:false;if(original_url=="clear"){original_url=null;}
var url=original_url?original_url.split("?")[0]:(""+window.location+"").split("?")[0];var split=url.split(":");var protocol=split[0];protocol=(force_http?"http":(force_https?"https":"http"));original_url=original_url?original_url:(""+window.location+"");original_url=original_url.split("?");original_url=original_url[1]?original_url[1]:"";original_url=original_url.split("&");var ourl={};if(original_url.length>0){for(var i in original_url){if(typeof(original_url[i])!="function"){var qitem=original_url[i];var titem=qitem.split("=");if(titem[0]&&titem[1]){ourl[titem[0]]=titem[1];}}}}
for(var i in keys_add){if(typeof(keys_add[i])!="function"){var key=i;var value=keys_add[i];if(value||(value==0)){ourl[key]=value;}else{if(ourl[key]){delete ourl[key];}}}}
original_url=url;if(original_url.substring(original_url.length-1,1)!="?"){original_url+="?";}
keys="";for(var i in ourl){if(typeof(ourl[i])!="function"){var key=i;var value=ourl[i];if(value||(value==0)){keys+=(key+"="+value+"&");}}}
if(just_keys){return keys;}
original_url+=keys;return original_url.substring(0,(original_url.length-1));};Basis.preserve_url_path=function(){var url=Basis.preserve_url().split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url=url.substring(0,url.length-1);return url;};Basis.register_size_constraints=function(element,width,height,aspect,subtract_sibling_heights){var subtract_sibling_heights=(subtract_sibling_heights===false)?false:true;var element=Basis.get_element(element);if(element&&!element.id){element.id=Basis.anonymous_element_id();}
if(element&&element.id){MochiKit.Style.registerSizeConstraints(element,width,height,aspect,subtract_sibling_heights);}};Basis.remove_children=function(element){var element=MochiKit.DOM.getElement(element);if(element){if(element.childNodes){for(var i=0;i<element.childNodes.length;i++){Basis.remove_element(element.childNodes[i]);}}
element.innerHTML="";}};Basis.remove_element=function(element){var garbage_bin=MochiKit.DOM.getElement("IELeakGarbageBin");if(!garbage_bin){var garbage_bin=new MochiKit.DOM.DIV({"id":"IELeakGarbageBin","style":"display: none;"});document.body.appendChild(garbage_bin);}
var element=Basis.get_element(element);if(element&&garbage_bin){MochiKit.Signal.disconnectAll(element);if(element.tooltip){Basis.remove_element(element.tooltip);}
if(element.drag_events){for(var i in element.drag_events){if(typeof(element.drag_events[i])!="function"){MochiKit.Signal.disconnect(element.drag_events[i]);}}}
if(element.signals){for(var i in element.signals){if(typeof(element.signals[i])!="function"){MochiKit.Signal.disconnect(element.signals[i]);}}}
var list_to_remove=[];MochiKit.Base.nodeWalk(element,function(node){list_to_remove.push(node);return node.childNodes;});for(var x=list_to_remove.length;x>0;x--){Basis.remove_element(list_to_remove[x]);}
var list=MochiKit.DragAndDrop.Droppables.drops;for(var i=0;i<list.length;i++){if(list[i].element==element){list[i].destroy();}}
var list=MochiKit.DragAndDrop.Draggables.drags;for(var i=0;i<list.length;i++){if(list[i].element==element){list[i].destroy();}}
garbage_bin.appendChild(element);garbage_bin.innerHTML="";Basis.signal_handler.purge_orphaned_signals();}}
Basis.scroll_coords=function(){var scroll_x,scroll_y;if(self.pageYOffset){scroll_x=self.pageXOffset;scroll_y=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){scroll_x=document.documentElement.scrollLeft;scroll_y=document.documentElement.scrollTop;}else if(document.body){scroll_x=document.body.scrollLeft;scroll_y=document.body.scrollTop;}
return{"x":scroll_x,"y":scroll_y};};Basis.select_add_option=function(element,value,text){var element=Basis.get_element(element);if(element&&element.options){element.options[element.options.length]=new Option(text,value);}else{MochiKit.Logging.log("cannot target element");}};Basis.select_add_options=function(element,options){var element=Basis.get_element(element);if(element&&options){for(var i in options){if(!Basis.is_function(options[i])){Basis.select_add_option(element,i,options[i]);}}}};Basis.select_delete_item_by_text=function(element,text){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){MochiKit.DOM.removeElement(element.options[i]);}}}};Basis.select_delete_item_by_value=function(element,value){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){MochiKit.DOM.removeElement(element.options[i]);}}}};Basis.select_item_indexes_by_text=function(element,text){var temp=[];var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){temp[temp.length]=i;}}}
return temp;};Basis.select_item_indexes_by_value=function(element,value){var temp=[];var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){temp[temp.length]=i;}}}
return temp;};Basis.select_restore_indexes=function(element,selected,restore_by){var element=MochiKit.DOM.getElement(element);if(element&&restore_by&&selected&&selected.length){for(var a=0;a<element.options.length;a++){for(var b=0;b<selected.options.length;b++){if(restore_by=="value"){if(element.options[a].value==selected[b].value){element.options[a].selected=true;}}else if(restore_by=="index"){if(a==selected[b].index){element.options[a].selected=true;}}else if(restore_by=="text"){if(element.options[a].text==selected[b].text){element.options[a].selected=true;}}}}}};Basis.select_select_all=function(element){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){element.options[i].selected=true;}}};Basis.select_select_item_by_text=function(element,text){var temp=new Array();var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].text==text){element.options[i].selected=true;}}}};Basis.select_select_item_by_value=function(element,value){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){element.options[i].selected=true;}}}};Basis.select_select_none=function(element){var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){element.options[i].selected=false;}}};Basis.select_selected_indexes=function(element){var temp=new Array();var element=MochiKit.DOM.getElement(element);if(element){for(var i=0;i<element.options.length;i++){if(element.options[i].selected){temp[temp.length]={"index":i,"value":element.options[i].value,"text":element.options[i].text};}}}
return temp;};Basis.select_sort=function(element){var element=MochiKit.DOM.getElement(element);if(element){var temp=[];for(var i=0;i<element.length;i++){temp[i]=element.options[i].text+":"+element.options[i].value;}
temp.sort(Basis.sort_function);for(var i=0;i<element.length;i++){el=temp[i].split(":");element.options[i].text=el[0];element.options[i].value=el[1];}}};Basis.set_cookie=function(name,value,expires,path,domain,secure){var today=new Date();today.setTime(today.getTime());if(expires!=null){expires=(expires*1000*60*60*24);}
var expires_date=new Date(today.getTime()+(expires));document.cookie=((name)+"="+escape(value))+
((expires)?(";expires="+expires_date.toGMTString()):"")+
((path)?(";path="+path):"")+
((domain)?(";domain="+domain):"")+
((secure)?(";secure"):"");};Basis.set_element_dimensions=function(element,dimensions,units){var element=MochiKit.DOM.getElement(element);if(element){return MochiKit.Style.setElementDimensions(element,dimensions,units);}};Basis.set_element_position=function(element,options){var element=MochiKit.DOM.getElement(element);if(element){var options=options?options:{};var positions={};options["x"]=Basis.is_number(options["x"])?Basis.parse_number(options["x"]):0;options["y"]=Basis.is_number(options["y"])?Basis.parse_number(options["y"]):0;switch(options["mode"]){case"relative":element.style.position="relative";var relative_to=MochiKit.DOM.getElement(options["relative_to"]);if(relative_to){element.style.left=0;element.style.top=0;positions["element"]=MochiKit.Style.getElementPosition(element);positions["relative_to"]=MochiKit.Style.getElementPosition(relative_to);positions["element"]=positions["element"]?positions["element"]:{"x":0,"y":0};positions["relative_to"]=positions["relative_to"]?positions["relative_to"]:{"x":0,"y":0};var offset={"x":((positions["relative_to"].x-positions["element"].x)+options["x"]),"y":((positions["relative_to"].y-positions["element"].y)+options["y"])};element.style.left=offset.x;element.style.top=offset.y;}
break;case"absolute":default:element.style.position="absolute";var relative_to=MochiKit.DOM.getElement(element.offsetParent);if(relative_to){positions["relative_to"]=MochiKit.Style.getElementPosition(relative_to);MochiKit.Style.setElementPosition(element,{"x":-1*(positions["relative_to"].x-options["x"]),"y":-1*(positions["relative_to"].y-options["y"])});}
break;}}};Basis.set_style=function(element,style){var element=MochiKit.DOM.getElement(element);if(element&&style){for(var i in style){if(!Basis.is_function(style[i])&&MochiKit.Base.camelize(i)){if(i=="opacity"){MochiKit.Style.setOpacity(element,style[i]);}else{if(Basis.is_number(style[i])&&(style[i]<0)){style[i]=0;}
element.style[MochiKit.Base.camelize(i)]=style[i];}}}}};Basis.show_flash_demo=function(filename,options){var options=MochiKit.Base.updatetree(Basis.blank_object(),options);options["w"]=options["w"]?options["w"]:"680";options["h"]=options["h"]?options["h"]:"534";var flash_popup=Basis.popup({"id":"show_flash","html":"&nbsp;","window_title":"Flash Demo"});var obj=Basis.misc_vars.popups[flash_popup.reference];if(obj){obj.style.display="none";if(flash_popup&&flash_popup.html_container&&flash_popup.html_container.id){var so=new SWFObject(filename,"mymovie",options["w"],options["h"],"8","#ffffff");so.useExpressInstall("/js/js/expressinstall.swf");so.write(flash_popup.html_container.id);}
Basis.center_element(obj);obj.style.display="";}};Basis.size_child_to_parent=function(element){var child=MochiKit.DOM.getElement(element);if(child&&child.parentNode){var parent=MochiKit.DOM.getElement(child.parentNode);if(child&&parent){var p_dim=MochiKit.Style.getElementDimensions(parent);for(var i=0;i<parent.childNodes.length;i++){var obj=MochiKit.DOM.getElement(parent.childNodes[i]);if(obj&&obj.tagName&&(obj!=child)){var o_dim=MochiKit.Style.getElementDimensions(obj);p_dim.h-=o_dim.h;}}
var borders=Basis.sum_of_element(parent,"border");var padding=Basis.sum_of_element(parent,"padding");var adjust=(borders.top+borders.bottom+padding.top+padding.bottom);child.style.height=(p_dim.h-adjust);}}
return p_dim;}
Basis.size_in_viewport=function(element){var element=MochiKit.DOM.getElement(element);if(element&&Basis.is_live_dom_node(element)){var pos=MochiKit.Style.getElementPosition(element);var dim=MochiKit.Style.getElementDimensions(element);var scroll=Basis.scroll_coords();var screen=MochiKit.Style.getViewportDimensions();var borders=Basis.sum_borders_of_all_parents(element);var padding=Basis.sum_padding_of_all_parents(element);var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var coords={"w":(screen.w-(pos.x+scroll.x)-adjust_width),"h":(screen.h-(pos.y+scroll.y)-adjust_height)};return coords;}}
Basis.sort_function=function(a,b){a=a.toLowerCase();b=b.toLowerCase();if(a<b){return-1;}
if(a>b){return 1;}
return 0;};Basis.sort_ul=function(ul,get,descending){var ul=Basis.get_element(ul);if(ul){var items=MochiKit.DOM.getElementsByTagAndClassName("LI",null,ul);var length=items.length;function compare(a,b,descending){return(descending)?(a>b):(a<b);}
var exchange=function(a,b){ul.insertBefore(items[a],items[b]);};var get=(typeof(get)=="function")?get:function(items,a){return MochiKit.DOM.scrapeText(items[a]);};function isort(m,k,descending){for(var j=(m+k);j<length;j+=k){for(var i=j;i>=k&&compare(get(items,i),get(items,(i-k)),descending);i-=k){exchange(i,(i-k));}}}
if((k=Math.floor(length/5))>7){for(var m=0;m<k;m++){isort(m,k,descending);}}
if((k=Math.floor(length/7))>7){for(var m=0;m<k;m++){isort(m,k,descending);}}
for(k=7;k>0;k-=2){for(var m=0;m<k;m++){isort(m,k,descending);}}
var sorted=true;for(var i=0;i<length;i++){if(get(items,i)>get(items,(i+1))){sorted=false;break;}}
if(!sorted){Basis.sort_ul(ul,get,descending);}}};Basis.sum_borders_of_all_parents=function(element){return Basis.sum_of_all_parents(element,"border");};Basis.sum_of_all_parents=function(element,selector){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0,"right":0,"bottom":0};var width=(selector=="border")?"-width":"";if(element){var tsum=Basis.sum_of_element(element);sum.top+=tsum.top;sum.left+=tsum.left;sum.right+=tsum.right;sum.bottom+=tsum.bottom;var parent=element.parentNode;while(parent&&parent.style){var tsum=Basis.sum_of_element(parent);sum.top+=tsum.top;sum.left+=tsum.left;sum.right+=tsum.right;sum.bottom+=tsum.bottom;parent=parent.parentNode;}}
return sum;};Basis.sum_of_element=function(element,selector){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0,"right":0,"bottom":0};var width=(selector=="border")?"-width":"";if(element){sum.top+=Basis._int(Basis.get_style(element,selector+"-top"+width).replace(/([^0-9\.])/g,""));sum.left+=Basis._int(Basis.get_style(element,selector+"-left"+width).replace(/([^0-9\.])/g,""));sum.right+=Basis._int(Basis.get_style(element,selector+"-right"+width).replace(/([^0-9\.])/g,""));sum.bottom+=Basis._int(Basis.get_style(element,selector+"-bottom"+width).replace(/([^0-9\.])/g,""));}
return sum;};Basis.sum_padding_of_all_parents=function(element){return Basis.sum_of_all_parents(element,"padding");};Basis.sum_scroll_of_all_parents=function(element){var element=MochiKit.DOM.getElement(element);var sum={"top":0,"left":0};if(element){var parent=element.parentNode;while(parent&&parent.style){sum.top+=parent.scrollTop;sum.left+=parent.scrollLeft;parent=parent.parentNode;}}
return sum;};Basis.tinyMCE_correct_span_nesting=function(html){var container=DIV();container.innerHTML=html;Basis.tinyMCE_correct_span_nesting_walk(container.childNodes);return container.innerHTML;};Basis.tinyMCE_correct_span_nesting_walk=function(nodes){if(nodes){for(var x in nodes){var node=nodes[x];if(Basis.is_element(node)&&Basis.is_element(node.parentNode)){var collapsed_tags=false;if((node.tagName.toUpperCase()=="SPAN")&&(node.parentNode.tagName.toUpperCase()=="SPAN")&&!node.previousSibling){log("merging...");for(var i in node.childNodes){if((node.childNodes[i].nodeType==1)||(node.childNodes[i].nodeType==3)){node.parentNode.insertBefore(node.childNodes[i],node);}}
var node_classes=Basis.get_element(node).className.split(" ");for(var i in node_classes){if(!Basis.is_function(node_classes[i])){MochiKit.DOM.addElementClass(node.parentNode,node_classes[i]);}}
for(var i=0;i<node.style;i++){var style=Basis.blank_object();style[node.style[i]]=Basis.get_style(node,node.style[i]);Basis.set_style(node.parentNode,style);}
Basis.remove_element(node)}
if(collapsed_tags){Basis.tinyMCE_correct_span_nesting_walk(node.parentNode.childNodes);}else{Basis.tinyMCE_correct_span_nesting_walk(node.childNodes);}}}}};Basis.tinyMCE_getInstanceById=function(obj){var obj=MochiKit.DOM.getElement(obj);if(obj&&obj.id){if(tinyMCE&&tinyMCE.instances){for(var i in tinyMCE.instances){if(typeof(tinyMCE.instances[i])!="function"){if(tinyMCE.instances[i].formElement&&tinyMCE.instances[i].formElement.id&&(tinyMCE.instances[i].formElement.id==obj.id)){return tinyMCE.instances[i];}}}}}
return false;};Basis.tinyMCE_set_dirty_flag=function(inst){Basis.misc_vars["tinyMCE_"+inst.formElement.id+"_changed"]=true;};Basis.toggle_visible=function(element){MochiKit.DOM.toggleElementClass("invisible",element);};Basis.unhide_all_object_elements=function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("object");if(objs.length>0){for(x=0;x<objs.length;x++){objs[x].style.display="";}
return true;}
return false;};Basis.updated_live_dom=function(){if(Basis.signal_handler){Basis.signal_handler.commit_pending_elements();}};Basis.show_tooltips=(Basis.get_cookie("show_tooltips")=="false")?false:true;if(MochiKit.DOM.currentDocument().images){Basis.misc_vars["ajax_loading"]=new Image();Basis.misc_vars["ajax_loading"].src="images/images/ajax_loading.gif";}
MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",function(e){var pos=e.mouse().client;Basis.misc_vars["mouse_x"]=pos.x;Basis.misc_vars["mouse_y"]=pos.y;});window.onerror=function(message,url,line_number){MochiKit.Logging.log(["ERROR",message,url,line_number]);};try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}
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"}]};BrowserDetect.init();;Basis.ajax_scaffold=function(){this.__init__();};Basis.ajax_scaffold.instances=[];Basis.ajax_scaffold.blocked=false;Basis.ajax_scaffold.prototype={__init__:function(){this.alias;this.sid;this.url;this.send_raw=false;this.should_block=false;this.on_success=function(){return;};this.after_success=function(){return;};this.index=Basis.ajax_scaffold.instances.length;Basis.ajax_scaffold.instances[this.index]=this;},attach_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");if(!obj){var obj=new MochiKit.DOM.DIV({"id":"ajax_scaffold_indicator","style":"display:none; width: 16px; height: 16px; position: absolute;"},null);obj.innerHTML="<img id='ajax_scaffold_indicator_image' src=''><script>var obj = MochiKit.DOM.getElement('ajax_scaffold_indicator_image'); if (obj && Basis.misc_vars['ajax_loading'].src) { obj.src = Basis.misc_vars['ajax_loading'].src; }</script>";document.body.appendChild(obj);Basis.execute_javascript(obj);this.position_indicator();this.draw_indicator=MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",this,function(){this.position_indicator();});obj.style.display="";}},form_post:function(form_id){var obj=MochiKit.DOM.getElement(form_id);if(obj){var action=MochiKit.DOM.getElement(obj).action;var form_data=MochiKit.DOM.formContents(obj);if(action&&form_data){form_data[0][form_data[0].length]="exit_after_catch";form_data[1][form_data[1].length]="true";var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
this.url=action;return this.post(to_post);}else{MochiKit.Logging.log("no action or no form_data");}}},position_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");var scroll=Basis.scroll_coords();if(obj&&Basis.misc_vars["mouse_x"]&&Basis.misc_vars["mouse_y"]&&scroll&&(scroll.x>=0)&&(scroll.y>=0)){var pos={"x":(Basis.misc_vars["mouse_x"]+scroll.x+15),"y":(Basis.misc_vars["mouse_y"]+scroll.y+10)};MochiKit.Style.setElementPosition(obj,pos);}},post:function(options){if(this.should_block&&Basis.ajax_scaffold.blocked){log("ERROR: blocking request already made; cannot send this until it has completed!");return false;}
this.url=this.url?this.url:window.location.href;this.sid=this.sid?this.sid:Basis.get_cookie("PHPSESSID");if(this.url&&this.sid){if(!this.send_raw){var to_send={"alias":this.alias,"ajax_throw_verify":hex_md5(this.sid)};if(options){for(var i in options){to_send[i]=options[i];}}}else{var to_send=options;}
if(this.url.indexOf("?")!=-1){var base=this.url.substring(0,this.url.indexOf("?"));var args=parseQueryString(this.url.substring((this.url.indexOf("?")+1),this.url.length),true);}else{var base=this.url;var args={};}
args["PHPSESSID"]=this.sid;args["alias"]=this.alias;var date=new Date();args["unique"]=date.getTime();var query_string="";for(var i in args){if(typeof(args[i])!="function"){query_string+=i+"="+args[i]+"&";}}
this.url=base+"?"+query_string;this.attach_indicator();if(!this.send_raw){var send_content="array="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_send)));}else{var temp="";for(var i in to_send){temp+=urlencode(i)+"="+urlencode(to_send[i])+"&";}
var send_content=temp;}
this.deferred=MochiKit.Async.doXHR(this.url,{"method":"POST","headers":{"Content-type":"application/x-www-form-urlencoded"},"sendContent":send_content});this.deferred.addCallback(MochiKit.Base.bind(function(req){this.req=req;},this.deferred));this.deferred.addCallback(MochiKit.Base.bind(function(){var func=MochiKit.Base.bind(this.on_success,this);func.apply(null,[this.deferred.req]);},this));this.deferred.addCallback(this.after_success);this.deferred.addCallback(MochiKit.Base.bind(this.remove_indicator,this));this.deferred.addCallback(MochiKit.Base.partial(function(should_block){Basis.ajax_scaffold.blocked=should_block?false:Basis.ajax_scaffold.blocked;},this.should_block));Basis.ajax_scaffold.blocked=this.should_block?true:Basis.ajax_scaffold.blocked;return this.deferred;}else{if(!this.url){MochiKit.Logging.log("ERROR: this.url is null!");}
if(!this.sid){MochiKit.Logging.log("ERROR: this.sid is null!");}}
return false;},remove_indicator:function(){var obj=MochiKit.DOM.getElement("ajax_scaffold_indicator");if(obj){MochiKit.DOM.removeElement(obj);}
MochiKit.Signal.disconnect(this.draw_indicator);}};Basis.bnode_tree=function(){this.__init__();};Basis.bnode_tree.instances=[];Basis.bnode_tree.prototype={__init__:function(){var node_index=Basis.bnode.instances.length;this.nodes=new Array();this.nodes[node_index]=new Basis.bnode;this.top_node_index=node_index;this.index=Basis.bnode_tree.instances.length;Basis.bnode_tree.instances[this.index]=this;this.nodes[node_index].top=this.index;},node:function(id){if(id||(id==0)){return this.nodes[id];}else{return false;}},parse_func:function(){},top_node:function(){if(this.nodes[this.top_node_index]){return this.nodes[this.top_node_index];}
return false;}}
Basis.bnode=function(){this.__init__();};Basis.bnode.instances=[];Basis.bnode.prototype={__init__:function(){this.is_node=true;this.top=null;this.parent=null;this.children=new Array();this.index=Basis.bnode.instances.length;Basis.bnode.instances[this.index]=this;},add_node:function(){if(this.children){var top_node_index=Basis.bnode.instances.length;var node=new Basis.bnode();var node_index=this.children.length;if(this.parent){node.top=this.node(this.parent).top;}else{node.top=this.top;}
this.nodes()[top_node_index]=node;this.node(top_node_index).parent=this.index;this.children[this.children.length]=top_node_index;return top_node_index;}
return false;},delete_node:function(){this.delete_node_plus_children();},delete_node_plus_children:function(){if(this.children){for(var i in this.children){if(this.node(this.children[i])){this.node(this.children[i]).delete_node_plus_children();}}}
if(delete this.nodes()[this.index]){return true;}else{return false;}},has_children:function(){if(this.children.length>0){return true;}
return false},node:function(id){if((id||(id==0))&&this.nodes()[id]){return this.nodes()[id];}else{return false;}},nodes:function(){return this.tree().nodes;},nodes_after:function(){if(this.node(this.parent)){var found_node=false;var any_after=false;for(var i in this.node(this.parent).children){var tnode=this.node(this.node(this.parent).children[i]);if(tnode){if(found_node){any_after=true;}
if(tnode.index==this.index){found_node=true;}}}
return(found_node&&any_after);}
return false;},nodes_before:function(){if(this.node(this.parent)){var found_node=false;var any_before=false;for(var i in this.node(this.parent).children){var tnode=this.node(this.node(this.parent).children[i]);if(tnode){if(!found_node&&!(tnode.index==this.index)){any_before=true;}
if(tnode.index==this.index){found_node=true;}}}
return(found_node&&any_before);}
return false;},parse:function(){var tfunc=MochiKit.Base.bind(this.tree().parse_func,this);tfunc();if(this.children.length>0){for(var i in this.children){if(this.node(this.children[i])){this.node(this.children[i]).parse();}}}},tree:function(){return Basis.bnode_tree.instances[this.top];}}
Basis.color_chooser=function(options){this.__init__(options);};Basis.color_chooser.prototype={__init__:function(options){this.color=null;this.on_change=function(){};this.hue=0.0;this.saturation=0.0;this.brightness=0.0;this.update_color();this.image_root="http://www.sitequarters.com/images/images/";this.sb_dimensions={"w":256,"h":256};this.sb_container="color_chooser_sb_container";this.sb_overlay="color_chooser_sb_overlay";this.sb_overlay_image=this.image_root+"color_chooser_overlay.png";this.sb_drag="color_chooser_sb_drag";this.sb_drag_image=this.image_root+"color_chooser_slide.gif";this.sb_drag_dimensions={"w":9,"h":9};this.h_container="color_chooser_h_container";this.h_container_image=this.image_root+"color_chooser_hue.png";this.h_drag="color_chooser_h_drag";this.h_dimensions={"w":19,"h":256};this.h_drag_image=this.image_root+"color_chooser_hue_slide.gif";this.h_drag_dimensions={"w":30,"h":9};this.spacer_image=this.image_root+"spacer.gif";this.show_sb=true;this.show_h=true;this.elements={};},attach_events:function(){var sb_mousedown=MochiKit.Base.bind(function(e){this.elements["sb_container"].mousedown=true;var pos=MochiKit.Style.getElementPosition(this.elements["sb_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["sb_container"]);var hdim=MochiKit.Style.getElementDimensions(this.elements["sb_drag"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.saturation=(pos_in_image.x/dim.w);this.brightness=1-(pos_in_image.y/dim.h);this.update_hsb();this.position_sb_handle();},this);MochiKit.Signal.connect(this.elements["sb_container"],"onmousedown",sb_mousedown);MochiKit.Signal.connect(this.elements["sb_drag"],"onmousedown",sb_mousedown);MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(){this.mousedown=false;},this.elements["sb_container"]));MochiKit.Signal.connect(document,"onmousemove",MochiKit.Base.bind(function(e){if(this.elements["sb_container"].mousedown){var pos=MochiKit.Style.getElementPosition(this.elements["sb_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["sb_container"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.saturation=(pos_in_image.x/dim.w);this.brightness=1-(pos_in_image.y/dim.h);this.update_hsb();this.position_sb_handle();this.update_color();}},this));var h_mousedown=MochiKit.Base.bind(function(e){this.elements["h_container"].mousedown=true;var pos=MochiKit.Style.getElementPosition(this.elements["h_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["h_container"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.hue=1-(pos_in_image.y/dim.h);this.update_sb_hue();this.position_h_handle();},this);MochiKit.Signal.connect(this.elements["h_container"],"onmousedown",h_mousedown);MochiKit.Signal.connect(this.elements["h_drag"],"onmousedown",h_mousedown);MochiKit.Signal.connect(document,"onmouseup",MochiKit.Base.bind(function(){this.mousedown=false;},this.elements["h_container"]));MochiKit.Signal.connect(document,"onmousemove",MochiKit.Base.bind(function(e){if(this.elements["h_container"].mousedown){var pos=MochiKit.Style.getElementPosition(this.elements["h_container"]);var dim=MochiKit.Style.getElementDimensions(this.elements["h_container"]);var hdim=MochiKit.Style.getElementDimensions(this.elements["h_drag"]);var pos_in_image={"x":(e.mouse().page.x-pos.x),"y":(e.mouse().page.y-pos.y)};this.hue=1-(pos_in_image.y/dim.h);this.update_sb_hue();this.position_h_handle();this.update_color();}},this));},color_hex:function(){return this.color.toHexString().toUpperCase();},compile:function(){this.create_elements();this.attach_events();this.update_handles();this.on_change();},create_elements:function(){this.elements["sb_container"]=new MochiKit.DOM.DIV({"id":this.sb_container,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-color: "+this.max_color_hex()+";"},null);this.elements["sb_overlay"]=new MochiKit.DOM.DIV({"id":this.sb_overlay,"style":"width: "+this.sb_dimensions.w+"px; height: "+this.sb_dimensions.h+"px; background-image: url("+this.sb_overlay_image+"); filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.sb_overlay_image+"');"},null);this.elements["sb_drag"]=new MochiKit.DOM.DIV({"id":this.sb_drag,"style":"width: "+this.sb_drag_dimensions.w+"px; height: "+this.sb_drag_dimensions.h+"px; background-image: url("+this.sb_drag_image+"); position: absolute;"},null);this.elements["h_container"]=new MochiKit.DOM.DIV({"id":this.h_container,"style":"width: "+this.h_dimensions.w+"px; height: "+this.h_dimensions.h+"px; background-image: url("+this.h_container_image+");"},null);this.elements["h_drag"]=new MochiKit.DOM.DIV({"id":this.h_drag,"style":"width: "+this.h_drag_dimensions.w+"px; height: "+this.h_drag_dimensions.h+"px; background-image: url("+this.h_drag_image+"); position: absolute;"},null);this.elements["sb_drag"].innerHTML='<img src="'+this.spacer_image+'">';this.elements["h_drag"].innerHTML='<img src="'+this.spacer_image+'">';var html='<table><tr><td id="color_chooser_sb"></td><td id="color_chooser_h"></td></tr></table>';this.elements["container"]=new DIV({"style":"display: none;","class":"no_select"});document.body.appendChild(this.elements["container"]);this.elements["container"].innerHTML=html;var obj=MochiKit.DOM.getElement("color_chooser_sb");if(obj&&this.show_sb){obj.appendChild(this.elements["sb_container"]);this.elements["sb_container"].appendChild(this.elements["sb_overlay"]);obj.appendChild(this.elements["sb_drag"]);}
var obj=MochiKit.DOM.getElement("color_chooser_h");if(obj&&this.show_h){obj.appendChild(this.elements["h_container"]);obj.appendChild(this.elements["h_drag"]);}
this.update_handles();},max_color_hex:function(){return MochiKit.Color.Color.fromHSV(this.hue,1.0,1.0).toHexString();},position_h_handle:function(){var obj=this.elements["h_container"];var handle=this.elements["h_drag"];if(obj&&handle){var dim=MochiKit.Style.getElementDimensions(obj);var hdim=MochiKit.Style.getElementDimensions(handle);var offset_y=((1-this.hue)*dim.h)-(hdim.h/2);Basis.set_element_position(handle,{"x":0,"y":parseInt(offset_y),"mode":"relative","relative_to":obj});return true;}
return false;},position_sb_handle:function(){var obj=this.elements["sb_container"];var handle=this.elements["sb_drag"];if(obj&&handle){var dim=MochiKit.Style.getElementDimensions(obj);var hdim=MochiKit.Style.getElementDimensions(handle);var offset_x=(this.saturation*dim.w)-(hdim.w/2);var offset_y=((1-this.brightness)*dim.h)-(hdim.h/2);Basis.set_element_position(handle,{"x":parseInt(offset_x),"y":parseInt(offset_y),"mode":"relative","relative_to":obj});return true;}
return false;},set_color_from_hex:function(hex){if(hex){var color=MochiKit.Color.Color.fromHexString(hex);if(color.toHexString().indexOf("NaN")>-1){color=MochiKit.Color.Color.fromHexString("#000000");}
var hsv=color.asHSV();this.hue=hsv.h;this.saturation=hsv.s;this.brightness=hsv.v;this.update_sb_hue();this.update_handles();}},update_color:function(){this.color=MochiKit.Color.Color.fromHSV(this.hue,this.saturation,this.brightness);this.on_change();},update_handles:function(){this.position_sb_handle();this.position_h_handle();},update_hsb:function(){if(this.hue>1){this.hue=1.0;}
if(this.hue<0){this.hue=0.0;}
if(this.saturation>1){this.saturation=1.0;}
if(this.saturation<0){this.saturation=0.0;}
if(this.brightness>1){this.brightness=1.0;}
if(this.brightness<0){this.brightness=0.0;}
this.update_color();},update_sb_hue:function(){this.update_hsb();var obj=this.elements["sb_container"];if(obj){obj.style.backgroundColor=this.max_color_hex();}}};Basis.dynamic_select_list=function(){this.__init__();};Basis.dynamic_select_list.instances=[];Basis.dynamic_select_list.prototype={__init__:function(){this.list=null;this.list_id=null;this.table_name="basis_dynamic_list_item";this.alias=null;this.parent_id=null;this.sid=null;this.post_url=null;this.prompt_action=true;this.on_change=function(){};this.index=Basis.dynamic_select_list.instances.length;Basis.dynamic_select_list.instances[this.index]=this;},compile:function(){this.list=MochiKit.DOM.getElement(this.list_id);this.attach_events();},add_item:function(){var text=MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));if(this.list&&this.list.id&&text.value){window.status="Adding item to list...";if(this.prompt_action){if(!confirm("Are you sure you want to add '"+text.value+"' to the list?")){return;}}
Basis.select_add_option(this.list,null,text.value);text.value="";text.focus();this.update_database();}},attach_events:function(){if(this.list&&this.list.id){var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_add_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.add_item();});}
var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_rename_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.rename_item();});}
var obj=MochiKit.DOM.getElement(this.list.id.replace("dlist","dlist_delete_button"));if(obj){MochiKit.Signal.connect(obj,"onclick",this,function(){this.delete_item();});}}},delete_item:function(){var selected=Basis.select_selected_indexes(this.list);if(this.list&&this.list.id&&(Basis.array_length(selected)>0)){if(this.prompt_action){if(Basis.array_length(selected)==1){var index=selected[0]["index"];if(this.prompt_action){if(!confirm("Are you sure you want to delete '"+this.list.options[index].text+"' from the list?")){return;}}
window.status="Deleting item from list...";MochiKit.DOM.removeElement(this.list.options[index]);this.update_database();}else{if(this.prompt_action){if(!confirm("Are you sure you want to delete the "+Basis.array_length(selected)+" selected items from the list?")){return;}}
for(var i=0;i<Basis.array_length(selected);i++){Basis.select_delete_item_by_value(this.list.id,selected[i]["value"]);}
this.update_database();}}}else if(Basis.array_length(selected)==0){alert("Please select an item to delete, then click this button again.");}},manage_form:function(alias,parent_id,field,window_title){if(alias&&parent_id&&field){window.status="Fetching '"+field+"' form...";var to_post=new Object();to_post.alias=alias;to_post.field=field;to_post.parent_id=parent_id;var as=new Basis.ajax_scaffold;as.alias="Basis.dynamic_select_list.manage_form";as.sid=this.sid;as.url=this.post_url;as.pvar=this;as.field=field;as.window_title=window_title;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(this.window_title){var window_title=this.window_title;}else{var window_title="Manage "+(this.field.substring(0,1).toUpperCase()+this.field.substring(1,this.field.length));}
this.popup=Basis.popup({"id":"manage_"+this.field+"_form","html":response["html"],"window_title":window_title});window.status="Done";}else{window.status="manage_form(): ERROR!";}};return as.post({"to_post":to_post});}},rename_item:function(){var text=MochiKit.DOM.getElement(this.list_id.replace("dlist","dlist_text"));var selected=Basis.select_selected_indexes(this.list);if(this.list&&this.list.id&&text.value&&(Basis.array_length(selected)>0)){var index=selected[0]["index"];if(this.prompt_action){if(!confirm("Are you sure you want to rename '"+this.list.options[index].text+"' to '"+text.value+"'?")){return;}}
window.status="Renaming item in list...";this.list.options[index].text=text.value;text.value="";text.focus();this.update_database();}else if(this.list&&this.list.id&&!text.value&&(Basis.array_length(selected)>0)){if(Basis.array_length(selected)>1){alert("You can only rename one item at a time; please select a single item and click this button again.");}else{var index=selected[0].index;if(this.list.options[index]){alert("Please type what you would like to rename '"+this.list.options[index].text+"' to in the text box on the left, then click this button again.");}}}else if(Basis.array_length(selected)==0){alert("Please select an item to rename, then type what you want to rename it to in the text box on the left, then click this button again.");}},update_database:function(){if(this.list&&this.list.id&&this.post_url){Basis.select_select_none(this.list);list=new Object();list["options"]=new Object();list["parent_id"]=this.parent_id;list["list_id"]=this.list.id;for(var x=0;x<this.list.options.length;x++){list["options"][x]=new Object();list["options"][x]["value"]=this.list.options[x].value;list["options"][x]["text"]=this.list.options[x].text;}
var to_post=new Object();to_post.list=list;to_post.alias=this.alias;var as=new Basis.ajax_scaffold;as.alias="Basis.dynamic_select_list.update_database";as.sid=this.sid;as.url=this.post_url;as.pvar=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){if(response["output"]){eval(response["output"]);}
Basis.select_sort(this.pvar.list.id);this.pvar.on_change();window.status="Done";}else{window.status="update_database(): ERROR!";}};as.post({"to_post":to_post});}}};Basis.interactive_signal_handler=function(){this.__init__();};Basis.interactive_signal_handler.prototype={__init__:function(){this.interactive_elements={};this.anonymous_element_lookup={};this.elements_pending_commit=[];this.proxy_events=["onabort","onblur","onclick","ondblclick","onerror","onfocus","onkeydown","onkeypress","onkeyup","onload","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onreset","onresize","onselect","onsubmit","onunload"];this.greedy_events=["onclick","ondblclick","onkeydown","onkeypress","onkeyup","onmousedown","onmousemove","onmouseup"];for(var i=0;i<this.proxy_events.length;i++){var event=this.proxy_events[i];var connecting_to=(BrowserDetect&&(BrowserDetect.browser!="Explorer"))?window:document;MochiKit.Signal.connect(connecting_to,event,MochiKit.Base.bind(MochiKit.Base.partial(function(event,e){var type=e.type();type=(type.substring(0,2)=="on")?type.substring(2):type;switch(type){case"mouseover":type="on"+(MochiKit.Signal._browserAlreadyHasMouseEnterAndLeave()&&Basis.is_mouse_leave_or_enter(e.event(),e.target())?"mouseenter":"mouseover");break;case"mouseout":type="on"+(MochiKit.Signal._browserAlreadyHasMouseEnterAndLeave()&&Basis.is_mouse_leave_or_enter(e.event(),e.target())?"mouseleave":"mouseout");break;default:type="on"+e.type();break;}
switch(type){case"onmouseenter":var list=[];var parent=e.target();while(parent&&(parent!=document.body)&&(parent!=e.relatedTarget())&&(!MochiKit.DOM.isChildNode(e.relatedTarget(),parent))){list.push(parent);parent=parent.parentNode;}
for(var i=(list.length-1);i>=0;i--){this.execute_interactive_element(list[i],type);}
break;case"onmouseleave":var parent=e.target();while(parent&&(parent!=document.body)&&(parent!=e.relatedTarget())&&(!MochiKit.DOM.isChildNode(e.relatedTarget(),parent))){this.execute_interactive_element(parent,type);parent=parent.parentNode;}
break;default:this.execute_interactive_element(e.target(),type);if(Basis.array_search(this.greedy_events,type)!=null){var has_swallowed=this.interactive_element_has_swallowed(e.target(),type);var parent=e.target().parentNode;while(parent&&document.body&&(parent!=document.body.parentNode)&&!has_swallowed){this.execute_interactive_element(parent,type,true);has_swallowed=this.interactive_element_has_swallowed(parent,type);parent=parent.parentNode;}}
break;}},event),this));}},commit_pending_elements:function(){var list=this.elements_pending_commit;for(var i=0;i<list.length;i++){if((list[i]!=null)&&this.interactive_elements[list[i]]){this.interactive_elements[list[i]].committed=true;}}
this.elements_pending_commit=[];this.purge_orphaned_signals();},connect:function(element,event,func,commit){var commit=(commit!=null)?commit:true;var element=Basis.get_element(element);if(element&&event&&Basis.is_function(func)){element.id=element.id?element.id:Basis.anonymous_element_id();var is_greedy=(event.split(".")[0]&&(event.split(".")[1]=="greedy"))?true:false;var will_swallow=(event.split(".")[0]&&(event.split(".")[2]=="swallow"))?true:false;if(is_greedy){func.is_greedy=true;event=event.split(".")[0];}
if(will_swallow){func.will_swallow=true;}
var index=this.get_element_index(element);if(index!=null){this.interactive_elements[index][event]=this.interactive_elements[index][event]?this.interactive_elements[index][event]:[];this.interactive_elements[index][event].push(func);this.interactive_elements[index].committed=commit?true:false;if(!commit){this.elements_pending_commit.push(index);}
if((event=="onchange")&&(!element.onchange_overwritten)){element.onchange=MochiKit.Base.partial(function(old_func,element,signal_handler){if(Basis.is_function(old_func)){old_func();}
signal_handler.execute_interactive_element(element,"onchange");},(element.onchange?element.onchange:function(){}),element,this);element.onchange_overwritten=true;}
return{"element":index,"event":event,"index":(this.interactive_elements[index][event].length-1)};}}else if(element&&Basis.array_length(event)&&(func==null)){var signals=[];for(var i in event){if(!Basis.is_function(event[i])&&MochiKit.Base.isArrayLike(event[i])){for(var j=0;j<event[i].length;j++){signals.push(this.connect(element,i,event[i][j],commit));}}}
return signals;}},disconnect:function(pointer){if(pointer){var list=this.interactive_elements;if(!list[pointer["element"]]){return false;}
if(!list[pointer["element"]][pointer["event"]]){return false;}
if(!list[pointer["element"]][pointer["event"]][pointer["index"]]){return false;}
this.interactive_elements[pointer["element"]][pointer["event"]][pointer["index"]]=function(){};return true;}},execute_interactive_element:function(element,event,greedy_events_only){var greedy_events_only=(greedy_events_only!=null)?greedy_events_only:false;if(element&&event){var index=this.get_element_index(element,false);var events=this.interactive_elements[index];if(events&&events[event]&&MochiKit.Base.isArrayLike(events[event])){events[event].swallowed=false;for(var i=0;i<events[event].length;i++){if(Basis.is_function(events[event][i])&&(!greedy_events_only||(greedy_events_only&&events[event][i].is_greedy))&&!events[event].swallowed){events[event][i]();if(events[event][i].will_swallow){events[event].swallowed=true;}}}}}},get_element_index:function(element,set_up_if_nonexistent){var set_up_if_nonexistent=(set_up_if_nonexistent!==null)?set_up_if_nonexistent:true;var index=null;var element=Basis.get_element(element);if(element){if(element.id){this.interactive_elements[element.id]=this.interactive_elements[element.id]?this.interactive_elements[element.id]:{};return element.id;}else{var exists=false;for(var i in this.anonymous_element_lookup){if(Basis.is_element(this.anonymous_element_lookup[i])&&(this.anonymous_element_lookup[i]===element)){exists=true;index=i;break;}}
if(!exists&&set_up_if_nonexistent){var keys=Basis.keys(this.anonymous_element_lookup);for(var i=0;i<keys.length;i++){keys[i]=Basis.parse_number(keys[i]);}
index=Basis.parse_number(MochiKit.Base.listMax(keys))+1;this.interactive_elements[index]={};this.anonymous_element_lookup[index]=element;}}}
return index;},interactive_element_has_swallowed:function(element,event){if(element&&event){var index=this.get_element_index(element,false);var events=this.interactive_elements[index];if(events&&events[event]&&MochiKit.Base.isArrayLike(events[event])){return events[event].swallowed;}}
return false;},purge_orphaned_signals:function(){var keys=Basis.keys(this.anonymous_element_lookup);for(var i=0;i<keys.length;i++){if(!MochiKit.DOM.isChildNode(this.anonymous_element_lookup[keys[i]],document.body)){if(this.interactive_elements[keys[i]]&&(this.interactive_elements[keys[i]].committed==true)){this.unregister_interactive_element(keys[i]);}}}
for(var i in this.interactive_elements){if(!MochiKit.DOM.getElement(i)&&!this.anonymous_element_lookup[i]){if(this.interactive_elements[i]&&(this.interactive_elements[i].committed==true)){this.unregister_interactive_element(i);}}}},unregister_interactive_element:function(pointer){if(pointer&&this.interactive_elements[pointer]){delete this.interactive_elements[pointer];if(this.anonymous_element_lookup[pointer]){delete this.anonymous_element_lookup[pointer];}
return true;}
return false;}};Basis.signal_handler=new Basis.interactive_signal_handler();;Basis.keep_alive=function(options){this.__init__(options);};Basis.keep_alive.prototype={__init__:function(options){this.sid=options["sid"]?options["sid"]:null;this.url=options["url"]?options["url"]:null;this.duration=options["duration"]?options["duration"]:null;this.propagate=(options["propagate"]!=null)?options["propagate"]:true;this.compile();},compile:function(){if(this.sid&&this.url&&this.duration){Basis.misc_vars["keepalive_timeout"]=MochiKit.Async.callLater(this.duration,MochiKit.Base.bind(function(){this.send_active_status();},this));}},send_active_status:function(){if(this.sid&&this.url){var as=new Basis.ajax_scaffold;as.alias="Basis.active_status";as.sid=this.sid;as.url=this.url;as.pvar=this;as.on_success=function(){if(this.pvar.propagate){this.pvar.compile();}};as.post();}}};Basis.interactive_key_handler=function(){this.__init__();};Basis.interactive_key_handler.prototype={__init__:function(){Basis.key_state=[];this.key_events={"up":{},"down":{}};MochiKit.Signal.connect(document,"onkeydown",MochiKit.Base.bind(function(e){Basis.key_state[e.key().string]="down";this.execute_key_events(e.key().string);},this));MochiKit.Signal.connect(document,"onkeyup",MochiKit.Base.bind(function(e){Basis.key_state[e.key().string]="up";this.execute_key_events(e.key().string);},this));},execute_key_events:function(key_string){var up_or_down=this.key_state(key_string);switch(up_or_down){case"up":case"down":var events=this.key_events[up_or_down][key_string];events=MochiKit.Base.isArrayLike(events)?events:[];for(var i=0;i<events.length;i++){if(Basis.is_function(events[i])){events[i]();}}
break;}},key_state:function(key_string){return((Basis.key_state[key_string]==null)||(Basis.key_state[key_string]=="up"))?"up":"down";},register_key_event:function(key_string,up_or_down,func){this.key_events[up_or_down][key_string]=MochiKit.Base.isArrayLike(this.key_events[up_or_down][key_string])?this.key_events[up_or_down][key_string]:[];this.key_events[up_or_down][key_string].push(func);return{"key_state":up_or_down,"key_string":key_string,"index":(this.key_events[up_or_down][key_string].length-1)};},set_key_state:function(key_string,state){Basis.key_state[key_string]=((state=="up")?"up":"down");},unregister_key_event:function(pointer){if(pointer){delete this.key_events[pointer["key_state"]][pointer["key_string"]][pointer["index"]];return true;}
return false;}}
Basis.key_handler=new Basis.interactive_key_handler();;Basis.menu=function(){this.__init__();};Basis.menu.instances=[];Basis.menu.prototype={__init__:function(){this.parent_element;this.current_node;this.parent_container_tag="UL";this.child_tag="LI";this.orientation="vertical";this.offset={"x":0,"y":0};this.first_level_offset={"x":0,"y":0};this.tree=new Basis.bnode_tree();},compile:function(){var temp_options={"offset":this.offset,"first_level_offset":this.first_level_offset,"child_tag":this.child_tag,"parent_container_tag":this.parent_container_tag,"orientation":this.orientation};this.__init__();for(var i in temp_options){if(i&&this[i]){this[i]=temp_options[i];}}
var parent_element=MochiKit.DOM.getElement(this.parent_element);if(parent_element){this.current_node=this.tree.top_node();this.parse_children(this.get_child_container(parent_element));}
this.hide_child_containers_and_attach_events();},find_node_with_id:function(id){if(id){for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].options&&this.tree.nodes[i].options.id&&(this.tree.nodes[i].options.id==id)){return this.tree.node(this.tree.nodes[i].index);}}}
return false;},get_all_nodes:function(){var nodes=[];for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].is_node){nodes[nodes.length]=this.tree.nodes[i].index;}}
return nodes;},get_all_nodes_with_children:function(){var nodes=[];for(var i in this.tree.nodes){if(i&&this.tree.nodes[i]&&this.tree.nodes[i].is_node&&(this.tree.nodes[i].children.length>0)){nodes[nodes.length]=this.tree.nodes[i].index;}}
return nodes;},get_child_container:function(element){var element=MochiKit.DOM.getElement(element);if(element){var parent_container=Basis.get_child_elements_by_tag(element,this.parent_container_tag);if(parent_container&&(parent_container.length>0)){return parent_container[0];}}
return false;},get_all_submenu_parent_elements:function(){var elements=[];var submenus=this.get_all_submenu_container_elements();for(var i in submenus){var submenu=MochiKit.DOM.getElement(submenus[i]);if(submenu&&submenu.parentNode){elements[elements.length]=submenu.parentNode;}}
return elements;},get_top_level_menu_elements:function(){var elements=[];var parents=this.tree.top_node().children;if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){elements[elements.length]=obj;}}}}
return elements;},get_all_submenu_container_elements:function(){var elements=[];var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){var children=MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag,null,obj);for(var x in children){if(x&&children[x]&&children[x].tagName&&(children[x].tagName.toLowerCase()==this.parent_container_tag.toLowerCase())){elements[elements.length]=children[x];}}}}}}
return elements;},hide_all_children:function(){var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){if(this.tree.node(parents[i]).has_children()){MochiKit.Signal.signal(obj,"hide_all_children");}}}}}},hide_child_containers_and_attach_events:function(){var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj){if(this.tree.node(parents[i]).has_children()){MochiKit.Signal.connect(obj,"hide_all_children",MochiKit.Base.bind(function(parent_container_tag){var children=MochiKit.DOM.getElementsByTagAndClassName(parent_container_tag,null,this);for(var x in children){if(x&&children[x]&&children[x].tagName&&(children[x].tagName.toLowerCase()==parent_container_tag.toLowerCase())){children[x].style.display="none";MochiKit.Style.setOpacity(children[x],0.01);}}},obj,this.parent_container_tag));}
MochiKit.Signal.connect(obj,"onmouseenter",MochiKit.Base.bind(function(current_over){this.pending_hide_all_children=false;if(this.pending_hide_all_children_deferred&&this.pending_hide_all_children_deferred.cancel){this.pending_hide_all_children_deferred.cancel();}
current_over=MochiKit.DOM.getElement(current_over);var parents=this.get_all_nodes();if(parents.length>0){for(var i in parents){if(current_over&&i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]&&(this.tree.node(parents[i]).options["id"]!=current_over.id)){var obj=MochiKit.DOM.getElement(this.tree.node(parents[i]).options["id"]);if(obj&&(!MochiKit.DOM.isChildNode(current_over,obj))){MochiKit.Signal.signal(obj,"hide_all_children");}}}}
var child=MochiKit.DOM.getElement(this.get_child_container(current_over));if(child&&(child.style.display=="none")){child.style.position="absolute";child.style.zIndex=10000;MochiKit.Style.setOpacity(child,1.0);child.style.display="";current_over.style.display="";current_over.parentNode.style.display="";var relative_to=this.relative_to(child);var child_pos=MochiKit.Style.getElementPosition(child);var child_dim=MochiKit.Style.getElementDimensions(child);var current_pos=MochiKit.Style.getElementPosition(current_over);var current_dim=MochiKit.Style.getElementDimensions(current_over);var currentpn_pos=MochiKit.Style.getElementPosition(current_over.parentNode);var currentpn_dim=MochiKit.Style.getElementDimensions(current_over.parentNode);var offset={"x":0,"y":0};var orientation=this.orientation;if(!this.is_first_level_menu_item(current_over)){orientation="vertical";}
switch(orientation){case"horizontal":offset.y=current_pos.y+current_dim.h;if(this.is_first_level_menu_item(current_over)){offset.x=current_pos.x;}else{offset.x=currentpn_pos.x;}
break;case"vertical":default:offset.y=current_pos.y;offset.x=currentpn_pos.x+currentpn_dim.w;break;}
if(relative_to&&(relative_to!=document.body)){var relative_to_pos=MochiKit.Style.getElementPosition(relative_to);offset.x-=relative_to_pos.x;offset.y-=relative_to_pos.y;}
if(this.is_first_level_menu_item(current_over)){offset.x+=this.first_level_offset.x;offset.y+=this.first_level_offset.y;}else{offset.x+=this.offset.x;offset.y+=this.offset.y;}
MochiKit.Style.setElementPosition(child,offset);var child_pos=MochiKit.Style.getElementPosition(child);var child_dim=MochiKit.Style.getElementDimensions(child);var scroll=Basis.scroll_coords();var viewport=MochiKit.Style.getViewportDimensions();if((child_pos.x+child_dim.w)>(viewport.w+scroll.x)){Basis.align_element_to_element(child,current_over.parentNode,"right_to_left",{"x":(((relative_to&&(relative_to!=document.body))?(-1*relative_to_pos.x):0)+(this.is_first_level_menu_item(current_over)?this.first_level_offset.x:this.offset.x)),"y":(((relative_to&&(relative_to!=document.body))?(-1*relative_to_pos.y):0)-(this.is_first_level_menu_item(current_over)?this.first_level_offset.y:this.offset.y))});}
child.style.display="";}},this,obj));MochiKit.Signal.signal(obj,"hide_all_children");}}}}
var obj=MochiKit.DOM.getElement(this.parent_element);if(obj){MochiKit.Signal.connect(obj,"onmouseleave",MochiKit.Base.bind(function(){this.pending_hide_all_children=true;this.pending_hide_all_children_deferred=MochiKit.Async.callLater(1,MochiKit.Base.bind(function(){if(this.pending_hide_all_children){this.hide_all_children();}},this));},this));}
var elements=this.get_all_submenu_container_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(elements[i],"Basis.menu.submenu");elements[i].style.position="absolute";elements[i].style.zIndex=10000;}}}
var elements=this.get_all_submenu_parent_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"Basis.menu.parent_item");}}}
var elements=this.get_top_level_menu_elements();if(elements.length>0){for(var i in elements){var element=MochiKit.DOM.getElement(elements[i]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(elements[i],"Basis.menu.top_level_item");switch(this.orientation){case"horizontal":MochiKit.DOM.addElementClass(elements[i],"Basis.float.left");if(elements[i].firstChild&&BrowserDetect&&BrowserDetect.browser&&(BrowserDetect.browser.indexOf("Explorer")!=-1)){MochiKit.DOM.addElementClass(elements[i].firstChild,"Basis.float.left.ie");}
break;}}}}
var elements=MochiKit.DOM.getElementsByTagAndClassName(this.parent_container_tag,null,MochiKit.DOM.getElement(this.parent_element));if(elements.length>0){var element=MochiKit.DOM.getElement(elements[0]);if(element&&Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"Basis.menu.top");}}},is_first_level_menu_item:function(element){element=MochiKit.DOM.getElement(element);if(element){if(this.tree.top_node().has_children()){var parents=this.tree.top_node().children;for(var i in parents){if(i&&parents[i]&&this.tree.node(parents[i])&&this.tree.node(parents[i]).is_node&&this.tree.node(parents[i]).options&&this.tree.node(parents[i]).options["id"]){if(this.tree.node(parents[i]).options["id"]==element.id){return true;}}}}}
return false;},node_has_children:function(element){var element=MochiKit.DOM.getElement(element);if(element){var children=Basis.get_child_elements_by_tag(element,this.child_tag);if(children&&(children.length>0)){return true;}}
return false;},parse_children:function(container){var container=MochiKit.DOM.getElement(container);if(container&&this.current_node&&this.current_node.is_node){var children=Basis.get_child_elements_by_tag(container,this.child_tag);if(children&&(children.length>0)){for(var i in children){if(i&&children[i]&&children[i].id){var added=this.current_node.add_node();this.tree.node(added).options={"id":children[i].id};var parent_container=this.get_child_container(children[i].id);if(parent_container&&this.node_has_children(parent_container)){var temp_node=this.current_node.index;this.current_node=this.tree.node(added);this.parse_children(parent_container);this.current_node=this.tree.node(temp_node);}}}}}},relative_to:function(element){element=MochiKit.DOM.getElement(element);if(element&&element.parentNode){element=element.parentNode;var tag=element.tagName;while((tag&&(tag.toLowerCase!="html"))&&(element.parentNode)){if(element&&element.style&&(element.style.position=="absolute")){return element;}
element=element.parentNode;tag=element.tagName;}}
return document.body;}}
Basis.interactive_mouse_handler=function(){this.__init__();};Basis.interactive_mouse_handler.prototype={__init__:function(){Basis.mouse_state={};MochiKit.Signal.connect(document,"onmousedown",function(e){Basis.mouse_state["button_left"]=e.mouse().button.left?"down":"up";Basis.mouse_state["button_middle"]=e.mouse().button.middle?"down":"up";Basis.mouse_state["button_right"]=e.mouse().button.right?"down":"up";});MochiKit.Signal.connect(document,"onmouseup",function(){Basis.mouse_state["button_left"]="up";Basis.mouse_state["button_middle"]="up";Basis.mouse_state["button_right"]="up";});MochiKit.Signal.connect(document,"onmousemove",function(e){Basis.mouse_state["screen_x"]=e.mouse().client.x;Basis.mouse_state["screen_y"]=e.mouse().client.y;Basis.mouse_state["page_x"]=e.mouse().page.x;Basis.mouse_state["page_y"]=e.mouse().page.y;});},button_state:function(button){return((Basis.mouse_state["button_"+button]==null)||(Basis.mouse_state["button_"+button]=="up"))?"up":"down";},coords:function(type){var type=(type=="screen")?"screen":"page";return{"x":Basis.mouse_state[type+"_x"],"y":Basis.mouse_state[type+"_y"]};}}
Basis.mouse_handler=new Basis.interactive_mouse_handler();;Basis.nested_sortables=function(){this.__init__();};Basis.nested_sortables.prototype={__init__:function(options){this.ul_tag="UL";this.ul_class=null;this.li_tag="LI";this.li_class=null;this.custom_ondrop=function(element,onto){};MochiKit.Base.updatetree(this,options);},build_nested_sortables:function(element,options){if(!options){var options={};}
var element=MochiKit.DOM.getElement(element);if(element){var uls=MochiKit.DOM.getElementsByTagAndClassName(this.ul_tag,this.ul_class,element);var lis=MochiKit.DOM.getElementsByTagAndClassName(this.li_tag,this.li_class,element);for(var i in lis){if(typeof(lis[i])!="function"){this.prepare_nested_sortable_element(lis[i],options);}}
uls=update([],uls);uls.reverse();for(var i in uls){if(typeof(uls[i])!="function"){var ul=uls[i];new MochiKit.Sortable.create(ul.id,MochiKit.Base.updatetree({"constraint":false,"containment":[ul],"hoverclass":"Basis.nested_sortables.hoverclass","starteffect":MochiKit.Base.noop,"endeffect":MochiKit.Base.noop,"tag":this.li_tag},options));}}}},compile:function(element,options){if(!options){var options={};}
var element=MochiKit.DOM.getElement(element);if(element&&element.id){this.build_nested_sortables(element.id,options);this.prepare_nested_sortable_element(element.id,options);}},ondrop:function(element,onto){var drop_container=onto.nextSibling;if(drop_container&&(drop_container.tagName.toUpperCase()==this.ul_tag.toUpperCase())&&(MochiKit.DOM.hasElementClass(drop_container,this.ul_class))){if(drop_container.firstChild){drop_container.insertBefore(element,drop_container.firstChild);}else{drop_container.appendChild(element);}
var drops=MochiKit.DragAndDrop.Droppables.drops;for(var i in drops){if(drops[i]&&drops[i].element&&(MochiKit.DOM.getElement(drops[i].element)==element)){if(drops[i].options&&drops[i].options.containment&&drops[i].options._containers){drops[i].options.containment=[drop_container];drops[i].options._containers=[drop_container];if(this.custom_ondrop&&(typeof(this.custom_ondrop)=="function")){this.custom_ondrop(element,onto);}}}}}},prepare_nested_sortable_element:function(element,options){if(!options){var options={};}
options["hide_dropzones"]=(options["hide_dropzones"]!=null)?options["hide_dropzones"]:true;var element=MochiKit.DOM.getElement(element);if(element&&element.tagName){var dropzone=MochiKit.DOM.getElement((element.id+"_d"));if(!dropzone){var dropzone=new MochiKit.DOM.DIV({"id":(element.id+"_d"),"class":"dropzone"});if(options["hide_dropzones"]){MochiKit.DOM.addElementClass(dropzone,"invisible");}
element.appendChild(dropzone);}
var innerUL=MochiKit.DOM.getFirstElementByTagAndClassName(this.ul_tag,this.ul_class,element);if(innerUL){element.insertBefore(dropzone,innerUL);}else{var container=MochiKit.DOM.createDOM(this.ul_tag,{"id":(element.id?(element.id+"_c"):null),"class":this.ul_class});element.appendChild(container);}
new MochiKit.DragAndDrop.Droppable((element.id+"_d"),{"ondrop":MochiKit.Base.bind(this.ondrop,this),"hoverclass":"drop-hover"});}}};Basis.application_state_handler=function(){this.__init__();};Basis.application_state_handler.prototype={__init__:function(){this.states={};this.state_tree=[];this.current_state=null;},add_state:function(state){this.states[state]={"key_handler_pointers":[],"key_handler_functions":[],"signal_handler_pointers":[],"signal_handler_functions":[]};},clear_states:function(){var states=this.states;this.__init__();this.states=states;},enter_state:function(state,push_state_tree){var push_state_tree=(push_state_tree!=null)?push_state_tree:true;if(this.current_state&&this.states[this.current_state]){this.exit_state(this.current_state,false);}
if(this.states[state]){this.current_state=state;if(push_state_tree){this.state_tree.push(state);}
var list=this.states[state];for(var i=0;i<list["key_handler_functions"].length;i++){this.states[state]["key_handler_pointers"].push(Basis.key_handler.register_key_event(list["key_handler_functions"][i]["key_string"],list["key_handler_functions"][i]["up_or_down"],list["key_handler_functions"][i]["func"]));}
for(var i=0;i<list["signal_handler_functions"].length;i++){this.states[state]["signal_handler_pointers"].push(Basis.signal_handler.connect(list["signal_handler_functions"][i]["element"],list["signal_handler_functions"][i]["event"],list["signal_handler_functions"][i]["func"],list["signal_handler_functions"][i]["commit"]));}}else{this.current_state=null;}},exit_state:function(state,pop_state_tree){var pop_state_tree=(pop_state_tree!=null)?pop_state_tree:true;if(this.states[state]&&this.states[state]["key_handler_pointers"]){var list=this.states[state]["key_handler_pointers"];for(var i=0;i<list.length;i++){Basis.key_handler.unregister_key_event(list[i]);}
this.states[state]["key_handler_pointers"]=[];var list=this.states[state]["signal_handler_pointers"];for(var i=0;i<list.length;i++){Basis.signal_handler.disconnect(list[i]);}
this.states[state]["signal_handler_pointers"]=[];if(pop_state_tree){this.state_tree.pop();}}},register_key_handler:function(state,key_string,up_or_down,func){if(this.states[state]&&this.states[state]["key_handler_functions"]){this.states[state]["key_handler_functions"].push({"key_string":(key_string!=null)?key_string:null,"up_or_down":(up_or_down!=null)?up_or_down:null,"func":(func!=null)?func:null});}},register_signal_handler:function(state,element,event,func,commit){if(this.states[state]&&this.states[state]["signal_handler_functions"]){this.states[state]["signal_handler_functions"].push({"element":(element!=null)?element:null,"event":(event!=null)?event:null,"func":(func!=null)?func:null,"commit":(commit!=null)?commit:null});}},revert:function(){this.exit_state(this.current_state);this.enter_state(this.state_tree[this.state_tree.length-1],false);}}
Basis.state_handler=new Basis.application_state_handler();;Basis.ticker=function(){this.__init__();};Basis.ticker.prototype={__init__:function(){this.interval=1;this.ticking=false;this.deferred=null;this.tick_do=function(){};},cancel:function(){if(this.ticking){this.ticking=false;if(this.deferred&&this.deferred.cancel){this.deferred.cancel();}
this.deferred=null;}},start:function(){if(!this.ticking){this.ticking=true;this.tick();}},tick:function(){if(this.ticking){this.deferred=MochiKit.Async.callLater(this.interval,MochiKit.Base.bind(function(){if(this.ticking){this.tick_do();this.tick();}},this));}}};;Basis.z_indexes={"modal_background":4999,"edit_bar_main_menu_menu":5001,"edit_bar_main_menu_button":5002};Basis.convert_textarea_to_richtextarea=function(element){var element=Basis.get_element(element);if(Basis.is_element(element)){MochiKit.DOM.addElementClass(element,"mceEditor");element.id=element.id?element.id:Basis.anonymous_element_id();if(document.tinymce_loaded&&tinyMCE){tinyMCE.execCommand("mceAddControl",false,element.id);}}};Basis.english_timestamp=function(time,seconds_offset,return_self_updating_element){var seconds_offset=Basis.is_number(seconds_offset)?Basis._int(seconds_offset):0;var timestamp_text=partial(function(time,seconds_offset,text,return_self_updating_element){if(return_self_updating_element&&text&&time){var element=SPAN({"class":"Basis.english_timestamp"},text);element.time=time;element.seconds_offset=seconds_offset;if(Basis.signal_handler){Basis.signal_handler.connect(element,"onmouseenter",bind(function(){var now=Basis.time();var diff=(now-Basis.time(this.time));var timestamp=strftime("%b %e, %Y at %l:%M%P",Basis.time(now-diff-this.seconds_offset));this.firstChild.nodeValue=timestamp;},element),false);Basis.signal_handler.connect(element,"onmouseleave",bind(function(){var timestamp=Basis.english_timestamp(this.time,this.seconds_offset);this.firstChild.nodeValue=timestamp;},element),false);}
return element;}else{return text;}},time,seconds_offset);if(time){if(Basis.is_object(time)&&time.getYear){var time=time;}else if(Basis.is_number(time)){var time=new Date(time*1000);}}
if(time&&time.getYear){var now=Basis.time();now+=seconds_offset;var diff=(Basis.time(time)<now)?(now-Basis.time(time)):(Basis.time(time)-now);var midnight=Date(now*1000).split(" ");midnight=midnight[1]+" "+
midnight[2]+" "+
midnight[3]+" 00:00:00";var seconds_today=now-Basis.strtotime(midnight);if(diff<0){return timestamp_text("IN THE FUTURE!! (please notify an administrator)",return_self_updating_element,diff);}else if((diff>=0)&&(diff<60)){return timestamp_text((diff+" second"+((diff==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=60)&&(diff<(60*55))){var minutes=Math.round(diff/60);return timestamp_text((((minutes==1)?"A":minutes)+" minute"+((minutes==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(60*55))&&(diff<(60*60))){return timestamp_text("About an hour ago",return_self_updating_element,diff);}else if((diff>=(60*60))&&(diff<seconds_today)){var hours=Math.round(diff/(60*60));return timestamp_text((((hours==1)?"An":hours)+" hour"+((hours==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=seconds_today)&&(diff<(seconds_today+(60*60*24)))){return timestamp_text(("Yesterday at "+strftime("%l:%M%P",Basis.time(now-diff-seconds_offset))),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24)))&&(diff<(seconds_today+(60*60*24*7)))){var days=Math.round(diff/(60*60*24));return timestamp_text((days+" day"+((days==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*7)))&&(diff<(seconds_today+(60*60*24*14)))){return timestamp_text("Last week",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*14)))&&(diff<(seconds_today+(60*60*24*28)))){var weeks=Math.round(diff/(60*60*24*7));return timestamp_text((weeks+" week"+((weeks==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*28)))&&(diff<(seconds_today+(60*60*24*56)))){return timestamp_text("About a month ago",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*56)))&&(diff<(seconds_today+(60*60*24*365)))){var months=Math.round(diff/(60*60*24*30));return timestamp_text((months+" month"+((months==1)?"":"s")+" ago"),return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*365)))&&(diff<(seconds_today+(60*60*24*365*2)))){return timestamp_text("Last year",return_self_updating_element,diff);}else if((diff>=(seconds_today+(60*60*24*365*2)))){var years=Math.round(diff/(60*60*24*365));return timestamp_text((years+" year"+((years==1)?"":"s")+" ago"),return_self_updating_element,diff);}}};Basis._string=function(str){return str?str:"";};Basis.make_element_fullscreen=function(element){var element=MochiKit.DOM.getElement(element);if(element){Basis.create_modal_background();var background=MochiKit.DOM.getElement("modal_background");if(background){var temp_id=element.id;var exit_fullscreen=partial(function(element,original_id){var substitute=MochiKit.DOM.getElement(original_id);if(substitute){var temp_id=element.id;element.id=substitute.id;substitute.id=temp_id;Basis.insert_after(substitute,element);Basis.remove_element(substitute);Basis.remove_element("modal_container");Basis.destroy_modal_background();MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_container_recenter);MochiKit.DOM.currentDocument().modal_container_recenter=null;MochiKit.Style.resizeConstrainedElements();}},element,temp_id);Basis.remove_element("modal_container");var substitute=DIV({"id":temp_id});element.id="Basis.make_element_fullscreen.substitute";MochiKit.Style.setElementDimensions(substitute,MochiKit.Style.getElementDimensions(element));Basis.insert_after(element,substitute);var minimize=IMG({"src":"images/images/default_icons/png/arrow_in.png","style":"cursor: pointer"});var modal_container=DIV({"id":"modal_container","style":"background-color: #FFFFFF; position: absolute; z-index: 1002; top: 0px; left: 0px; padding: 10px;"},DIV({"style":"text-align: right;"},minimize),element);Basis.register_size_constraints(modal_container,"100% - 20","100% - 20",null,false);document.body.appendChild(modal_container);Basis.signal_handler.connect(minimize,"onclick",exit_fullscreen);MochiKit.Style.resizeConstrainedElements();Basis.center_element(modal_container,true);if(Basis.state_handler){if(!Basis.state_handler.states["Basis.make_element_fullscreen"]){Basis.state_handler.add_state("Basis.make_element_fullscreen");Basis.state_handler.register_key_handler("Basis.make_element_fullscreen","KEY_ESCAPE","down",exit_fullscreen);}
Basis.state_handler.enter_state("Basis.make_element_fullscreen");}
if(!MochiKit.DOM.currentDocument().modal_container_recenter){MochiKit.DOM.currentDocument().modal_container_recenter=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(function(){Basis.center_element("modal_container",true);},this));}}}};Basis.create_modal_background=function(opacity,color,callbacks){var opacity=(opacity!=null)?opacity:0.50;var color=(color!=null)?color:"#000000";var callbacks=Basis.is_object(callbacks)?callbacks:{};if(!MochiKit.DOM.currentDocument().modal_background_resize){MochiKit.DOM.currentDocument().modal_background_resize=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(partial(function(opacity,color){Basis.create_modal_background(opacity,color);},opacity,color),this));}
if(!MochiKit.DOM.currentDocument().modal_background_rescroll){MochiKit.DOM.currentDocument().modal_background_rescroll=MochiKit.Signal.connect(window,"onscroll",MochiKit.Base.bind(partial(function(opacity,color){Basis.create_modal_background(opacity,color);},opacity,color),this));}
var obj=MochiKit.DOM.getElement("modal_background");if(!obj){var element=DIV({"id":"modal_background","style":"display: none; background-color: "+color+"; position: absolute; z-index: z-index: "+Basis.z_indexes["modal_background"]+"; top: 0px; left: 0px;"});document.body.appendChild(element);MochiKit.Style.setOpacity(element,0.0);}
var obj=MochiKit.DOM.getElement("modal_background");if(obj){var screend={"w":MochiKit.Style.getElementDimensions(MochiKit.DOM.currentDocument().body).w,"h":MochiKit.Style.getViewportDimensions().h};var scroll=Basis.scroll_coords();obj.style.width=screend.w;obj.style.height=screend.h+(Basis.create_edit_bar?-30:0);MochiKit.Style.setElementPosition(obj,{"x":scroll.x,"y":scroll.y});if(MochiKit.Style.getStyle(obj,"opacity")<opacity){MochiKit.Style.setOpacity(obj,0.0);obj.style.display="";return MochiKit.Visual.appear(obj,{"duration":0.50,"to":opacity,"beforeStart":Basis.is_function(callbacks["beforeStart"])?callbacks["beforeStart"]:function(){},"beforeSetup":Basis.is_function(callbacks["beforeSetup"])?callbacks["beforeSetup"]:function(){},"beforeUpdate":Basis.is_function(callbacks["beforeUpdate"])?callbacks["beforeUpdate"]:function(){},"afterUpdate":Basis.is_function(callbacks["afterUpdate"])?callbacks["afterUpdate"]:function(){},"beforeFinish":Basis.is_function(callbacks["beforeFinish"])?callbacks["beforeFinish"]:function(){},"afterFinish":Basis.is_function(callbacks["afterFinish"])?callbacks["afterFinish"]:function(){}});}}
return(new MochiKit.Async.Deferred());};Basis.destroy_modal_background=function(fade,callbacks){var fade=(fade===false)?false:true;var callbacks=Basis.is_object(callbacks)?callbacks:{};var obj=MochiKit.DOM.getElement("modal_background");if(obj){var after_finish=partial(function(obj){MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_background_resize);MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().modal_background_rescroll);MochiKit.DOM.currentDocument().modal_background_resize=null;Basis.remove_element(obj);},obj);if(fade){MochiKit.Visual.fade(obj,{"duration":0.5,"from":0.5,"beforeStart":Basis.is_function(callbacks["beforeStart"])?callbacks["beforeStart"]:function(){},"beforeSetup":Basis.is_function(callbacks["beforeSetup"])?callbacks["beforeSetup"]:function(){},"beforeUpdate":Basis.is_function(callbacks["beforeUpdate"])?callbacks["beforeUpdate"]:function(){},"afterUpdate":Basis.is_function(callbacks["afterUpdate"])?callbacks["afterUpdate"]:function(){},"beforeFinish":Basis.is_function(callbacks["beforeFinish"])?callbacks["beforeFinish"]:function(){},"afterFinish":after_finish});}else{after_finish();}}};Basis.create_edit_bar_alert_box=function(content,color,width,height,is_html){var content=content?content:Basis.nbsp();var color=(color=="white")?"white":"dark_gray";var width=Basis.is_number(width)?Basis.filter_number(width):75;var height=Basis.is_number(height)?Basis.filter_number(height):30;var content_td=TD({"height":height,"width":width,"style":"background-color: "+((color=="dark_gray")?"#595959":"#FFFFFF")+"; padding: 5px; font-family: verdana; font-size: 9pt; color: "+((color=="dark_gray")?"#FFFFFF":"#595959")+"; font-weight: bold; vertical-align: middle;"},content);if(is_html){content_td.innerHTML=content;}
var table=TABLE({"width":width+4,"height":height+8,"style":("height: "+(height+8)+"px; width: "+(width+4)+"px;"),"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,content_td,TD(null,TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"100%","height":"100%"},TBODY(null,TR(null,TD({"height":"7","width":"4","style":"vertical-align: bottom;"},IMG({"src":"images/images/alert_box/right_top.png"}))),TR(null,TD({"style":"background-image: url(images/images/alert_box/right_vertical.png); background-repeat: repeat-y;"},IMG({"src":"images/images/spacer.gif"}))))))),TR(null,TD(null,TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"height":"8","width":"6","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_left.png"})),TD({"height":"8","width":"6","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_pointer."+color+".png"})),TD({"style":"background-image: url(images/images/alert_box/bottom_horizontal.png); background-repeat: repeat-x;"},IMG({"src":"images/images/spacer.gif"})))))),TD({"width":"4","height":"8","style":"vertical-align: top;"},IMG({"src":"images/images/alert_box/bottom_right.png"})))));return table;};Basis.create_edit_bar=function(){if(Basis.edit_bar_created){return;}
var create_edit_bar_tooltip=function(element,content,width,height){Basis.signal_handler.connect(element,"onmouseenter",bind(partial(function(width,height){if(Basis.misc_vars.edit_bar_alert_box){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);}
Basis.misc_vars.edit_bar_alert_box=Basis.create_edit_bar_alert_box(content,(MochiKit.DOM.getElement("modal_background")?"white":"dark_gray"),width,height);Basis.align_element_to_element(Basis.misc_vars.edit_bar_alert_box,this,"left_to_left",{"x":4});Basis.misc_vars.edit_bar_alert_box.style.top=null;Basis.misc_vars.edit_bar_alert_box.style.position="fixed";Basis.misc_vars.edit_bar_alert_box.style.bottom=(getViewportDimensions().h+Basis.scroll_coords().y-getElementPosition(this).y+5)
document.body.appendChild(Basis.misc_vars.edit_bar_alert_box);},width,height),element),false);Basis.signal_handler.connect(element,"onmouseleave",function(){if(Basis.misc_vars.edit_bar_alert_box){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);}},false);};var get=Basis.get_GET();var mode=(get["edit_page"]=="true")?"edit_page":"default";var list=[];switch(mode){case"default":var edit_page_button=INPUT({"type":"button","value":"Edit This Page","class":"gfx_but_default","style":"background-image: url(images/images/page.gif); background-color: transparent;"});edit_page_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_page":"true"}});};create_edit_bar_tooltip(edit_page_button,"Click here to make changes to this page.",285);list.push(edit_page_button);break;case"edit_page":var edit_page_button=INPUT({"type":"button","value":"Go Back","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/arrow_turn_left.png); background-color: transparent;"});edit_page_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_page":null,"preview":null,"edit_content_elements":null,"reorder_content_elements":null,"edit_html":null}});};list.push(edit_page_button);if(get["preview"]=="true"){var preview_button=INPUT({"type":"button","value":"Exit Preview Mode","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.grey.png); background-color: transparent;"});preview_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"preview":null}});};list.push(preview_button);}else{var preview_button=INPUT({"type":"button","value":"Preview Mode","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.png); background-color: transparent;"});preview_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"preview":"true"}});};list.push(preview_button);}
if(get["edit_content_elements"]!="true"){var edit_content_elements_button=INPUT({"type":"button","value":"Edit Content Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layout_content.png); background-color: transparent;"});edit_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":null}});};list.push(edit_content_elements_button);}else{var edit_content_elements_button=INPUT({"type":"button","value":"I'm Done Editing","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layout_delete.png); background-color: transparent;"});edit_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":null,"reorder_content_elements":null}});};list.push(edit_content_elements_button);if(get["reorder_content_elements"]!="true"){var rearrange_content_elements_button=INPUT({"type":"button","value":"Re-Arrange Content Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layers.png); background-color: transparent;"});rearrange_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":"true"}});};list.push(rearrange_content_elements_button);}else{var rearrange_content_elements_button=INPUT({"type":"button","value":"I'm Done Re-Arranging","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/layers_delete.png); background-color: transparent;"});rearrange_content_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_content_elements":"true","reorder_content_elements":null}});};list.push(rearrange_content_elements_button);}}
if(get["edit_html"]!="true"){var edit_html_elements_button=INPUT({"type":"button","value":"Edit HTML Elements","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/html.png); background-color: transparent;"});edit_html_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_html":"true"}});};list.push(edit_html_elements_button);}else{var edit_html_elements_button=INPUT({"type":"button","value":"I'm Done Editing HTML","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/html_delete.png); background-color: transparent;"});edit_html_elements_button.onclick=function(){window.location.href=Basis.preserve_url({"keys_add":{"edit_html":null}});};list.push(edit_html_elements_button);}
break;}
var logout_button=INPUT({"type":"button","value":"Log Out","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/cross.png); background-color: transparent;"});logout_button.onclick=function(){if(confirm("Are you sure you want to log out?")){window.location.href=Basis.preserve_url({"keys_add":{"logout":"true"}});}};list.push(logout_button);var home_button=INPUT({"type":"button","value":"Menu","class":"gfx_but_default","style":"border-left: 1px solid #e5e5e5; border-right: 1px solid #e5e5e5; position: relative; z-index: "+Basis.z_indexes["edit_bar_main_menu_button"]+"; background-image: url(images/images/default_icons/png/house.png); background-color: transparent;"});var home_menu=DIV({"style":"display: none; height: 195px; width: 225px; border: 1px solid #888888; z-index: "+Basis.z_indexes["edit_bar_main_menu_menu"]+"; position: fixed; left: 3px; background-color: #ffffff; font-size: 10px; font-family: verdana;"},DIV({"style":"background-color: #aaaaaa; border-bottom: 1px solid #888888; font-weight: bold; padding: 3px; color: #ffffff;"},"Quick Links"),DIV({"style":"padding: 5px;"},DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/green_badge.gif","border":"0"}),A({"href":"#","target":"","class":"Basis.edit_tools.menu_href","onclick":"Basis.delete_cookie('do_not_show_quick_links_this_session'); Basis.set_cookie('show_quick_links_again_this_session', 'true'); window.location.href = '' + window.location.href; return false;"},"Go Back To My Easy Menu")),HR({"size":"1"}),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/record_add.gif","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=add_a_page"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Add A Page To My Website")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/color_wheel.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=website_look_and_feel"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Change How My Website Looks")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/tree-folder-open.gif","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin/dashboard.php?load=file_manager"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Upload Files For Sharing")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/lorry.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/stats"),"target":"stats","target":"stats","class":"Basis.edit_tools.menu_href"},"Show My Website's Traffic")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/wand.png","border":"0"}),A({"href":(Basis.preserve_url_path()+"/admin"),"target":"dashboard","class":"Basis.edit_tools.menu_href"},"Go To The Admin Section")),DIV({"style":"padding: 2px"},IMG({"style":"vertical-align: middle; padding-right: 6px;","src":"images/images/default_icons/png/help.png","border":"0"}),A({"href":"javascript: return false;","target":"","class":"Basis.edit_tools.menu_href"},"Help! Where Do I Begin?"))));home_button.onclick=partial(function(menu,button){menu.style.display=(menu.style.display=="none")?"":"none";button.style.borderLeft=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.borderRight=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.borderBottom=(menu.style.display=="none")?"1px solid #e5e5e5":"1px solid #888888";button.style.backgroundColor=(menu.style.display=="none")?"transparent":"#FFFFFF";button.style.position="relative";menu.style.bottom=(getViewportDimensions().h+Basis.scroll_coords().y-getElementPosition(button).y-1)},home_menu,home_button);create_edit_bar_tooltip(home_button,"Quick Links",90);list.push(home_button);for(var i=0;i<list.length;i++){if(list[i]){list[i].onmouseover=function(){this.style.textDecoration="underline";};list[i].onmouseout=function(){this.style.textDecoration="none";};}}
switch(mode){case"default":var bar=DIV({"id":"Basis.edit_bar","style":"position: fixed; bottom: 0; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; padding: 0px; height: 30px; width: 100%;"},TABLE({"style":"border-top: 1px solid #ffffff;","width":"100%"},TBODY(null,TR(null,TD({"width":"50%"},home_button,edit_page_button),TD({"style":"text-align: center;"},null),TD({"width":"50%","style":"text-align: right;"},logout_button)))));break;case"edit_page":var bar=DIV({"id":"Basis.edit_bar","style":"position: fixed; bottom: 0; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; padding: 0px; height: 30px; width: 100%; z-index: "+Basis.z_indexes["edit_bar"]},TABLE({"style":"border-top: 1px solid #ffffff;","width":"100%"},TBODY(null,TR(null,TD({"width":"50%"},home_button,edit_page_button,edit_content_elements_button,rearrange_content_elements_button),TD({"style":"text-align: center;"},preview_button),TD({"width":"50%","style":"text-align: right;"},edit_html_elements_button)))));break;}
document.body.style.paddingBottom="30px";document.body.appendChild(bar);document.body.appendChild(home_menu);Basis.edit_bar_created=true;};Basis.get_GET=function(specific_var){var vars=[],hash;var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');for(var i=0;i<hashes.length;i++){hash=hashes[i].split("=");vars.push(hash[0]);vars[hash[0]]=hash[1];}
if(specific_var&&vars[specific_var]){return vars[specific_var];}else if(specific_var&&!vars[specific_var]){return null;}
return vars;};Basis.highlight_constrained_elements=function(){for(var i=0;i<MochiKit.Style.constrainedElements.length;i++){Basis.get_element(MochiKit.Style.constrainedElements[i]).style.border="3px dashed #00ff00";Basis.get_element(MochiKit.Style.constrainedElements[i]).style.margin="3px";}};Basis.delete_cookie=function(name){var today=new Date();today.setTime(today.getTime());var expires_date=new Date(today.getTime()-(60*60*24));document.cookie=((name)+"="+escape("test"))+
(";expires="+expires_date.toGMTString());};Basis.check_for_cookies=function(){Basis.set_cookie("check_for_cookies","test",1);var retval=(Basis.get_cookie("check_for_cookies")=="test")?true:false;if(retval){Basis.delete_cookie("check_for_cookies");return true;}
return false;};Basis.get_flash_version=function(){if(GetSwfVer&&Basis.is_function(GetSwfVer)){return GetSwfVer();}};Basis.get_formfield_value=function(element){var retval=null;var element=Basis.get_element(element);if(element&&Basis.is_formfield(element)){switch(element.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":retval=element.value;break;case"SELECT":retval=element.options[element.selectedIndex].value;break;}}
return retval;};Basis.strtotime=function(str,now){if(!str){return null;}
return(str=="0000-00-00")?null:Basis._int(strtotime(str,now));};Basis.microtime=function(get_as_float){var now=(new Date().getTime())/1000;var s=parseInt(now,10);return(get_as_float)?now:(Math.round((now-s)*1000)/1000)+' '+s;};Basis.time=function(date){var date_obj=new Date();if(Basis.is_number(date)){date_obj.setTime(date*1000);}else if(Basis.is_object(date)&&date.getYear){date_obj=date;}
return Basis.parse_number((Date.parse(date_obj)/1000).toString());};Basis.add_element_class=function(element,class_name){var element=Basis.get_element(element);if(element&&class_name){MochiKit.DOM.addElementClass(element,class_name);}};Basis.remove_element_class=function(element,class_name){var element=Basis.get_element(element);if(element&&class_name){MochiKit.DOM.removeElementClass(element,class_name);}};Basis.textarea=function(options,ivalue){var options=options?options:{};if(BrowserDetect.browser=="Explorer"){options["value"]=ivalue;}
var element=TEXTAREA(options,(BrowserDetect.browser=="Explorer")?null:ivalue);return element;};Basis.get_elements_by_tag_names=function(list,obj){var obj=obj?obj:document;var tag_names=MochiKit.Base.isArrayLike(list)?list:list.split(",");var result_array=[];for(var i=0;i<tag_names.length;i++){var tags=obj.getElementsByTagName(tag_names[i]);for(var j=0;j<tags.length;j++){result_array.push(tags[j]);}}
var test_node=result_array[0];if(test_node){if(test_node.sourceIndex){result_array.sort(function(a,b){return a.sourceIndex-b.sourceIndex;});}else if(test_node.compare_document_position){result_array.sort(function(a,b){return 3-(a.compare_document_position(b)&6);});}}
return result_array;};Basis.set_input_descriptive_text=function(field,description){var default_action=partial(function(field,description,focus_or_blur){if(Basis.is_element(field)){if((field.value=="")||(field.value==description)){if(focus_or_blur=="blur"){field.style.color="#aaaaaa";field.style.textDecoration="italic";field.value=description;}else{field.style.color="#000000";field.style.textDecoration="";field.value="";}}else{field.style.color="#000000";field.style.textDecoration="";}}},field,description);var focus_action=partial(function(field,description,focus_or_blur,default_action){default_action(focus_or_blur);},field,description,"focus",default_action);var blur_action=partial(function(field,description,focus_or_blur,default_action){default_action(focus_or_blur);},field,description,"blur",default_action);field.onfocus=focus_action;field.onblur=blur_action;default_action("blur");};Basis.set_tab_indexes=function(list){var field_types=["input","select","textarea"];var start_index=Basis.set_tab_indexes.start_index;var offset=0;if(list&&(list.length>0)){for(var i=0;i<list.length;i++){var obj=Basis.get_element(list[i]);if(obj){var sub_objs=Basis.get_elements_by_tag_names(field_types,obj);Basis.set_tab_indexes(sub_objs,Basis.set_tab_indexes.start_index);if(field_types.indexOf(obj.tagName.toLowerCase())>-1){Basis.set_tab_indexes.start_index++;obj.tabIndex=Basis.set_tab_indexes.start_index;}}}}}
Basis.set_tab_indexes.start_index=0;Basis.select_get_selected_value=function(obj){var obj=Basis.get_element(obj);if(obj&&(obj.options.length>0)){return obj.options[obj.selectedIndex].value;}};Basis.select_get_selected_text=function(obj){var obj=Basis.get_element(obj);if(obj&&(obj.options.length>0)){return obj.options[obj.selectedIndex].text;}};Basis.days_in_month=function(month,year){return(32-new Date(year,(month-1),32).getDate());};Basis.create_date_formfield=function(initial_date,is_optional,year_start,year_end){var load_date=Basis.is_number(initial_date)?(initial_date*1000):Basis.strtotime(initial_date);load_date=Basis.is_number(load_date)?(load_date*1000):(new Date().getTime());var is_optional=(is_optional===false)?false:true;var date=new Date(load_date);var year_start=Basis.is_number(year_start)?year_start:(0+(new Date().getFullYear())-5);var year_end=Basis.is_number(year_end)?year_end:(0+(new Date().getFullYear())+5);if(year_end<year_start){year_end=year_start;}
var formfield=DIV({"class":"Basis.date"});var is_collapsed=false;if(is_optional){var is_collapsed=(initial_date&&(initial_date!="0000-00-00"))?false:true;}
formfield.is_collapsed=is_collapsed;formfield.on_update=function(){};Basis.signal_handler.connect(formfield,"onchange",bind(function(){if(Basis.is_function(this.on_update)){this.on_update();}},formfield),false);formfield.set_up_auto_save=bind(function(options,on_success){this.on_update=partial(function(options,on_success,date_element){var to_post=options?options:{};to_post["to"]=date_element.get_date();var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";as.on_success=Basis.is_function(on_success)?on_success:function(req){window.status="Done";};return as.post({"to_post":to_post});},options,on_success,this);},formfield);var ready=false;while(!ready){var rrv_run=Basis._int((Math.random()*100));var findex=Basis._int((Math.random()*100));if(!Basis.get_element("calendar_"+rrv_run+"_"+findex)){ready=true;}}
var images={"cancel":new Image(),"enable":new Image(),"calendar":new Image()};images.cancel.src="http://www.sitequarters.com/images/images/red_x.gif";images.enable.src="http://www.sitequarters.com/images/images/green_check.gif";images.calendar.src="http://www.sitequarters.com/images/images/calendar.gif";var fields={"month":SELECT(),"day":SELECT(),"year":SELECT()};var calendar=new Basis.bcalendar();calendar.variable_name="calendar";formfield.type="date";formfield.date=date;formfield.images=images;formfield.fields=fields;formfield.calendar=calendar;formfield.is_optional=is_optional;formfield.select_date=bind(function(){Basis.select_select_item_by_value(this.fields.month,(this.date.getMonth()+1));Basis.select_select_item_by_value(this.fields.day,this.date.getDate());Basis.select_select_item_by_value(this.fields.year,(0+this.date.getFullYear()));},formfield);formfield.get_date=bind(function(){if(this.is_collapsed&&this.is_optional){return"0000-00-00";}else{var year=(0+this.date.getFullYear());var month=(this.date.getMonth()+1);var day=this.date.getDate();month=(month<10)?("0"+month):month;day=(day<10)?("0"+day):day;return(year+"-"+month+"-"+day);}},formfield);formfield.set_date=bind(function(date){if(date&&(date!="0000-00-00")){var date=date.split("-");this.date.setDate(Basis._int(date[2]));this.date.setMonth(Basis._int(date[1])-1);this.date.setYear(date[0]);this.select_date();this.update_date_fields();if(this.is_optional){this.is_collapsed=false;}}},formfield);formfield.update_date_fields=bind(function(){var days_in_new_month=Basis.days_in_month((Basis._int(Basis.select_get_selected_value(this.fields.month))-0),Basis._int(Basis.select_get_selected_value(this.fields.year)));if(Basis.select_get_selected_value(this.fields.day)>days_in_new_month){Basis.select_select_item_by_value(this.fields.day,days_in_new_month);}
this.date.setDate(Basis.select_get_selected_value(this.fields.day));this.date.setMonth(Basis.select_get_selected_value(this.fields.month)-1);this.date.setYear(Basis.select_get_selected_value(this.fields.year));this.calendar.year=(0+this.date.getFullYear());this.calendar.day=this.date.getDate();this.calendar.month=(this.date.getMonth()+1);this.fields.day.options.length=0;for(var x=0;x<Basis.days_in_month((this.date.getMonth()+1),(0+this.date.getFullYear()));x++){Basis.select_add_option(this.fields.day,(x+1),(x+1));}
Basis.select_select_item_by_value(this.fields.month,this.calendar.month);Basis.select_select_item_by_value(this.fields.day,this.calendar.day);Basis.select_select_item_by_value(this.fields.year,this.calendar.year);if(this.calendar_image.popup&&this.calendar_image.popup.date){this.calendar_image.popup.date=this.date;this.calendar_image.popup.grid_date=this.date;this.calendar_image.popup.compile();}
Basis.signal_handler.execute_interactive_element(this,"onchange");},formfield);MochiKit.Signal.connect(formfield.fields.month,"onchange",formfield.update_date_fields);MochiKit.Signal.connect(formfield.fields.day,"onchange",formfield.update_date_fields);MochiKit.Signal.connect(formfield.fields.year,"onchange",formfield.update_date_fields);Basis.select_add_options(fields.month,{"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"});for(var x=0;x<(year_end-year_start);x++){Basis.select_add_option(fields.year,(year_start+x),(year_start+x));}
for(var x=0;x<Basis.days_in_month((formfield.date.getMonth()+1),(0+formfield.date.getFullYear()));x++){Basis.select_add_option(fields.day,(x+1),(x+1));}
Basis.select_select_item_by_value(fields.month,(date.getMonth()+1));Basis.select_select_item_by_value(fields.day,date.getDate());Basis.select_select_item_by_value(fields.year,(0+date.getFullYear()));var calendar_image=IMG();calendar_image.src=formfield.images.calendar.src;calendar_image.style.cursor="pointer";calendar_image.onclick=bind(partial(function(calendar_image){if(calendar_image.popup){Basis.remove_element(calendar_image.popup);calendar_image.popup=null;Basis.updated_live_dom();}else{var popup=Basis.calendar_popup(this.date,this);document.body.appendChild(popup);popup.compile();Basis.align_element_to_element(popup,calendar_image,"top_to_top");Basis.align_element_to_element(popup,calendar_image,"left_to_right",{"x":3});calendar_image.popup=popup;}},calendar_image),formfield);var date_fields=DIV({"style":"display: "+(is_collapsed?"none":"block")},TABLE(null,TBODY(null,TR(null,TD(null,formfield.fields.month,formfield.fields.day,", ",formfield.fields.year),TD(null,calendar_image)))));var optional_date_toggle=DIV({"style":"cursor: pointer;"},"Optional Date");var optional_date_toggle_image=IMG({"style":"cursor: pointer;"});optional_date_toggle.style.display=is_collapsed?"":"none";optional_date_toggle_image.src=is_collapsed?formfield.images.enable.src:formfield.images.cancel.src;var toggle=bind(partial(function(optional_date_toggle,date_fields,optional_date_toggle_image,on_off){if(this.is_collapsed||(on_off=="on")){optional_date_toggle.style.display="none";date_fields.style.display="";optional_date_toggle_image.src=this.images.cancel.src;this.is_collapsed=false;}else{optional_date_toggle.style.display="";date_fields.style.display="none";optional_date_toggle_image.src=this.images.enable.src;this.is_collapsed=true;}
this.update_date_fields();},optional_date_toggle,date_fields,optional_date_toggle_image),formfield);optional_date_toggle.onclick=toggle;optional_date_toggle_image.onclick=toggle;formfield.toggle=toggle;formfield.calendar_image=calendar_image;formfield.update_date_fields();if(is_optional){formfield.appendChild(TABLE({"cellspacing":"0","cellpadding":"0","border":"0"},TBODY(null,TR(null,TD(null,optional_date_toggle,date_fields),TD(null,optional_date_toggle_image)))));}else{formfield.appendChild(date_fields);}
return formfield;};Basis.calendar_popup=function(date,linked_formfield){var date=date?date:new Date();var date=new Date(date);var grid_date=new Date(date);var popup=DIV({"class":"bcalendar_container","style":"position: absolute; top: 0px; left: 0px; display: block;"});popup.linked_formfield=linked_formfield?linked_formfield:{};var images={"back":new Image(),"next":new Image()};images.back.src="http://www.sitequarters.com/tasklist/images/images/prev_on.gif";images.next.src="http://www.sitequarters.com/tasklist/images/images/next_on.gif";images.back.style.cursor="pointer";images.next.style.cursor="pointer";images.back.onclick=bind(function(){var month=this.grid_date.getMonth();var year=(0+this.grid_date.getFullYear());if(month==0){this.grid_date.setYear(year-1);this.grid_date.setMonth(11);}else{this.grid_date.setMonth(month-1);}
this.compile();},popup);images.next.onclick=bind(function(){var month=this.grid_date.getMonth();var year=(0+this.grid_date.getFullYear());if(month==11){this.grid_date.setYear(year+1);this.grid_date.setMonth(0);}else{this.grid_date.setMonth(month+1);}
this.compile();},popup);popup.date=date;popup.grid_date=grid_date;popup.images=images;popup.build_grid=bind(function(){var date=new Date(this.grid_date);date.setDate(1);var grid={0:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},1:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},2:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},3:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},4:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},5:{0:"",1:"",2:"",3:"",4:"",5:"",6:""}};var months={"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May","6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"};var start_day=date.getDay();var curr_day=1;var num_days=Basis.days_in_month((date.getMonth()+1),(0+date.getFullYear()));for(var x=0;x<6;x++){for(var y=0;y<7;y++){if(x==0){if(y>=start_day){if(curr_day<=num_days){grid[x][y]=curr_day;curr_day++;}}}else{if(curr_day<=num_days){grid[x][y]=curr_day;curr_day++;}}}}
return grid;},popup);popup.build_table=bind(function(){var months={"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"};var grid=this.build_grid();var table=TABLE(null,TBODY(null,TR(null,TD({"style":"text-align: left;"},this.images.back),TD({"colspan":"5","style":"text-align: center; font-weight: bold;"},months[this.grid_date.getMonth()+1],Basis.nbsp(),(0+this.grid_date.getFullYear())),TD({"style":"text-align: right;"},this.images.next)),TR(null,TD(null,"Sun"),TD(null,"Mon"),TD(null,"Tue"),TD(null,"Wed"),TD(null,"Thu"),TD(null,"Fri"),TD(null,"Sat"))));for(var x=0;x<6;x++){var tr=TR();for(var y=0;y<7;y++){var td=TD(null,grid[x][y]?grid[x][y]:Basis.nbsp());if(grid[x][y]){td.style.cursor="pointer";td.onclick=bind(partial(function(td){this.date=new Date(this.grid_date);this.date.setDate(Basis._int(td.innerHTML.trim()));if(this.linked_formfield&&this.linked_formfield.update_date_fields){this.linked_formfield.date=new Date(this.date);this.linked_formfield.select_date();this.linked_formfield.update_date_fields();this.linked_formfield.calendar_image.onclick();}},td),this);}
if((grid[x][y]==this.date.getDate())&&(this.date.getFullYear()==this.grid_date.getFullYear())&&(this.date.getMonth()==this.grid_date.getMonth())){MochiKit.DOM.addElementClass(td,"chosen");}
if((grid[x][y]==(new Date()).getDate())&&(this.grid_date.getFullYear()==(new Date()).getFullYear())&&(this.grid_date.getMonth()==(new Date()).getMonth())){MochiKit.DOM.addElementClass(td,"today");}
Basis.signal_handler.connect(td,"onmouseenter",bind(partial(function(td){if(td.innerHTML.trim()&&(Basis._int(td.innerHTML)!=this.date.getDate())){MochiKit.DOM.addElementClass(td,"td_mouseover");}},td),this),false);Basis.signal_handler.connect(td,"onmouseleave",bind(partial(function(td){if(td.innerHTML.trim()&&(Basis._int(td.innerHTML)!=this.date.getDate())){MochiKit.DOM.removeElementClass(td,"td_mouseover");}},td),this),false);tr.appendChild(td);}
if((x==0)||((x>0)&&(grid[x][0]))){table.getElementsByTagName("tbody")[0].appendChild(tr);}}
return table;},popup);popup.compile=bind(function(updated_live_dom){Basis.remove_children(this);this.appendChild(this.build_table());Basis.updated_live_dom();},popup);return popup;};Basis.filter_numbers=function(arr){var numbers=[];if(arr){for(var i in arr){if(!Basis.is_function(arr[i])&&Basis.is_number(arr[i])){numbers.push(arr[i]);}}}
return numbers;};Basis.strip_nonstandard_ascii=function(str){if(str){var tstr="";for(var x=0;x<str.length;x++){tstr+=(((str.charAt(x).charCodeAt(0)>=0)&&(str.charAt(x).charCodeAt(0)<=128))?str.charAt(x):"");}
return tstr;}
return"";};Basis.filter_nonstandard_ascii=function(str){var replace={};replace[("’").charCodeAt(0)]=("'").charCodeAt(0);if(str){var tstr="";for(var x=0;x<str.length;x++){var idx=str.charAt(x).charCodeAt(0);tstr+=(replace[idx]!=null)?String.fromCharCode(replace[idx]):str.charAt(x);}
return Basis.strip_nonstandard_ascii(tstr);}
return"";};Basis.text=function(text){return(text==null)?"":text;};Basis.nbsp=function(){var span=SPAN();span.innerHTML="&nbsp;";return span;};Basis.remove_element=function(element){var garbage_bin=MochiKit.DOM.getElement("IELeakGarbageBin");if(!garbage_bin){var garbage_bin=new MochiKit.DOM.DIV({"id":"IELeakGarbageBin","style":"display: none;"});document.body.appendChild(garbage_bin);}
var element=Basis.get_element(element);if(element&&garbage_bin){garbage_bin.appendChild(element);garbage_bin.innerHTML="";Basis.signal_handler.purge_orphaned_signals();}}
Basis.updated_live_dom=function(){if(Basis.signal_handler&&!Basis.signal_handler.blocked){Basis.signal_handler.commit_pending_elements();}};Basis.block_updating_live_dom=function(){Basis.signal_handler.blocked=true;};Basis.unblock_updating_live_dom=function(){Basis.signal_handler.blocked=false;};function addslashes(str){str=str?str:"";return(str+'').replace(/([\\"'])/g,"\\$1").replace(/\0/g,"\\0");}
function stripslashes(str){str=str?str:"";return(str+'').replace(/\0/g,'0').replace(/\\([\\'"])/g,'$1');}
function array2json(arr){var parts=[];var is_list=(Object.prototype.toString.apply(arr)==='[object Array]');for(var key in arr){var value=arr[key];if(value!==undefined){if(typeof value=="object"){if(is_list)parts.push(array2json(value));else parts.push('"'+key+'":'+array2json(value));}else if(typeof value=="function"){}else{var str="";if(!is_list)str='"'+key+'":';if(typeof value=="number")str+=value;else if(value===false)str+='false';else if(value===true)str+='true';else str+='"'+Basis.filter_nonstandard_ascii(value).replace(/"/g,"\\\"").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+'"';parts.push(str);}}}
var json="";for(var i in parts){if(i&&parts[i]&&!Basis.is_function(parts[i])){json+=(parts[i]+",");}}
if(json.substring(json.length-1)==","){json=json.substring(0,json.length-1);}
if(is_list)return'['+json+']';return'{'+json+'}';}
MochiKit.Base.serializeJSON=function(o){return array2json(o);};Basis.array_sequentialize=function(arr){var new_array=[];for(var i in arr){if(arr[i]&&!Basis.is_function(arr[i])){new_array.push(arr[i]);}}
return new_array;};Basis.is_element_visible=function(element){var element=Basis.get_element(element);if(element&&(element.style.display!="none")){var parent=element.parentNode;while(parent&&(parent!=document.body.parentNode)){if(parent.style.display=="none"){return false;}
parent=parent.parentNode;}
return true;}
return false;};Basis.anonymous_element_ids={};Basis.anonymous_element_id=function(){var x=MochiKit.DOM.unique_ids_assigned+1;var found=false;while(!found){var id=("element_"+x);var element=Basis.get_element(id);if(!element&&!Basis.anonymous_element_ids[id]){found=true;Basis.anonymous_element_ids[id]=true;MochiKit.DOM.unique_ids_assigned++;return id;}
x++;}};Basis.make_text_element_editable=function(element,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=Basis.get_element(element);if(element){element.editable_element={};element.editable_element.editing=false;element.editable_element.entered=false;element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.original_value=element.value?element.value:MochiKit.DOM.scrapeText(element);element.editable_element.scaffold_options=scaffold_options;element.editable_element.set_up_interaction=bind(function(input){var input=Basis.is_formfield(this)?this:this.editable_element.input;if(!input){log("AAAAH NO INPUT");return;}
Basis.signal_handler.connect(input,"onclick.greedy.swallow",bind(partial(function(input){this.editable_element.original_value=input.value;this.editable_element.editing=true;},input),this),this.editable_element.commit);input.onfocus=bind(partial(function(input){this.editable_element.original_value=input.value;this.editable_element.editing=true;},input),this);input.onblur=bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",bind(function(){this.editable_element.cancel_save_editable_element_changes();},this));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",bind(partial(function(input){if(input.tagName.toUpperCase()!="TEXTAREA"){this.editable_element.save_editable_element_changes();}},input),this));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",bind(function(e){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this));this.editable_element.save_editable_element_changes=bind(partial(function(input){if(this.editable_element.editing){window.status="Saving...";if(input.value==this.editable_element.original_value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=input.value;to_post["resource_id"]=this.editable_element.scaffold_options["resource_id"]?this.editable_element.scaffold_options["resource_id"]:"";to_post["database"]=this.editable_element.scaffold_options["database"]?this.editable_element.scaffold_options["database"]:"";to_post["table"]=this.editable_element.scaffold_options["table"]?this.editable_element.scaffold_options["table"]:"";to_post["row_id"]=this.editable_element.scaffold_options["row_id"]?this.editable_element.scaffold_options["row_id"]:"";to_post["field"]=this.editable_element.scaffold_options["field"]?this.editable_element.scaffold_options["field"]:"";to_post["custom_action"]=this.editable_element.scaffold_options["custom_action"]?this.editable_element.scaffold_options["custom_action"]:"";var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,scaffold_options);as.element=this;as.input=input;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));this.element.editable_element.original_value=this.input.value;if(response["text"]=="true"){if(!this.element.editable_element.is_password){if(this.element!=this.input){this.element.innerHTML=this.input.value;}}
this.element.editable_element.cancel_save_editable_element_changes();}else{this.element.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}}},input),this);this.editable_element.cancel_save_editable_element_changes=bind(partial(function(input){this.editable_element.editing=false;if(!this.editable_element.editing){if(this!=input){Basis.remove_element(input);}
this.style.display="";Basis.state_handler.revert();Basis.updated_live_dom();}},input),this);},element);if(!Basis.is_formfield(element)){element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)){Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=this;var input=INPUT({"id":(this.id+"_input"),"type":(this.editable_element.is_password?"password":"text"),"value":(this.editable_element.is_password?"":this.editable_element.original_value),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.original_value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.original_value.length)+15,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});this.editable_element.input=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
this.style.display="none";Basis.insert_after(this,input);this.editable_element.set_up_interaction(input);if(this.editable_element.input&&Basis.is_function(this.editable_element.input.select)){this.editable_element.input.select();}
Basis.state_handler.enter_state("Basis.make_text_element_editable");}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&!this.editable_element.entered){this.editable_element.entered=true;var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif","style":"cursor: pointer;"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit,this.editable_element.commit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&this.editable_element.entered){this.editable_element.entered=false;var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}
if(Basis.is_formfield(element)){element.editable_element.set_up_interaction();}}};Basis.make_text_element_dropdown=function(element,dropdown_options,scaffold_options){var scaffold_options=scaffold_options?scaffold_options:{};var element=Basis.get_element(element);if(element){element.editable_element={};element.editable_element.editing=false;element.editable_element.entered=false;element.editable_element.is_password=(scaffold_options["is_password"]==true)?true:false;element.editable_element.commit=(scaffold_options["commit"]==true)?true:false;element.editable_element.original_value=Basis.is_formfield(element)?element.options[element.selectedIndex].value:Basis.find_key(dropdown_options,MochiKit.DOM.scrapeText(element));element.editable_element.scaffold_options=scaffold_options;element.editable_element.dropdown_options=dropdown_options;element.editable_element.set_up_interaction=bind(function(input){var input=Basis.is_formfield(this)?this:this.editable_element.input;if(!input){log("AAAAH NO INPUT");return;}
Basis.signal_handler.connect(input,"onclick.greedy.swallow",bind(partial(function(input){this.editable_element.editing=true;},input),this),this.editable_element.commit);input.onchange=bind(partial(function(input){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},input),this);input.onblur=bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this);Basis.state_handler.add_state("Basis.make_text_element_editable");Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ESCAPE","down",bind(function(){this.editable_element.cancel_save_editable_element_changes();},this));Basis.state_handler.register_key_handler("Basis.make_text_element_editable","KEY_ENTER","down",bind(partial(function(input){if(input.tagName.toUpperCase()!="TEXTAREA"){this.editable_element.save_editable_element_changes();}},input),this));Basis.state_handler.register_signal_handler("Basis.make_text_element_editable",document.body,"onclick.greedy",bind(function(){this.editable_element.save_editable_element_changes();this.editable_element.editing=false;},this));this.editable_element.save_editable_element_changes=bind(partial(function(input){if(this.editable_element.editing){window.status="Saving...";if(input.options[input.selectedIndex].value==this.editable_element.original_value){this.editable_element.cancel_save_editable_element_changes();window.status="Done";}else{var to_post=new Object();to_post["to"]=input.options[input.selectedIndex].value;to_post["resource_id"]=this.editable_element.scaffold_options["resource_id"]?this.editable_element.scaffold_options["resource_id"]:"";to_post["database"]=this.editable_element.scaffold_options["database"]?this.editable_element.scaffold_options["database"]:"";to_post["table"]=this.editable_element.scaffold_options["table"]?this.editable_element.scaffold_options["table"]:"";to_post["row_id"]=this.editable_element.scaffold_options["row_id"]?this.editable_element.scaffold_options["row_id"]:"";to_post["field"]=this.editable_element.scaffold_options["field"]?this.editable_element.scaffold_options["field"]:"";to_post["custom_action"]=this.editable_element.scaffold_options["custom_action"]?this.editable_element.scaffold_options["custom_action"]:"";var as=new Basis.ajax_scaffold;as.alias="Basis.save_editable_element_changes";MochiKit.Base.update(as,this.editable_element.scaffold_options);if(scaffold_options["is_date"]&&input.get_date){to_post["to"]=input.get_date();}
if(scaffold_options["is_time"]){var parts=this.id.split("_");var part=(parts[parts.length-2]);var rrv=(parts[parts.length-1]);var base=this.id.substring(0,this.id.length+(-1*(part.length+rrv.length+2)));switch(part){case"hour":var minute=Basis.get_element(base+"_minute_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=this.options[this.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"minute":var hour=Basis.get_element(base+"_hour_"+rrv);var ampm=Basis.get_element(base+"_ampm_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+this.options[this.selectedIndex].text+ampm.options[ampm.selectedIndex].text;break;case"ampm":var hour=Basis.get_element(base+"_hour_"+rrv);var minute=Basis.get_element(base+"_minute_"+rrv);to_post["to"]=hour.options[hour.selectedIndex].text+":"+minute.options[minute.selectedIndex].text+this.options[this.selectedIndex].text;break;}}
as.element=this;as.input=input;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));this.element.editable_element.original_value=this.input.value;if(response["text"]=="true"){if(this.element!=this.input){this.element.innerHTML=this.input.options[this.input.selectedIndex].text;}
this.element.editable_element.cancel_save_editable_element_changes();}else{this.element.editable_element.cancel_save_editable_element_changes();}
window.status="Done";};as.post({"to_post":to_post});}}},input),this);this.editable_element.cancel_save_editable_element_changes=bind(partial(function(input){this.editable_element.editing=false;if(!this.editable_element.editing){if(this!=input){Basis.remove_element(input);}
this.style.display="";Basis.state_handler.revert();Basis.updated_live_dom();}},input),this);input.focus();},element);if(!Basis.is_formfield(element)){element.editable_element.edit_text=MochiKit.Base.bind(function(){if(Basis.make_text_element_editable.currently_editing&&(Basis.make_text_element_editable.currently_editing!=element)&&Basis.make_text_element_editable.currently_editing.editable_element&&Basis.is_function(Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes)){Basis.make_text_element_editable.currently_editing.editable_element.save_editable_element_changes();}
if(!this.editable_element.editing){this.editable_element.editing=true;Basis.make_text_element_editable.currently_editing=this;var input=SELECT({"id":(this.id+"_select"),"style":"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"});Basis.select_add_options(input,this.editable_element.dropdown_options);Basis.select_select_item_by_value(input,this.editable_element.original_value);var dim=Basis.get_element_dimensions(this);this.editable_element.font_multiplier=(dim.w/this.editable_element.original_value.length);Basis.set_style(input,{"width":Math.floor(this.editable_element.font_multiplier*this.editable_element.original_value.length)+35,"font-family":MochiKit.Style.getStyle(this,"font-family"),"font-size":MochiKit.Style.getStyle(this,"font-size")});this.editable_element.input=input;var signal_index=Basis.signal_handler.get_element_index(this,false);if(signal_index){Basis.signal_handler.interactive_elements[signal_index].committed=false;}
this.style.display="none";Basis.insert_after(this,input);this.editable_element.set_up_interaction(input);Basis.state_handler.enter_state("Basis.make_text_element_editable");}},element);Basis.signal_handler.connect(element,"onmouseenter",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&!this.editable_element.entered){this.editable_element.entered=true;var dim=Basis.get_element_dimensions(this);var pencil_image=IMG({"src":"images/images/edit.gif","style":"cursor: pointer;"});var pencil=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","class":"Basis.edit_text.highlight"},TBODY(null,TR(null,TD({"id":this.id+"_replace","width":dim.w,"style":"font-size: "+MochiKit.Style.getStyle(this,"font-size")+"; "+"font-weight: "+MochiKit.Style.getStyle(this,"font-weight")+"; "+"font-family: "+MochiKit.Style.getStyle(this,"font-family")+";"},document.createTextNode(MochiKit.DOM.scrapeText(this))),TD({"style":"padding-left: 5px;"},pencil_image))));if(this.firstChild){Basis.remove_element(this.firstChild);}
this.appendChild(pencil);var edit=MochiKit.Base.bind(function(){Basis.signal_handler.execute_interactive_element(this,"onmouseleave");this.editable_element.edit_text();},this);Basis.signal_handler.connect(pencil_image,"onclick",edit,this.editable_element.commit);}},element),element.editable_element.commit);Basis.signal_handler.connect(element,"onmouseleave",MochiKit.Base.bind(function(){if(!this.editable_element.editing&&this.editable_element.entered){this.editable_element.entered=false;var original_contents=MochiKit.DOM.getElement(this.id+"_replace");if(original_contents){var restore_text=document.createTextNode(MochiKit.DOM.scrapeText(original_contents));this.innerHTML="";MochiKit.DOM.removeElementClass(original_contents,"Basis.edit_text.highlight");this.appendChild(restore_text);}}},element),element.editable_element.commit);}
if(Basis.is_formfield(element)){element.editable_element.set_up_interaction();}}};Basis.convert_div_to_box=function(element,options){var options=options?options:{};var border_color=options["border_color"]?("_"+options["border_color"]):"";var element=Basis.get_element(element);if(element){var table=MochiKit.DOM.createDOM("table",{"id":(element.id+".table"),"cellpadding":0,"cellspacing":0,"width":"100%","height":"100%","class":"Basis.dashboard.box.frame"});var tbody=MochiKit.DOM.createDOM("tbody");table.appendChild(tbody);var rows={0:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_top_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"height top"}),"html":"<img src=\"images/images/dashboard/box_top"+border_color+".gif\">"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_top_right"+border_color+".gif\">"}},1:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"width left"}),"html":"<img src=\"images/images/dashboard/box_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"middle","style":options["style"]}),"html":"&nbsp;"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"width right"}),"html":"<img src=\"images/images/dashboard/box_right"+border_color+".gif\">"}},2:{0:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_bottom_left"+border_color+".gif\">"},1:{"td":MochiKit.DOM.createDOM("td",{"class":"height bottom"}),"html":"<img src=\"images/images/dashboard/box_bottom"+border_color+".gif\">"},2:{"td":MochiKit.DOM.createDOM("td",{"class":"height width"}),"html":"<img src=\"images/images/dashboard/box_bottom_right"+border_color+".gif\">"}}};for(var x=0;x<Basis.array_length(rows);x++){var tr=MochiKit.DOM.createDOM("tr");for(var y=0;y<Basis.array_length(rows[x]);y++){rows[x][y]["td"].innerHTML=rows[x][y]["html"];tr.appendChild(rows[x][y]["td"]);}
tbody.appendChild(tr);}
MochiKit.DOM.swapDOM(element,table);var middle=MochiKit.DOM.getElementsByTagAndClassName("td","middle",table);if(middle&&middle[0]&&MochiKit.DOM.getElement(middle[0])&&middle[0].appendChild){Basis.remove_children(middle[0]);middle[0].appendChild(element);element.parent_table=table;element.revert=MochiKit.Base.bind(function(){if(MochiKit.DOM.getElement(this.parent_table)){MochiKit.DOM.swapDOM(this.parent_table,this);delete this.parent_table;delete this.revert;}},element);}}};MochiKit.DragAndDrop.Draggable.prototype.draw=function(point){var pos=MochiKit.Position.cumulativeOffset(this.element);var d=this.currentDelta();pos.x-=d[0];pos.y-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos.y-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[point.page.x-pos.x-this.offset[0],point.page.y-pos.y-this.offset[1]];if(this.options.snap){if(typeof(this.options.snap)=='function'){p=this.options.snap(p[0],p[1]);}else{if(this.options.snap instanceof Array){var i=-1;p=MochiKit.Base.map(MochiKit.Base.bind(function(v){i+=1;return Math.round(v/this.options.snap[i])*this.options.snap[i];},this),p);}else{p=MochiKit.Base.map(MochiKit.Base.bind(function(v){return Math.round(v/this.options.snap)*this.options.snap;},this),p);}}}
if(this.options.contained_by){var drag_dim=MochiKit.Style.getElementDimensions(this.element);var cont_dim=MochiKit.Style.getElementDimensions(getElement(this.options.contained_by));if(drag_dim&&cont_dim&&(drag_dim.w>cont_dim.w)){var cont_border=Basis.sum_of_element(this.options.contained_by,"border");var offset=(cont_border.left+cont_border.right);p[0]=(p[0]>=0)?0:p[0];p[0]=((p[0]+drag_dim.w)>cont_dim.w)?p[0]:(cont_dim.w-drag_dim.w-offset);}else if(drag_dim&&cont_dim&&(drag_dim.w<=cont_dim.w)){p[0]=0;}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal')){style.left=p[0]+'px';}
if((!this.options.constraint)||(this.options.constraint=='vertical')){style.top=p[1]+'px';}
if(style.visibility=='hidden'){style.visibility='';}};Basis.array_delete_index=function(arr,idx){if(arr&&(idx!==null)){if(idx===0){return arr.slice(1);}else if(idx==(arr.length-1)){return arr.slice(0,(arr.length-1));}else{arr.splice(idx,1);return arr;}}}
Basis.array_delete_value=function(arr,value){if(arr&&(value!==null)){for(var i=0;i<arr.length;i++){if(arr[i]==value){arr=Basis.array_delete_index(arr,i);i--;}}}
return arr;}
Basis.insert_after=function(node,to_insert){node.parentNode.insertBefore(to_insert,node.nextSibling);};Basis.hide_all_children=function(element){var element=Basis.get_element(element);if(element){for(var i=0;i<element.childNodes.length;i++){element.childNodes[i].style.display="none";}}};Basis.unhide_all_children=function(element){var element=Basis.get_element(element);if(element){for(var i=0;i<element.childNodes.length;i++){element.childNodes[i].style.display="";}}};Basis.is_live_dom_node=function(element){var element=Basis.get_element(element);if(element&&element.parentNode){var parent=element.parentNode;while(parent){if(parent==document.body){return true;}
parent=parent.parentNode;}
return false;}};Basis.is_object=function(element){return(element&&(typeof(element)=="object"))?true:false;};Basis.index_of=function(arr,value){if(arr){for(var i in arr){if(i&&arr[i]&&(arr[i]==value)){return i;}}}
return null;};Basis.in_array=function(needle,haystack){var found=false;for(key in haystack){if(haystack[key]==needle){found=true;break;}}
return found;};if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"");}}
if(!Array.prototype.indexOf){Array.prototype.indexOf=function(value,begin,strict){for(var i=(+begin||0),length=this.length;i<length;i++){if((this[i]===value)||(strict&&(this[i]==value))){return i;}}
return-1;};}
Basis.filter_data=function(data,search_terms,optional_fields_to_filter_by,return_keys_only){var data=Basis.is_object(data)?data:null;var search_terms=search_terms?search_terms:null;var optional_fields_to_filter_by=Basis.is_object(optional_fields_to_filter_by)?optional_fields_to_filter_by:null;var return_keys_only=((return_keys_only==null)||(return_keys_only!==true))?false:true;var results={};if(data&&search_terms){var keywords=search_terms.trim().split(" ");for(var key in data){if(key&&data[key]&&keywords){var row=data[key];var found=false;for(var x=0;x<keywords.length;x++){var wildcard=(keywords[x].indexOf("*")!=-1)?true:false;var regex=(wildcard?"^":"")+keywords[x].replace(/\*/g,".*?")+(wildcard?"$":"");for(var field in row){if(field&&row[field]&&row[field].match){if(!optional_fields_to_filter_by||(optional_fields_to_filter_by&&Basis.in_array(field,optional_fields_to_filter_by))){found=row[field].match(new RegExp(regex,"gi"))?true:false;if(found){break;}}}}}
if(found){if(return_keys_only){results[key]=key;}else{results[key]=row;}}}}}
return results;};Basis.sort_data=function(data,field_to_sort_by,sort_order,return_keys_only,trim){var data=Basis.is_object(data)?data:null;var field_to_sort_by=field_to_sort_by?field_to_sort_by:null;var sort_order=sort_order?sort_order:"ASC";var return_keys_only=((return_keys_only==null)||(return_keys_only!==true))?false:true;var trim=(trim==true)?true:false;var results={};var sorted=[];if(data&&field_to_sort_by){var field=field_to_sort_by;var field_exists=null;for(var i in data){if(field_exists===null){var keys=Basis.keys(data[i]);field_exists=Basis.in_array(field,keys)?true:false;}
if(field_exists&&(data[i][field]!=null)){var value=trim?data[i][field].toString().trim():data[i][field];value=(value=="")?" ":value;sorted.push({"key":i,"value":value});}}
function custom_sorter(a,b){if(a.value&&a.value.toLowerCase&&b.value&&b.value.toLowerCase){a=a.value.toLowerCase();b=b.value.toLowerCase();if(a&&b){if(a<b){return-1;}
if(a>b){return 1;}}}
return 0;};sorted.sort(custom_sorter);}
if(sort_order=="ASC"){for(var i in sorted){if(i&&sorted[i]&&sorted[i].key&&data[sorted[i].key]){results[sorted[i].key]=data[sorted[i].key];}}}else if(sort_order=="DESC"){var keys=Basis.keys(sorted);for(var x=(keys.length-1);x>=0;x--){var i=keys[x];if(i&&sorted[i]&&sorted[i].key&&data[sorted[i].key]){results[sorted[i].key]=data[sorted[i].key];}}}
return results;};Basis.page_data=function(data,requested_page,num_per_page){var data=Basis.is_object(data)?data:null;var total_rows=Basis.array_length(data);var num_per_page=Math.min(total_rows,(num_per_page?num_per_page:Basis.array_length(data)));var results={};if(data&&num_per_page){var requested_page=Basis.is_number(requested_page)?Math.round(requested_page):1;var total_pages=Math.floor(total_rows/num_per_page)+((Math.floor(total_rows/num_per_page)==(total_rows/num_per_page))?0:1);var page_of_data={};var keys=Basis.keys(data);var starting_row_id=(num_per_page*(requested_page-1));for(var row_id=starting_row_id;row_id<(starting_row_id+num_per_page);row_id++){if(keys[row_id]){results[keys[row_id]]=data[keys[row_id]];}}}
return(Basis.array_length(results)==0)?null:results;};Basis.size_in_viewport=function(element){var element=MochiKit.DOM.getElement(element);if(element&&Basis.is_live_dom_node(element)){var pos=MochiKit.Style.getElementPosition(element);pos=(pos&&pos.x&pos.y)?pos:{"x":0,"y":0};var dim=MochiKit.Style.getElementDimensions(element);var scroll=Basis.scroll_coords();var screen=MochiKit.Style.getViewportDimensions();var borders=Basis.sum_borders_of_all_parents(element);var padding=Basis.sum_padding_of_all_parents(element);var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var coords={"w":(screen.w-(pos.x+scroll.x)-adjust_width),"h":(screen.h-(pos.y+scroll.y)-adjust_height)};return coords;}};;Basis.data_pager=function(options){this.__init__(options);};Basis.data_pager.prototype={__init__:function(options){var options=Basis.is_object(options)?options:{};this.data=Basis.is_object(options["data"])?options["data"]:{};this.num_per_page=Basis.is_number(options["num_per_page"])?Math.round(options["num_per_page"]):1;this.current_page=1;this.total_rows=Basis.array_length(this.data);this.total_pages=Math.floor(this.total_rows/this.num_per_page)+((Math.floor(this.total_rows/this.num_per_page)==(this.total_rows/this.num_per_page))?0:1);},get_page:function(page){return Basis.page_data(this.data,page,this.num_per_page);},next_page:function(){this.current_page+=1;return this.this_page();},previous_page:function(){this.current_page=(this.current_page>1)?(this.current_page-1):1;return this.this_page();},this_page:function(){return this.get_page(this.current_page);}};Basis.tile_manager=function(){this.__init__();};Basis.tile_manager.prototype={__init__:function(){this.tiles=[];this.current_tile=0;this.container_element=null;this.child_tile_container_element=null;this.is_sliding=false;this.after_hide_all_contents=function(){alert("test");};MochiKit.Signal.connect(this,"after_hide_all_contents",bind(function(){this.after_hide_all_contents();},this));MochiKit.Style.resizeConstrainedElements.callbacks.push(MochiKit.Base.bind(function(){this.resize_tiles();},this));},back:function(){this.go_to(this.current_tile-1);},clear_all_tiles:function(){for(var i=this.tiles.length;i>0;i--){this.pop_tile();}
this.current_tile=null;},compile:function(){if(Basis.is_live_dom_node(this.container_element)){this.child_tile_container_element=DIV({"style":"position: absolute; left: 0px; top: 0px;"});this.container_element.appendChild(this.child_tile_container_element);Basis.register_size_constraints(this.container_element,"100%","100%",null,false);Basis.register_size_constraints(this.child_tile_container_element,"100%","100%");this.resize_tiles();}},create_tile:function(){if(this.container_element){var borders=Basis.sum_of_all_parents(this.container_element,"border");var padding=Basis.sum_of_all_parents(this.container_element,"padding");var adjust_height=(borders.top+borders.bottom+padding.top+padding.bottom);var adjust_width=(borders.left+borders.right+padding.left+padding.right);var dim=MochiKit.Style.getElementDimensions(this.container_element);var pdim=MochiKit.Style.getElementDimensions(this.container_element.parentNode);var tile=DIV({"style":"position: absolute; top: 0px; left: 0px;","class":"tile"});Basis.register_size_constraints(tile,"100%","100%",null,false);tile.on_load=function(){};tile.on_unload=function(){};tile.after_unload=function(){};tile.name="";tile.hide_when_sliding=null;return tile;}
return null;},get_current_tile:function(){return(((this.current_tile==null)&&(this.tiles.length>0))?0:this.current_tile);},go_to:function(index){if(!this.is_sliding&&(index!==null)&&this.tiles[index]&&(index!==this.current_tile)){this.after_hide_all_contents=MochiKit.Base.bind(partial(function(index){if((this.current_tile!==null)&&Basis.is_function(this.tiles[this.current_tile].on_unload)){this.tiles[this.current_tile].on_unload();}
this.is_sliding=true;var multiplier=(this.current_tile-index);var x=(Basis.parse_number(this.tiles[index].style.width)*multiplier);MochiKit.Visual.Move(this.child_tile_container_element,{"x":x,"mode":"relative","duration":0.50,"afterFinish":bind(partial(function(index,old_index){this.is_sliding=false;this.current_tile=index;if(this.tiles[index]){this.unhide_tile(index);}
if((old_index!==null)&&this.tiles[old_index]&&Basis.is_function(this.tiles[old_index].after_unload)){this.tiles[old_index].after_unload();}
if((index!==null)&&this.tiles[index]&&Basis.is_function(this.tiles[index].on_load)){this.tiles[index].on_load();}
for(var i=index+1;i<this.tiles.length;i++){this.pop_tile();}},index,this.current_tile),this)});},index),this);this.hide_all_contents(index,(((this.current_tile==null)?0:this.current_tile)==0)?true:false);if((index!==null)&&(index==0)&&(this.current_tile===null)&&this.tiles[index]&&Basis.is_function(this.tiles[index].on_load)){this.tiles[index].on_load();}}},hide_all_contents:function(index,loading_top_level_tile){for(var i=0;i<this.tiles.length;i++){if(this.tiles[i].hide_when_sliding&&(!loading_top_level_tile||(loading_top_level_tile&&(i>0)))){if(index===null){this.tiles[i].hide_when_sliding.style.display="none";}else if(i==index){MochiKit.Visual.fade(this.tiles[i].hide_when_sliding,{"duration":0.0,"afterFinish":bind(function(){this.hide_all_contents(null);MochiKit.Signal.signal(this,"after_hide_all_contents");},this)});}}}},pop_tile:function(){if(this.tiles[this.tiles.length-1]){MochiKit.DOM.removeElement(this.tiles[this.tiles.length-1]);this.tiles.pop();}},push_tile:function(tile){if(tile){this.tiles.push(tile);this.child_tile_container_element.appendChild(tile);this.resize_tiles();return(this.tiles.length-1);}
return null;},resize_tiles:function(){if(Basis.is_live_dom_node(this.container_element)){var container_size=MochiKit.Style.getElementDimensions(this.container_element);if(container_size){for(var i=0;i<this.tiles.length;i++){var tile=this.tiles[i];Basis.set_element_dimensions(tile,container_size);Basis.set_style(tile,{"left":(i*container_size.w)+"px"});}
Basis.set_style(this.child_tile_container_element,{"left":(this.current_tile*container_size.w*-1)+"px"});}}},toString:function(){return"Basis.tile_manager";},unhide_tile:function(index){if((index!==null)&&this.tiles[index]&&this.tiles[index].hide_when_sliding){MochiKit.Visual.appear(this.tiles[index].hide_when_sliding,{"duration":0.5,"afterFinish":MochiKit.Style.resizeConstrainedElements});}}};Basis.grid_control=function(options){this.__init__(options);};Basis.grid_control.prototype={__init__:function(options){options=Basis.is_object(options)?options:{};this.data_type="";this.root_class_name="";this.raw_data=Basis.is_object(options["raw_data"])?options["raw_data"]:{};this.num_per_page=Basis.is_number(options["num_per_page"])?Math.round(options["num_per_page"]):10;this.show_all=true;this.current_mode="";this.current_dataset={};this.current_raw_dataset={};this.currently_selected=[];this.current_page=1;this.current_num_pages=null;this.current_filter={"search_text":null,"search_limit":null,"group_limit":null,"alpha_limit":null,"alpha_limit_field":null,"group":null,"archived":null};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null,"archived":null};this.current_filter_data={};this.current_sorting={"field":"first_name","direction":"ASC"};this.current_sorted_data={};this.groups={};this.group_map={};this.debug=false;this.resource_types={};this.default_resource_type="";this.elements={"container_output":null,"list_output":null,"general_buttons":null,"filter_controls":null,"page_controls":null,"list_title":SPAN(null," "),"group_filter":null,"archived_filter":null};this.pager=new Basis.data_pager();this.add_new_resource=function(){};this.can_add_new_resource=true;this.fields_to_display={};this.grid_field_map={};if(!window.resizeConstrainedElements_signal){window.resizeConstrainedElements_signal=MochiKit.Signal.connect(window,"onresize",MochiKit.Style.resizeConstrainedElements);}},add_new_resource:function(type,data_row){var to_post={};to_post["type"]=type;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="add_new_resource";as.list=this;as.data_row=data_row;as.on_success=function(req){if(Basis.is_number(req.responseText)){var resource_id=req.responseText;this.list.clear_cached_datasets(true);this.list.raw_data[resource_id]=this.data_row;this.list.group_map[resource_id]=this.data_row["groups"];this.list.refresh();}
window.status="Done";};return as.post({"to_post":to_post});},archive_resources:function(resource_ids){if(confirm("Are you sure you want to archive the selected items?")){var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="archive_resources";as.list=this;as.on_success=function(req){var ids_archived=MochiKit.Base.evalJSON(req.responseText);var to_refresh=[];for(var i=0;i<ids_archived.length;i++){if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_archived[i]]){this.list.dashboard.resource_linker[ids_archived[i]]["archived"]="yes";}}
this.list.clear_cached_datasets(true);this.list.fetch_raw_data((this.list.current_filter["archived"]=="yes")?true:false);this.list.refresh();window.status="Done";};return as.post({"to_post":to_post});}},clear_cached_datasets:function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:((this.current_mode=="organization")?"company_name":"first_name")),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},debug_log:function(message){if(message&&this.debug){this.system_log(message,false);}},delete_resources:function(resource_ids){if(confirm("Are you sure you want to delete the selected items?")){var to_delete=[];for(var i=0;i<resource_ids.length;i++){if(this.dashboard.resource_linker[resource_ids[i]]["resource_access"]["full_access"]){to_delete.push(resource_ids[i]);}}
if(to_delete.length==0){alert("You haven't selected any items that you have access to delete!");return;}
var to_post={};to_post["resource_ids"]=to_delete;var as=new Basis.ajax_scaffold;as.alias="delete_resources";as.list=this;as.on_success=function(req){var ids_deleted=MochiKit.Base.evalJSON(req.responseText);var to_refresh=[];for(var i=0;i<ids_deleted.length;i++){delete this.list.raw_data[ids_deleted[i]];delete this.list.group_map[ids_deleted[i]];if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_deleted[i]]){var type=this.list.dashboard.resource_linker[ids_deleted[i]]["type"];var associated=Basis.filter_numbers(Basis.keys(this.list.dashboard.resource_linker[ids_deleted[i]]["associated_resources"],true));for(var x=0;x<associated.length;x++){to_refresh.push(associated[x]);}
delete this.list.dashboard.resource_linker[ids_deleted[i]];delete this.list.dashboard.available_resources[type][ids_deleted[i]];}}
this.list.clear_cached_datasets(true);this.list.refresh();this.list.dashboard.get_assorted_resources(to_refresh);window.status="Done";};return as.post({"to_post":to_post});}},fetch_groups:function(){if(this.dashboard){this.groups={};var keys=Basis.keys(this.dashboard.available_resources["GROUP"]);for(var i=0;i<keys.length;i++){this.groups[keys[i]]=this.dashboard.resource_display_text(keys[i]);}
if(Basis.is_element(this.elements["group_filter"])){this.elements["group_filter"].options.length=0;Basis.select_add_option(this.elements["group_filter"],"","Choose a Group:");asort(this.groups);Basis.select_add_options(this.elements["group_filter"],this.groups);}
return new MochiKit.Async.succeed();}else{var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_groups";as.list=this;as.on_success=function(req){var groups=MochiKit.Base.evalJSON(req.responseText);this.list.groups=groups;if(Basis.is_element(this.list.elements["group_filter"])){this.list.elements["group_filter"].options.length=0;Basis.select_add_option(this.list.elements["group_filter"],"","Choose a Group:");Basis.select_add_options(this.list.elements["group_filter"],this.list.groups);}
window.status="Done";};return as.post({"to_post":to_post});}},fetch_raw_data:function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;log("Make me do something");},filter_groups:function(data){var filtered_data={};var keys=Basis.keys(data);for(var i=0;i<keys.length;i++){var resource_id=keys[i];if(Basis.in_array(this.current_filter["group"],this.group_map[resource_id])){filtered_data[resource_id]=data[resource_id];}}
return filtered_data;},filter_hash:function(what_filter){var what_filter=what_filter?what_filter:"all";switch(what_filter){case"filter":return hex_md5(serializeJSON([this.current_mode,this.current_filter]));break;case"sorting":return hex_md5(serializeJSON([this.current_mode,this.current_sorting]));break;case"all":return hex_md5(serializeJSON([this.current_mode,this.current_page,this.current_num_pages,this.current_filter,this.current_sorting]));break;}},get_master_field_data:function(master_field,row,raw,raw_value){var raw=(raw!=null)?true:false;var raw_value=(raw_value!=null)?true:false;if(master_field&&row&&this.grid_field_map[master_field]){tspan=SPAN();switch(this.grid_field_map[master_field]["type"]){case"text":data=stripslashes(row[this.grid_field_map[master_field]["field"]]);break;case"select":if(this.grid_field_map[master_field]["array"]){data=raw_value?stripslashes(row[this.grid_field_map[master_field]["field"]]):this.grid_field_map[master_field]["array"][stripslashes(row[this.grid_field_map[master_field]["field"]])];}
break;}
if(raw){return data?data:"";}
if(data){data=data.replace(/\r\n/g,"\n");data=data.replace(/\r/g,"\n");data=data.replace(/ /g,"&nbsp;");var urls=data.match(/(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\/)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(\/[a-zA-Z0-9\&amp;%_\.\/-~-]*)?/g);if(urls){for(var i=0;i<urls.length;i++){var protocol=urls[i].match(/(file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\//g);protocol=protocol?protocol[0]:"http://";var url=urls[i];var replace_with=(((url.indexOf(protocol)>-1)?"":protocol)+url);data=data.replace(url,"<a href=\""+replace_with+"\">"+url+"</a>");}}
data=data.replace(/\n/g,"<br>");data=data.replace(/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/g,"<a href=\"mailto:$1@$2$3$6$7\">$1@$2$3$6$7</a>");}
tspan.innerHTML=data?data:"&nbsp;";return tspan;}
return"";},get_master_field_title:function(master_field){if(master_field&&this.grid_field_map[master_field]){return this.grid_field_map[master_field]["text"];}
return null;},is_selected:function(resource_id){return Basis.in_array(resource_id,this.currently_selected)?true:false;},load_page:function(page){var page=Basis.is_number(Math.round(page))?Math.round(page):1;page=(page>0)?page:1;page=(page<=this.current_num_pages)?page:this.current_num_pages;this.current_page=page;this.refresh();},next_page:function(){this.load_page(this.current_page+1);},last_page:function(){this.load_page(this.current_page-1);},prepared_data:function(data){var ret_data=null;if(data){var ret_data={};for(var i in data){if(!Basis.is_function(data[i])&&Basis.is_object(data[i])){for(var x in data[i]){if(!Basis.is_function(data[i][x])){ret_data[i]=ret_data[i]?ret_data[i]:{};ret_data[i][x]=this.get_master_field_data(x,data[i],true);}}}}}
return ret_data;},refresh:function(){this.current_filter_hash["all"]=this.filter_hash("all");this.refresh_controls();this.refresh_data();this.refresh_pages();this.refresh_title();this.refresh_table();MochiKit.Style.resizeConstrainedElements();},refresh_controls:function(){this.elements["general_buttons"].style.display="block";if(this.elements["filter_controls"]){if(this.show_all){this.elements["filter_controls"].style.display="none";}else{this.elements["filter_controls"].style.display="";}}
if(this.elements["page_controls"]){if(this.num_per_page==9999999){this.elements["page_controls"].style.display="none";}else{this.elements["page_controls"].style.display="";}}},refresh_data:function(){var data=this.raw_data;this.debug_log(["raw data",Basis.keys(data).toString()])
if(this.current_mode&&this.data_type){data=Basis.filter_data(data,this.current_mode,[this.data_type],false);}
this.debug_log(["filter by resource type",Basis.keys(data).toString()])
if(this.current_filter_hash["filter"]==this.filter_hash("filter")){data=this.current_filter_data;this.debug_log(['this.current_filter_hash["filter"] == this.filter_hash("filter")',Basis.keys(data).toString()])}else{if(this.current_filter["group"]){data=this.filter_groups(data);this.debug_log(['this.current_filter["group"]',Basis.keys(data).toString()])}
if(!this.show_all){if(this.current_filter["alpha_limit"]){var fields=this.current_filter["alpha_limit_field"]?[this.current_filter["alpha_limit_field"]]:null;var filter=this.current_filter["alpha_limit"]+"*";data=Basis.filter_data(data,filter,fields,false);this.debug_log(['this.current_filter["alpha_limit"]',Basis.keys(data).toString()])}
if(this.current_filter["search_text"]){var fields=this.current_filter["search_limit"]?[this.current_filter["search_limit"]]:null;var prepared_data=Basis.filter_data(this.prepared_data(data),this.current_filter["search_text"],fields,false);var tdata={};var list=Basis.keys(prepared_data);for(var i=0;i<list.length;i++){tdata[list[i]]=data[list[i]];}
data=tdata;this.debug_log(['this.current_filter["search_text"]',Basis.keys(data).toString()])}}
this.current_filter_data=data;this.current_filter_hash["filter"]=this.filter_hash("filter");this.current_sorted_data=null;this.current_filter_hash["sorting"]=null;}
this.debug_log(['before sort',Basis.keys(data).toString()])
if(this.current_filter_hash["sorting"]==this.filter_hash("sorting")){data=this.current_sorted_data;this.debug_log(['this.current_filter_hash["sorting"] == this.filter_hash("sorting")',Basis.keys(data).toString()])}else{data=Basis.sort_data(data,this.current_sorting.field,this.current_sorting.direction,false,true);this.debug_log(['Basis.sort_data()',Basis.keys(data).toString()])
this.current_sorted_data=data;this.current_filter_hash["sorting"]=this.filter_hash("sorting");}
this.current_raw_dataset=data;this.debug_log(['before paging',Basis.keys(data).toString()])
this.pager.data=data;this.pager.num_per_page=this.num_per_page;var tnum_pages=Math.floor(Basis.array_length(this.current_raw_dataset)/this.num_per_page);this.current_num_pages=tnum_pages+(((tnum_pages*this.num_per_page)==Basis.array_length(this.current_raw_dataset))?0:1);if(this.current_page>this.current_num_pages){this.current_page=1;}
this.pager.current_page=this.current_page;this.current_dataset=this.pager.this_page();this.debug_log(['paged data',Basis.keys(this.current_dataset?this.current_dataset:[]).toString()])},refresh_pages:function(){if(this.current_filter_hash["all"]==this.filter_hash("all")){return;}
var tr=TR();for(var x=0;x<this.current_num_pages;x++){var page=SPAN({"style":"cursor: pointer;"},(x+1));var td=TD({"class":this.root_class_name+".page_controls.page","width":(1/(this.current_num_pages+1),2).toFixed()},page);Basis.signal_handler.connect(page,"onclick",bind(partial(function(page,td){this.load_page(page);},(x+1),td),this),false);tr.appendChild(td);}
var previous_page=SPAN({"style":"cursor: pointer;"},"<<");var next_page=SPAN({"style":"cursor: pointer;"},">>");Basis.signal_handler.connect(previous_page,"onclick",bind(function(){this.last_page();},this),false);Basis.signal_handler.connect(next_page,"onclick",bind(function(){this.next_page();},this),false);var pages_div=DIV({"id":Basis.anonymous_element_id()+"_pages_div","style":"overflow: hidden; cursor: move;"},TABLE({"class":this.root_class_name+".page_controls.pages","cellpadding":"5"},TBODY(null,tr)));var pages=DIV({"class":this.root_class_name+".page_controls"},TABLE({"cellpadding":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"1"},previous_page),TD({"align":"center"},pages_div),TD({"width":"1"},next_page)))));if(Basis.is_live_dom_node(this.elements["page_controls"])){MochiKit.DOM.swapDOM(this.elements["page_controls"],pages);Basis.updated_live_dom();}
this.elements["page_controls"]=pages;Basis.register_size_constraints(pages_div,"100%","25");new Draggable(pages_div.firstChild,{"constraint":"horizontal","contained_by":pages_div});},refresh_table:function(){log("Make me do something");},refresh_title:function(){log("Make me do something");},render:function(view){this.elements["container_output"]=Basis.get_element(this.elements["container_output"]);if(this.elements["container_output"]&&Basis.is_element(this.elements["container_output"])){this.refresh_data();var first_render=(this.elements["container_output"]&&!this.elements["list_output"])?true:false;if(first_render){var search_text=INPUT({"type":"text","style":"width: 200px;"});Basis.signal_handler.connect(search_text,"onchange",bind(partial(function(element){this.current_filter["search_text"]=element.value;},search_text),this),false);var search_text_go=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(search_text_go,"onclick",bind(function(){this.refresh();},this),false);var search_limit=SELECT();var alpha_limit=SELECT();Basis.select_add_option(search_limit,""," ")
Basis.select_add_option(alpha_limit,""," ")
for(var i in this.grid_field_map){if(this.grid_field_map[i]&&this.grid_field_map[i]["field"]&&this.grid_field_map[i]["text"]){Basis.select_add_option(search_limit,this.grid_field_map[i]["field"],this.grid_field_map[i]["text"]);Basis.select_add_option(alpha_limit,this.grid_field_map[i]["field"],this.grid_field_map[i]["text"]);}}
Basis.signal_handler.connect(search_limit,"onchange",bind(partial(function(element){this.current_filter["search_limit"]=element.options[element.selectedIndex].value;this.refresh();},search_limit),this),false);Basis.signal_handler.connect(alpha_limit,"onchange",bind(partial(function(element){this.current_filter["alpha_limit_field"]=element.options[element.selectedIndex].value;this.refresh();},alpha_limit),this),false);MochiKit.Signal.connect(search_text,"onkeydown",partial(function(text_input,button,e){if(e.key().string=="KEY_ENTER"){Basis.signal_handler.execute_interactive_element(text_input,"onchange");Basis.signal_handler.execute_interactive_element(button,"onclick");}},search_text,search_text_go));var alpha=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];var alpha_limit_select=DIV({"style":"overflow: hidden; cursor: move;"});var tr=TR();var letter=SPAN({"style":"cursor: pointer;"},"None");var td=TD({"width":(1/(alpha.length+1),2).toFixed()},letter);Basis.signal_handler.connect(letter,"onclick",bind(partial(function(letter){this.current_filter["alpha_limit"]=null;this.refresh();},alpha[x]),this),false);tr.appendChild(td);for(var x=0;x<alpha.length;x++){var letter=SPAN({"style":"cursor: pointer;"},alpha[x]);var td=TD({"width":(1/(alpha.length+1),2).toFixed()},letter);Basis.signal_handler.connect(letter,"onclick",bind(partial(function(letter){this.current_filter["alpha_limit"]=letter;this.refresh();},alpha[x]),this),false);tr.appendChild(td);}
alpha_limit_select.appendChild(TABLE({"class":this.root_class_name+".filter_controls.alpha_limit","width":"100%","cellpadding":"5"},TBODY(null,tr)));this.elements["filter_controls"]=DIV({"class":this.root_class_name+".filter_controls"},P({"style":"padding-left: 10px;"},STRONG(null,"Find Specific Items:")),TABLE({"cellpadding":"5"},TBODY(null,TR(null,TD(null,"Search: "),TD(null,search_text),TD(null,search_text_go),TD(null,"Search Only This Field: "),TD(null,search_limit)),TR({"style":"display: none;"},TD(null,"Limit to: "),TD({"colspan":"2","style":"padding: 0px;"},alpha_limit_select),TD(null,"Limit To Only This Field: "),TD(null,alpha_limit)))));this.refresh_pages();var button_find_specific_resources=INPUT({"type":"button","style":(this.show_all?"":"display: none;"),"value":"Find Specific Items"});var button_show_all_resources=INPUT({"type":"button","style":(!this.show_all?"":"display: none;"),"value":"Show All"});var button_add_new_resource=INPUT({"type":"button","value":"Add New"});Basis.signal_handler.connect(button_find_specific_resources,"onclick",bind(partial(function(button_find_specific_resources,button_show_all_resources){this.show_all=false;button_find_specific_resources.style.display="none";button_show_all_resources.style.display="";this.clear_cached_datasets()
this.refresh();},button_find_specific_resources,button_show_all_resources),this),false);Basis.signal_handler.connect(button_show_all_resources,"onclick",bind(partial(function(button_find_specific_resources,button_show_all_resources){this.show_all=true;button_find_specific_resources.style.display="";button_show_all_resources.style.display="none";this.clear_cached_datasets()
this.refresh();},button_find_specific_resources,button_show_all_resources),this),false);Basis.signal_handler.connect(button_add_new_resource,"onclick",this.add_new_resource,false);var dropdown_num_per_page=SELECT();Basis.select_add_options(dropdown_num_per_page,{10:"10 per Page",25:"25 per Page",50:"50 per Page",9999999:"All Results"});Basis.select_select_item_by_value(dropdown_num_per_page,this.num_per_page);Basis.signal_handler.connect(dropdown_num_per_page,"onchange",bind(partial(function(element){this.num_per_page=element.options[element.selectedIndex].value;this.current_page=1;this.refresh();},dropdown_num_per_page),this),false);var resource_type=null;if(Basis.array_length(this.resource_types)>0){var resource_type=SELECT();Basis.select_add_options(resource_type,this.resource_types);Basis.select_select_item_by_value(resource_type,this.default_resource_type);Basis.signal_handler.connect(resource_type,"onchange",bind(partial(function(element){this.current_mode=element.options[element.selectedIndex].value;this.current_page=1;this.clear_cached_datasets();this.refresh();},resource_type),this),false);}
var group_filter=SELECT();group_filter.onchange=bind(partial(function(element){this.current_filter["group"]=element.options[element.selectedIndex].value;this.refresh();},group_filter),this);this.elements["group_filter"]=group_filter;var archived_filter=SELECT();Basis.select_add_options(archived_filter,{"no":" ","yes":"Show All Archived"});archived_filter.onchange=bind(partial(function(element){this.current_filter["archived"]=element.options[element.selectedIndex].value;this.clear_cached_datasets();this.fetch_raw_data((this.current_filter["archived"]=="yes")?true:false);this.refresh();},archived_filter),this);this.elements["archived_filter"]=archived_filter;this.elements["general_buttons"]=DIV({"class":this.root_class_name+".main_buttons"},TABLE({"border":"0","width":"100%","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"align":"left"},button_find_specific_resources,button_show_all_resources,(this.can_add_new_resource?button_add_new_resource:null)),TD({"align":"right"},(resource_type?"Type: ":null),resource_type,archived_filter,group_filter,dropdown_num_per_page)))));this.elements["list_output"]=DIV(null,"Grid Rows");var container=TABLE({"border":"0","width":"100%","class":this.root_class_name+".container","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD(null,this.elements["general_buttons"],this.elements["filter_controls"],this.elements["page_controls"],this.elements["list_output"]))));this.refresh_controls();this.refresh_title();Basis.remove_children(this.elements["container_output"]);this.elements["container_output"].appendChild(container);Basis.updated_live_dom();Basis.register_size_constraints(alpha_limit_select,"100%","25");new Draggable(alpha_limit_select.firstChild,{"constraint":"horizontal","contained_by":alpha_limit_select});}
this.refresh();}},render_groups:function(resource_id,mode){var mode=Basis.in_array(mode,["detail","edit","add"])?mode:"detail";var resource_id=Basis.is_number(resource_id)?Math.round(resource_id):null;var groups=null;var keys=Basis.keys(this.group_map);if(resource_id&&(Basis.in_array(resource_id,keys)!=null)){switch(mode){case"detail":var groups=DIV();for(var i in this.group_map[resource_id]){var group_id=this.group_map[resource_id][i];if(!Basis.is_function(this.groups[group_id])){groups.appendChild(DIV(null,this.groups[group_id]));}}
break;case"edit":case"add":var groups=DIV();for(var i in this.groups){var group_id=i;if(!Basis.is_function(this.groups[group_id])){var checkbox=INPUT({"type":"checkbox"});checkbox.checked=Basis.in_array(group_id,this.group_map[resource_id])?true:false;checkbox.value=group_id;if(mode=="edit"){Basis.signal_handler.connect(checkbox,"onclick",bind(partial(function(group_id,resource_id,element){this.group_map[resource_id]=Basis.is_object(this.group_map[resource_id])?this.group_map[resource_id]:{};if(element.checked){this.group_map[resource_id][Basis.array_length(this.group_map[resource_id])]=group_id;this.save_groups(resource_id);}else{var idx=Basis.index_of(this.group_map[resource_id],group_id);if(idx!=null){delete this.group_map[resource_id][idx];}
this.save_groups(resource_id);}},i,resource_id,checkbox),this),false);}
groups.appendChild(DIV(null,checkbox," ",this.groups[i]));}}
break;}}
return groups;},render_resource:function(){log("I need to be set to do something!");},save_groups:function(resource_id){var to_post={};to_post["resource_id"]=resource_id;to_post["groups"]=this.group_map[resource_id];var as=new Basis.ajax_scaffold;as.alias="save_groups";as.list=this;as.on_success=function(req){this.list.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.list.current_filter_data={};window.status="Done";};return as.post({"to_post":to_post});},select_resource:function(resource_id){if(resource_id&&!this.is_selected(resource_id)){this.currently_selected.push(resource_id);}},system_log:function(message){if(message){var timestamp=Basis.parse_number(Date.parse(Date()).toString().substring(0,10));MochiKit.Logging.log(timestamp+" "+message);}},unarchive_resources:function(resource_ids){if(confirm("Are you sure you want to restore the selected items?")){var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="unarchive_resources";as.list=this;as.on_success=function(req){var ids_unarchived=MochiKit.Base.evalJSON(req.responseText);for(var i=0;i<ids_unarchived.length;i++){if(this.list.dashboard&&this.list.dashboard.resource_linker[ids_unarchived[i]]){this.list.dashboard.resource_linker[ids_unarchived[i]]["archived"]="no";}}
this.list.clear_cached_datasets(true);this.list.fetch_raw_data((this.list.current_filter["archived"]=="yes")?true:false);this.list.refresh();window.status="Done";};return as.post({"to_post":to_post});}},unselect_resource:function(resource_id){if(resource_id&&Basis.in_array(resource_id,this.currently_selected)){var idx=this.currently_selected.indexOf(resource_id);this.currently_selected=Basis.array_delete_index(this.currently_selected,idx);}},update_resource_field:function(resource_id,field,value){if(this.raw_data[resource_id]){this.raw_data[resource_id][field]=value;}
if(this.current_filter_data[resource_id]){this.current_filter_data[resource_id][field]=value;}
if(this.current_sorted_data[resource_id]){this.current_sorted_data[resource_id][field]=value;}
if(this.current_raw_dataset[resource_id]){this.current_raw_dataset[resource_id][field]=value;}}};Basis.wizard=function(options){this.__init__(options);};Basis.wizard.prototype={__init__:function(options){var options=Basis.is_object(options)?options:{};this.options=options;this.tiles=(options["tiles"])?options["tiles"]:new Basis.tile_manager();this.name="";this.steps=[];this.current_step=-1;this.on_done=function(){};this.on_cancel=function(){};this.should_destroy_background=true;Basis.state_handler.add_state("wizard");Basis.state_handler.register_key_handler("wizard","KEY_ESCAPE","down",bind(function(){this.cancel();},this));},add_step:function(name,content,options){var index=this.steps.push({"name":name,"content":content,"options":options});Basis.state_handler.add_state("wizard_"+this.name+"_step_"+index);return this.steps[index-1];},can_unload:function(){if(this.steps[this.current_step]&&Basis.is_function(this.steps[this.current_step].options.can_unload)){return this.steps[this.current_step].options.can_unload();}
return true;},cancel:function(){if(confirm("Are you sure you want to exit this wizard?")){this.done(true);this.on_cancel();}},compile:function(){if((this.tiles.toString()=="Basis.tile_manager")&&(this.steps.length>0)){this.redefine_tile_sizing();this.create_wizard_container();MochiKit.Style.setOpacity("wizard_container",0);this.tiles.container_element=Basis.get_element("wizard_container");this.tiles.compile();this.options["width"]=this.options["width"]?this.options["width"]:"70%";this.options["height"]=this.options["height"]?this.options["height"]:"70%";Basis.register_size_constraints(this.tiles.container_element,this.options["width"],this.options["height"],null,false);Basis.state_handler.enter_state("wizard");this.render_step(0);Basis.center_element("wizard_container");MochiKit.Style.setOpacity("wizard_container",100);this.create_background();}},create_background:function(opacity){var opacity=(opacity!=null)?opacity:0.50;var obj=MochiKit.DOM.getElement("background");if(!obj){var element=DIV({"id":"background","style":"display: none; background-color: #000000; position: absolute; z-index: 1001; top: 0px; left: 0px;"});document.body.appendChild(element);MochiKit.Style.setOpacity(element,0.0);}
var obj=MochiKit.DOM.getElement("background");if(obj){var screend={"w":MochiKit.Style.getElementDimensions(MochiKit.DOM.currentDocument().body).w,"h":MochiKit.Style.getViewportDimensions().h};var scroll=Basis.scroll_coords();obj.style.width=screend.w;obj.style.height=screend.h;MochiKit.Style.setElementPosition(obj,{"x":scroll.x,"y":scroll.y});if(MochiKit.Style.getStyle(obj,"opacity")<opacity){MochiKit.Style.setOpacity(obj,0.0);obj.style.display="";appear(obj,{"duration":0.50,"to":opacity});}}
if(!MochiKit.DOM.currentDocument().background_resize){MochiKit.DOM.currentDocument().background_resize=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(partial(function(opacity){this.create_background(opacity);},opacity),this));}},create_wizard_container:function(){var obj=MochiKit.DOM.getElement("wizard_container");if(!obj){var element=DIV({"id":"wizard_container","style":"overflow: hidden; background-color: #FFFFFF; position: absolute; z-index: 1002; top: 0px; left: 0px;"});document.body.appendChild(element);if(!MochiKit.DOM.currentDocument().background_recenter){MochiKit.DOM.currentDocument().background_recenter=MochiKit.Signal.connect(window,"onresize",MochiKit.Base.bind(function(){Basis.center_element("wizard_container",true);},this));}}},default_screen:function(name){var section=DIV({"style":"overflow: auto;"});section.style.padding="10px";var element=DIV();var table=TABLE({"cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD(null,section))));var button_back=(this.current_step>0)?INPUT({"type":"button","value":(this.options["back_button_text"]?this.options["back_button_text"]:"Back")}):null;var button_next=(this.current_step<(this.steps.length-1))?INPUT({"type":"button","value":(this.options["next_button_text"]?this.options["next_button_text"]:"Next")}):null;var button_done=(this.current_step==(this.steps.length-1))?INPUT({"type":"button","value":(this.options["done_button_text"]?this.options["done_button_text"]:"Done")}):null;var button_cancel=(this.options["cancel_button"]!==false)?INPUT({"type":"button","value":(this.options["cancel_button_text"]?this.options["cancel_button_text"]:"Cancel")}):null;Basis.signal_handler.connect(button_back,"onclick",bind(function(){this.render_step(this.current_step-1);},this));Basis.signal_handler.connect(button_next,"onclick",bind(function(){this.render_step(this.current_step+1);},this));Basis.signal_handler.connect(button_done,"onclick",bind(function(){this.done();},this));Basis.signal_handler.connect(button_cancel,"onclick",bind(function(){this.cancel();},this));var buttons=DIV({"style":"text-align: right; height: 30px;"},button_back,button_next,button_cancel,button_done);element.appendChild(Basis.dashboard.header_block(name,false));element.appendChild(table);element.appendChild(buttons);element.content=section;Basis.register_size_constraints(element.content,"100%","100%");Basis.register_size_constraints(element,"100%","100%");Basis.register_size_constraints(table,"100%","100%");return element;},destroy_background:function(fade){var fade=(fade===false)?false:true;var obj=MochiKit.DOM.getElement("background");if(obj){Basis.remove_element("wizard_container");MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().wizard_container_resize);MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().wizard_container_recenter);if(this.should_destroy_background){var after_finish=partial(function(obj){MochiKit.Signal.disconnect(MochiKit.DOM.currentDocument().background_resize);MochiKit.DOM.currentDocument().background_resize=null;Basis.remove_element(obj);},obj);if(fade){MochiKit.Visual.fade(obj,{"duration":0.5,"from":0.5,"afterFinish":after_finish});}else{after_finish();}}}},done:function(from_cancel){if((!from_cancel&&this.can_unload())||from_cancel){if(this.tiles.tiles&&this.tiles.tiles[this.tiles.tiles.length-1]){if(Basis.is_function(this.tiles.tiles[this.tiles.tiles.length-1].on_unload)){this.tiles.tiles[this.tiles.tiles.length-1].on_unload();}
if(Basis.is_function(this.tiles.tiles[this.tiles.tiles.length-1].after_unload)){this.tiles.tiles[this.tiles.tiles.length-1].after_unload();}}
this.tiles.clear_all_tiles();this.current_step=-1;this.destroy_background();Basis.state_handler.revert();if(from_cancel!==true){this.on_done();}}},redefine_tile_sizing:function(){this.tiles.resize_tiles=function(){if(Basis.is_live_dom_node(this.container_element)){var container_size=MochiKit.Style.getElementDimensions(this.container_element);if(container_size){for(var i=0;i<this.tiles.length;i++){var tile=this.tiles[i];Basis.set_style(tile,{"left":(i*container_size.w)+"px"});}
Basis.set_element_dimensions(this.child_tile_container_element,{"w":(container_size.w*this.tiles.length),"h":container_size.h});Basis.set_style(this.child_tile_container_element,{"left":(this.current_tile*container_size.w*-1)+"px"});}}};},render_step:function(index){if(this.current_step==index){return;}
if(this.can_unload()){this.current_step=index;if(this.tiles.tiles[index]){this.tiles.go_to(index);return;}
if(this.steps[index]){var name=this.steps[index].name;var content=this.steps[index].content;var options=this.steps[index].options;var options=Basis.is_object(options)?options:{};var tile=this.tiles.create_tile();tile.name=name;tile.appendChild(this.default_screen(name));tile.hide_when_sliding=tile.firstChild.content;tile.on_load=options["on_load"];tile.on_unload=options["on_unload"];tile.before_unload=options["before_unload"];tile.after_unload=options["after_unload"];tile.can_unload=options["can_unload"];var index=this.tiles.push_tile(tile);if(content){content=Basis.is_element(content)?content:SPAN(null,content);tile.firstChild.content.appendChild(content);}
MochiKit.Style.resizeConstrainedElements();this.create_wizard_container();Basis.updated_live_dom();this.tiles.go_to(index);return index;}}}};;Basis.grid_control.contact_list=function(options){this.__init__(options);};Basis.grid_control.contact_list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.contact_list_resource_id=null;this.grid_control.current_mode="individual";this.grid_control.contact_map={};this.grid_control.data_type="CONTACT_type";this.grid_control.root_class_name="Basis.contact_list";this.grid_control.fields_to_display={"individual":["first_name","last_name","company_name","phone_cell","email_address1"],"organization":["company_name","address1","address2","city","state","zip_code","county","notes"]};this.grid_control.countries={"":" ","US":"United States","AF":"Afghanistan","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua And Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia And Herzegowina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodia","CM":"Cameroon","CA":"Canada","CV":"Cape Verde","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos (Keeling) Islands","CO":"Colombia","KM":"Comoros","CG":"Congo","CD":"Congo, The Democratic Republic Of The","CK":"Cook Islands","CR":"Costa Rica","CI":"Cote D'Ivoire","HR":"Croatia (Local Name: Hrvatska)","CU":"Cuba","CY":"Cyprus","CZ":"Czech Republic","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","TP":"East Timor","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","ET":"Ethiopia","FK":"Falkland Islands (Malvinas)","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","FX":"France, Metropolitan","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard And Mc Donald Islands","VA":"Holy See (Vatican City State)","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran (Islamic Republic Of)","IQ":"Iraq","IE":"Ireland","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People'S Republic Of","KR":"Korea, Republic Of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People'S Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libyan Arab Jamahiriya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macau","MK":"Macedonia, Former Yugoslav Republic Of","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia, Federated States Of","MD":"Moldova, Republic Of","MC":"Monaco","MN":"Mongolia","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","AN":"Netherlands Antilles","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"Reunion","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","KN":"Saint Kitts And Nevis","LC":"Saint Lucia","VC":"Saint Vincent And The Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome And Principe","SA":"Saudi Arabia","SN":"Senegal","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SK":"Slovakia (Slovak Republic)","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia, South Sandwich Islands","ES":"Spain","LK":"Sri Lanka","SH":"St. Helena","PM":"St. Pierre And Miquelon","SD":"Sudan","SR":"Suriname","SJ":"Svalbard And Jan Mayen Islands","SZ":"Swaziland","SE":"Sweden","CH":"Switzerland","SY":"Syrian Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, United Republic Of","TH":"Thailand","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad And Tobago","TN":"Tunisia","TR":"Turkey","TM":"Turkmenistan","TC":"Turks And Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","UM":"United States Minor Outlying Islands","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands (British)","VI":"Virgin Islands (U.S.)","WF":"Wallis And Futuna Islands","EH":"Western Sahara","YE":"Yemen","YU":"Yugoslavia","ZM":"Zambia","ZW":"Zimbabwe"};this.grid_control.states={"":" ","AL":"Alabama","AK":"Alaska","AS":"American Samoa","AZ":"Arizona","AR":"Arkansas","AE":"Armed Forces - Europe","AP":"Armed Forces - Pacific","AA":"Armed Forces - USA/Canada","CA":"California","CO":"Colorado","CT":"Connecticut","DE":"Delaware","DC":"District of Columbia","FM":"Federated States of Micronesia","FL":"Florida","GA":"Georgia","GU":"Guam","HI":"Hawaii","ID":"Idaho","IL":"Illinois","IN":"Indiana","IA":"Iowa","KS":"Kansas","KY":"Kentucky","LA":"Louisiana","ME":"Maine","MH":"Marshall Islands","MD":"Maryland","MA":"Massachusetts","MI":"Michigan","MN":"Minnesota","MS":"Mississippi","MO":"Missouri","MT":"Montana","NE":"Nebraska","NV":"Nevada","NH":"New Hampshire","NJ":"New Jersey","NM":"New Mexico","NY":"New York","NC":"North Carolina","ND":"North Dakota","OH":"Ohio","OK":"Oklahoma","OR":"Oregon","PA":"Pennsylvania","PR":"Puerto Rico","RI":"Rhode Island","SC":"South Carolina","SD":"South Dakota","TN":"Tennessee","TX":"Texas","UT":"Utah","VT":"Vermont","VI":"Virgin Islands","VA":"Virginia","WA":"Washington","WV":"West Virginia","WI":"Wisconsin","WY":"Wyoming","AB":"Alberta","BC":"British Columbia","MB":"Manitoba","NB":"New Brunswick","NF":"Newfoundland","MP":"Northern Mariana Islandt","NT":"Northwest Territories","NS":"Nova Scotia","ON":"Ontario","PW":"Palau Island","PE":"Prince Edward Island","QC":"Quebec","SK":"Saskatchewan","YT":"Yukon Territory","Australian Capital Territory":"Australian Capital Territory","New South Wales":"New South Wales","Northern Territory":"Northern Territory","Queensland":"Queensland","South Australia":"South Australia","Tasmania":"Tasmania","Victoria":"Victoria","Western Australia":"Western Australia"};this.grid_control.counties={"MI":{"":" ","Alcona":"Alcona","Alger":"Alger","Allegan":"Allegan","Alpena":"Alpena","Antrim":"Antrim","Arenac":"Arenac","Baraga":"Baraga","Barry":"Barry","Bay":"Bay","Benzie":"Benzie","Berrien":"Berrien","Branch":"Branch","Calhoun":"Calhoun","Cass":"Cass","Charlevoix":"Charlevoix","Cheboygan":"Cheboygan","Chippewa":"Chippewa","Clare":"Clare","Clinton":"Clinton","Crawford":"Crawford","Delta":"Delta","Dickinson":"Dickinson","Eaton":"Eaton","Emmet":"Emmet","Genesee":"Genesee","Gladwin":"Gladwin","Gogebic":"Gogebic","Grand Traverse":"Grand Traverse","Gratiot":"Gratiot","Hillsdale":"Hillsdale","Houghton":"Houghton","Huron":"Huron","Ingham":"Ingham","Ionia":"Ionia","Iosco":"Iosco","Iron":"Iron","Isabella":"Isabella","Jackson":"Jackson","Kalamazoo":"Kalamazoo","Kalkaska":"Kalkaska","Kent":"Kent","Keweenaw":"Keweenaw","Lake":"Lake","Lapeer":"Lapeer","Leelanau":"Leelanau","Lenawee":"Lenawee","Livingston":"Livingston","Luce":"Luce","Mackinac":"Mackinac","Macomb":"Macomb","Manistee":"Manistee","Marquette":"Marquette","Mason":"Mason","Mecosta":"Mecosta","Menominee":"Menominee","Midland":"Midland","Missaukee":"Missaukee","Monroe":"Monroe","Montcalm":"Montcalm","Montmorency":"Montmorency","Muskegon":"Muskegon","Newaygo":"Newaygo","Oakland":"Oakland","Oceana":"Oceana","Ogemaw":"Ogemaw","Ontonagon":"Ontonagon","Osceola":"Osceola","Oscoda":"Oscoda","Otsego":"Otsego","Ottawa":"Ottawa","Presque Isle":"Presque Isle","Roscommon":"Roscommon","Saginaw":"Saginaw","St. Clair":"St. Clair","St. Joseph":"St. Joseph","Sanilac":"Sanilac","Schoolcraft":"Schoolcraft","Shiawassee":"Shiawassee","Tuscola":"Tuscola","Van Buren":"Van Buren","Washtenaw":"Washtenaw","Wayne":"Wayne","Wexford":"Wexford"},"OH":{"":" ","Adams":"Adams","Allen":"Allen","Ashland":"Ashland","Ashtabula":"Ashtabula","Athens":"Athens","Auglaize":"Auglaize","Belmont":"Belmont","Brown":"Brown","Butler":"Butler","Carroll":"Carroll","Champaign":"Champaign","Clark":"Clark","Clermont":"Clermont","Clinton":"Clinton","Columbiana":"Columbiana","Coshocton":"Coshocton","Crawford":"Crawford","Cuyahoga":"Cuyahoga","Darke":"Darke","Defiance":"Defiance","Delaware":"Delaware","Erie":"Erie","Fairfield":"Fairfield","Fayette":"Fayette","Franklin":"Franklin","Fulton":"Fulton","Gallia":"Gallia","Geauga":"Geauga","Greene":"Greene","Guernsey":"Guernsey","Hamilton":"Hamilton","Hancock":"Hancock","Hardin":"Hardin","Harrison":"Harrison","Henry":"Henry","Highland":"Highland","Hocking":"Hocking","Holmes":"Holmes","Huron":"Huron","Jackson":"Jackson","Jefferson":"Jefferson","Knox":"Knox","Lake":"Lake","Lawrence":"Lawrence","Licking":"Licking","Logan":"Logan","Lorain":"Lorain","Lucas":"Lucas","Madison":"Madison","Mahoning":"Mahoning","Marion":"Marion","Medina":"Medina","Meigs":"Meigs","Mercer":"Mercer","Miami":"Miami","Monroe":"Monroe","Montgomery":"Montgomery","Morgan":"Morgan","Morrow":"Morrow","Muskingum":"Muskingum","Noble":"Noble","Ottawa":"Ottawa","Paulding":"Paulding","Perry":"Perry","Pickaway":"Pickaway","Pike":"Pike","Portage":"Portage","Preble":"Preble","Putnam":"Putnam","Richland":"Richland","Ross":"Ross","Sandusky":"Sandusky","Scioto":"Scioto","Seneca":"Seneca","Shelby":"Shelby","Stark":"Stark","Summit":"Summit","Trumbull":"Trumbull","Tuscarawas":"Tuscarawas","Union":"Union","Van Wert":"Van Wert","Vinton":"Vinton","Warren":"Warren","Washington":"Washington","Wayne":"Wayne","Williams":"Williams","Wood":"Wood","Wyandot":"Wyandot"}};this.grid_control.grid_field_map={"type":{"text":"Type","type":"select","array":{"individual":"Individual","organization":"Organization"},"field":"CONTACT_type"},"company_name":{"text":"Company Name","type":"text","field":"company_name"},"first_name":{"text":"First Name","type":"text","field":"first_name"},"last_name":{"text":"Last Name","type":"text","field":"last_name"},"address1":{"text":"Address","type":"text","field":"address1"},"address2":{"text":"Address (cont'd)","type":"text","field":"address2"},"city":{"text":"City","type":"text","field":"city"},"state":{"text":"State","type":"select","array":this.grid_control.states,"field":"state"},"zip_code":{"text":"Zip Code","type":"text","field":"zip_code"},"county":{"text":"County","type":"select","array":{},"field":"county"},"country":{"text":"Country","type":"select","array":this.grid_control.countries,"field":"country"},"phone_business":{"text":"Business","type":"text","field":"phone_business"},"phone_home":{"text":"Home","type":"text","field":"phone_home"},"phone_cell":{"text":"Cell","type":"text","field":"phone_cell"},"phone_fax":{"text":"Fax","type":"text","field":"phone_fax"},"email_address1":{"text":"Email","type":"text","field":"email_address1"},"email_address2":{"text":"Email (other)","type":"text","field":"email_address2"},"url1":{"text":"Website","type":"text","field":"url1"},"url2":{"text":"Website (other)","type":"text","field":"url2"},"facebook_url":{"text":"Facebook","type":"text","field":"facebook_url"},"twitter_username":{"text":"Twitter","type":"text","field":"twitter_username"},"linkedin_url":{"text":"LinkedIn","type":"text","field":"linkedin_url"},"notes":{"text":"Notes","type":"text","field":"notes"}};this.grid_control.resource_types={"individual":"Individual","organization":"Organization"};this.grid_control.default_resource_type="individual";this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("CONTACT",{"grid_control":this.grid_control});},this);this.grid_control.elements["contact_list"]=null;this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:((this.current_mode=="organization")?"company_name":"first_name")),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(){if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.contact_list_resource_id]["associated_resources"]["CONTACT.V2"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}
return new MochiKit.Async.succeed();}else{var to_post={};to_post["contact_list_resource_id"]=this.contact_list_resource_id;var as=new Basis.ajax_scaffold;as.alias="get_raw_contact_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];this.list.contact_map=raw_data["contact_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.email_contacts=bind(function(resource_ids,method){var method=(method==null)?"client":method;switch(method){case"client":var mailto="";var addresses={};for(var i=0;i<this.currently_selected.length;i++){var resource_id=this.currently_selected[i];var email_address1=this.get_master_field_data("email_address1",this.raw_data[resource_id],true);var email_address2=this.get_master_field_data("email_address2",this.raw_data[resource_id],true);addresses[email_address1]=true;addresses[email_address2]=true;}
var keys=Basis.keys(addresses);for(var i=0;i<keys.length;i++){if(keys[i]){mailto+=keys[i]+";";}}
mailto=mailto?("mailto:"+mailto):"";if(mailto){window.onbeforeunload=null;window.location.href=mailto;}
break;case"sitequarters":if(confirm("Are you sure you want to send email to "+((this.grid_control.currently_selected.length>1)?"these":"this")+" contact"+((this.grid_control.currently_selected.length>1)?"s":"")+"?")){this.grid_control.dashboard.run_wizard("EMAIL_CONTACTS",{"currently_selected":this.grid_control.currently_selected});}
break;}},this);this.grid_control.invite_contacts_as_user=bind(function(){if(confirm("Are you sure you want to invite "+((this.grid_control.currently_selected.length>1)?"these":"this")+" contact"+((this.grid_control.currently_selected.length>1)?"s":"")+" to become "+((this.grid_control.currently_selected.length>1)?"users":"a user")+" of this site?")){this.grid_control.dashboard.run_wizard("INVITE_USERS",{"currently_selected":this.grid_control.currently_selected});}},this);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT({"id":Basis.anonymous_element_id()});Basis.select_add_option(with_selected,""," ");Basis.select_add_options(with_selected,{"delete":"Delete Contacts","email_client":"Email via Outlook","email_contacts":"Email via SiteQuarters","export_to_vcards":"Export to vCards","invite_contacts_as_user":"Invite as Users"});Basis.select_add_options(with_selected,{"print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"print_detail":"Print - Detail"});Basis.signal_handler.connect(with_selected,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"email_client":this.email_contacts(this.currently_selected,"client");Basis.select_select_item_by_value(element,"");break;case"email_contacts":this.email_contacts(this.currently_selected,"sitequarters");Basis.select_select_item_by_value(element,"");break;case"invite_contacts_as_user":this.invite_contacts_as_user();Basis.select_select_item_by_value(element,"");break;case"export_to_vcards":if(this.currently_selected.length==0){alert("Please choose some contacts to export in vCard format.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;case"print_line_item":case"print_detail":if(this.currently_selected.length>0){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT.V2&mode="+((element.options[element.selectedIndex].value=="print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=this.fields_to_display[this.current_mode];var header=TR();header.appendChild(TD({"width":"1"}));header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
header.appendChild(TD({"style":"white-space: nowrap;","class":this.root_class_name+".table.field_name"},"Linked To"));header.appendChild(TD({"width":"1"}));var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox");for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];this.grid_field_map["county"]["array"]=this.counties[row["state"]];var edit_button=IMG({"src":this.dashboard.get_view_association_icon("CONTACT.V2"),"style":"cursor: pointer;"});Basis.signal_handler.connect(edit_button,"onclick.greedy",bind(partial(function(resource_id,contact_list){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.tiles[index].contact_list=contact_list;this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id,this),this.dashboard),false);tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));tr.appendChild(TD(null,edit_button));for(var x=0;x<fields.length;x++){var td=TD(null,this.get_master_field_data(fields[x],row));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}
var associated_contacts=DIV();if(this.dashboard.resource_linker[resource_id]["associated_resources"]["CONTACT.V2"]){var resource_ids=Basis.keys(this.dashboard.resource_linker[resource_id]["associated_resources"]["CONTACT.V2"]);for(var x=0;x<resource_ids.length;x++){if(((this.dashboard.resource_linker[resource_id]["misc_vars"]["CONTACT_type"]=="individual")&&(this.dashboard.resource_linker[resource_ids[x]]["misc_vars"]["CONTACT_type"]=="organization"))||((this.dashboard.resource_linker[resource_id]["misc_vars"]["CONTACT_type"]=="organization")&&(this.dashboard.resource_linker[resource_ids[x]]["misc_vars"]["CONTACT_type"]=="individual"))){associated_contacts.appendChild(this.dashboard.render_view("DEFAULT","resource_with_icon",resource_ids[x],true));}}}
tr.appendChild(TD({"class":"linked_to"},associated_contacts));var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"Contact List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode,type){var mode=Basis.in_array(mode,["detail","edit","add"])?mode:"detail";var type=(type=="individual")?"individual":"organization";var resource_id=Basis.is_number(resource_id)?Math.round(resource_id):null;var data_row=(mode=="add")?{}:this.raw_data[resource_id];var contact=null;if(resource_id&&data_row){switch(mode){case"detail":var selected=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});selected.resource_id=resource_id;selected.checked=this.is_selected(resource_id);Basis.signal_handler.connect(selected,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},selected),this),false);var edit_button=INPUT({"type":"button","value":"Edit"});var groups=this.render_groups(resource_id,"detail");this.grid_field_map["county"]["array"]=this.counties[data_row["state"]];contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},this.get_master_field_data("company_name",data_row)),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,this.get_master_field_data("type",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},this.get_master_field_data("first_name",data_row)),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,this.get_master_field_data("phone_business",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,this.get_master_field_data("phone_home",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,this.get_master_field_data("phone_cell",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,this.get_master_field_data("phone_fax",data_row)))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,this.get_master_field_data("email_address1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,this.get_master_field_data("email_address2",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,this.get_master_field_data("url1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,this.get_master_field_data("url2",data_row)))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},this.get_master_field_data("last_name",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},this.get_master_field_data("address1",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},this.get_master_field_data("address2",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},this.get_master_field_data("city",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},this.get_master_field_data("state",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},this.get_master_field_data("zip_code",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},this.get_master_field_data("county",data_row))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},this.get_master_field_data("country",data_row))),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},this.get_master_field_data("notes",data_row))),null)))),TR(null,TD({"align":"center"},edit_button,null)),null));Basis.signal_handler.connect(edit_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,type,contact){var edit_contact=this.render_resource(resource_id,"edit",type);MochiKit.DOM.swapDOM(contact,edit_contact);},resource_id,type,contact),this),false);break;case"edit":var selected=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});selected.resource_id=resource_id;selected.checked=this.is_selected(resource_id);Basis.signal_handler.connect(selected,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},selected),this),false);var groups=this.render_groups(resource_id,"edit");var type=SELECT();Basis.select_add_options(type,{"individual":"Individual","organization":"Organization"});Basis.select_select_item_by_value(type,this.get_master_field_data("type",data_row,true,true));Basis.make_text_element_dropdown(type,null,{"resource_id":resource_id.toString(),"field":"CONTACT_type","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"CONTACT_type",type),this)});var company_name=INPUT({"type":"text","value":this.get_master_field_data("company_name",data_row,true)});Basis.make_text_element_editable(company_name,{"resource_id":resource_id.toString(),"field":"company_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"company_name",company_name),this)});var first_name=INPUT({"type":"text","value":this.get_master_field_data("first_name",data_row,true)});Basis.make_text_element_editable(first_name,{"resource_id":resource_id.toString(),"field":"first_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"first_name",first_name),this)});var last_name=INPUT({"type":"text","value":this.get_master_field_data("last_name",data_row,true)});Basis.make_text_element_editable(last_name,{"resource_id":resource_id.toString(),"field":"last_name","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"last_name",last_name),this)});var address1=INPUT({"type":"text","value":this.get_master_field_data("address1",data_row,true)});Basis.make_text_element_editable(address1,{"resource_id":resource_id.toString(),"field":"address1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"address1",address1),this)});var address2=INPUT({"type":"text","value":this.get_master_field_data("address2",data_row,true)});Basis.make_text_element_editable(address2,{"resource_id":resource_id.toString(),"field":"address2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"address2",address2),this)});var city=INPUT({"type":"text","value":this.get_master_field_data("city",data_row,true)});Basis.make_text_element_editable(city,{"resource_id":resource_id.toString(),"field":"city","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"city",city),this)});var state=SELECT();Basis.select_add_options(state,this.states);Basis.select_select_item_by_value(state,this.get_master_field_data("state",data_row,true,true));Basis.make_text_element_dropdown(state,null,{"resource_id":resource_id.toString(),"field":"state","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"state",state),this)});var zip_code=INPUT({"type":"text","value":this.get_master_field_data("zip_code",data_row,true)});Basis.make_text_element_editable(zip_code,{"resource_id":resource_id.toString(),"field":"zip_code","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"zip_code",zip_code),this)});var county=SELECT();Basis.select_add_options(county,this.counties[this.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));Basis.make_text_element_dropdown(county,null,{"resource_id":resource_id.toString(),"field":"county","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"county",county),this)});Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(county,state,resource_id){county.options.length=0;var data_row=this.raw_data[resource_id];this.grid_field_map["county"]["array"]=this.counties[state.options[state.selectedIndex].value];Basis.select_add_options(county,this.grid_field_map["county"]["array"]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));},county,state,resource_id),this),false);var country=SELECT();Basis.select_add_options(country,this.countries);Basis.select_select_item_by_value(country,this.get_master_field_data("country",data_row,true,true));Basis.make_text_element_dropdown(country,null,{"resource_id":resource_id.toString(),"field":"country","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"country",country),this)});var phone_business=INPUT({"type":"text","value":this.get_master_field_data("phone_business",data_row,true)});Basis.make_text_element_editable(phone_business,{"resource_id":resource_id.toString(),"field":"phone_business","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_business",phone_business),this)});var phone_home=INPUT({"type":"text","value":this.get_master_field_data("phone_home",data_row,true)});Basis.make_text_element_editable(phone_home,{"resource_id":resource_id.toString(),"field":"phone_home","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_home",phone_home),this)});var phone_cell=INPUT({"type":"text","value":this.get_master_field_data("phone_cell",data_row,true)});Basis.make_text_element_editable(phone_cell,{"resource_id":resource_id.toString(),"field":"phone_cell","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_cell",phone_cell),this)});var phone_fax=INPUT({"type":"text","value":this.get_master_field_data("phone_fax",data_row,true)});Basis.make_text_element_editable(phone_fax,{"resource_id":resource_id.toString(),"field":"phone_fax","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"phone_fax",phone_fax),this)});var email_address1=INPUT({"type":"text","value":this.get_master_field_data("email_address1",data_row,true)});Basis.make_text_element_editable(email_address1,{"resource_id":resource_id.toString(),"field":"email_address1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"email_address1",email_address1),this)});var email_address2=INPUT({"type":"text","value":this.get_master_field_data("email_address2",data_row,true)});Basis.make_text_element_editable(email_address2,{"resource_id":resource_id.toString(),"field":"email_address2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"email_address2",email_address2),this)});var url1=INPUT({"type":"text","value":this.get_master_field_data("url1",data_row,true)});Basis.make_text_element_editable(url1,{"resource_id":resource_id.toString(),"field":"url1","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"url1",url1),this)});var url2=INPUT({"type":"text","value":this.get_master_field_data("url2",data_row,true)});Basis.make_text_element_editable(url2,{"resource_id":resource_id.toString(),"field":"url2","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"url2",url2),this)});var notes=TEXTAREA(null,this.get_master_field_data("notes",data_row,true));Basis.make_text_element_editable(notes,{"resource_id":resource_id.toString(),"field":"notes","custom_action":"contact_list.save_contact","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(resource_id,field,element){this.update_resource_field(resource_id,field,element.value);},resource_id,"notes",notes),this)});var done_button=INPUT({"type":"button","value":"Done"});contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,type)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null)))),TR(null,TD({"align":"center"},done_button)),null));Basis.signal_handler.connect(done_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(contact,resource_id){var to_replace=this.render_resource(resource_id,"detail",this.current_mode);MochiKit.DOM.swapDOM(contact,to_replace);},contact,resource_id),this),false);break;case"add":var data_row={"CONTACT_type":"individual"};var groups=this.render_groups(resource_id,"add");var checks=MochiKit.DOM.getElementsByTagAndClassName("input",null,groups);for(var i=0;i<checks.length;i++){if(checks[i].type=="checkbox"){Basis.signal_handler.connect(checks[i],"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=this[element_name]?this[element_name]:[];if(element.checked){this[element_name].push(element.value);}else{this[element_name]=Basis.array_delete_index(this[element_name],Basis.index_of(this[element_name],element.value));}},checks[i],"groups"),data_row));}}
var type=SELECT();Basis.select_add_options(type,{"individual":"Individual","organization":"Organization"});Basis.signal_handler.connect(type,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},type,"CONTACT_type"),data_row));var company_name=INPUT({"type":"text","value":this.get_master_field_data("company_name",data_row,true)});Basis.signal_handler.connect(company_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},company_name,"company_name"),data_row));var first_name=INPUT({"type":"text","value":this.get_master_field_data("first_name",data_row,true)});Basis.signal_handler.connect(first_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},first_name,"first_name"),data_row));var last_name=INPUT({"type":"text","value":this.get_master_field_data("last_name",data_row,true)});Basis.signal_handler.connect(last_name,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},last_name,"last_name"),data_row));var address1=INPUT({"type":"text","value":this.get_master_field_data("address1",data_row,true)});Basis.signal_handler.connect(address1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},address1,"address1"),data_row));var address2=INPUT({"type":"text","value":this.get_master_field_data("address2",data_row,true)});Basis.signal_handler.connect(address2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},address2,"address2"),data_row));var city=INPUT({"type":"text","value":this.get_master_field_data("city",data_row,true)});Basis.signal_handler.connect(city,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},city,"city"),data_row));var state=SELECT();Basis.select_add_options(state,this.states);Basis.select_select_item_by_value(state,this.get_master_field_data("state",data_row,true,true));Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},state,"state"),data_row));var zip_code=INPUT({"type":"text","value":this.get_master_field_data("zip_code",data_row,true)});Basis.signal_handler.connect(zip_code,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},zip_code,"zip_code"),data_row));var county=SELECT();Basis.select_add_options(county,this.counties[this.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));Basis.signal_handler.connect(county,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},county,"county"),data_row));Basis.signal_handler.connect(state,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(county,state,resource_id){county.options.length=0;var data_row=this.raw_data[resource_id];this.grid_field_map["county"]["array"]=this.counties[state.options[state.selectedIndex].value];Basis.select_add_options(county,this.grid_field_map["county"]["array"]);Basis.select_select_item_by_value(county,this.get_master_field_data("county",data_row,true,true));},county,state,resource_id),this),false);var country=SELECT();Basis.select_add_options(country,this.countries);Basis.select_select_item_by_value(country,this.get_master_field_data("country",data_row,true,true));Basis.signal_handler.connect(country,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},country,"country"),data_row));var phone_business=INPUT({"type":"text","value":this.get_master_field_data("phone_business",data_row,true)});Basis.signal_handler.connect(phone_business,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_business,"phone_business"),data_row));var phone_home=INPUT({"type":"text","value":this.get_master_field_data("phone_home",data_row,true)});Basis.signal_handler.connect(phone_home,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_home,"phone_home"),data_row));var phone_cell=INPUT({"type":"text","value":this.get_master_field_data("phone_cell",data_row,true)});Basis.signal_handler.connect(phone_cell,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_cell,"phone_cell"),data_row));var phone_fax=INPUT({"type":"text","value":this.get_master_field_data("phone_fax",data_row,true)});Basis.signal_handler.connect(phone_fax,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},phone_fax,"phone_fax"),data_row));var email_address1=INPUT({"type":"text","value":this.get_master_field_data("email_address1",data_row,true)});Basis.signal_handler.connect(email_address1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},email_address1,"email_address1"),data_row));var email_address2=INPUT({"type":"text","value":this.get_master_field_data("email_address2",data_row,true)});Basis.signal_handler.connect(email_address2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},email_address2,"email_address2"),data_row));var url1=INPUT({"type":"text","value":this.get_master_field_data("url1",data_row,true)});Basis.signal_handler.connect(url1,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},url1,"url1"),data_row));var url2=INPUT({"type":"text","value":this.get_master_field_data("url2",data_row,true)});Basis.signal_handler.connect(url2,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},url2,"url2"),data_row));var notes=TEXTAREA(null,this.get_master_field_data("notes",data_row,true));Basis.signal_handler.connect(notes,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element,element_name){this[element_name]=element.value;},notes,"notes"),data_row));var save_button=INPUT({"type":"button","value":"Save"});var cancel_button=INPUT({"type":"button","value":"Cancel"});contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":this.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,this.get_master_field_title("type")+":")),TD(null,type)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"rowspan":"10","colspan":"2"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},groups)),TR(null,TD({"width":"100"},STRONG(this.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null)))),TR(null,TD({"align":"center"},save_button,cancel_button)),null));var cancel_add_func=MochiKit.Base.bind(function(){MochiKit.Signal.disconnect(this.elements["add_new_resource"].center);MochiKit.DOM.removeElement(this.elements["add_new_resource"]);this.elements["add_new_resource"]=null;this.destroy_background();},this);Basis.signal_handler.connect(save_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(data_row,cancel_add_func){var a=this.add_new_resource("CONTACT",data_row);a.addCallback(cancel_add_func);},data_row,cancel_add_func),this),false);Basis.signal_handler.connect(cancel_button,"onclick",cancel_add_func,false);break;}}
return contact;},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.contact_list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.grid_control.generic_resource=function(options){this.__init__(options);};Basis.grid_control.generic_resource.prototype={__init__:function(options){this.resource_type="";this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.container=this;this.grid_control.current_mode="";this.grid_control.data_type="";this.grid_control.root_class_name="Basis.resource_list";this.grid_control.current_sorting={"field":"display_text","direction":"ASC"};this.grid_control.grid_field_map={"display_text":{"text":"Display Text","type":"text","field":"display_text"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard(this.resource_type,{"grid_control":this.grid_control});},this);this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:"display_text"),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(resource_type){if(this.dashboard){this.raw_data={};this.group_map={};var site_resource_id=null;var keys=Basis.keys(this.dashboard.available_resources["SITE"]);for(var i=0;i<keys.length;i++){if(Basis._int(this.dashboard.available_resources["SITE"][keys[i]]["misc_vars"]["id"])==Basis._int(this.dashboard.site_id)){site_resource_id=keys[i];}}
if(site_resource_id){var keys=Basis.keys(this.dashboard.resource_linker[site_resource_id]["associated_resources"][resource_type]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]&&this.dashboard.resource_linker[keys[i]]["associated_resources"]){this.raw_data[keys[i]]={"display_text":this.dashboard.resource_display_text(keys[i])};this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={"resource_type":resource_type};var as=new Basis.ajax_scaffold;as.alias="get_raw_resource_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.container.resource_type=="TASK_LIST"){Basis.select_add_options(with_selected,{"TASK_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"TASK_LIST_print_detail":"Print - Detail"});}
if(this.container.resource_type=="CONTACT_LIST"){Basis.select_add_options(with_selected,{"CONTACT_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"CONTACT_LIST_print_detail":"Print - Detail"});Basis.select_add_options(with_selected,{"CONTACT_LIST_email_contacts":"Email via SiteQuarters"});Basis.select_add_options(with_selected,{"CONTACT_LIST_import_from_vcard":"Import vCards"});Basis.select_add_options(with_selected,{"CONTACT_LIST_export_to_vcards":"Export to vCards"});}
Basis.select_add_options(with_selected,{"delete":"Delete Resources"});Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":if(this.currently_selected.length==0){alert("Please choose something to delete.");}else{this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");}
break;case"TASK_LIST_print_line_item":case"TASK_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a task list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK_LIST&mode="+((element.options[element.selectedIndex].value=="TASK_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)))+"&include_archived="+(confirm("Do you want to print archived tasks in this list as well?")?"true":"false");window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_print_line_item":case"CONTACT_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a contact list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT_LIST&mode="+((element.options[element.selectedIndex].value=="CONTACT_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)))+"&include_archived="+(confirm("Do you want to print archived contacts in this list as well?")?"true":"false");window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_email_contacts":if(this.currently_selected.length==0){alert("Please choose one or more contact lists to send email to.");}else{if(confirm("Are you sure you want to send email to "+((this.currently_selected.length>1)?"these":"this")+" entire contact list"+((this.currently_selected.length>1)?"s":"")+"?")){this.dashboard.run_wizard("EMAIL_CONTACTS",{"currently_selected":this.currently_selected});}}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_import_from_vcard":if(this.currently_selected.length==0){alert("Please choose a contact list to import vCards into.");}else if(this.currently_selected.length>1){alert("You can only import to one list at a time.");}else{this.dashboard.run_wizard("IMPORT_FROM_VCARD",{"contact_list_id":this.currently_selected[0]});}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_export_to_vcards":if(this.currently_selected.length==0){alert("Please choose a contact list to export in vCard format.");}else if(this.currently_selected.length>1){alert("You can only export one list at a time.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD(null,Basis.nbsp()));header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset?this.current_dataset:[]);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","browser_row",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);Basis.signal_handler.connect(td,"onclick.greedy",bind(function(){this.checked=this.checked?false:true;Basis.signal_handler.execute_interactive_element(this,"onclick");},row_selector),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN());},this.grid_control);},render:function(view){if(this.grid_control.dashboard&&this.grid_control.dashboard.render_view){switch(this.resource_type){case"USER":if(this.grid_control.dashboard.user_levels[this.grid_control.dashboard.current_user_level]<this.grid_control.dashboard.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){this.grid_control.can_add_new_resource=false;}
break;default:break;}
this.grid_control.render(view);}}};;Basis.grid_control.generic_resource.simplified=function(options){this.__init__(options);};Basis.grid_control.generic_resource.simplified.prototype={__init__:function(options){var options=options?options:{};options["num_per_page"]=options["num_per_page"]?options["num_per_page"]:10;this.generic_resource=new Basis.grid_control.generic_resource(options);this.generic_resource.grid_control.refresh_controls=function(){if(this.elements["filter_controls"]){if(this.num_per_page>Basis.array_length(this.raw_data)){this.elements["filter_controls"].parentNode.parentNode.style.display="none";}else{this.elements["filter_controls"].parentNode.parentNode.style.display="";}}
if(this.elements["page_controls"]){if(this.num_per_page>Basis.array_length(this.raw_data)){if(this.elements["page_controls"]&&this.elements["page_controls"].parentNode){this.elements["page_controls"].parentNode.parentNode.style.display="none";}}else{if(this.elements["page_controls"]&&this.elements["page_controls"].parentNode){this.elements["page_controls"].parentNode.parentNode.style.display="";}
MochiKit.Style.resizeConstrainedElements();}}};this.generic_resource.grid_control.render=function(view){this.elements["container_output"]=Basis.get_element(this.elements["container_output"]);if(this.elements["container_output"]&&Basis.is_element(this.elements["container_output"])){this.refresh_data();var first_render=(this.elements["container_output"]&&!this.elements["list_output"])?true:false;if(first_render){var search_text=INPUT({"type":"text","style":"width: 150px;"});Basis.signal_handler.connect(search_text,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){this.current_filter["search_text"]=element.value;},search_text),this),false);var search_text_go=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(search_text_go,"onclick",MochiKit.Base.bind(function(){this.refresh();},this),false);MochiKit.Signal.connect(search_text,"onkeydown",MochiKit.Base.partial(function(text_input,button,e){if(e.key().string=="KEY_ENTER"){Basis.signal_handler.execute_interactive_element(text_input,"onchange");Basis.signal_handler.execute_interactive_element(button,"onclick");}},search_text,search_text_go));this.refresh_pages();var dropdown_num_per_page=SELECT();Basis.select_add_options(dropdown_num_per_page,{10:"10 per Page",25:"25 per Page",50:"50 per Page",9999999:"All Results"});Basis.select_select_item_by_value(dropdown_num_per_page,this.num_per_page);Basis.signal_handler.connect(dropdown_num_per_page,"onchange",MochiKit.Base.bind(MochiKit.Base.partial(function(element){this.num_per_page=element.options[element.selectedIndex].value;this.current_page=1;this.refresh();},dropdown_num_per_page),this),false);this.elements["filter_controls"]=TABLE({"width":"100%","cellpadding":"5"},TBODY(null,TR(null,TD({"width":"1"},"Search: "),TD({"width":"1"},search_text),TD({"width":"1"},search_text_go),TD({"style":"text-align: right;"},dropdown_num_per_page))));this.elements["list_output"]=DIV(null,"Grid Rows; if you see this, please refresh the page!");var container=TABLE({"border":"0","width":"100%","class":this.root_class_name+".container","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD(null,this.elements["filter_controls"])),TR(null,TD(null,this.elements["page_controls"])),TR(null,TD(null,this.elements["list_output"]))));this.refresh_controls();this.refresh_title();Basis.remove_children(this.elements["container_output"]);this.elements["container_output"].appendChild(container);Basis.updated_live_dom();}
this.refresh();MochiKit.Style.resizeConstrainedElements();}};this.generic_resource.grid_control.refresh=function(){this.current_filter_hash["all"]=this.filter_hash("all");this.refresh_controls();this.refresh_data();this.refresh_pages();this.refresh_title();this.refresh_table();};this.generic_resource.grid_control.refresh_table=function(){var table=TABLE({"class":this.root_class_name+".table"},TBODY());var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","resource_with_icon",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
if(this.elements["list_output"].parentNode){MochiKit.DOM.swapDOM(this.elements["list_output"],table);}
this.elements["list_output"]=table;Basis.updated_live_dom();};this.grid_control=this.generic_resource.grid_control;},render:function(view){if(this.grid_control.dashboard&&this.grid_control.dashboard.render_view){this.grid_control.render(view);}}};;Basis.grid_control.list=function(options){this.__init__(options);};Basis.grid_control.list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.container=this;this.grid_control.current_mode="";this.grid_control.data_type="";this.grid_control.root_class_name="Basis.list";this.grid_control.current_sorting={"field":"display_text","direction":"ASC"};this.grid_control.grid_field_map={"display_text":{"text":"Display Text","type":"text","field":"display_text"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("LIST_ITEM",{"grid_control":this.grid_control});},this);this.grid_control.elements["list"]=null;this.grid_control.fetch_raw_data=bind(function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.list_resource_id]["associated_resources"]["LIST_ITEM"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){if((!use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]!="yes"))||(use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]=="yes"))){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}}
return new MochiKit.Async.succeed();}else{}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.container.resource_type=="TASK_LIST"){Basis.select_add_options(with_selected,{"TASK_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"TASK_LIST_print_detail":"Print - Detail"});}
if(this.container.resource_type=="CONTACT_LIST"){Basis.select_add_options(with_selected,{"CONTACT_LIST_print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"CONTACT_LIST_print_detail":"Print - Detail"});Basis.select_add_options(with_selected,{"CONTACT_LIST_import_from_vcard":"Import vCards"});Basis.select_add_options(with_selected,{"CONTACT_LIST_export_to_vcards":"Export to vCards"});}
Basis.select_add_options(with_selected,{"delete":"Delete Resources"});Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"delete":if(this.currently_selected.length==0){alert("Please choose something to delete.");}else{this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");}
break;case"TASK_LIST_print_line_item":case"TASK_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a task list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK_LIST&mode="+((element.options[element.selectedIndex].value=="TASK_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_print_line_item":case"CONTACT_LIST_print_detail":if(this.currently_selected.length==0){alert("Please choose a contact list to print.");}else if(this.currently_selected.length>1){alert("You can only print one list at a time.");}else{var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT_LIST&mode="+((element.options[element.selectedIndex].value=="CONTACT_LIST_print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_import_from_vcard":if(this.currently_selected.length==0){alert("Please choose a contact list to import vCards into.");}else if(this.currently_selected.length>1){alert("You can only import to one list at a time.");}else{this.dashboard.run_wizard("IMPORT_FROM_VCARD",{"contact_list_id":this.currently_selected[0]});}
Basis.select_select_item_by_value(element,"");break;case"CONTACT_LIST_export_to_vcards":if(this.currently_selected.length==0){alert("Please choose a contact list to export in vCard format.");}else if(this.currently_selected.length>1){alert("You can only export one list at a time.");}else{window.onbeforeunload=null;window.location.href=this.dashboard["site_url"]+"/ajax/ajax/vcard_export.php?ids="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));}
Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=["display_text"];var header=TR();header.appendChild(TD({"width":"1"}));for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}
var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox",this.elements["container_output"]);for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD(null,Basis.nbsp()));header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset?this.current_dataset:[]);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));for(var x=0;x<fields.length;x++){var td=TD(null,this.dashboard.render_view("DEFAULT","browser_row",resource_id));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));}
var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);Basis.signal_handler.connect(td,"onclick.greedy",bind(function(){this.checked=this.checked?false:true;Basis.signal_handler.execute_interactive_element(this,"onclick");},row_selector),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;Basis.updated_live_dom();},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode){return DIV(null,"delete me");},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.grid_control.task_list=function(options){this.__init__(options);};Basis.grid_control.task_list.prototype={__init__:function(options){this.grid_control=new Basis.grid_control(options);this.grid_control.dashboard=options["dashboard"];this.grid_control.task_list_resource_id=null;this.grid_control.current_mode="default";this.grid_control.contact_map={};this.grid_control.data_type="";this.grid_control.root_class_name="Basis.task_list";this.grid_control.fields_to_display={"default":["task_name","assigned_to","status","priority","date_due","percent_complete"]};this.grid_control.current_sorting={"field":"task_name","direction":"ASC"};this.grid_control.grid_field_map={"task_name":{"text":"Task Name","type":"text","field":"task_name"},"assigned_to":{"text":"Assigned To","type":"select","array":this.grid_control.dashboard.get_site_resource_list("CONTACT.V2"),"field":"assigned_to"},"status":{"text":"Status","type":"select","array":["Not Started","In Progress","Completed","Deferred","Waiting on someone else"],"field":"status"},"priority":{"text":"Priority","type":"select","array":["(1) High Priority","(2) Normal Priority","(3) Low Priority","(4) Scheduled"],"field":"priority","ivalue":1},"date_due":{"text":"Due Date","type":"text","field":"date_due"},"date_assigned":{"text":"Date Assigned","type":"text","field":"date_assigned"},"percent_complete":{"text":"Percent Complete","type":"select","array":["0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"],"field":"percent_complete"},"notes":{"text":"Notes","type":"text","field":"notes"}};this.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard("TASK",{"grid_control":this.grid_control});},this);this.grid_control.elements["task_list"]=null;this.grid_control.clear_cached_datasets=bind(function(retain_sorting){var retain_sorting=(retain_sorting)?true:false;this.current_dataset={};this.current_raw_dataset={};this.current_filter_hash={"all":null,"filter":null,"sorting":null,"group":null};this.current_filter_data={};this.current_sorting={"field":(retain_sorting?this.current_sorting.field:"task_name"),"direction":(retain_sorting?this.current_sorting.direction:"ASC")};this.current_sorted_data={};},this.grid_control);this.grid_control.fetch_raw_data=bind(function(use_archived_rows){var use_archived_rows=(use_archived_rows===true)?true:false;if(this.dashboard){this.raw_data={};this.group_map={};this.contact_map={};var keys=Basis.keys(this.dashboard.resource_linker[this.task_list_resource_id]["associated_resources"]["TASK"]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]){if((!use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]!="yes"))||(use_archived_rows&&(this.dashboard.resource_linker[keys[i]]["archived"]=="yes"))){this.raw_data[keys[i]]=this.dashboard.resource_linker[keys[i]]["misc_vars"];this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);this.contact_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["CONTACT.V2"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={};to_post["task_list_resource_id"]=this.task_list_resource_id;var as=new Basis.ajax_scaffold;as.alias="get_raw_task_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];this.list.contact_map=raw_data["contact_map"];window.status="Done";};return as.post({"to_post":to_post});}},this.grid_control);this.grid_control.refresh_table=bind(function(){var with_selected=SELECT();Basis.select_add_option(with_selected,""," ");if(this.dashboard.resource_linker[this.task_list_resource_id]["resource_access"]["full_access"]){Basis.select_add_options(with_selected,{"archive":"Archive Tasks"});Basis.select_add_options(with_selected,{"unarchive":"Un-Archive Tasks"});}
Basis.select_add_options(with_selected,{"print_line_item":"Print - Line Item"});Basis.select_add_options(with_selected,{"print_detail":"Print - Detail"});if(this.dashboard.resource_linker[this.task_list_resource_id]["resource_access"]["full_access"]){Basis.select_add_options(with_selected,{"delete":"Delete Tasks"});}
Basis.signal_handler.connect(with_selected,"onchange",bind(partial(function(element){switch(element.options[element.selectedIndex].value){case"archive":this.archive_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"delete":this.delete_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;case"print_line_item":case"print_detail":if(this.currently_selected.length>0){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK&mode="+((element.options[element.selectedIndex].value=="print_line_item")?"line_item":"detail")+"&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON(this.currently_selected)));window.onbeforeunload=null;window.location.href=url;}
Basis.select_select_item_by_value(element,"");break;case"unarchive":this.unarchive_resources(this.currently_selected);Basis.select_select_item_by_value(element,"");break;}},with_selected),this),false);var table=DIV({"style":"text-align: right;"},DIV(null,STRONG(null,"With selected: "),with_selected),TABLE({"class":this.root_class_name+".table"},TBODY()));var fields=this.fields_to_display[this.current_mode];var header=TR();header.appendChild(TD({"width":"1"}));header.appendChild(TD({"width":"1"}));if(fields){for(var i=0;i<fields.length;i++){var td=TD({"width":(Math.round((1/fields.length)*100)+"%"),"class":this.root_class_name+".table.field_name"},this.get_master_field_title(fields[i]));td.field=fields[i];if(fields[i]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
Basis.signal_handler.connect(td,"onclick",bind(partial(function(td){if(this.current_sorting.field==td.field){this.current_sorting.direction=(this.current_sorting.direction=="ASC")?"DESC":"ASC";}else{this.current_sorting.field=td.field;this.current_sorting.direction="ASC";}
this.refresh();},td),this));header.appendChild(td);}}
header.appendChild(TD({"width":"1"}));var select_all=INPUT({"type":"checkbox"});Basis.signal_handler.connect(select_all,"onclick",bind(partial(function(select_all){var checks=MochiKit.DOM.getElementsByTagAndClassName("input",this.root_class_name+".row.checkbox");for(var x=0;x<checks.length;x++){checks[x].checked=select_all.checked;Basis.signal_handler.execute_interactive_element(checks[x],"onclick");}},select_all),this),false);header.appendChild(TD({"width":"1","align":"center"},select_all));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(header);var rows=Basis.keys(this.current_dataset);if(rows){for(var i=0;i<rows.length;i++){var resource_id=rows[i];var tr=TR();var row=this.current_dataset[resource_id];var color_coding=null;if(this.get_master_field_data("priority",row,true)=="(1) High Priority"){color_coding=(this.root_class_name+".table.row.color_coding.high_priority");}
if(this.get_master_field_data("status",row,true)=="Completed"){color_coding=(this.root_class_name+".table.row.color_coding.completed");}
if(color_coding){MochiKit.DOM.addElementClass(tr,color_coding);}
var edit_button=IMG({"src":this.dashboard.get_view_association_icon("TASK"),"style":"cursor: pointer;"});Basis.signal_handler.connect(edit_button,"onclick.greedy",bind(partial(function(resource_id,task_list){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.tiles[index].task_list=task_list;this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id,this),this.dashboard),false);tr.appendChild(TD({"align":"right"},((this.current_page-1)*this.num_per_page)+i+1));tr.appendChild(TD(null,edit_button));if(fields){for(var x=0;x<fields.length;x++){var td=TD(null,this.get_master_field_data(fields[x],row));if(fields[x]==this.current_sorting.field){MochiKit.DOM.addElementClass(td,this.root_class_name+".table.sorted_column");}
tr.appendChild(td);}}
var permissions_icon=IMG({"src":this.dashboard.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png"),"style":""});if(this.dashboard.resource_linker[resource_id]["resource_access"]["full_access"]){permissions_icon.style.cursor="pointer";Basis.signal_handler.connect(permissions_icon,"onclick",bind(partial(function(resource_id,lock_icon){this.dashboard.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,permissions_icon),this),false);Basis.attach_tooltip(permissions_icon,("Manage custom permissions for "+this.dashboard.resource_display_text(resource_id)),null,false);}else{Basis.attach_tooltip(permissions_icon,"You don't have permission to manage this!",null,false,true);}
tr.appendChild(TD({"style":"width: 16px;"},permissions_icon));var row_selector=INPUT({"type":"checkbox","class":this.root_class_name+".row.checkbox"});row_selector.resource_id=resource_id;row_selector.checked=this.is_selected(row_selector.resource_id);if(row_selector.checked){MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}
Basis.signal_handler.connect(row_selector,"onclick",bind(partial(function(element){var tr=element.parentNode.parentNode;if(element.checked){this.select_resource(element.resource_id);MochiKit.DOM.addElementClass(tr,this.root_class_name+".table.tr.selected");}else{this.unselect_resource(element.resource_id);MochiKit.DOM.removeElementClass(tr,this.root_class_name+".table.tr.selected");}},row_selector),this),false);tr.appendChild(TD({"align":"center"},row_selector));MochiKit.DOM.getElementsByTagAndClassName("tbody",null,table)[0].appendChild(tr);Basis.signal_handler.connect(tr,"onmouseenter",partial(function(tr,list){MochiKit.DOM.addElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));Basis.signal_handler.connect(tr,"onmouseleave",partial(function(tr,list){MochiKit.DOM.removeElementClass(tr,list.root_class_name+".table.tr.mouseover");},tr,this));}}
MochiKit.DOM.swapDOM(this.elements["list_output"],table);this.elements["list_output"]=table;},this.grid_control);this.grid_control.refresh_title=bind(function(){Basis.remove_children(this.elements["list_title"]);this.elements["list_title"].appendChild(SPAN(null,STRONG(null,"Task List - "),null));},this.grid_control);this.grid_control.render_resource=bind(function(resource_id,mode){return DIV(null,"delete me");},this.grid_control);},render:function(view){this.grid_control.can_add_new_resource=(this.grid_control.dashboard.resource_linker[this.grid_control.task_list_resource_id]["resource_access"]["full_access"])?true:false;this.grid_control.render(view);}};;Basis.discussion_board=function(){this.__init__();};Basis.discussion_board.prototype={__init__:function(){this.session_id=null;this.post_url=null;this.resource_id=null;this.load_offset=null;this.logged_in=false;this.is_admin=false;this.is_moderated=false;this.is_collapsible=true;this.mode="single-thread";this.content_element=null;this.board=null;this.topics={};this.title="Discussion Board";this.debug=true;this.cookie_name="";this.custom_ajax_actions={};this.set_up_custom_ajax_actions();},compile:function(){switch(this.mode){case"single-thread":var a=this.custom_ajax_action("get_topics_and_comments");a.addCallback(MochiKit.Base.bind(function(){var element=MochiKit.DOM.getElement(this.content_element);if(element){Basis.remove_element(this.board);if(this.is_admin){var moderate=SELECT({"name":"moderate"});Basis.select_add_options(moderate,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(moderate,(this.is_moderated?"yes":"no"));Basis.make_text_element_dropdown(moderate,null,{"field":this.resource_id,"custom_action":"discussion_board.perform_moderation","after_success":MochiKit.Base.bind(MochiKit.Base.partial(function(moderate){this.is_moderated=(moderate.options[moderate.selectedIndex].value=="yes")?true:false;this.compile();},moderate),this)});moderate=SPAN(null,["Do you want this discussion moderated? ",moderate]);}else{var moderate=null;}
var moderate=null;this.board=DIV({"style":"padding: 10px;"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"300"},H3(null,this.title+" ("+this.count_comments()+" comment"+((this.count_comments()>1)?"s":"")+")")),TD({"style":"vertical-align: top;"},moderate)))));for(var topic_id in this.topics){if(typeof(this.topics[topic_id])!="function"){var node=this.render_topic(topic_id);this.board.appendChild(node);}}
if(this.is_admin){var new_comment=DIV({"class":"Basis.discussion_board.new_comment"},H3(null,"Add New Comment"),this.comment_form());this.board.appendChild(new_comment);}
MochiKit.DOM.insertSiblingNodesAfter(element,this.board);if(this.is_collapsible){for(var topic_id in this.topics){if(typeof(this.topics[topic_id])!="function"){Basis.convert_nested_elements_to_tree(topic_id,"div",true,false,"Basis.discussion_board.comment");}}}
Basis.updated_live_dom();}},this));break;case"threaded":break;}},comment_form:function(parent_id,comment_id,blank){if(parent_id&&comment_id&&!blank){var subject=(this.topics[parent_id]["comments"][comment_id])?this.topics[parent_id]["comments"][comment_id]["subject"]:"";var comment=(this.topics[parent_id]["comments"][comment_id])?this.topics[parent_id]["comments"][comment_id]["comment"]:"";}else{var subject="";var comment="";}
var subject_field=INPUT({"type":"text","name":"subject","style":"width: 450px;","value":subject});var comment_field=TEXTAREA({"name":"comment","style":"width: 450px; height: 75px;"},comment);var save_button=INPUT({"type":"button","value":"Save"});Basis.signal_handler.connect(save_button,"onclick",MochiKit.Base.bind(function(){if(comment_field.value){this.custom_ajax_action("save_comment",subject_field.value,comment_field.value,comment_id,this.resource_id,parent_id,(!blank?false:true));}else{alert("Your comment is empty!");}},this),false);if(parent_id){var cancel_button=INPUT({"type":"button","value":"Cancel"});}else{var cancel_button=null;}
var form=DIV({"class":"Basis.discussion_board.comment_form"},TABLE({"width":"100%"},TBODY(null,TR(null,TD({"width":"75"},"Subject:"),TD(null,subject_field)),TR(null,TD({"width":"75"},"Comment:"),TD(null,comment_field)),TR(null,TD({"width":"75"}," "),TD(null,save_button,cancel_button)))));if(parent_id){Basis.signal_handler.connect(cancel_button,"onclick",MochiKit.Base.bind(function(){if(confirm("Are you sure you want to cancel this comment?")){this.board.topics[parent_id]["comments"][comment_id].replying=false;this.board.topics[parent_id]["comments"][comment_id].editing=false;Basis.remove_element(this.button.parent_form);}},{"button":cancel_button,"board":this}),false);cancel_button.parent_form=form;}
return form;},custom_ajax_action:function(alias){if(alias&&this.custom_ajax_actions[alias]&&(typeof(this.custom_ajax_actions[alias])=="function")){var args=[];for(var x=1;x<arguments.length;x++){args[x-1]=arguments[x];}
return this.custom_ajax_actions[alias].apply(null,args);}},count_comments:function(){var num=0;for(var i in this.topics){if(typeof(this.topics[i])!="function"){num+=Basis.array_length(this.topics[i]["comments"]);}}
return num;},render_comment:function(topic_id,comment_id){if(topic_id&&comment_id&&this.topics[topic_id]&&this.topics[topic_id]["comments"][comment_id]){var data=this.topics[topic_id]["comments"][comment_id];var date=new Date(Basis.parse_number(data["timestamp"])*1000);var comment_text=data["comment"]?data["comment"]:"";var avatar=data["avatar"]?IMG({"src":data["avatar"]}):null;if(this.logged_in){var reply_button=INPUT({"type":"button","value":"Reply to this"});Basis.signal_handler.connect(reply_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(anchor){if(!this.topics[topic_id]["comments"][comment_id].editing&&!this.topics[topic_id]["comments"][comment_id].replying){var form=this.comment_form(topic_id,comment_id,true);var div=anchor.parentNode.parentNode.parentNode.parentNode.parentNode;MochiKit.DOM.insertSiblingNodesAfter(div,form);this.topics[topic_id]["comments"][comment_id].replying=true;}},reply_button),this),false);}else{var reply_button=null;}
if(this.is_admin){var edit_button=INPUT({"type":"button","value":"Edit this"});Basis.signal_handler.connect(edit_button,"onclick",MochiKit.Base.bind(MochiKit.Base.partial(function(anchor){if(!this.topics[topic_id]["comments"][comment_id].editing&&!this.topics[topic_id]["comments"][comment_id].replying){var form=this.comment_form(topic_id,comment_id,false);var div=anchor.parentNode.parentNode.parentNode.parentNode.parentNode;MochiKit.DOM.insertSiblingNodesAfter(div,form);this.topics[topic_id]["comments"][comment_id].editing=true;}},edit_button),this),false);if(this.is_moderated){var approve=SELECT({"name":"approve"});Basis.select_add_options(approve,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(approve,data["approved"]);Basis.make_text_element_dropdown(approve,null,{"field":comment_id,"custom_action":"discussion_board.perform_approval","after_success":MochiKit.Base.bind(function(){},this)});approve=SPAN(null,["Is this comment approved? ",approve]);}else{var archive=null;}
var archive=SELECT({"name":"archive"});Basis.select_add_options(archive,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(archive,data["archived"]);Basis.make_text_element_dropdown(archive,null,{"field":comment_id,"custom_action":"discussion_board.perform_archival","after_success":MochiKit.Base.bind(function(){this.compile();},this)});archive=SPAN(null,["Archive this comment? ",archive]);}else{var edit_button=null;var approve=null;var archive=null;}
var comment=DIV({"id":comment_id,"class":"Basis.discussion_board.comment"},DIV({"class":"Basis.discussion_board.comment_container"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"rowSpan":"4","class":"Basis.discussion_board.avatar","valign":"top"},avatar,DIV(null,(Basis.is_number(data["contact_resource_id"]))?A({"href":Basis.misc_vars.dashboard?("javascript:Basis.misc_vars.dashboard.show_resource("+data["contact_resource_id"]+");"):Basis.preserve_url_path()+"/find_page_by_type.php?type=CONTACT&resource_id="+data["contact_resource_id"]},STRONG(null,data["username"])):STRONG(null,data["username"]))),TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.subject"},data["subject"]))),TR(null,TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.comment_text"},comment_text))),TR(null,TD({"colSpan":"2"},DIV({"class":"Basis.discussion_board.created_by"},"Posted",Basis.nbsp(),Basis.english_timestamp(date,this.load_offset,true)))),TR(null,TD({"colSpan":"2","style":"text-align: right; white-space: nowrap;"},DIV({"class":"Basis.discussion_board.functions"},approve," ",archive," ",edit_button," ",reply_button)))))));return comment;}},render_topic:function(topic_id){var nodes=DIV({"class":"Basis.discussion_board"});if(topic_id&&this.topics[topic_id]&&this.topics[topic_id]["tree"]){this.render_topic_item=MochiKit.Base.bind(function(topic_id,comment_id,node){var element=this.render_comment(topic_id,comment_id);var keys=MochiKit.Base.keys(node);if(keys.length>0){for(var i=0;i<keys.length;i++){var key=keys[i];if(this.topics[topic_id]["comments"][key]){var child=this.render_topic_item(topic_id,key,node[key]);if(element&&child){element.appendChild(child);}}}}
return element;},this);var list=this.topics[topic_id]["tree"];for(var i in list){if(typeof(list[i])!="function"){nodes.appendChild(this.render_topic_item(topic_id,i,list[i]));}}}
return nodes;},set_custom_ajax_action:function(alias,func){if(alias&&func&&(typeof(func)=="function")){this.custom_ajax_actions[alias]=func;}},set_session_variables:function(vars){var to_post=MochiKit.Base.update({},vars);var as=new Basis.ajax_scaffold;as.alias="set_session_variables";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});},set_up_custom_ajax_actions:function(){this.set_custom_ajax_action("get_topics_and_comments",MochiKit.Base.bind(function(){var to_post={};to_post["resource_id"]=this.resource_id?this.resource_id:"";var as=new Basis.ajax_scaffold;as.alias="get_topics_and_comments";as.board=this;as.on_success=function(req){this.board.topics=MochiKit.Base.evalJSON(req.responseText);window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_comment",MochiKit.Base.bind(function(subject,comment,comment_id,resource_id,parent_id,replying){var to_post={};to_post["subject"]=subject?subject:"";to_post["comment"]=comment?comment:"";to_post["comment_id"]=comment_id?comment_id:"";to_post["resource_id"]=resource_id?resource_id:"";to_post["parent_id"]=parent_id?parent_id:"";to_post["replying"]=replying?"true":"false";var as=new Basis.ajax_scaffold;as.alias="save_comment";as.board=this;as.on_success=MochiKit.Base.partial(function(parent_id,req){if(req.responseText=="true"){this.board.compile(parent_id);}else{}
window.status="Done";},parent_id);return as.post({"to_post":to_post});},this));}};;try{if(typeof(Basis)=='undefined'){throw"";}}catch(e){throw"Basis.bcalendar depends on Basis!";}
if(typeof(Basis.bcalendar)=='undefined'){Basis.bcalendar={};}
Basis.bcalendar.NAME='Basis.bcalendar';Basis.bcalendar.VERSION='0.1';Basis.bcalendar.__repr__=function(){return'['+this.NAME+' '+this.VERSION+']';};Basis.bcalendar.toString=function(){return this.__repr__();};Basis.bcalendar=function(){this.__init__();};Basis.bcalendar.instances=[];Basis.bcalendar.prototype={__init__:function(){this.mtend={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31};this.months={1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"};this.container_element;this.variable_name;this.date_element;this.append_to_element;this.month;this.day;this.year;this.original_month;this.original_day;this.original_year;this.loading_events;this.self_id;this.sid;this.events=new Object();this.has_events=false;this.show_selected_day=true;this.visible=false;this.linked_to_dropdown=true;this.logged_in=false;this.class_prefix="bcalendar";this.mode="calendar";this.output="";this.list_id=1;this.duration=0.00;this.index=Basis.bcalendar.instances.length;Basis.bcalendar.instances[this.index]=this;},add_event:function(month,day,year){if(month&&day&&year){var date_parts=this.date_parts((year+"-"+month+"-"+day),true);var to_post=new Object();to_post["date"]=date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];to_post["form_request"]=this.list_id;window.status="Fetching form...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_add_event_form";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.month=month;as.day=day;as.year=year;as.on_success=function(req){var response=req.responseText;if(response){var html=response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" onclick=\""+this.pvar.variable_name+".add_event_post('"+eval(this.year)+"-"+((eval(this.month)<10)?("0"+eval(this.month)):(eval(this.month)))+"-"+((eval(this.day)<10)?("0"+eval(this.day)):(eval(this.day)))+"');\"></div>";var obj=MochiKit.DOM.getElement("add_event");if(!obj){this.popup=Basis.popup({"id":"add_event","html":html,"window_title":"Add Event - "+this.pvar.months[eval(this.month)]+" "+eval(this.day)+", "+eval(this.year)});}else{this.popup.html_container.innerHTML=html;}
window.status="Done";}else{window.status="add_event(): ERROR!";}};as.post({"to_post":to_post});}},add_event_post:function(date){var element=MochiKit.DOM.getElement("add_event");if(element){var form_data=MochiKit.DOM.formContents("form_999999");form_data[0][form_data[0].length]="PHPSESSID";form_data[1][form_data[1].length]=this.sid;form_data[0][form_data[0].length]="date";form_data[1][form_data[1].length]=date;form_data[0][form_data[0].length]="form_request";form_data[1][form_data[1].length]=this.list_id;var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
window.status="Saving event...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_add_event_save";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("add_event");if(obj&&obj.close){obj.close();}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},append_output:function(){if(this.container_element){var element=MochiKit.DOM.getElement(this.container_element);if(element){var temp="";if(this.has_events){temp+="<div>";temp+="  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"margin-bottom: 10px; border: 1px solid #EBEBEB; background-color: #FFFFFF; padding: 10px;\">";temp+="    <tr>";temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".compile();\">Calendar View</span></td>";temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_mode();\">Project List View</span></td>";if(this.logged_in){temp+="      <td width=\"20%\" align=\"center\"><span style=\"cursor: pointer; font-weight: bold;\" onclick=\""+this.variable_name+".tasklist_manage_categories();\"><b>Manage Project Categories</b></td>";}
temp+="    </tr>";temp+="  </table>";temp+="</div>";}
this.output=temp+this.output;element.innerHTML=this.output;Basis.execute_javascript(element);}
if(!this.linked_to_dropdown){element.style.display="block";element.style.position="static";element.style.zIndex=0;}}},bcalendar_td_out:function(element){if(MochiKit.DOM.getElement(element)){MochiKit.DOM.getElement(element).className=MochiKit.DOM.getElement(element).oclass;}},bcalendar_td_over:function(element){if(MochiKit.DOM.getElement(element)){MochiKit.DOM.getElement(element).oclass=MochiKit.DOM.getElement(element).className;MochiKit.DOM.getElement(element).className=this.class_prefix+"_td_over";}},calendar_mode:function(){this.calendar_render();},calendar_render:function(){if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
var tdate=new Date();if(!this.month){this.month=tdate.getMonth()+1;}
if(!this.day){this.day=tdate.getDay();}
if(!this.year){this.year=tdate.getFullYear();}
if(!this.original_month){this.original_month=this.month;}
if(!this.original_day){this.original_day=this.day;}
if(!this.original_year){this.original_year=this.year;}
if(this.variable_name&&(this.date_element||!this.linked_to_dropdown)){if(!MochiKit.DOM.getElement(this.container_element)){if(this.date_element){this.container_element="calendar_"+this.date_element.name+"_"+this.date_element.rrv+"_"+this.date_element.findex;}else{this.container_element="calendar_"+this.variable_name;}}
this.day=1;var grid={0:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},1:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},2:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},3:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},4:{0:"",1:"",2:"",3:"",4:"",5:"",6:""},5:{0:"",1:"",2:"",3:"",4:"",5:"",6:""}};this.output="";if(this.month&&this.day&&this.year){var date_info=this.get_date_info();var t=date_info.day_of_week;var counter=1;if(date_info){for(y=0;y<6;y++){for(x=t;x<7;x++){if(counter<=date_info.days_in_month){grid[y][x]=counter;counter++;}}
t=0;}}
if((this.month-1)<=0){var pmonth=12;var pyear=this.year-1;}else{var pmonth=this.month-1;var pyear=this.year;}
if((this.month+1)>=13){var nmonth=1;var nyear=this.year+1;}else{var nmonth=this.month+1;var nyear=this.year;}
this.output+="<table id=\"bcalendar_table_"+this.variable_name+"\" class=\""+this.class_prefix+"_table\">\n";this.output+="  <tbody>";this.output+="    <tr>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_nav_left\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+pmonth+","+pyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/prev_on.gif\" border=\"0\"></a></td>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_month\" class=\""+this.class_prefix+"_month_year\" colspan=\"5\">"+this.months[this.month]+" "+this.year+"</td>\n";this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_nav_right\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".navigate("+nmonth+","+nyear+"); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/next_on.gif\" border=\"0\"></a></td>\n";this.output+="    </tr>\n";this.output+="    <tr class=\""+this.class_prefix+"_tr\">\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Sun</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Mon</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Tue</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Wed</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Thu</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Fri</td>\n";this.output+="      <td class=\""+this.class_prefix+"_header_td\">Sat</td>\n";this.output+="    </tr>\n";var rows=6;if(!grid[5][0]){rows=5;}
for(y=0;y<rows;y++){this.output+="    <tr class=\""+this.class_prefix+"_tr\">\n";for(x=0;x<7;x++){var today=new Date();var td_js="";if((today.getDate()==grid[y][x])&&((today.getMonth()+1)==this.month)&&(today.getFullYear()==this.year)){today="_today";}else{if(!grid[y][x]){today="_outside_month";}else{today="";}}
if(this.show_selected_day){if(this.date_element){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){if((month_element.options[month_element.selectedIndex].value==this.month)&&(day_element.options[day_element.selectedIndex].text==grid[y][x])&&(year_element.options[year_element.selectedIndex].text==this.year)){today="_selected";}}}else{if((this.original_month==this.month)&&(this.original_year==this.year)&&(this.original_day==grid[y][x])){today="_selected";}}}
if(grid[y][x]){td_js=" onmouseover=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_over(this); }\" onmouseout=\"if ("+this.variable_name+") {"+this.variable_name+".bcalendar_td_out(this); }\" ";if(this.linked_to_dropdown){td_js+=" onclick=\"if ("+this.variable_name+") {"+this.variable_name+".update_date_element('"+this.month+"','"+grid[y][x]+"','"+this.year+"',this); }\" ";}}
var add_event="";if(this.logged_in&&grid[y][x]){var add_event="<a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".add_event('"+this.month+"','"+grid[y][x]+"','"+this.year+"'); }\" onmouseover=\"window.status = 'Done'; return true;\"><img src=\"images/images/add_date_small.gif\" border=\"0\" style=\"cursor: pointer;\"></a>";}
this.output+="      <td id=\"bcalendar_table_"+this.variable_name+"_"+grid[y][x]+"\" class=\""+this.class_prefix+"_td"+today+"\" "+td_js+"><table width=\"100%\"><tr><td><span class=\""+this.class_prefix+"_td_date\">"+grid[y][x]+"</span></td><td align=\"right\">"+add_event+"</td></tr></table></td>\n";}
this.output+="    </tr>\n";}
this.output+="  </tbody>";this.output+="</table>";}
if(!MochiKit.DOM.getElement(this.container_element)){var container_element=new MochiKit.DOM.DIV({"id":this.container_element,"class":this.class_prefix+"_container"},null);if(this.date_element){var element=MochiKit.DOM.getElement("calendar_"+this.date_element.rrv+"_"+this.date_element.findex+"_placeholder");}else if(this.append_to_element&&MochiKit.DOM.getElement(this.append_to_element)){var element=MochiKit.DOM.getElement(this.append_to_element);}else{var element=document.body;}
element.appendChild(container_element);}
this.append_output();if(!this.date_element&&this.has_events){this.tasklist_get_categories();this.date_get_events(this.year+"-"+this.month);}
return this.output;}else{return false;}},compile:function(){switch(this.mode){case"calendar":this.calendar_mode();break;case"tasklist":this.tasklist_mode();break;default:this.calendar_mode();break;}},date_parts:function(date,padded){if(date){var date_parts=date.split("-");var year=date_parts[0];var month=date_parts[1];var day=date_parts[2];if(year&&(year.substring(0,1)=="0")){year=year.substring(1);}
if(month&&(month.substring(0,1)=="0")){month=month.substring(1);}
if(day&&(day.substring(0,1)=="0")){day=day.substring(1);}
if(year){year=eval(year);}
if(month){month=eval(month);}
if(day){day=eval(day);}
if(!padded){return{"y":year,"m":month,"d":day};}else{return{"y":(year<10)?("0"+year):(year),"m":(month<10)?("0"+month):(month),"d":(day<10)?("0"+day):(day)};}}},date_get_events:function(date){if(date&&!this.linked_to_dropdown){window.status="Fetching calendar events...";var to_post=new Object();to_post["date"]=date;to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="calendar_date_get_events";as.sid=this.sid;as.url=this.self_url;as.date=date;as.pvar=this;as.on_success=function(req){var response=req.responseText;if(response){this.pvar.events=MochiKit.Base.evalJSON(req.responseText);var date_parts=this.pvar.date_parts(this.date);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];if(day=="0"){day=null;}
if(year&&month&&!day){var date_info=this.pvar.get_date_info();for(x=1;x<=date_info["days_in_month"];x++){this.pvar.date_render_events(year+"-"+month+"-"+x);}}else{this.pvar.date_render_events(date);}
window.status="Done";}else{window.status="date_get_events(): ERROR!";}};as.post({"to_post":to_post});}},date_render_events:function(date,total_show,update_html){var date_parts=this.date_parts(date,true);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];date=year+"-"+month+"-"+day;if(this.events[date]){var events=this.events[date];if(events){var output="";var x=0;var total=0;var trim=false;var trimmed=false;if(!total_show){total_show=4;trim=true;}
if((year==this.year)&&(month==this.month)){for(var i in events){if(events[i]&&events[i]["event"]){if(x<total_show){var event_title=events[i]["event"];if(trim&&(event_title.length>15)){event_title=(event_title.substring(0,12)+"...");trimmed=true;}
output+="<div id=\"bcalendar_event_"+events[i]["id"]+"\" class=\""+this.class_prefix+"_event\" style=\"cursor: pointer;\" onmouseover=\"this.className='"+this.class_prefix+"_event_over';\" onmouseout=\"this.className='"+this.class_prefix+"_event';\" onclick=\""+this.variable_name+".event_render_details('"+events[i]["id"]+"');\">"+event_title+"</div>\n";x++;}
total++;}}
if(output&&(total>x)){output+="<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">..."+(total-x)+" more</a></div>";}else{if(trimmed){output+="<div class=\"bcalendar_event\" align=\"right\"><a href=\"javascript:if ("+this.variable_name+") {"+this.variable_name+".date_render_all_events('"+date+"'); }\" onmouseover=\"window.status = 'Done'; return true;\">...more</a></div>";}}
if((update_html==null)||(update_html==true)){var element=MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day));if(element){element.innerHTML+=output;}}}
return output;}}},date_render_all_events:function(date){if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
var date_parts=this.date_parts(date);var year=date_parts["y"];var month=date_parts["m"];var day=date_parts["d"];var events=this.date_render_events(date,1000,false);var html=events;var to_pos=MochiKit.Style.getElementPosition(MochiKit.DOM.getElement("bcalendar_table_"+this.variable_name+"_"+eval(day)));var obj=MochiKit.DOM.getElement("all_events");if(!obj){this.all_events_popup=Basis.popup({"id":"all_events","html":html,"center_element":false,"move_to":to_pos,"window_title":(this.months[eval(month)]+" "+eval(day)+", "+eval(year))});}else{this.all_events_popup.html_container.innerHTML=html;}},delete_event:function(event_id){if(confirm('Are you sure you want to delete this event?')==true){window.status="Deleting calendar event...";var to_post=new Object();to_post["event_id"]=event_id;var as=new Basis.ajax_scaffold;as.alias="calendar_date_delete_event";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){if(MochiKit.DOM.getElement("add_event")){MochiKit.DOM.removeElement("add_event");}
if(MochiKit.DOM.getElement("event_detail")){MochiKit.DOM.removeElement("event_detail");}
if(MochiKit.DOM.getElement("all_events")){MochiKit.DOM.removeElement("all_events");}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},edit_event:function(event_id,date){if(event_id&&date){var date_parts=this.date_parts(date,true);var to_post=new Object();to_post["event_id"]=event_id;to_post["date"]=date_parts["y"]+"-"+date_parts["m"]+"-"+date_parts["d"];window.status="Fetching form...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_edit_event_form";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.event_id=event_id;as.on_success=function(req){var response=req.responseText;if(response){var html=response+"<div style=\"text-align: right\"><input type=\"button\" value=\"Save\" onclick=\""+this.pvar.variable_name+".save_event_post('"+this.event_id+"');\"></div>";var obj=MochiKit.DOM.getElement("event_detail");if(!obj){this.pvar.event_detail_popup=Basis.popup({"id":"event_detail","html":html,"window_title":"Edit Event"});}else{this.pvar.event_detail_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);Basis.center_element(obj,true);}
window.status="Done";}else{window.status="edit_event(): ERROR!";}};as.post({"to_post":to_post});}},event_get_details:function(id){if(this.events){for(var date in this.events){for(var i in this.events[date]){if(this.events[date][i]["id"]&&this.events[date][i]["id"]==id){return this.events[date][i];}}}}
return false;},event_render_details:function(id){var element=MochiKit.DOM.getElement("bcalendar_event_"+id);if(element){var html="<table cellpadding=\"5\">";var details=this.event_get_details(id);if(details&&details["assigned_date"]&&(details["assigned_date"]!="0000-00-00")){var date_parts=this.date_parts(details["assigned_date"]);var event_year=date_parts["y"];var event_month=date_parts["m"];var event_day=date_parts["d"];}
if(details&&details["event"]){html+="<tr><td><b>Name:</b></td><td>"+details["event"]+"</td></tr>\n";}
if(details&&details["category_id"]&&this.tasklist_categories&&this.tasklist_categories[details["category_id"]]){html+="<tr><td><b>Project:</b></td><td>"+this.tasklist_categories[details["category_id"]]+"</td></tr>\n";}
if(details&&details["due_date"]&&(details["due_date"]!="0000-00-00")){var date_parts=this.date_parts(details["due_date"]);var due_year=date_parts["y"];var due_month=date_parts["m"];var due_day=date_parts["d"];html+="<tr><td><b>Due Date:</b></td><td>"+this.months[due_month].substring(0,3)+" "+due_day+", "+due_year+"</td></tr>\n";}
if(details&&details["notes"]){html+="<tr><td><b>Notes:</b></td><td>"+details["notes"].replace(/\n/g,"<br>")+"</td></tr>\n";}
if(details&&details["notes2"]){html+="<tr><td><b>More notes:</b></td><td>"+details["notes2"].replace(/\n/g,"<br>")+"</td></tr>\n";}
html+="</table>";var delete_button="";var edit_button="";if(this.logged_in){edit_button="<input type=\"button\" value=\"Edit\" onclick=\""+this.variable_name+".edit_event('"+id+"','"+details["assigned_date"]+"');\">";delete_button="<input type=\"button\" value=\"Delete\" onclick=\""+this.variable_name+".delete_event('"+id+"');\">";}
html+="<div align=\"right\">"+edit_button+"&nbsp;"+delete_button+"</div>";var obj=MochiKit.DOM.getElement("event_detail");if(!obj){this.event_detail_popup=Basis.popup({"id":"event_detail","html":html,"center_element":false,"move_to":MochiKit.Style.getElementPosition(element),"window_title":"Event Detail"});}else{this.event_detail_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));}}},format_date_short:function(date_text){if(date_text){if(date_text!="0000-00-00"){var date_parts=this.date_parts(date_text);var y=date_parts["y"];var m=date_parts["m"];var d=date_parts["d"];return this.months[m].substring(0,3)+" "+d+", "+y;}else{return"&nbsp;";}}
return"&nbsp;";},format_date_long:function(date_text){if(date_text){if(date_text!="0000-00-00"){var date_parts=this.date_parts(date_text);var y=date_parts["y"];var m=date_parts["m"];var d=date_parts["d"];return this.months[m]+" "+d+", "+y;}else{return"&nbsp;";}}
return"&nbsp;";},get_date_info:function(){this.month=eval(this.month);this.day=eval(this.day);this.year=eval(this.year);var mtend=this.mtend[this.month];if((this.month==2)&&((this.year%4)==0)){mtend++;}
if(this.day<(mtend+1)){var c=new Date();c.setFullYear(this.year,(this.month-1),this.day);return{"day_of_week":c.getDay(),"days_in_month":mtend};}else{return false;}},navigate:function(m,y){if(!this.date_element){if(MochiKit.DOM.getElement("add_event")&&MochiKit.DOM.getElement("add_event").close){MochiKit.DOM.getElement("add_event").close();}
if(MochiKit.DOM.getElement("event_detail")&&MochiKit.DOM.getElement("event_detail").close){MochiKit.DOM.getElement("event_detail").close();}
if(MochiKit.DOM.getElement("all_events")&&MochiKit.DOM.getElement("all_events").close){MochiKit.DOM.getElement("all_events").close();}}
this.month=m;this.year=y;this.compile();if(MochiKit.DOM.getElement(this.container_element)){MochiKit.DOM.getElement(this.container_element).innerHTML=this.output;Basis.execute_javascript(this.container_element);}
if(this.date_element){var info=this.get_date_info();var days_in_month=info["days_in_month"];var element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);if(element){if(days_in_month!=element.options.length){var sindex=element.selectedIndex;element.options.length=0;for(var x=0;x<days_in_month;x++){element.options[x]=new Option(x+1,x);}
if(sindex){element.selectedIndex=sindex;}}}}},save_event_post:function(id){var element=MochiKit.DOM.getElement("event_detail");if(element){var form_data=MochiKit.DOM.formContents("form_888888");form_data[0][form_data[0].length]="PHPSESSID";form_data[1][form_data[1].length]=this.sid;form_data[0][form_data[0].length]="id";form_data[1][form_data[1].length]=id;var to_post=new Object();for(var i in form_data[0]){if(typeof(form_data[0][i])!="function"){to_post[form_data[0][i]]=form_data[1][i];}}
window.status="Saving event...";var as=new Basis.ajax_scaffold;as.alias="calendar_date_edit_event_save";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("event_detail");if(obj&&obj.close){obj.close();}
this.pvar.compile();window.status="Done";};as.post({"to_post":to_post});}},tasklist_edit_task:function(task_id){},tasklist_get_categories:function(on_complete){window.status="Fetching tasklist events...";if(!on_complete){on_complete=function(){};}
this.on_complete=on_complete;var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_get_categories";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){this.pvar.tasklist_categories=MochiKit.Base.evalJSON(req.responseText);var obj=MochiKit.DOM.getElement("category_id_999999");if(obj){MochiKit.Logging.log("category_id_999999");}
var obj=MochiKit.DOM.getElement("category_id_888888");if(obj){MochiKit.Logging.log("category_id_888888");}
this.pvar.on_complete();window.status="Done";};as.post({"to_post":to_post});},tasklist_get_events:function(on_complete){window.status="Fetching tasklist events...";if(!on_complete){on_complete=function(){};}
this.on_complete=on_complete;var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_get_events";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){this.pvar.tasklist_events=MochiKit.Base.evalJSON(req.responseText);this.pvar.on_complete();window.status="Done";};as.post({"to_post":to_post});},tasklist_manage_categories:function(){var obj=MochiKit.DOM.getElement("tasklist_manage_categories");if(obj&&obj.close){obj.close();}else{window.status="Fetching tasklist categories...";var to_post=new Object();to_post["list_id"]=this.list_id;var as=new Basis.ajax_scaffold;as.alias="tasklist_manage_categories";as.sid=this.sid;as.url=this.self_url;as.pvar=this;as.on_success=function(req){var obj=MochiKit.DOM.getElement("tasklist_manage_categories");if(!obj){this.tasklist_manage_categories_popup=Basis.popup({"id":"tasklist_manage_categories","html":req.responseText,"window_title":"Manage Project Categories"});}else{this.tasklist_manage_categories_popup.html_container.innerHTML=html;Basis.execute_javascript(obj);MochiKit.Style.setElementPosition(obj,MochiKit.Style.getElementPosition(element));}
window.status="Done";};as.post({"to_post":to_post});}},tasklist_mode:function(){this.output="<img src=\"images/images/ajax_loading.gif\">";this.append_output();this.tasklist_get_categories(function(){this.tasklist_get_events(function(){this.tasklist_render_events();this.append_output();});});},tasklist_render_events:function(){if(this.tasklist_events&&this.tasklist_categories){this.output="<style>";this.output+="";this.output+="  .tasklist_row {";this.output+="  ";this.output+="    border: 1px solid #EBEBEB;";this.output+="    margin-bottom: 3px;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  .tasklist_row td {";this.output+="  ";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-left: 0px;";this.output+="    border-right: 0px;";this.output+="    background-color: #FFFFFF;";this.output+="    color: #626262;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  ";this.output+="  .tasklist_row td.left {";this.output+="  ";this.output+="    border-left: inherit;";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-right: 0px;";this.output+="  ";this.output+="  }";this.output+="  ";this.output+="  .tasklist_row td.right {";this.output+="  ";this.output+="    border-right: inherit;";this.output+="    border-top: inherit;";this.output+="    border-bottom: inherit;";this.output+="    border-left: 0px;";this.output+="  ";this.output+="  }";this.output+="";this.output+="</style>";for(var i in this.tasklist_categories){if(typeof(this.tasklist_categories[i])!="function"){this.output+="<div style=\"display: inline; font-weight: bold; padding-right: 5px;\">"+this.tasklist_categories[i]+"</div>";if(this.logged_in){this.output+="<img src=\"images/images/add_date_small.gif\">";}
this.output+="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">";this.output+="  <tr>";this.output+="    <td width=\"18\" style=\"vertical-align: top; padding-top: 5px;\"><img border=\"0\" id=\""+this.variable_name+"_"+i+"_icon\" src=\"images/images/tree-node-open-end.gif\" style=\"cursor: pointer;\" width=\"18\" height=\"18\" onclick=\"Basis.toggle_visible('"+this.variable_name+"_"+i+"_td'); (Basis.is_visible('"+this.variable_name+"_"+i+"_td')) ? (this.src = 'images/images/tree-node-open-end.gif') : (this.src = 'images/images/tree-node-end.gif');\"></td>";this.output+="    <td id=\""+this.variable_name+"_"+i+"_td\" style=\"padding: 5px;\">";this.output+="      <table border=\"0\" cellpadding=\"5\" width=\"100%\" style=\"border-spacing: 0px 5px;\" class=\"\">";this.output+="        <tr class=\"tasklist_row\">";this.output+="          <td width=\"100\" class=\"left\"><b>Date</b></td>";this.output+="          <td><b>Task Name</b></td>";this.output+="          <td width=\"100\"><b>Due</b></td>";this.output+="          <td width=\"125\"><b>Assigned To</b></td>";this.output+="          <td width=\"125\"><b>Status</b></td>";this.output+="          <td width=\"100\" align=\"center\"><b>More Detail</b></td>";this.output+="          <td width=\"100\" align=\"center\" class=\"right\"><b>Archive Task</b></td>";this.output+="        </tr>";for(var j in this.tasklist_events[i]){if(typeof(this.tasklist_events[i][j])!="function"){for(var k in this.tasklist_events[i][j]){if(this.tasklist_events[i][j][k]==""){this.tasklist_events[i][j][k]="&nbsp;";}}
this.output+="        <tr class=\"tasklist_row\">";this.output+="          <td width=\"100\" class=\"left\">"+this.format_date_long(this.tasklist_events[i][j]["assigned_date"])+"</td>";this.output+="          <td>"+this.tasklist_events[i][j]["event"]+"</td>";this.output+="          <td width=\"100\">"+this.format_date_long(this.tasklist_events[i][j]["due_date"])+"</td>";this.output+="          <td width=\"125\">"+this.tasklist_events[i][j]["assigned_to"]+"</td>";this.output+="          <td width=\"125\">"+this.tasklist_events[i][j]["status"]+"</td>";this.output+="          <td width=\"100\" align=\"center\">m.detail</td>";this.output+="          <td width=\"100\" align=\"center\" class=\"right\">a.task</td>";this.output+="        </tr>";}}
this.output+="      </table>";this.output+="    </td>";this.output+="  </tr>";this.output+="</table>";}}}},toggle:function(button_element){if(MochiKit.DOM.getElement(this.container_element)&&MochiKit.DOM.getElement(button_element)){if(!this.visible){this.month=this.original_month;this.day=this.original_day;this.year=this.original_year;this.compile();var from_pos=MochiKit.Style.getElementPosition(button_element);var from_dim=MochiKit.Style.getElementDimensions(button_element);var to_dim=MochiKit.Style.getElementDimensions(this.container_element);var to_pos=new Object;to_pos.x=from_pos.x+from_dim.w+5;to_pos.y=from_pos.y-to_dim.h;if(MochiKit.DOM.isChildNode(button_element,"add_event")){var minus_pos=MochiKit.Style.getElementPosition("add_event");to_pos.x-=minus_pos.x;to_pos.y-=minus_pos.y;}else if(MochiKit.DOM.isChildNode(button_element,"event_detail")){var minus_pos=MochiKit.Style.getElementPosition("event_detail");to_pos.x-=minus_pos.x;to_pos.y-=minus_pos.y;}
MochiKit.Style.setElementPosition(this.container_element,to_pos);}
if(!this.visible){this.visible=true;}else{this.visible=false;}
MochiKit.DOM.getElement(this.container_element).style.display=(MochiKit.DOM.getElement(this.container_element).style.display=="none")?"inline":"none";}},update_calendar:function(){if(this.date_element&&this.date_element.name&&this.date_element.rrv){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){this.month=month_element.options[month_element.selectedIndex].value;this.day=day_element.options[day_element.selectedIndex].text;this.year=year_element.options[year_element.selectedIndex].text;this.original_month=this.month;this.original_day=this.day;this.original_year=this.year;this.compile();}}},update_date_element:function(month,day,year,button_element){if(this.date_element&&this.date_element.name&&this.date_element.rrv&&month&&day&&year){var month_element=MochiKit.DOM.getElement(this.date_element.name+"_month_"+this.date_element.rrv);var day_element=MochiKit.DOM.getElement(this.date_element.name+"_day_"+this.date_element.rrv);var year_element=MochiKit.DOM.getElement(this.date_element.name+"_year_"+this.date_element.rrv);if(month_element&&day_element&&year_element){for(var i in month_element.options){if((month_element.options[i])&&(month_element.options[i].value)&&(month_element.options[i].value==month)){month_element.options[i].selected=true;this.original_month=month_element.options[i].value;}}
for(var i in day_element.options){if((day_element.options[i])&&(day_element.options[i].text)&&(day_element.options[i].text==day)){day_element.options[i].selected=true;this.original_day=day_element.options[i].text;}}
for(var i in year_element.options){if((year_element.options[i])&&(year_element.options[i].text)&&(year_element.options[i].text==year)){year_element.options[i].selected=true;this.original_year=year_element.options[i].text;}}
if(button_element&&MochiKit.DOM.getElement(button_element)){this.toggle(button_element);}}}}};;Basis.color_chooser_popup=function(initial_hex,insert_after){var color_chooser=new Basis.color_chooser();color_chooser.set_color_from_hex(initial_hex);var popup=DIV({"class":"bcalendar_container","style":"position: absolute; top: 0px; left: 0px; display: block;"});popup.color_chooser=color_chooser;popup.insert_after=insert_after;popup.compile=bind(function(){Basis.remove_children(this);this.color_chooser.compile();this.color_chooser.elements["container"].style.display="";this.color_chooser.update_handles();this.color_chooser.on_change();document.body.appendChild(this.color_chooser.elements["container"]);Basis.updated_live_dom();},popup);return popup;};Basis.CSS=function(){this.__init__();};Basis.CSS.prototype={__init__:function(){this.css={};this.selectors={};this.advanced_fields=false;},compile:function(){this.css=Basis.is_object(this.css)?this.css:{};var save_button=INPUT({"type":"button","value":"Save All Changes"});Basis.signal_handler.connect(save_button,"onclick",bind(function(){if(Basis.misc_vars.dashboard){Basis.misc_vars.dashboard.custom_ajax_action("save_site_custom_css",this.get_raw_css(),this.get_css());}},this),false);var menu_content=TD({"width":"181"});var css_content=DIV();var advanced_fields=INPUT({"type":"checkbox"});advanced_fields.checked=this.advanced_fields?true:false;MochiKit.Signal.connect(advanced_fields,"onclick",partial(function(advanced_fields,css_options,css_content){css_options.advanced_fields=advanced_fields.checked;Basis.remove_children(css_content);Basis.signal_handler.execute_interactive_element(css_options.menu.menu_items[css_options.menu.currently_selected].element,"onclick");},advanced_fields,this,css_content));var output=TABLE({"cellpadding":"0","cellspacing":"0","class":"Basis\.CSS"},TBODY(null,TR(null,menu_content,TD(null,TABLE({"width":"100%","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-left: 20px;"},save_button),TD({"style":"text-align: right;"},"Advanced options? ",advanced_fields)))),css_content))));var menu_items=DIV({"class":"Basis.CSS.menu"});this.menu=new Basis.simple_css_menu();;for(var i in this.selectors){if(i&&!Basis.is_function(this.selectors[i])){var menu_item=DIV({"class":"Basis.CSS.menu.item"},this.selectors[i]);menu_items.appendChild(menu_item);this.menu.add_menu_item(menu_item,{"onmouseover_class":"Basis.CSS.menu.item.hover","selected_class":"Basis.CSS.menu.item.selected"});menu_item.css_options=new Basis.CSS.default_options(i,this.css[i.replace(/\\\\/g,"\\")],this.selectors[i]);Basis.signal_handler.connect(menu_item,"onclick",partial(function(menu_item,css_options,css_content){Basis.remove_children(css_content);menu_item.css_options.advanced_fields=css_options.advanced_fields;css_content.appendChild(menu_item.css_options.compile());},menu_item,this,css_content),false);}}
this.menu.compile();Basis.signal_handler.execute_interactive_element(this.menu.menu_items[0].element,"onclick");menu_content.appendChild(menu_items);return output;},get_css:function(){var css={};for(var i=0;i<this.menu.menu_items.length;i++){css[this.menu.menu_items[i].element.css_options.base_selector]=this.menu.menu_items[i].element.css_options.css;}
return css;},get_raw_css:function(){var css="";for(var i=0;i<this.menu.menu_items.length;i++){css+=this.menu.menu_items[i].element.css_options.get_css();}
return css;}};Basis.CSS.default_options=function(base_selector,css,name){this.__init__(base_selector,css,name);};Basis.CSS.default_options.prototype={__init__:function(base_selector,css,name){this.css=css?css:{};this.name=name?name:base_selector;this.base_selector=base_selector?base_selector:"";this.preview_element=null;this.advanced_fields=false;},bind_default_action:function(field,css_property,optional_evaluation_function){var default_action=bind(partial(function(field,css_property,optional_evaluation_function){if(Basis.is_element(field)&&css_property){if(!Basis.is_function(optional_evaluation_function)){this.css[css_property]=Basis.get_formfield_value(field);}else{this.css[css_property]=optional_evaluation_function();}}
this.update_preview_element();},field,css_property,optional_evaluation_function),this);MochiKit.Signal.connect(field,"onchange",default_action);default_action();},compile:function(){var content=DIV({"class":"Basis.CSS.default_options"},H3({"style":"margin-top: 0px; border-bottom: 1px solid #c0c0c0; padding-bottom: 10px;"},this.name));this.preview_element=DIV({"style":"width: 300px; height: 300px;"},"This is a preview of what this section will look like");var background_color_chooser=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});background_color_chooser.color_popup=new Basis.color_chooser_popup(null,background_color_chooser);background_color_chooser.open=false;background_color_chooser.color_popup.color_chooser.set_color_from_hex(this.value("background-color"));Basis.signal_handler.connect(background_color_chooser,"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},background_color_chooser),false);var background_color_hex=INPUT({"type":"text","value":this.value("background-color"),"style":"width: 70px;"});MochiKit.Signal.connect(background_color_hex,"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":background_color_chooser,"element":background_color_hex}));var background_color_block=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());background_color_block.style.backgroundColor=this.value("background-color");Basis.signal_handler.connect(background_color_block,"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":background_color_chooser,"element":background_color_block}),false);background_color_chooser.color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css["background-color"]=chooser.color_hex();this.update_preview_element();},background_color_chooser.color_popup.color_chooser,background_color_block,background_color_hex),this);var background_image_chooser=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});var background_image_link=INPUT({"type":"text","value":this.value("background-image").substring(4).substring(0,this.value("background-image").length-5)});Basis.signal_handler.connect(background_image_chooser,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element);},background_image_link),Basis.misc_vars.dashboard),false);var background_image_preview=IMG({"src":"images/images/spacer.gif"});MochiKit.Signal.connect(background_image_link,"onchange",partial(function(link,preview){var img=new Image();img.onload=partial(function(img,preview){preview.src=img.src;var dim={"h":img.height,"w":img.width};if(dim.h>200){var ratio=(dim.h/200);var dim={"h":200,"w":Math.round(dim.w/ratio)};}
if(dim.w>200){var ratio=(dim.w/200);var dim={"h":Math.round(dim.h/ratio),"w":200};}
MochiKit.DOM.setElementDimensions(preview,dim);},img,preview);img.src=link.value;},background_image_link,background_image_preview));var background_repeat=SELECT();Basis.select_add_options(background_repeat,{"":" ","repeat":"Tile","repeat-x":"Repeat Horizontally","repeat-y":"Repeat Vertically","no-repeat":"Don't Repeat","inherit":"Inherit"});Basis.select_select_item_by_value(background_repeat,this.value("background-repeat"));var background_position=SELECT();Basis.select_add_options(background_position,{"":" ","top left":"Top Left","top center":"Top Center","top right":"Top Right","center left":"Center Left","center center":"Center Center","center right":"Center Right","bottom left":"Bottom Left","bottom center":"Bottom Center","bottom right":"Bottom Right","inherit":"Inherit"});Basis.select_select_item_by_value(background_repeat,this.value("background-position"));var override_value=this.value("background-position").split(" ");var background_position_override_x=INPUT({"type":"text","style":"width: 35px;","value":override_value[0]?override_value[0]:""});var background_position_override_y=INPUT({"type":"text","style":"width: 35px;","value":override_value[1]?override_value[1]:""});var background_attachment=SELECT();Basis.select_add_options(background_attachment,{"":" ","scroll":"Scroll","fixed":"Fixed","inherit":"Inherit"});Basis.select_select_item_by_value(background_attachment,this.value("background-attachment"));var font_family=SELECT();Basis.select_add_options(font_family,{"":" ","Arial":"Arial","Courier New":"Courier New","Tahoma":"Tahoma","Times New Roman":"Times New Roman","Verdana":"Verdana"});Basis.select_select_item_by_value(font_family,this.value("font-family"));var font_size=SELECT();Basis.select_add_options(font_size,{"":" ","8pt":"1 ( 8pt)","10pt":"2 (10pt)","12pt":"3 (12pt)","14pt":"4 (14pt)","18pt":"5 (18pt)","24pt":"6 (24pt)","36pt":"7 (36pt)"});Basis.select_select_item_by_value(font_size,this.value("font-size"));var font_size_override=INPUT({"type":"text","style":"width: 45px;","value":((this.value("font-size")!=Basis.get_formfield_value(font_size))?this.value("font-size"):"")});var font_color_chooser=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});font_color_chooser.color_popup=new Basis.color_chooser_popup(null,font_color_chooser);font_color_chooser.open=false;font_color_chooser.color_popup.color_chooser.set_color_from_hex(this.value("color"));Basis.signal_handler.connect(font_color_chooser,"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},font_color_chooser),false);var font_color_hex=INPUT({"type":"text","value":this.value("color"),"style":"width: 70px;"});MochiKit.Signal.connect(font_color_hex,"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":font_color_chooser,"element":font_color_hex}));var font_color_block=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());font_color_block.style.backgroundColor=this.value("color");Basis.signal_handler.connect(font_color_block,"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":font_color_chooser,"element":font_color_block}),false);font_color_chooser.color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css["color"]=chooser.color_hex();this.update_preview_element();},font_color_chooser.color_popup.color_chooser,font_color_block,font_color_hex),this);var fields={};var list=["border","border-top","border-left","border-bottom","border-right"];var menu_borders=Basis.misc_vars.dashboard.create_menu(this.base_selector+".borders");var menu_margins=Basis.misc_vars.dashboard.create_menu(this.base_selector+".margins");var menu_padding=Basis.misc_vars.dashboard.create_menu(this.base_selector+".padding");for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});fields[list[i]]["type"]=SELECT();Basis.select_add_options(fields[list[i]]["type"],{"":" ","solid":"Solid","dotted":"Dotted","dashed":"Dashed","double":"Double","groove":"Groove","ridge":"Ridge","inset":"Inset","outset":"Outset","hidden":"Hidden","inherit":"Inherit","none":"No Border"});Basis.select_select_item_by_value(fields[list[i]]["type"],this.value(list[i]+"-style"));fields[list[i]]["color_chooser"]=IMG({"src":"images/images/default_icons/png/color_wheel.png","style":"cursor: pointer;"});fields[list[i]]["color_chooser"].color_popup=new Basis.color_chooser_popup(null,fields[list[i]]["color_chooser"]);fields[list[i]]["color_chooser"].open=false;fields[list[i]]["color_chooser"].color_popup.color_chooser.set_color_from_hex(this.value(list[i]+"-color"));Basis.signal_handler.connect(fields[list[i]]["color_chooser"],"onclick",bind(function(){if(!this.open){this.color_popup.compile();Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"top_to_top");Basis.align_element_to_element(this.color_popup.color_chooser.elements["container"],this,"left_to_right",{"x":3});this.open=true;}else{Basis.remove_element(this.color_popup.color_chooser.elements["container"]);this.open=false;}},fields[list[i]]["color_chooser"]),false);fields[list[i]]["color_hex"]=INPUT({"type":"text","value":this.value(list[i]+"-color"),"style":"width: 70px;"});MochiKit.Signal.connect(fields[list[i]]["color_hex"],"onchange",bind(function(){if(this.element.value=="transparent"){if(this.chooser.open){Basis.signal_handler.execute_interactive_element(this.chooser,"onclick");}}else if(this.element.value==""){this.chooser.color_popup.color_chooser.set_color_from_hex("#000000");}else{this.chooser.color_popup.color_chooser.set_color_from_hex(this.element.value);}},{"chooser":fields[list[i]]["color_chooser"],"element":fields[list[i]]["color_hex"]}));fields[list[i]]["color_block"]=DIV({"style":"width: 35px; height: 20px; cursor: pointer;"},Basis.nbsp());fields[list[i]]["color_block"].style.backgroundColor=this.value(list[i]+"-color");Basis.signal_handler.connect(fields[list[i]]["color_block"],"onclick",bind(function(){this.chooser.color_popup.color_chooser.set_color_from_hex(MochiKit.Color.Color.fromString(this.element.style.backgroundColor).toHexString());},{"chooser":fields[list[i]]["color_chooser"],"element":fields[list[i]]["color_block"]}),false);fields[list[i]]["color_chooser"].color_popup.color_chooser.on_change=bind(partial(function(chooser,block,element,property){element.value=chooser.color_hex();block.style.backgroundColor=chooser.color_hex();this.css[property+"-color"]=chooser.color_hex();this.update_preview_element();},fields[list[i]]["color_chooser"].color_popup.color_chooser,fields[list[i]]["color_block"],fields[list[i]]["color_hex"],list[i]),this);}
var list=["margin","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});}
var list=["padding","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){fields[list[i]]={};fields[list[i]]["width"]=INPUT({"type":"text","style":"width: 50px","value":this.value(list[i]+"-width")});}
this.bind_default_action(background_image_link,"background-image",bind(function(){var url=Basis.get_formfield_value(this);return url?("url("+url+")"):"";},background_image_link));this.bind_default_action(background_repeat,"background-repeat");var list=[background_position,background_position_override_x,background_position_override_y];for(var i=0;i<list.length;i++){this.bind_default_action(list[i],"background-position",partial(function(background_position,background_position_override_x,background_position_override_y){if(background_position_override_x.value||background_position_override_y.value){return(Basis.get_formfield_value(background_position_override_x)+" "+Basis.get_formfield_value(background_position_override_y));}else{return Basis.get_formfield_value(background_position);}},background_position,background_position_override_x,background_position_override_y));}
this.bind_default_action(background_attachment,"background-attachment");this.bind_default_action(font_family,"font-family");var list=[font_size,font_size_override];for(var i=0;i<list.length;i++){this.bind_default_action(list[i],"font-size",partial(function(font_size,font_size_override){if(font_size_override.value){return Basis.get_formfield_value(font_size_override);}else{return Basis.get_formfield_value(font_size);}},font_size,font_size_override));}
var list=["border","border-top","border-left","border-bottom","border-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],(list[i]+"-width"),partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));this.bind_default_action(fields[list[i]]["type"],(list[i]+"-style"));}
var list=["margin","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],list[i],partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));}
var list=["padding","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){this.bind_default_action(fields[list[i]]["width"],list[i],partial(function(field){var value=Basis.filter_number(Basis.get_formfield_value(field).trim());return value?(value+"px"):"";},fields[list[i]]["width"]));}
var list=["all","border-top","border-left","border-bottom","border-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_borders.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","border",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("border_"+section.toLowerCase()))?"":"none";}},name),content));}
var list=["all","margin-top","margin-left","margin-bottom","margin-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_margins.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","margin",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("margin_"+section.toLowerCase()))?"":"none";}},name),content));}
var list=["all","padding-top","padding-left","padding-bottom","padding-right"];for(var i=0;i<list.length;i++){var name=list[i].split("-")[1];name=name?(name.substring(0,1).toUpperCase()+name.substring(1)):"All";menu_padding.add_menu_item(list[i],name,bind(partial(function(section){var selectors=MochiKit.DOM.getElementsByTagAndClassName("table","padding",this);for(var i=0;i<selectors.length;i++){selectors[i].style.display=MochiKit.DOM.hasElementClass(selectors[i],("padding_"+section.toLowerCase()))?"":"none";}},name),content));}
MochiKit.DOM.appendChildNodes(content,TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"400"},H4(null,"Background"),DIV({"style":"border: 1px solid #c0c0c0; padding: 5px;"},TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},background_color_hex),TD(null,background_color_block))))),TD({"width":"16"},background_color_chooser),TD({"rowSpan":"5"},background_image_preview)),TR(null,TD({"width":"25"},"Image:"),TD(null,background_image_link),TD({"width":"16"},background_image_chooser)),(this.advanced_fields)?[TR(null,TD({"width":"25"},"Repeat:"),TD({"colSpan":"2"},background_repeat)),TR(null,TD({"width":"25"},"Position:"),TD({"colSpan":"2"},TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},background_position),TD({"style":"padding-right: 5px;"}," or "),TD({"style":"padding-right: 5px;"},background_position_override_x),TD(null,background_position_override_y)))))),TR(null,TD({"width":"25"},"Attachment:"),TD({"colSpan":"2"},background_attachment))]:null))),H4(null,"Font"),DIV({"style":"border: 1px solid #c0c0c0; padding: 5px;"},TABLE({"cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Font:"),TD(null,font_family)),TR(null,TD({"width":"25"},"Size:"),TD(null,font_size,(this.advanced_fields)?[" or ",font_size_override]:null)),TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},font_color_hex),TD(null,font_color_block))))),TD({"width":"16"},font_color_chooser))))),(this.advanced_fields)?[H4(null,"Borders"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_borders,DIV({"style":"padding: 5px;"},TABLE({"class":"border border_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border"]["color_hex"]),TD(null,fields["border"]["color_block"]))))),TD({"width":"16"},fields["border"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border"]["type"])))),TABLE({"class":"border border_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-top"]["color_hex"]),TD(null,fields["border-top"]["color_block"]))))),TD({"width":"16"},fields["border-top"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-top"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-top"]["type"])))),TABLE({"class":"border border_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-left"]["color_hex"]),TD(null,fields["border-left"]["color_block"]))))),TD({"width":"16"},fields["border-left"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-left"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-left"]["type"])))),TABLE({"class":"border border_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-bottom"]["color_hex"]),TD(null,fields["border-bottom"]["color_block"]))))),TD({"width":"16"},fields["border-bottom"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-bottom"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-bottom"]["type"])))),TABLE({"class":"border border_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Color:"),TD(null,TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px;"},fields["border-right"]["color_hex"]),TD(null,fields["border-right"]["color_block"]))))),TD({"width":"16"},fields["border-right"]["color_chooser"])),TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["border-right"]["width"]," pixels")),TR(null,TD({"width":"25"},"Type:"),TD({"colSpan":"2"},fields["border-right"]["type"])))))),H4(null,"Margins"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_margins,DIV({"style":"padding: 5px;"},TABLE({"class":"margin margin_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin"]["width"]," pixels")))),TABLE({"class":"margin margin_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-top"]["width"]," pixels")))),TABLE({"class":"margin margin_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-left"]["width"]," pixels")))),TABLE({"class":"margin margin_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-bottom"]["width"]," pixels")))),TABLE({"class":"margin margin_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Width:"),TD({"colSpan":"2"},fields["margin-right"]["width"]," pixels")))))),H4(null,"Padding"),DIV({"style":"border: 1px solid #c0c0c0;"},menu_padding,DIV({"style":"padding: 5px;"},TABLE({"class":"padding padding_all","style":"display: ;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding"]["width"]," pixels")))),TABLE({"class":"padding padding_top","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-top"]["width"]," pixels")))),TABLE({"class":"padding padding_left","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-left"]["width"]," pixels")))),TABLE({"class":"padding padding_bottom","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-bottom"]["width"]," pixels")))),TABLE({"class":"padding padding_right","style":"display: none;","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"25"},"Padding:"),TD({"colSpan":"2"},fields["padding-right"]["width"]," pixels"))))))]:null),TD(null,this.preview_element)))));menu_borders.select_menu_item(0);menu_margins.select_menu_item(0);menu_padding.select_menu_item(0);return content;},value:function(property){var value=this.css[property];return value?value:"";},get_css:function(return_obj){var return_obj=(return_obj===true)?true:false;var order_to_combine=["background-color","background-image","background-repeat","background-position","background-attachment","border-style","border-width","border-color","border-top-style","border-top-width","border-top-color","border-left-style","border-left-width","border-left-color","border-bottom-style","border-bottom-width","border-bottom-color","border-right-style","border-right-width","border-right-color","font-family","font-size","color","margin","margin-top","margin-left","margin-bottom","margin-right","padding","padding-top","padding-left","padding-bottom","padding-right"];var css=return_obj?{}:"";for(var i=0;i<order_to_combine.length;i++){if(!Basis.is_function(this.css[order_to_combine[i]])&&this.css[order_to_combine[i]]){if(return_obj){css[order_to_combine[i]]=this.css[order_to_combine[i]];}else{css+=(order_to_combine[i]+": "+this.css[order_to_combine[i]]+";\n");}}}
if(css&&!return_obj){css=this.base_selector+" { \n"+css+"}\n";}
return css;},update_preview_element:function(){if(Basis.is_element(this.preview_element)){MochiKit.Style.setStyle(this.preview_element,this.get_css(true));}}};Basis.dashboard=function(){this.__init__();};Basis.dashboard.prototype={__init__:function(){this.show_v2_page_permissions=function(){var path=Basis.preserve_url_path();path=path.substring(((path.substring(0,("http://").length)=="http://")?("http://").length:((path.substring(0,("http2://").length)=="http2://")?("http2://").length:0)),(path.length-("/admin").length));if(Basis.array_search(this.v2_perms_domains,path)!=null){return true;}
if(this.site_id>this.v2_perms_site_id_threshold){return true;}
return false;};MochiKit.Position.includeScrollOffsets=true;this.organization_id=null;this.site_id=null;this.cookie_name=null;this.session_id=null;this.post_url=null;this.is_admin=false;this.initialized=false;this.ok_to_initialize=true;this.debug=false;this.load_timestamp=0;this.load_offset=0;this.timestamp_refresh_rate=60;this.custom_ajax_actions={};this.custom_view_renderers={};this.site_billing_info={};this.site_settings={};this.available_resources={};this.resource_id=null;this.resource_linker={};this.elements={};this.tiles={"ui":new Basis.tile_manager(),"wizard":new Basis.tile_manager()};this.tiles.wizard.current_tile=null;this.wizards={};this.menus={};this.resource_history={};this.pending_requests={};this.custom_css={};this.file_manager_only=false;this.max_diskspace=0;this.diskspace_used=0;this.files={};this.folders={};this.file_browser_current_folder=null;this.file_browser_drags={"folder":new multipleDraggables(),"file":new multipleDraggables()};this.file_browser_drags["folder"].force_single_selection=true;this.file_browser_drags["folder"].disable_clickoff=true;this.file_browser_drags["folder"].commit=false;this.file_browser_drags["folder"].drag_and_drop=false;this.file_browser_drags["folder"].selected_class="Basis.file_explorer.selected";this.file_browser_drags["folder"].selectable_class="Basis.file_explorer.selectable";this.file_browser_drags["file"].commit=false;this.file_restrictions={};this.original_file_restrictions={};this.original_page_restrictions={};this.page_restrictions={};this.system_log_history=[];this.countdown_to_save={"cancel":function(){}};this.duration_to_save=1.5;this.refresh_rate=(60*10);this.user_levels={"USER_LEVEL_PUBLIC":0,"USER_LEVEL_BASIC":2,"USER_LEVEL_PRIVATE":4,"USER_LEVEL_SITE_ADMINISTRATOR":5,"USER_LEVEL_ORGANIZATION_ADMINISTRATOR":6,"USER_LEVEL_SUPERUSER":999};this.user_levels_text={"USER_LEVEL_PUBLIC":"Public","USER_LEVEL_BASIC":"Basic","USER_LEVEL_PRIVATE":"Private","USER_LEVEL_SITE_ADMINISTRATOR":"Site Administrator","USER_LEVEL_ORGANIZATION_ADMINISTRATOR":"Organization Administrator","USER_LEVEL_SUPERUSER":"Superuser"};this.page_levels_text={"PUBLIC":"Public","BASIC":"Basic","PRIVATE":"Private","ADMIN":"Admin Only"};this.resource_types=["ALERT","CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","EMAIL","FILE","FOLDER","FORUM","GROUP","IMAGE_GALLERY","LIST","LIST_ITEM","PAGE","POLL","SITE","TASK","TASK_LIST","USER"];this.resource_types_text=["Alert / Reminder","Contact (old)","Contact","Contact List","Custom Form","Custom Form Row","Discussion","Email","File","Folder","Forum","Group","Image Gallery","List","List Item","Page","Poll","Site","Task","Task List","User"];if(!window.resizeConstrainedElements_signal){window.resizeConstrainedElements_signal=MochiKit.Signal.connect(window,"onresize",MochiKit.Style.resizeConstrainedElements);}
window.onbeforeunload=function(e){var e=(e||window.event);if(e){e.returnValue="Any unsaved data will be lost!";}
return"Any unsaved data will be lost!";};window.onbeforeunload=function(){};},alert:function(message,title,action_on_ok,width,height){if(message){this.run_wizard("ERROR_MESSAGE",{"error_message":message,"cancel_button":false,"done_button_text":"Ok","title":title,"width":width,"height":height,"action_on_ok":Basis.is_function(action_on_ok)?action_on_ok:function(){}});}},attempt_save:function(func){var func=(typeof(func)=="function")?func:function(){};if(this.countdown_to_save&&this.countdown_to_save.cancel){this.countdown_to_save.cancel();this.countdown_to_save=MochiKit.Async.callLater(this.duration_to_save,func);}},bind_form_element:function(element,element_name,data_row,ivalue){if(Basis.get_element(element)&&element_name&&data_row){switch(element.tagName.toUpperCase()){case"INPUT":switch(element.type.toLowerCase()){case"text":case"password":case"hidden":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.value;},element,element_name),data_row),false);data_row[element_name]=element.value?element.value:ivalue;break;}
break;case"TEXTAREA":if(element&&element.id&&tinyMCE&&tinyMCE.get(element.id)){var editor=tinyMCE.get(element.id);editor.onChange.add(bind(partial(function(element,element_name){this[element_name]=tinyMCE.get(element.id).getContent();},element,element_name),data_row));}else{Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.value;},element,element_name),data_row),false);}
data_row[element_name]=element.value?element.value:ivalue;break;case"SELECT":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.options[element.selectedIndex].value;},element,element_name),data_row),false);Basis.select_select_item_by_value(element,data_row[element_name]?data_row[element_name]:ivalue);data_row[element_name]=(element.selectedIndex>-1)?element.options[element.selectedIndex].value:"";break;case"DIV":switch(element.type.toLowerCase()){case"date":Basis.signal_handler.connect(element,"onchange",bind(partial(function(element,element_name){this[element_name]=element.get_date();},element,element_name),data_row));data_row[element_name]=element.get_date();break;}
break;}}},compile:function(mode,options,func_to_exec_after_compile){alert("compile(): i am obselete!");},create_menu:function(menu_name,float_right,should_highlight){var float_right=(float_right===true)?true:false;var should_highlight=(should_highlight===false)?false:true;if(menu_name){var menu=DIV({"id":menu_name+".menu."+menu_name,"class":"Basis.dashboard.resource_associator.menu"});this.menus[menu_name]=menu;menu.dashboard=this;menu.menu_items=[];menu.menu_item_ids=[];menu.selected_index=0;menu.float_right=float_right;menu.should_highlight=should_highlight;menu.add_menu_item=function(item_alias,item_text,onclick){if(item_alias&&item_text&&(typeof(onclick)=="function")){var item=DIV({"id":(menu_name+".menu_item."+item_alias),"class":"Basis.dashboard.resource_associator.menu_item tab_off","style":"cursor: pointer;"+(this.float_right?" float: right;":"")},item_text);item.menu=this;this.menu_items.push(item);this.menu_item_ids.push(item.id);Basis.signal_handler.connect(item,"onclick",bind(partial(function(func){this.menu.select_menu_item(item_alias);func();},onclick),item),false);if(this.float_right){menu.insertBefore(item,menu.firstChild);}else{menu.appendChild(item);}
return item;}};menu.highlight_item=function(item_index){if(this.should_highlight){var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){MochiKit.DOM.removeElementClass(item_id,"tab_off");MochiKit.DOM.addElementClass(item_id,"tab_on");}}};menu.item_index=function(item_text){var id=(menu_name+".menu_item."+item_text);if(id){var index=MochiKit.Base.findValue(this.menu_item_ids,id);return(index>-1)?index:null;}
return null;};menu.remove_menu_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){this.menu_items.splice(item_index,1);Basis.remove_element(item_id);}};menu.select_menu_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){this.unhighlight_all_items();this.highlight_item(item_index);this.selected_index=item_index;}};menu.unhighlight_all_items=function(){for(var i=0;i<this.menu_items.length;i++){this.unhighlight_item(i);}};menu.unhighlight_item=function(item_index){if(!Basis.is_number(item_index)){var item_index=this.item_index(item_index);}
var item_id=this.menu_items[item_index];if(item_id&&Basis.get_element(item_id)){MochiKit.DOM.removeElementClass(item_id,"tab_on");MochiKit.DOM.addElementClass(item_id,"tab_off");}};}
return menu;},custom_ajax_action:function(alias){if(alias&&this.custom_ajax_actions[alias]&&(typeof(this.custom_ajax_actions[alias])=="function")){if(this.debug){this.debug_log("custom_ajax_action(): "+alias);}
var args=[];for(var x=1;x<arguments.length;x++){args[x-1]=arguments[x];}
return this.custom_ajax_actions[alias].apply(null,args);}},data:function(data){return data?data:"";},debug_log:function(message){if(message&&this.debug){this.system_log(message,false);}},default_screen:function(name,go_back,go_back_text,go_back_icon){var go_back=(go_back!==null)?go_back:false;var section=DIV({"style":"overflow: auto;","class":"section"});var element=DIV({"class":"element"});var table=TABLE({"cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"style":"border-left: 1px solid #d7d7d7; border-right: 1px solid #d7d7d7; background-color: #f5f5f5; background-image: url(images/images/dashboard/v2/submenu_shadow.png); background-repeat: repeat-x;"},section))));var header=Basis.dashboard.header_block(name,go_back,go_back_text,go_back_icon);element.appendChild(header);element.appendChild(table);element.content=section;element.header=header;Basis.register_size_constraints(element.content,"100%","100%");Basis.register_size_constraints(element,"100% - 40","100%",null,false);Basis.register_size_constraints(table,"100%","100%");return element;},determine_missing_resources:function(root){if(root&&(Basis.array_length(root)>0)){var assorted_resources=[];var resources_to_check=Basis.keys(root,true);for(var x=0;x<resources_to_check.length;x++){if(!this.resource_linker[resources_to_check[x]]){assorted_resources[assorted_resources.length]=resources_to_check[x];}}
return assorted_resources;}
return[];},determine_missing_resources_from_xml:function(root){if(root&&root.childNodes){var assorted_resources=[];var resources_to_check=this.determine_resources_from_xml_node(root);for(var x=0;x<resources_to_check.length;x++){if(!this.resource_linker[resources_to_check[x]]){assorted_resources[assorted_resources.length]=resources_to_check[x];}}
return assorted_resources;}
return[];},determine_resources_from_xml_node:function(root,children_only){var children_only=(children_only!=null)?children_only:false;if(root&&root.childNodes){var resource_ids=[];if(!children_only){MochiKit.Base.nodeWalk(root,function(node){var resource_id=Basis.filter_number(node.tagName);if(resource_id){resource_ids.push(resource_id);}
return node.childNodes;});}else{for(var i=0;i<root.childNodes.length;i++){var resource_id=Basis.filter_number(root.childNodes[i].tagName);if(resource_id){resource_ids.push(resource_id);}}}
return resource_ids;}
return[];},english_timestamp:function(timestamp,return_self_updating_element){return Basis.english_timestamp(timestamp,this.load_offset,return_self_updating_element);},error_message:function(message,action_on_ok,width,height){if(message){this.run_wizard("ERROR_MESSAGE",{"error_message":message,"cancel_button":false,"done_button_text":"Ok","width":width,"height":height,"action_on_ok":Basis.is_function(action_on_ok)?action_on_ok:function(){}});}},get_alerts_and_reminders_for_resource:function(resource_id){var to_return={"alert":[],"reminder":[]};if(resource_id&&this.resource_linker[resource_id]){var alerts=this.available_resources["ALERT"];if(alerts&&(Basis.array_length(alerts)>0)){for(var i in alerts){if(this.resource_is_associated_with_resource(resource_id,i)){to_return[this.resource_linker[i]["misc_vars"]["type"]].push(i);}else{var groups=Basis.keys(this.resource_linker[i]["associated_resources"]["GROUP"]);if(groups){for(var x=0;x<groups.length;x++){if(this.resource_is_associated_with_resource(resource_id,groups[x])){to_return[this.resource_linker[i]["misc_vars"]["type"]].push(i);}}}}}}}
return to_return;},get_assorted_resources:function(resource_ids){if(Basis.array_length(resource_ids)>0){var to_post={};to_post["resource_ids"]=resource_ids;to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_assorted_resources";as.resource_ids=resource_ids;as.dashboard=this;as.on_success=function(req){for(var i in this.resource_ids){if(Basis.is_number(this.resource_ids[i])){var resource_id=this.resource_ids[i];if(this.dashboard.resource_linker[resource_id]&&this.dashboard.resource_linker[resource_id]["type"]&&this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]]&&this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]][resource_id]){delete this.dashboard.available_resources[this.dashboard.resource_linker[resource_id]["type"]][resource_id];}
if(this.dashboard.resource_linker[resource_id]){delete this.dashboard.resource_linker[resource_id];}}}
var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.updatetree(this.dashboard.resource_linker,resources);for(var i in resources){if(typeof(resources[i])!="function"){var update={};update[i]=resources[i];if(!this.dashboard.available_resources[resources[i]["type"]]){this.dashboard.available_resources[resources[i]["type"]]={};}
MochiKit.Base.updatetree(this.dashboard.available_resources[resources[i]["type"]],update);}}
window.status="Done";};return as.post({"to_post":to_post});}else{return new MochiKit.Async.succeed();}},get_available_amount_of:function(resource_type){if(this.site_billing_info[this.site_id]){this.site_billing_info[this.site_id]["site"]["num_contacts"]}
if(resource_type&&this.site_billing_info[this.site_id]){var resource_type=resource_type.toUpperCase();switch(resource_type){case"PAGE":return this.site_billing_info[this.site_id]["site"]["num_pages"];break;case"GROUP":return this.site_billing_info[this.site_id]["site"]["num_groups"];break;case"TASK":return this.site_billing_info[this.site_id]["site"]["num_tasks"];break;case"CONTACT":return this.site_billing_info[this.site_id]["site"]["num_contacts"];break;case"LIST":return this.site_billing_info[this.site_id]["site"]["num_lists"];break;case"DISCUSSION":return this.site_billing_info[this.site_id]["site"]["num_discussions"];break;case"EMAIL":return this.site_billing_info[this.site_id]["site"]["num_emails"];break;case"USER_BASIC":case"USER_POWER":this.debug_log(["site_can_create_new()",resource_type,"make me do something"]);break;}}
return-1;},get_resource_id_by_type_and_id:function(type,id){var list=this.available_resources[type];if(list){for(var i in list){if(!Basis.is_function(list[i])){if(list[i]["misc_vars"]["id"]==id){return i;}}}}
return null;},get_resource_ids_that_resource_inherits_permissions_from:function(resource_id){var resource_ids=[];if(Basis.is_number(resource_id)){switch(this.resource_linker[resource_id]["type"]){case"CONTACT.V2":var list=this.resource_linker[resource_id]["associated_resources"]["CONTACT_LIST"];if(list){var resource_ids=Basis.keys(list);}
break;case"TASK":var list=this.resource_linker[resource_id]["associated_resources"]["TASK_LIST"];if(list){var resource_ids=Basis.keys(list);}
break;case"FILE":case"FOLDER":var list=this.resource_linker[resource_id]["misc_vars"]["path_parent_resources"];if(list&&list.length){for(var i=0;i<list.length;i++){if(this.resource_linker[list[i]]&&this.resource_linker[list[i]]["restrictions"]){(Basis.keys(this.resource_linker[list[i]]["restrictions"]).length==0)?null:resource_ids.push(list[i]);}else{this.debug_log("Can't find resource #"+list[i]);}}}
break;}}
return resource_ids;},get_site_resource_id:function(){var list=this.available_resources["SITE"];for(var i in list){if(!Basis.is_function(list[i])){if(list[i]["misc_vars"]["id"]==this.site_id){return i;}}}
return null;},get_site_resource_list:function(type){if(type&&this.available_resources[type]){var resources={};var list=this.available_resources[type];list=list?Basis.keys(list):[];for(var i=0;i<list.length;i++){var display_text=this.resource_display_text(list[i]);if(this.in_site(list[i])&&display_text.trim()){resources[list[i]]=display_text;}}
return resources;}
return false;},get_user_restrictions:function(user_id){var user_id=Basis._int(user_id);var restrictions={"read_only":[],"full_access":[]};if(Basis.is_number(user_id)){for(var i in this.resource_linker){if(this.resource_linker[i]&&this.resource_linker[i]["restrictions"]&&this.resource_linker[i]["restrictions"]["user_specific"]){var list=this.resource_linker[i]["restrictions"]["user_specific"];if(list["read_only"]&&(Basis.array_search(list["read_only"],user_id)!=null)){restrictions["read_only"].push(i);}
if(list["full_access"]&&(Basis.array_search(list["full_access"],user_id)!=null)){restrictions["full_access"].push(i);}}}}
return restrictions;},get_view_association_icon:function(type,use_grey){var icon="";var otype="";var use_grey=(use_grey===true)?true:false;if(Basis.is_number(type)&&this.resource_linker[Basis._int(type)]){var resource_id=Basis._int(type);var type=this.resource_linker[resource_id]["type"].toUpperCase();}else{var resource_id=null;}
switch(type){case"CALENDAR":case"PROJECT_LIST":case"ISSUE_TRACKER":case"RICHTEXTAREA":case"POLL":case"RSS_FEED":case"FILE_UPLOAD":case"FILE_LISTING":case"ADVANCED_FILE_LISTING":case"FILE_UPLOAD_AND_LISTING":case"RICHTEXT_AND_HTML":case"PLACEHOLDER":case"LINK_TO_FILE":case"LINK_TO_URL":case"CAHILL_CONSTRUCTION_DAILY_LOG":case"CUSTOM_SCRIPT":case"HOMEPAGE":otype="PAGE";break;default:otype=type?type:"UNKNOWN";break;}
switch(otype){case"FORUM":case"DISCUSSION":icon="images/images/default_icons/png/user_comment.png";break;case"ALERT":if(resource_id&&this.resource_linker[resource_id]&&(this.resource_linker[resource_id]["misc_vars"]["sent_notification"]=="1")){icon=(this.resource_linker[resource_id]["misc_vars"]["disabled"]=="yes")?"images/images/default_icons/png/email_error.grey.png":"images/images/default_icons/png/email_error.png";}else{icon=(this.resource_linker[resource_id]["misc_vars"]["disabled"]=="yes")?"images/images/default_icons/png/error.grey.png":"images/images/default_icons/png/error.png";}
break;case"TASK_LIST":icon="images/images/default_icons/png/note_edit.png";break;case"TASK":icon="images/images/default_icons/png/note.png";break;case"LIST":icon="images/images/default_icons/png/table_multiple.png";break;case"LIST_ITEM":icon="images/images/default_icons/png/table_row.png";break;case"CONTACT_LIST":case"CONTACT":case"CONTACT.V2":icon="images/images/default_icons/png/vcard.png";break;case"IMAGE_GALLERY":icon="images/images/default_icons/png/pictures.png";break;case"POLL":icon="images/images/default_icons/png/page_white_paste.png";break;case"GROUP":icon="images/images/default_icons/png/group.png";break;case"EMAIL":icon="images/images/default_icons/png/email.png";break;case"FILE":case"FOLDER":icon="images/images/default_icons/tree/tree-folder.gif";break;case"PAGE":switch(type){case"HOMEPAGE":icon="images/images/home.gif";break;case"PLACEHOLDER":icon="images/images/default_icons/folder.gif";break;case"LINK_TO_FILE":case"LINK_TO_URL":icon="images/images/default_icons/link_go.gif";break;case"CALENDAR":case"PROJECT_LIST":case"ISSUE_TRACKER":case"CONTACT_LIST":case"IMAGE_GALLERY":case"RICHTEXTAREA":case"POLL":case"RSS_FEED":case"FILE_UPLOAD":case"FILE_LISTING":case"ADVANCED_FILE_LISTING":case"FILE_UPLOAD_AND_LISTING":case"RICHTEXT_AND_HTML":case"CAHILL_CONSTRUCTION_DAILY_LOG":case"CUSTOM_SCRIPT":default:icon="images/images/page.gif";break;}
break;case"SITE":icon="images/images/site.gif";break;case"USER":icon="images/images/user.gif";break;case"UNKNOWN":icon="images/images/default_icons/help.gif";break;default:icon="images/images/default_icons/help.gif";break;}
if(icon&&(icon.substring(icon.length-3)=="png")&&use_grey){icon=icon.substring(0,(icon.length-3))+"grey.png";}
return icon;},in_site:function(resource_id){return((resource_id&&this.resource_linker[resource_id]&&this.resource_linker[resource_id]["site_ids"]&&this.resource_linker[resource_id]["site_ids"]["direct"]&&((MochiKit.Base.findValue(this.resource_linker[resource_id]["site_ids"]["direct"],this.site_id)>-1)||this.resource_linker[resource_id]["site_ids"]["direct"][this.site_id]))||(resource_id&&this.resource_linker[resource_id]&&(this.resource_linker[resource_id]["type"]=="SITE")&&(this.resource_linker[resource_id]["misc_vars"]["id"]==this.site_id)))?true:false;},initialize:function(){this.set_up_custom_renderers();this.set_up_custom_ajax_actions();this.set_up_wizards();if((BrowserDetect.browser=="Firefox")&&(BrowserDetect.version<3.5)&&!Basis.get_cookie("firefox_3.5_upgrade")){this.ok_to_initialize=false;this.alert(DIV(null,P({"style":"text-align: center;"},"We highly recommend that you upgrade Firefox to version 3.5 or greater!"),P({"style":"text-align: center; margin-top: 20px;"},A({"href":"http://www.mozilla.com/en-US/?from=sfx&amp;uid=0&amp;t=449","target":"get_firefox"},IMG({"src":"http://sfx-images.mozilla.org/affiliates/Buttons/Firefox3.5/468x60.png","alt":"Spread Firefox Affiliate Button","border":"0"})))),"Your browser is out of date!",bind(function(){Basis.set_cookie("firefox_3.5_upgrade","alerted",5);this.ok_to_initialize=true;this.initialize();},this),600,275);this.wizards["ERROR_MESSAGE"].should_destroy_background=false;return;}
if(!this.initialized&&this.ok_to_initialize){this.wizards["ERROR_MESSAGE"].should_destroy_background=true;this.system_log("Please wait while the dashboard loads...",true);this.tiles.ui.container_element=this.elements["container"];this.tiles.ui.compile();MochiKit.Style.resizeConstrainedElements();var wiz=new Basis.wizard();wiz.create_background(0.50);var loading_screen=DIV({"style":"width: 370px; height: 105px; background-color: #FFFFFF; position: absolute; z-index: 1010; padding: 10px;"},DIV({"style":"text-align: center; vertical-align: middle; height: 80px; padding: 10px;"},P({"style":"font-size : 7pt; color: #2B4D70; font-weight: bold;"},"Please wait while the "+(this.file_manager_only?"file manager":"dashboard")+" loads..."),P(null,IMG({"src":"images/images/dashboard_loader.gif"}))));document.body.appendChild(loading_screen);Basis.convert_div_to_box(loading_screen.firstChild);Basis.align_element_to_element(loading_screen,this.elements["container"],"center");var loading_callback=MochiKit.Style.resizeConstrainedElements.callbacks.push(partial(function(loading_screen,dashboard){if(Basis.is_live_dom_node(loading_screen)&&dashboard){Basis.align_element_to_element(loading_screen,dashboard.elements["container"],"center",null,true);}},loading_screen,this));this.set_up_custom_renderers();this.set_up_custom_ajax_actions();this.set_up_wizards();var dlist=new MochiKit.Async.DeferredList([this.custom_ajax_action("dashboard_initialize",!this.file_manager_only?["ALERT","CONTACT.V2","CONTACT_LIST","DISCUSSION","EMAIL","FOLDER","FORUM","GROUP","IMAGE_GALLERY","LIST","LIST_ITEM","PAGE","POLL","SITE","TASK","TASK_LIST","USER"]:["FOLDER","GROUP","SITE","USER"])],false,false,true);dlist.addCallback(partial(function(loading_screen,dashboard,wiz,loading_callback){Basis.remove_element(loading_screen);wiz.destroy_background(false);MochiKit.Style.resizeConstrainedElements.callbacks[loading_callback]=function(){};dashboard.system_log("Dashboard loaded successfully",true);dashboard.initialized=true;MochiKit.Async.callLater(dashboard.refresh_rate,bind(function(){},dashboard));MochiKit.Async.callLater(this.timestamp_refresh_rate,bind(function(){this.refresh_timestamps();},dashboard));Basis.state_handler.add_state("dashboard");Basis.state_handler.enter_state("dashboard");switch(Basis.get_GET("load")){case"add_a_page":if(graphic_menu){graphic_menu.select(2);}
dashboard.render_view("WEBSITE","default");dashboard.run_wizard("PAGE");break;case"add_a_user":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","users");dashboard.run_wizard("USER");break;case"website_look_and_feel":if(graphic_menu){graphic_menu.select(2);}
dashboard.render_view("WEBSITE","look_and_feel");break;case"file_manager":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","files",true);break;case"contact_lists":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","contacts");break;case"task_lists":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","tasks");break;case"discussions":if(graphic_menu){graphic_menu.select(1);}
dashboard.render_view("COLLABORATE","discussions");break;case"resource":var resource_id=Basis.get_GET("id");if(Basis.is_number(resource_id)){if(dashboard.resource_linker[resource_id]){switch(dashboard.resource_linker[resource_id]["type"]){case"PAGE":dashboard.render_view("WEBSITE","default");break;case"FILE":case"FOLDER":log("NEED TO IMPLEMENT FUNCTION TO LOAD FILE MANAGER AND AUTO-SELECT REFERENCED FILE OR FOLDER");break;default:dashboard.show_resource(resource_id,true);break;}}}
break;default:if(dashboard.file_manager_only){dashboard.render_view("COLLABORATE","files",true);}else{dashboard.render_view("COLLABORATE","default");}
break;}
MochiKit.Async.callLater(5,bind(function(){this.verify_login(true);},dashboard));MochiKit.Async.callLater(30,bind(function(){this.refresh_history(true);},dashboard));},loading_screen,this,wiz,loading_callback));}},link_resources:function(list){if(list){for(var type in list){if(typeof(list[type])!="function"){for(var i in list[type]){if(typeof(list[type][i])!="function"){var id=parseInt(list[type][i]["resource_id"]);if(id>0){this.resource_linker[id]=list[type][i];}}}}}}},please_wait_this_could_take_a_while:function(){alert("Please be patient - the action you're trying to perform could take a while!");},populate_submenu:function(parent_item,submenu_index){var items=[];switch(parent_item){case"home":break;case"collaborate":var items=[{"name":"What's New","alias":"whats_new","onclick":bind(function(){this.render_view("COLLABORATE","default");},this)},{"name":"Contact Lists","alias":"contact_lists","onclick":bind(function(){this.render_view("COLLABORATE","contacts");},this)},{"name":"Task Lists","alias":"task_lists","onclick":bind(function(){this.render_view("COLLABORATE","tasks");},this)},{"name":"Discussions","alias":"discussions","onclick":bind(function(){this.render_view("COLLABORATE","discussions");},this)},(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:{"name":"Users","alias":"users","onclick":bind(function(){this.render_view("COLLABORATE","users");},this)},{"name":"Groups","alias":"groups","onclick":bind(function(){this.render_view("COLLABORATE","groups");},this)},{"name":"Email","alias":"email","onclick":bind(function(){this.render_view("COLLABORATE","emails");},this)},{"name":"Alerts & Reminders","alias":"alerts_and_reminders","onclick":bind(function(){this.render_view("COLLABORATE","alerts_and_reminders");},this)},{"name":"Lists","alias":"lists","onclick":bind(function(){this.render_view("COLLABORATE","lists");},this)},{"name":"Polls / RSVPs","alias":"polls_and_rsvps","onclick":bind(function(){this.render_view("DEFAULT","coming_soon","Polls / RSVPs");},this)}];break;case"files":break;case"website":var items=[{"name":"Pages","alias":"pages","onclick":bind(function(){this.render_view("WEBSITE","default");},this)},{"name":"Look and Feel","alias":"look_and_feel","onclick":bind(function(){this.render_view("WEBSITE","look_and_feel");},this)}];break;}
var titems=[];for(var i=0;i<items.length;i++){if(items[i]){titems.push(items[i]);}}
items=titems;if(!Basis.is_number(submenu_index)){for(var i=0;i<items.length;i++){if(items[i]["name"]==submenu_index){submenu_index=i;}}}
var menu=TABLE({"cellspacing":"0","cellpadding":"0","style":""},TBODY(null,TR()));var simple_graphic_menu=new Basis.simple_graphic_menu();for(var i=0;i<items.length;i++){var menu_item=IMG({"style":"cursor: pointer;","src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".off.png"});Basis.signal_handler.connect(menu_item,"onclick",items[i]["onclick"],false);var td=TD({"style":"padding: 0px;"},menu_item);simple_graphic_menu.add_menu_item(menu_item,{"onmouseover_src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".hover.png","selected_src":"images/images/dashboard/v2/top_menu."+items[i]["alias"]+".on.png"});MochiKit.DOM.getElementsByTagAndClassName("tr",null,menu)[0].appendChild(td);}
simple_graphic_menu.compile();simple_graphic_menu.select(submenu_index?submenu_index:0);Basis.temp=simple_graphic_menu;var obj=Basis.get_element("sub_menu");if(obj){Basis.remove_children(obj);if(items.length>0){obj.appendChild(menu);Basis.updated_live_dom();}}},purge_resource:function(resource_id){if(resource_id&&this.resource_linker[resource_id]){var type=this.resource_linker[resource_id]["type"];delete this.resource_linker[resource_id];if(this.available_resources[type]){delete this.available_resources[type][resource_id];}}},refresh_data:function(loop){var dlist=new MochiKit.Async.DeferredList([this.custom_ajax_action("get_site_resource_history",this.site_id),this.custom_ajax_action("get_available_resources",["CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","FOLDER","FORUM","GROUP","IMAGE_GALLERY","PAGE","POLL","SITE","TASK","TASK_LIST","USER"])],false,false,true);if(loop){dlist.addCallback(bind(function(){MochiKit.Async.callLater(this.refresh_rate,bind(function(){this.refresh_data(true);},this));},this));}},refresh_history:function(loop){var check=this.custom_ajax_action("get_site_resource_history");if(loop){check.addCallback(bind(function(){MochiKit.Async.callLater(30,bind(function(){this.refresh_history(true);},this));},this));}
return check;},refresh_timestamps:function(){var elements=MochiKit.DOM.getElementsByTagAndClassName("span","Basis.english_timestamp");for(var x=0;x<elements.length;x++){var element=Basis.get_element(elements[x]);if(element&&element.time){var timestamp=this.english_timestamp(element.time);if(timestamp!=element.firstChild.textContent){element.firstChild.textContent=timestamp;appear(element,{"duration":0.5,"from":0,"to":1});}}}
MochiKit.Async.callLater(this.timestamp_refresh_rate,bind(function(){this.refresh_timestamps();},this));},render_view:function(view,alias){if(this.initialized){alias=alias?alias:"view";if(this.custom_view_renderers[view]&&this.custom_view_renderers[view][alias]&&(typeof(this.custom_view_renderers[view][alias])=="function")){var args=[];for(var x=2;x<arguments.length;x++){args[x-2]=arguments[x];}
this.debug_log("render_view("+[view,alias]+")");return this.custom_view_renderers[view][alias].apply(null,args);}}},reset_states:function(){Basis.state_handler.clear_states();Basis.state_handler.enter_state("dashboard");},resource_display_text:function(resource_id){if(resource_id&&this.resource_linker[resource_id]){var resource=this.resource_linker[resource_id];switch(resource["type"]){case"CONTACT":case"CONTACT.V2":switch(this.data(resource["misc_vars"]["CONTACT_type"])){case"organization":return this.data(resource["misc_vars"]["company_name"]).trim();break;default:return(this.data(resource["misc_vars"]["first_name"])+" "+this.data(resource["misc_vars"]["last_name"])).trim();break;}
break;default:return this.data(resource["display_text"]);break;}}
return"";},resource_get_existing_alert_resource_id_for:function(resource_id){if(Basis.is_number(resource_id)){if(this.available_resources["ALERT"]&&(Basis.array_length(this.available_resources["ALERT"])>0)){var keys=Basis.keys(this.available_resources["ALERT"]);for(var i=0;i<keys.length;i++){var alert_resource_id=keys[i];if(this.resource_linker[alert_resource_id]&&(this.resource_linker[alert_resource_id]["misc_vars"]["type"]=="alert")&&(Basis._int(this.resource_linker[alert_resource_id]["misc_vars"]["attached_to_resource_id"])==Basis._int(resource_id))){return Basis._int(alert_resource_id);}}}}
return false;},resource_has_existing_alerts:function(resource_id){return(this.resource_get_existing_alert_resource_id_for(resource_id)>0)?true:false;},resource_has_inherited_permissions:function(resource_id){if(Basis.is_number(resource_id)){switch(this.resource_linker[resource_id]["type"]){case"CONTACT.V2":var list=this.resource_linker[resource_id]["associated_resources"]["CONTACT_LIST"];if(list){var keys=Basis.keys(list);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]&&this.resource_linker[keys[i]]["restrictions"]){return(Basis.keys(this.resource_linker[keys[i]]["restrictions"]).length==0)?false:true;}else{this.debug_log("Can't find resource #"+keys[i]);}}}
break;case"TASK":var list=this.resource_linker[resource_id]["associated_resources"]["TASK_LIST"];if(list){var keys=Basis.keys(list);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]&&this.resource_linker[keys[i]]["restrictions"]){return(Basis.keys(this.resource_linker[keys[i]]["restrictions"]).length==0)?false:true;}else{this.debug_log("Can't find resource #"+keys[i]);}}}
break;case"FILE":case"FOLDER":var inherited=false;var list=this.resource_linker[resource_id]["misc_vars"]["path_parent_resources"];if(list&&list.length){for(var i=0;i<list.length;i++){if(this.resource_linker[list[i]]&&this.resource_linker[list[i]]["restrictions"]){inherited=(Basis.keys(this.resource_linker[list[i]]["restrictions"]).length==0)?inherited:true;}else{this.debug_log("Can't find resource #"+list[i]);}}}
return inherited;break;}}
return false;},resource_is_associated_with_resource:function(resource_id_a,resource_id_b){if(resource_id_a&&this.resource_linker[resource_id_a]&&resource_id_b&&this.resource_linker[resource_id_b]){return(this.resource_linker[resource_id_a]["associated_resources"][this.resource_linker[resource_id_b]["type"]]&&this.resource_linker[resource_id_a]["associated_resources"][this.resource_linker[resource_id_b]["type"]][resource_id_b]&&this.resource_linker[resource_id_b]["associated_resources"][this.resource_linker[resource_id_a]["type"]]&&this.resource_linker[resource_id_b]["associated_resources"][this.resource_linker[resource_id_a]["type"]][resource_id_a])?true:false;}
return false;},resource_type_text:function(resource_id_or_type){if(resource_id_or_type){var type=Basis.is_number(resource_id_or_type)?this.resource_linker[resource_id_or_type]["type"]:resource_id_or_type;var index=this.resource_types.indexOf(type);if(index>-1){return this.resource_types_text[index];}}},run_wizard:function(alias,options){if(Basis.state_handler.current_state!="wizard"){var options=options?options:{};if(alias&&this.wizards[alias]&&Basis.is_function(this.wizards[alias].compile)&&Basis.is_function(this.wizards[alias].setup)){this.wizards[alias].options=options;this.wizards[alias].setup();this.wizards[alias].compile();}}},set_custom_ajax_action:function(alias,func){this.debug_log(["set_custom_ajax_action()",alias]);if(alias&&func&&(typeof(func)=="function")){this.custom_ajax_actions[alias]=func;}},set_custom_view_renderer:function(view,alias,func){this.debug_log(["set_custom_view_renderer()",view,alias]);if(view&&alias&&func&&(typeof(func)=="function")){var to_update={};to_update[view]={};to_update[view][alias]=func;MochiKit.Base.updatetree(this.custom_view_renderers,to_update);}},set_up_custom_ajax_actions:function(){this.set_custom_ajax_action("get_site_diskspace",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_site_diskspace";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["total"]){this.dashboard.max_diskspace=response["total"];}
if(response["used"]){this.dashboard.diskspace_used=response["used"];}
var obj=Basis.get_element("diskspace_meter");if(obj){obj.innerHTML=this.dashboard.render_view("FILE","diskspace").innerHTML;}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("dashboard_initialize",bind(function(get_available_resources_types){var to_post={};to_post["get_available_resources_types"]=get_available_resources_types?get_available_resources_types:{};var as=new Basis.ajax_scaffold;as.alias="dashboard_initialize";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["get_site_settings"]){this.dashboard.site_settings[this.dashboard.site_id]=response["get_site_settings"];}
if(response["get_site_billing_info"]){this.dashboard.site_billing_info[this.dashboard.site_id]=response["get_site_billing_info"];}
if(response["get_site_folders"]){if(window.DOMParser){var parser=new DOMParser();var xmlDoc=parser.parseFromString(response["get_site_folders"],"text/xml");}else{var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.loadXML(response["get_site_folders"]);}
var root=xmlDoc.getElementsByTagName("root")[0];if(root){this.dashboard.folders={"files":root.getElementsByTagName("files")[0],"gallery_files":root.getElementsByTagName("gallery_files")[0]};}}
if(response["get_site_resource_history"]){this.dashboard.resource_history[this.dashboard.site_id]=response["get_site_resource_history"];}
if(response["get_site_pending_requests"]){this.dashboard.pending_requests[this.dashboard.site_id]=response["get_site_pending_requests"];}
if(response["get_site_custom_css"]){this.dashboard.custom_css[this.dashboard.site_id]=response["get_site_custom_css"];}
if(response["get_available_resources"]){MochiKit.Base.update(this.dashboard.available_resources,response["get_available_resources"]);this.dashboard.link_resources(this.dashboard.available_resources);}
if(response["get_site_diskspace"]){this.dashboard.max_diskspace=response["get_site_diskspace"]["total"];this.dashboard.diskspace_used=response["get_site_diskspace"]["used"];}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("set_resource_permissions",bind(function(resource_id,permissions,append_permissions,lock_icon){var to_post={};to_post["resource_id"]=resource_id;to_post["permissions"]=permissions;to_post["append"]=(append_permissions==true)?true:false;var as=new Basis.ajax_scaffold;as.alias="set_resource_permissions";as.dashboard=this;as.resource_id=resource_id;as.lock_icon=lock_icon;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response["success"]==true){this.dashboard.resource_linker[this.resource_id]["has_restrictions"]=response["has_restrictions"];this.dashboard.resource_linker[this.resource_id]["restrictions"]=response["restrictions"];if(this.lock_icon&&Basis.get_element(this.lock_icon)){this.lock_icon.src=response["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.dashboard.resource_has_inherited_permissions(this.resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png");}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("clear_resource_permissions",bind(function(resource_id,lock_icon){var to_post={};to_post["resource_id"]=resource_id;var as=new Basis.ajax_scaffold;as.alias="clear_resource_permissions";as.dashboard=this;as.resource_id=resource_id;as.lock_icon=lock_icon;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["has_restrictions"]=false;this.dashboard.resource_linker[this.resource_id]["restrictions"]={};if(this.lock_icon&&Basis.get_element(this.lock_icon)){this.lock_icon.src=this.dashboard.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png";}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("import_contacts_from_vcard",bind(function(options){var to_post=options?options:{};var as=new Basis.ajax_scaffold;as.alias="import_contacts_from_vcard";as.dashboard=this;as.on_success=function(req){var resources_to_load=MochiKit.Base.evalJSON(req.responseText);if(resources_to_load&&resources_to_load.length&&(resources_to_load.length>0)){alert((resources_to_load.length-2)+" contact"+(((resources_to_load.length-2)==1)?"":"s")+" were successfully imported!");if((resources_to_load.length-2)>0){this.dashboard.get_assorted_resources(resources_to_load);}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("email_contacts",bind(function(options){var options=options?options:{};var to_post=options["data_row"];to_post["resource_ids"]=options["currently_selected"];var as=new Basis.ajax_scaffold;as.alias="email_contacts";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(Basis.is_number(response["email_resource_id"])){if(Basis.is_number(response["total_to_send"])&&Basis.is_number(response["total_sent"])&&(Basis._int(response["total_sent"])==Basis._int(response["total_to_send"]))){alert("The email was successfully sent!");}else{var num_sent=Basis._int(response["total_sent"]);alert("Only "+num_sent+" email"+((num_sent==1)?" was ":"s were ")+"sent - you may have run out of available email blasts for this month!");}
this.dashboard.get_assorted_resources([response["email_resource_id"],this.dashboard.get_site_resource_id()]);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("verify_login",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="verify_login";as.url=Basis.preserve_url_path().substring(0,(Basis.preserve_url_path().length-5))+"is_logged.php";as.dashboard=this;as.on_success=function(req){if(req.responseText=="false"){var message=[P(null,"You've somehow become logged out!"),P(null,"Click OK to log back in.")];this.dashboard.error_message(message,function(){window.onbeforeunload=null;window.location.href=(""+window.location.href);});}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("log_browsing_environment",function(){var to_post={};to_post["os"]=BrowserDetect.OS+" / "+navigator.oscpu;to_post["browser"]=BrowserDetect.browser+" "+BrowserDetect.version;to_post["resolution"]=screen.width+"x"+screen.height;to_post["viewport"]=MochiKit.DOM.getViewportDimensions().w+"x"+MochiKit.DOM.getViewportDimensions().h;to_post["color_depth"]=screen.colorDepth;to_post["flash_version"]=Basis.get_flash_version();to_post["cookies_enabled"]=Basis.check_for_cookies()?"true":"false";var as=new Basis.ajax_scaffold;as.alias="log_browsing_environment";as.on_success=function(){window.status="Done";};return as.post({"to_post":to_post});});this.set_custom_ajax_action("save_site_custom_css",bind(function(raw_css,css){var to_post={};to_post["css"]=css;to_post["raw_css"]=raw_css;var as=new Basis.ajax_scaffold;as.alias="save_site_custom_css";as.dashboard=this;as.css={"css":css,"raw_css":raw_css};as.on_success=function(){this.dashboard.custom_css[this.dashboard.site_id].css=this.css.css;this.dashboard.custom_css[this.dashboard.site_id].raw_css=this.css.raw_css;window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_custom_css",bind(function(){var to_post={};var as=new Basis.ajax_scaffold;as.alias="get_site_custom_css";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){this.dashboard.custom_css[this.dashboard.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("complete_pending_request",bind(function(request_id,request_status,element_to_delete){if(request_id&&request_status&&element_to_delete){var to_post={};to_post["request_id"]=request_id?request_id:"";to_post["request_status"]=request_status?request_status:"";var as=new Basis.ajax_scaffold;as.alias="complete_pending_request";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.pending_requests[this.dashboard.site_id];for(var i in list){if(list[i]["id"]==this.request_id){delete list[i];var obj=Basis.get_element(this.element_to_delete);if(obj){MochiKit.Visual.fade(obj,{"duration":0.50,"afterFinish":function(){Basis.remove_element(obj);}});}}}},{"dashboard":this,"element_to_delete":element_to_delete,"request_id":request_id});return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_site_pending_requests",bind(function(site_id){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_pending_requests";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.pending_requests;list[this.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as,"site_id":site_id});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("user_change_password",bind(function(resource_id,password){var to_post={};to_post["resource_id"]=resource_id;to_post["password"]=password;var as=new Basis.ajax_scaffold;as.alias="user_change_password";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("add_site_product",bind(function(product_id){var to_post={};to_post["site_id"]=this.site_id;to_post["product_id"]=product_id?product_id:"";var as=new Basis.ajax_scaffold;as.alias="add_site_product";as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){var a=this.dashboard.custom_ajax_action("get_site_billing_info");a.addCallback(partial(function(dashboard){dashboard.render_view("WEBSITE","settings");},this.dashboard));}else{}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("renew_site",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_renew_url";as.on_success=function(req){if(req.responseText){window.onbeforeunload=null;window.location.href=req.responseText;}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_site_template_configuration",bind(function(site_id){if(site_id){var to_post=new Object();to_post["site_id"]=site_id;to_post["custom_css"]=encodeBase64(MochiKit.DOM.getElement("custom_css_999999").value);if(this.manage_template_overrides&&(this.manage_template_overrides.length>0)){to_post["overrides"]=new Array();for(var x=0;x<this.manage_template_overrides.length;x++){var o_value=MochiKit.DOM.getElement("value_"+this.manage_template_overrides[x]+"_999999");var o_link=MochiKit.DOM.getElement("link_value_"+this.manage_template_overrides[x]+"_999999");var o_type=MochiKit.DOM.getElement("type_"+this.manage_template_overrides[x]+"_999999");if(this.manage_template_overrides[x]){to_post["overrides"][to_post["overrides"].length]={"replacement_id":this.manage_template_overrides[x],"value":((o_value)?(o_value.value):""),"link":((o_link)?(o_link.value):""),"type":((o_type&&o_type.options)?(o_type.options[o_type.selectedIndex].value):"")};}}}
var objs=MochiKit.DOM.getElementsByTagAndClassName("input","manage_template_template_id");if(objs){for(var i in objs){if(objs[i]&&objs[i].checked){to_post["template_id"]=objs[i].value;}}}
if(this.color_chooser&&this.color_chooser.color&&this.color_chooser.color.toHexString){to_post["color"]=this.color_chooser.color.toHexString();}
var obj=MochiKit.DOM.getElement("restore_template_999999_0");if(obj&&obj.checked){to_post["restore_default_color"]="true";}
window.status="Applying changes to site template...";var as=new Basis.ajax_scaffold;as.alias="save_site_template_configuration";as.sid=this.session_id;as.url=this.post_url;as.site_id=site_id;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){window.status="Done";}else{window.status="save_site_template_configuration(): ERROR!";}};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_site_template_configuration",bind(function(site_id){var site_id=Basis.is_number(site_id)?site_id:this.site_id;if(site_id){var to_post={};to_post["site_id"]=site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_template_configuration";as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("invite_contacts_as_user",bind(function(options){var options=options?options:{};var to_post=options["data_row"];to_post["resource_ids"]=options["currently_selected"];var as=new Basis.ajax_scaffold;as.alias="invite_contacts_as_user";as.on_success=function(req){if(req.responseText=="true"){alert("The requested user(s) have been invited to join the site!");}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_resource_history",bind(function(){var to_post={};to_post["site_id"]=this.site_id;to_post["level_of_detail"]="HIGH";var as=new Basis.ajax_scaffold;as.alias="get_site_resource_history";as.dashboard=this;as.on_success=function(req){if(req.responseText){this.dashboard.resource_history[this.dashboard.site_id]=evalJSON(req.responseText);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("associate_resources",bind(function(resource_id,resources,execute_after_reload){var to_post={};to_post["resource_id"]=resource_id;to_post["resources"]=resources;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="associate_resources";as.dashboard=this;as.resource_id=resource_id;as.resources=resources;as.execute_after_reload=execute_after_reload;as.on_success=function(req){if(req.responseText!="false"){var a=this.dashboard.get_assorted_resources(flattenArray([this.resource_id,this.resources]));if(Basis.is_function(this.execute_after_reload)){a.addCallback(bind(this.execute_after_reload,a));}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("unassociate_resources",bind(function(resource_id,resources,execute_after_reload){if(Basis.is_number(resources)){var resources=[resources];}
var to_post={};to_post["resource_id"]=resource_id;to_post["resources"]=resources;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="unassociate_resources";as.dashboard=this;as.resource_id=resource_id;as.resources=resources;as.execute_after_reload=execute_after_reload;as.on_success=function(req){if(req.responseText!="false"){var a=this.dashboard.get_assorted_resources(flattenArray([this.resource_id,this.resources]));if(Basis.is_function(this.execute_after_reload)){a.addCallback(bind(this.execute_after_reload,a));}}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_settings",bind(function(site_id){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_settings";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){var list=this.dashboard.site_settings;list[this.site_id]=evalJSON(this.scaffold.deferred.req.responseText);},{"dashboard":this,"scaffold":as,"site_id":site_id});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_billing_info",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_billing_info";as.dashboard=this;as.on_success=function(req){if(req.responseText){this.dashboard.site_billing_info[this.dashboard.site_id]=evalJSON(req.responseText);}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("save_resource_alerts",bind(function(resource_id,alerts){if(resource_id&&alerts){var to_post={};to_post["resource_id"]=resource_id;to_post["alerts"]=alerts;window.status="save_resource_alerts()...";var as=new Basis.ajax_scaffold;as.alias="save_resource_alerts";as.resource_id=resource_id;as.alerts=alerts;as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["alerts"]=this.alerts;window.status="Done";}else{window.status="save_resource_alerts(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_resource_consent",bind(function(resource_id,permissions){if(resource_id&&permissions){var to_post={};to_post["resource_id"]=resource_id;to_post["permissions"]=permissions;window.status="save_resource_consent()...";var as=new Basis.ajax_scaffold;as.alias="save_resource_consent";as.resource_id=resource_id;as.permissions=permissions;as.dashboard=this;as.on_success=function(req){if(req.responseText=="true"){this.dashboard.resource_linker[this.resource_id]["permissions"]=this.permissions;window.status="Done";}else{window.status="save_resource_consent(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("add_page",bind(function(name,type,url,comments,content,page_where,page_id){if(this.site_id&&name&&type){var to_post={};to_post["site_id"]=this.site_id;to_post["page_name"]=name;to_post["page_type"]=type;to_post["url"]=url?url:"";to_post["comments"]=comments?comments:"";to_post["content"]=content?content:"";to_post["page_where"]=page_where?page_where:"";to_post["page_id"]=page_id?page_id:"";window.status="Adding page to site...";var as=new Basis.ajax_scaffold;as.alias="add_page";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var a=this.dashboard.get_assorted_resources(flattenArray([Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["PAGE"]),response["resource_id"],this.dashboard.site_resource_id]));a.addCallback(bind(function(){this.render_view("WEBSITE","default");},this.dashboard));window.status="Done";}else{window.status="add_page(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("move_page",bind(function(page_id,page_where,before_after_under_page_id){if(page_id&&page_where&&before_after_under_page_id){var to_post={};to_post["site_id"]=this.site_id;to_post["page_id"]=page_id?page_id:"";to_post["page_where"]=page_where?page_where:"";to_post["before_after_under_page_id"]=before_after_under_page_id?before_after_under_page_id:"";window.status="Moving page within site...";var as=new Basis.ajax_scaffold;as.alias="move_page";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var a=this.dashboard.get_assorted_resources(flattenArray([Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["PAGE"]),this.dashboard.site_resource_id]));a.addCallback(bind(function(){this.render_view("WEBSITE","default");},this.dashboard));window.status="Done";}else{window.status="move_page(): ERROR!";}};as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_page_order",bind(function(element){var element=MochiKit.DOM.getElement(element);if(element){var final_site=[];if(!element.childNodes||element.childNodes.length==0){return false;}
var pages=Basis.get_direct_child_elements_by_tag_and_class_name(this.ns.li_tag,this.ns.li_class,element);for(var i=0;i<pages.length;i++){var resource_id=pages[i].id.replace(/[^0-9]/g,"");var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];final_site.push(page_id);}
var resource_id=element.id.replace(/[^0-9]/g,"");var parent_type=resource_id?"page":"site";var parent_id=resource_id?this.resource_linker[resource_id]["misc_vars"]["id"]:this.site_id;for(var i=0;i<pages.length;i++){var resource_id=pages[i].id.replace(/[^0-9]/g,"");this.resource_linker[resource_id]["misc_vars"]["rank"]=i;this.resource_linker[resource_id]["misc_vars"]["parent_page_id"]=(parent_id!=this.site_id)?parent_id:0;}
var final_order={"parent_id":parent_id,"type":parent_type,"order":final_site};}
var to_post=new Object();to_post.final_order=final_order;window.status="Auto-saving page rankings...";var as=new Basis.ajax_scaffold;as.alias="save_page_order";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){this.dashboard.render_view("WEBSITE","default");window.status="Done";}else{window.status="save_page_order(): ERROR!";}};as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_documents",bind(function(site_id,dropdown){var to_post={};to_post["site_id"]=site_id?site_id:this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_documents";as.dashboard=this;as.on_success=function(){window.status="Done";};as.after_success=bind(function(){this.dashboard.site_documents=this.dashboard.site_documents?this.dashboard.site_documents:{};var list=this.dashboard.site_documents;list[this.site_id]=MochiKit.Base.evalJSON(this.scaffold.deferred.req.responseText);if(this.dropdown){this.dropdown.options.length=0;}
for(var i in list[this.site_id]){var group=new OPTGROUP(i);for(var j in list[this.site_id][i]){if(Basis.is_number(j)){group.appendChild(new Option(list[this.site_id][i][j],j));}}
if(this.dropdown){this.dropdown.appendChild(group);}}},{"dashboard":this,"scaffold":as,"site_id":site_id,"dropdown":dropdown});return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("add_new_resource",bind(function(type,data_row,list,what_to_return){var what_to_return=(what_to_return=="data_row")?"data_row":"display_text";if(type&&data_row&&what_to_return){this.system_log("Adding new "+type+"...",true);var to_post={};to_post["type"]=type;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="add_new_resource";as.list=list;as.data_row=data_row;as.what_to_return=what_to_return;as.dashboard=this;as.on_success=partial(function(type,req){var response=MochiKit.Base.evalJSON(req.responseText);switch(type){case"USER":if(response&&response["user"]&&response["contact"]){this.dashboard.resource_linker[response["user"]["resource_id"]]=response["user"]["data_row"];this.dashboard.resource_linker[response["contact"]["resource_id"]]=response["contact"]["data_row"];if(this.list){this.list.clear_cached_datasets(true);this.list.raw_data[response["user"]["resource_id"]]=(this.what_to_return=="data_row")?response["user"]["data_row"]["misc_vars"]:{"display_text":response["user"]["data_row"]["display_text"]};this.list.group_map[response["user"]["resource_id"]]=this.data_row["groups"];this.list.refresh();}
if(!this.dashboard.available_resources[response["data_row"]["type"]]){this.dashboard.available_resources[response["data_row"]["type"]]={};}
this.dashboard.available_resources[response["user"]["data_row"]["type"]][response["user"]["resource_id"]]=response["user"]["data_row"];var to_refresh=Basis.filter_numbers(Basis.keys(this.dashboard.resource_linker[response["user"]["resource_id"]]["associated_resources"],true));this.dashboard.get_assorted_resources(to_refresh);this.dashboard.system_log("Success!",true);}
break;default:if(response&&response["data_row"]&&response["resource_id"]){this.dashboard.resource_linker[response["resource_id"]]=response["data_row"];if(this.list){this.list.clear_cached_datasets(true);this.list.raw_data[response["resource_id"]]=(this.what_to_return=="data_row")?response["data_row"]["misc_vars"]:{"display_text":response["data_row"]["display_text"]};this.list.group_map[response["resource_id"]]=this.data_row["groups"];this.list.refresh();}
if(!this.dashboard.available_resources[response["data_row"]["type"]]){this.dashboard.available_resources[response["data_row"]["type"]]={};}
this.dashboard.available_resources[response["data_row"]["type"]][response["resource_id"]]=response["data_row"];if(!this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]]){this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]]={};}
this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"][response["data_row"]["type"]][response["resource_id"]]={};var to_refresh=Basis.filter_numbers(Basis.keys(this.dashboard.resource_linker[response["resource_id"]]["associated_resources"],true));this.dashboard.get_assorted_resources(to_refresh);this.dashboard.system_log("Success!",true);}
break;}
window.status="Done";},type);return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_resources",bind(function(resource_ids){if(resource_ids&&(resource_ids.length>0)&&confirm("Are you sure you want to PERMANENTLY DELETE "+((resource_ids.length>1)?"these":"this")+" resource"+((resource_ids.length>1)?"s":"")+"?")){this.system_log("Deleting resources...",true);if(resource_ids.length>25){this.please_wait_this_could_take_a_while();}
var to_post={};to_post["resource_ids"]=resource_ids;var as=new Basis.ajax_scaffold;as.alias="delete_resources";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(response&&(response.length>0)){for(var i=0;i<response.length;i++){var resource_id=Basis.filter_number(response[i]);var type=this.dashboard.resource_linker[resource_id]["type"];delete this.dashboard.available_resources[type][resource_id];delete this.dashboard.resource_linker[resource_id];}
this.dashboard.custom_ajax_action("get_available_resources",["CONTACT","CONTACT.V2","CONTACT_LIST","CUSTOM_FORM","CUSTOM_FORM_ROW","DISCUSSION","FOLDER","FORUM","GROUP","IMAGE_GALLERY","PAGE","POLL","SITE","TASK","TASK_LIST","USER"]);this.dashboard.system_log("Success!",true);}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_resource",bind(function(resource_id,data_row,list,what_to_return){var what_to_return=(what_to_return=="data_row")?"data_row":"display_text";if(resource_id&&data_row&&list&&what_to_return){this.system_log("Saving resource "+resource_id+"...",true);var to_post={};to_post["resource_id"]=resource_id;to_post["data_row"]=data_row;var as=new Basis.ajax_scaffold;as.alias="save_resource";as.list=list;as.resource_id=resource_id;as.data_row=data_row;as.what_to_return=what_to_return;as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);if(Basis.is_number(response["resource_id"])&&response["data_row"]){this.dashboard.resource_linker[response["resource_id"]]=response["data_row"];if(Basis.array_length(this.list.raw_data)>0){this.list.clear_cached_datasets(true);this.list.raw_data[response["resource_id"]]=(this.what_to_return=="data_row")?response["data_row"]["misc_vars"]:{"display_text":response["data_row"]["display_text"]};this.list.group_map[response["resource_id"]]=this.data_row["groups"];this.list.refresh();}
this.dashboard.system_log("Success!",true);}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_assorted_resources",bind(function(resource_ids){if(Basis.array_length(resource_ids)>0){var to_post={};to_post["resource_ids"]=resource_ids;to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_assorted_resources";as.dashboard=this;as.on_success=function(req){var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.updatetree(this.dashboard.resource_linker,resources);for(var i in resources){if(typeof(resources[i])!="function"){var update={};update[i]=resources[i];MochiKit.Base.updatetree(this.dashboard.available_resources[resources[i]["type"]],update);}}
window.status="Done";};return as.post({"to_post":to_post});}else{return new MochiKit.Async.succeed();}},this));this.set_custom_ajax_action("get_available_resources",bind(function(types){if((this.view||types)&&this.organization_id){var to_post={};to_post["types"]=(!types)?[this.view]:((Basis.array_length(types)>0)?types:this.view_associations[types]);to_post["organization_id"]=this.organization_id;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_available_resources";as.dashboard=this;as.on_success=function(req){var resources=MochiKit.Base.evalJSON(req.responseText);MochiKit.Base.update(this.dashboard.available_resources,resources);this.dashboard.link_resources(this.dashboard.available_resources);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("create_new_folder",bind(function(parent_folder_path_reference){if(!parent_folder_path_reference){return false;}
if(confirm("Are you sure you want to create a new folder?")){var to_post={};to_post["folder_path_reference"]=parent_folder_path_reference;var as=new Basis.ajax_scaffold;as.alias="create_new_folder";as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(req.responseText);var new_folder_resource_id=response["new_folder_resource_id"];var parent_folder_resource_id=response["parent_folder_resource_id"];if(new_folder_resource_id&&parent_folder_resource_id){var a=this.dashboard.get_assorted_resources([new_folder_resource_id]);a.addCallback(bind(function(){var parent=this.folders["files"].getElementsByTagName("resource_id_"+parent_folder_resource_id)[0];if(parent){if(BrowserDetect.browser=="Explorer"){var xmlDocument=new ActiveXObject('Microsoft.XMLDOM');var node=xmlDocument.createElement("resource_id_"+new_folder_resource_id);MochiKit.DOM.addElementClass(node,"resource");parent.appendChild(node);}else{parent.appendChild(MochiKit.DOM.createDOM(("resource_id_"+new_folder_resource_id),{"class":"resource"}));}}
this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onclick");},this.dashboard));}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("create_new_root_folder",bind(function(type){switch(type){case"files":case"gallery":break;default:type=null;break;}
if(!type){return false;}
if(confirm("Are you sure you want to create a new folder?")){var to_post={};to_post["type"]=type;to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="create_new_root_folder";as.dashboard=this;as.on_success=function(req){var new_folder_resource_id=req.responseText;if(Basis.is_number(new_folder_resource_id)){var a=this.dashboard.custom_ajax_action("get_assorted_resources",[new_folder_resource_id]);a.addCallback(bind(partial(function(type,new_folder_resource_id){if(BrowserDetect.browser=="Explorer"){var xmlDocument=new ActiveXObject('Microsoft.XMLDOM');var node=xmlDocument.createElement("resource_id_"+new_folder_resource_id);MochiKit.DOM.addElementClass(node,"resource");this.folders["files"].appendChild(node);}else{this.folders["files"].appendChild(MochiKit.DOM.createDOM(("resource_id_"+new_folder_resource_id),{"class":"resource"}));}
this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+new_folder_resource_id),"onclick");},type,new_folder_resource_id),this.dashboard));}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_files",bind(function(files_to_delete){if(Basis.array_length(files_to_delete)<1){alert("You haven't selected any files to delete!");return false;}
if(confirm("Are you sure you want to delete the selected files?")){var to_post={};to_post["files_to_delete"]=files_to_delete;var as=new Basis.ajax_scaffold;as.alias="delete_files";as.dashboard=this;as.on_success=function(req){var successfully_deleted=MochiKit.Base.evalJSON(req.responseText);var effects=[];var is_folder=false;for(var i in successfully_deleted){if(typeof(successfully_deleted[i])!="function"){if(as.dashboard.resource_linker[i]["type"]=="FOLDER"){is_folder=true;}
effects.push(new MochiKit.Visual.fade(("resource_"+i),{"duration":0.50,"afterFinish":bind(function(){Basis.remove_element(("resource_"+i));delete this.resource_linker[i];},as.dashboard)}));}}
as.dashboard.custom_ajax_action("get_site_diskspace");new MochiKit.Visual.Parallel(effects,{"duration":0.50,"afterFinish":bind(function(){if(is_folder){this.compile("file_explorer",this.mode);}},as.dashboard)});window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("delete_folder",bind(function(parent_folder_path_reference){if(!parent_folder_path_reference){return false;}
if(confirm("Are you sure you want to PERMANENTLY DELETE this folder and all of its contents?")){var to_post={};to_post["folder_path_reference"]=parent_folder_path_reference;var as=new Basis.ajax_scaffold;as.alias="delete_folder";as.dashboard=this;as.on_success=function(req){var resource_id=req.responseText;if(resource_id){var node=this.dashboard.folders["files"].getElementsByTagName("resource_id_"+resource_id)[0];if(node){MochiKit.Visual.fade(("resource_"+resource_id),{"duration":0.50,"afterFinish":partial(function(node,resource_id,dashboard){Basis.remove_element("resource_"+resource_id);var parent_id=Basis.filter_number(node.parentNode.tagName);Basis.remove_element(node);dashboard.elements["file_explorer"].render_again(("resource_"+parent_id));dashboard.custom_ajax_action("get_site_diskspace");},node,resource_id,this.dashboard)});}}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_folder_files",bind(function(resource_id){var to_post={};to_post["resource_id"]=resource_id;var as=new Basis.ajax_scaffold;as.alias="get_folder_files";as.dashboard=this;as.on_success=function(req){var root=req.responseXML.getElementsByTagName("root")[0];if(root){this.dashboard.files=root.getElementsByTagName("files")[0];}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("get_site_folders",bind(function(){var to_post={};to_post["site_id"]=this.site_id;var as=new Basis.ajax_scaffold;as.alias="get_site_folders";as.dashboard=this;as.on_success=function(req){var root=req.responseXML.getElementsByTagName("root")[0];if(root){this.dashboard.folders={"files":root.getElementsByTagName("files")[0],"gallery_files":root.getElementsByTagName("gallery_files")[0]};}
window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("move_files",bind(function(folder_path_reference,files_to_move,section){var section=(!section||(section=="files"))?"files":"gallery_files";var to_post={};to_post["folder_path_reference"]=folder_path_reference;to_post["files_to_move"]=files_to_move;var as=new Basis.ajax_scaffold;as.alias="move_files";as.dashboard=this;as.on_success=function(req){var successfully_moved=MochiKit.Base.evalJSON(req.responseText);var effects=[];var to_load=[];var is_folder=false;for(var i in successfully_moved){if(typeof(successfully_moved[i])!="function"){var old_file_resource_id=successfully_moved[i]["old_file_resource_id"];var new_file_resource_id=successfully_moved[i]["new_file_resource_id"];if(this.dashboard.resource_linker[old_file_resource_id]&&(this.dashboard.resource_linker[old_file_resource_id]["type"]=="FOLDER")){is_folder=true;}
if(old_file_resource_id!=new_file_resource_id){delete this.dashboard.resource_linker[old_file_resource_id];}
to_load.push(new_file_resource_id);effects.push(new MochiKit.Visual.fade(getElement("resource_"+old_file_resource_id),{"duration":0.50,"afterFinish":partial(function(resource_id,is_folder,dashboard,successfully_moved,section){Basis.remove_element("resource_"+resource_id);if(is_folder){var old_parent_resource_id=successfully_moved[i]["old_parent_resource_id"];var new_parent_resource_id=successfully_moved[i]["new_parent_resource_id"];if(old_parent_resource_id&&new_parent_resource_id){var old_parent=dashboard.folders[section].getElementsByTagName("resource_id_"+old_parent_resource_id)[0];var new_parent=dashboard.folders[section].getElementsByTagName("resource_id_"+new_parent_resource_id)[0];var old_node=dashboard.folders[section].getElementsByTagName("resource_id_"+resource_id)[0];if(old_parent&&new_parent&&(old_parent!=new_parent)&&old_node){new_parent.appendChild(old_node);}}}},old_file_resource_id,is_folder,this.dashboard,successfully_moved,section)}));}}
var a=this.dashboard.custom_ajax_action("get_assorted_resources",[new_file_resource_id]);a.addCallback(partial(function(is_folder,dashboard,resource_id){new MochiKit.Visual.Parallel(effects,{"duration":0.50,"afterFinish":bind(partial(function(is_folder,resource_id){if(is_folder){this.elements["file_explorer"].render_again();Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onclick");}},is_folder,resource_id),dashboard)});},is_folder,this.dashboard,new_file_resource_id));window.status="Done";};return as.post({"to_post":to_post});},this));this.set_custom_ajax_action("configure_access_restrictor",bind(function(mode,key){var lists=["full_access","read_only","no_access"];for(var x in lists){if(typeof(lists[x])!="function"){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);if(ul&&ul.childNodes){for(var i in ul.childNodes){var obj=MochiKit.DOM.getElement(ul.childNodes[i]);if(obj&&Basis.is_element(obj)){obj.signals=obj.signals?obj.signals:[];obj.signals.push(new MochiKit.DragAndDrop.Draggable(obj,{"revert":true,"reverteffect":function(innerelement,top_offset,left_offset){return new MochiKit.Visual.Move(innerelement,{"x":-left_offset,"y":-top_offset,"duration":0});}}));}}}
if(Basis.is_element(ul)){ul.signals=ul.signals?ul.signals:[];ul.signals.push(new MochiKit.DragAndDrop.Droppable(ul,{"hoverclass":"drop-hover","ondrop":bind(partial(function(mode,key,element,dropped_on){var resource_id=element.id.replace(/[^0-9]/g,"");var from_ul=element.id.split("|")[0];if(mode=="page"){if(this.page_restrictions[key]&&this.page_restrictions[key][from_ul]){var list=this.page_restrictions[key][from_ul];var index=MochiKit.Base.findValue(list,resource_id);if(index>-1){list.splice(index,1);}
var id=dropped_on.id.split(".");var list=this.page_restrictions[key][id[id.length-1]];if(list){list.push(resource_id);}}}else{if(this.file_restrictions[key]&&this.file_restrictions[key][from_ul]){var list=this.file_restrictions[key][from_ul];var index=MochiKit.Base.findValue(list,resource_id);if(index>-1){list.splice(index,1);}
var id=dropped_on.id.split(".");var list=this.file_restrictions[key][id[id.length-1]];if(list){list.push(resource_id);}}}
dropped_on.appendChild(element);Basis.sort_ul(dropped_on,function(nodes,a){if(nodes[a]){var text=MochiKit.DOM.scrapeText(nodes[a].firstChild.firstChild.firstChild.childNodes[1]);return text;}});this.attempt_save(bind(partial(function(mode,key){(mode=="page")?this.custom_ajax_action("save_page_restrictions",key):this.custom_ajax_action("save_file_restrictions",key);},mode,key),this));},mode,key),this)}));}}}},this));this.set_custom_ajax_action("get_file_restrictions",bind(function(path_reference){if(path_reference){var to_post={};to_post["path_reference"]=path_reference;var as=new Basis.ajax_scaffold;as.alias="get_file_restrictions";as.dashboard=this;as.on_success=function(req){var restrictions=MochiKit.Base.evalJSON(decodeBase64(req.responseText));var update={};update[path_reference]=restrictions;MochiKit.Base.updatetree(as.dashboard.file_restrictions,update);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("get_page_restrictions",bind(function(page_id){if(page_id){var to_post={};to_post["page_id"]=page_id;var as=new Basis.ajax_scaffold;as.alias="get_page_restrictions";as.dashboard=this;as.on_success=function(req){var restrictions=MochiKit.Base.evalJSON(decodeBase64(req.responseText));var update={};update[page_id]=restrictions;MochiKit.Base.updatetree(as.dashboard.page_restrictions,update);window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("populate_access_restrictor",bind(function(users){var lists=["full_access","read_only","no_access"];var users=MochiKit.Base.updatetree({"full_access":[],"read_only":[],"no_access":[]},users);var to_populate=[];for(var x in lists){for(var y in users[lists[x]]){if(typeof(users[lists[x]])!="function"){if(typeof(users[lists[x]][y])!="function"){var resource_id=users[lists[x]][y];if(!this.resource_linker[resource_id]){to_populate.push(resource_id);}}}}}
to_populate=Basis.clone(to_populate);var a=(Basis.array_length(to_populate)>0)?this.get_assorted_resources(to_populate):new MochiKit.Async.succeed();a.addCallback(bind(function(){for(var x in lists){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);if(ul){var lis=Basis.get_direct_child_elements_by_tag_and_class_name("LI",null,ul);for(var i=0;i<lis.length;i++){Basis.remove_element(lis[i]);}
Basis.updated_live_dom();}}
for(var x in lists){var ul=MochiKit.DOM.getElement(this.element_ids["elements"][lists[x]]);for(var y in users[lists[x]]){var resource_id=users[lists[x]][y];if((typeof(resource_id)!="function")&&this.in_site(resource_id)){if(ul){var li=LI({"id":(lists[x]+"|"+resource_id),"style":"margin: 0px; padding-left: 0px; cursor: move;"},TABLE({"width":"100%","border":"0","cellpadding":"2","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"20","style":"padding-bottom: 3px;"},IMG({"src":this.get_view_association_icon("USER")})),TD({"width":"75"},(this.resource_linker[resource_id]["display_text"])),TD({"style":"color: #808080;"},null)))));ul.appendChild(li);}}}
if(ul){Basis.sort_ul(ul,function(nodes,a){if(nodes[a]){var text=MochiKit.DOM.scrapeText(nodes[a].firstChild.firstChild.firstChild.childNodes[1]);return text;}});}}},this));return a;},this));this.set_custom_ajax_action("populate_preset",bind(function(mode,preset){var list=this.available_resources["USER"];var key=(mode=="page")?this.resource_linker[this.resource_id]["misc_vars"]["id"]:this.resource_linker[this.resource_id]["misc_vars"]["path_reference"];if(preset&&list){var users={"full_access":[],"read_only":[],"no_access":[]};switch(preset){case"RESET":users=(mode=="page")?this.original_page_restrictions[key]:this.original_file_restrictions[key];break;case"ALL_BASIC":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)&&list[resource_id]["misc_vars"]["site_levels"]){var level=list[resource_id]["misc_vars"]["site_levels"][this.site_id];if(level){switch(level){case"USER_LEVEL_BASIC_READ_ONLY":users["read_only"].push(resource_id);break
case"USER_LEVEL_BASIC":users["full_access"].push(resource_id);break
default:users["no_access"].push(resource_id);break}}}}
break;case"ALL_PRIVATE":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)&&list[resource_id]["misc_vars"]["site_levels"]){var level=list[resource_id]["misc_vars"]["site_levels"][this.site_id];if(level){switch(level){case"USER_LEVEL_PRIVATE_READ_ONLY":users["read_only"].push(resource_id);break
case"USER_LEVEL_PRIVATE":users["full_access"].push(resource_id);break
default:users["no_access"].push(resource_id);break}}}}
break;case"ALL_READ_ONLY":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){(this.user_levels[level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?users["full_access"].push(resource_id):users["read_only"].push(resource_id);}}
break;case"ALL_FULL_ACCESS":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){users["full_access"].push(resource_id);}}
break;case"ALL_NO_ACCESS":for(var resource_id in list){if((typeof(list[resource_id])!="function")&&this.in_site(resource_id)){(this.user_levels[level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?users["full_access"].push(resource_id):users["no_access"].push(resource_id);}}
break;}
if(mode=="page"){this.page_restrictions[key]=users;}else{this.file_restrictions[key]=users;}
this.custom_ajax_action("populate_access_restrictor",mode,users);this.custom_ajax_action("configure_access_restrictor",mode,key);if(mode=="page"){this.custom_ajax_action("save_page_restrictions",key);}else if(mode=="file"){this.custom_ajax_action("save_file_restrictions",key);}}},this));this.set_custom_ajax_action("save_file_restrictions",bind(function(path_reference){if(path_reference){var restrictions=Basis.clone(this.file_restrictions[path_reference]);delete restrictions["no_access"];var to_post={};to_post["path_reference"]=path_reference;to_post["restrictions"]=restrictions;var as=new Basis.ajax_scaffold;as.alias="save_file_restrictions";as.dashboard=this;as.on_success=function(req){var list=as.dashboard.resource_linker;for(var i in list){if(typeof(list[i])!="function"){switch(list[i]["type"]){case"FILE":case"FOLDER":if(list[i]["misc_vars"]["path_reference"]==path_reference){if((Basis.array_length(restrictions["full_access"])+Basis.array_length(restrictions["read_only"]))==0){list[i]["has_restrictions"]=false;var icon=Basis.get_element("resource_id_"+i+"_access_restrictor");if(icon){icon.src=(as.dashboard.resource_has_inherited_permissions(i)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png");}}else{list[i]["has_restrictions"]=true;var icon=Basis.get_element("resource_id_"+i+"_access_restrictor");if(icon){icon.src="images/images/default_icons/png/lock.png";}}}
break;}}}
window.status="Done";};return as.post({"to_post":to_post});}},this));this.set_custom_ajax_action("save_page_restrictions",bind(function(page_id){if(page_id){var restrictions=Basis.clone(this.page_restrictions[page_id]);delete restrictions["no_access"];var to_post={};to_post["page_id"]=page_id;to_post["restrictions"]=restrictions;var as=new Basis.ajax_scaffold;as.alias="save_page_restrictions";as.dashboard=this;as.on_success=function(req){window.status="Done";};return as.post({"to_post":to_post});}},this));},set_up_custom_renderers:function(){Basis.state_handler.add_state("DEFAULT_my_profile");this.set_custom_view_renderer("DEFAULT","my_profile",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("DEFAULT_my_profile");this.populate_submenu("default","Default");this.tiles.ui.clear_all_tiles();var content=this.render_view("DEFAULT","resource_detail",this.current_user_resource_id);var index=this.render_view("DEFAULT","default","My Profile",content);content.menu.highlight_item(0);this.tiles.ui.go_to(index);if(Basis.get_cookie("do_not_show_user_profile_contacts_location")!="true"){var element=getElement(("CONTACT.V2_connected_to_"+this.current_user_resource_id));var custom_animation=partial(function(obj){Basis.misc_vars.edit_bar_alert_box=Basis.create_edit_bar_alert_box("<div style=\"white-space: nowrap; text-align: center;\"><div style=\"padding-bottom: 5px;\">These are your contacts.</div><div>You can edit one by clicking on it.</div>","white",200,null,true);Basis.align_element_to_element(Basis.misc_vars.edit_bar_alert_box,obj,"left_to_left",{"x":8});Basis.misc_vars.edit_bar_alert_box.style.top=null;Basis.misc_vars.edit_bar_alert_box.style.position="fixed";var bottom=(getViewportDimensions().h+document.body.scrollTop-getElementPosition(obj).y+5);document.body.appendChild(Basis.misc_vars.edit_bar_alert_box);appear(Basis.misc_vars.edit_bar_alert_box);var starting_point=getViewportDimensions().h;var t1=new Tween(Basis.misc_vars.edit_bar_alert_box.style,"bottom",Tween.bounceEaseOut,starting_point,bottom,1.0,"px");t1.onMotionFinished=function(){MochiKit.Async.callLater(3,function(){if(Basis.misc_vars.edit_bar_alert_box.fader&&Basis.misc_vars.edit_bar_alert_box.fader.cancel){Basis.misc_vars.edit_bar_alert_box.fader.cancel();}
Basis.misc_vars.edit_bar_alert_box.fader=fade(Basis.misc_vars.edit_bar_alert_box,{"afterFinish":function(){if(Basis.misc_vars.edit_bar_alert_box.fader.state=="finished"){Basis.remove_element(Basis.misc_vars.edit_bar_alert_box);Basis.misc_vars.edit_bar_alert_box=null;Basis.destroy_modal_background();Basis.set_cookie("do_not_show_user_profile_contacts_location","true",365);}}});});};t1.start();},element);Basis.create_modal_background(null,null,{"afterFinish":custom_animation});}},this));this.set_custom_view_renderer("DEFAULT","profile_content",bind(function(){var receives_emails=SELECT();Basis.select_add_options(receives_emails,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(receives_emails,(this.resource_linker[this.current_user_resource_id]["misc_vars"]["receives_emails"]?"yes":"no"));Basis.make_text_element_dropdown(receives_emails,null,{"resource_id":this.current_user_resource_id,"field":"receives_emails","after_success":partial(function(dashboard,resource_id,element,req){dashboard.resource_linker[resource_id]["misc_vars"]["receives_emails"]=element.options[element.selectedIndex].value;},this,this.current_user_resource_id,receives_emails)});var profile=DIV({"style":"padding: 10px"},TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"100","style":"font-weight: bold;"},"Receive emails?"),TD(null,receives_emails)))));return profile;},this));this.set_custom_view_renderer("DEFAULT","resource_alerts_button",bind(function(resource_id){var content=DIV();if(resource_id&&this.resource_linker[resource_id]){if(!this.resource_has_existing_alerts(resource_id)){if(this.resource_linker[resource_id]["resource_access"]["full_access"]){var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/error.png);","value":"Click here to set an Alert for when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){this.run_wizard("ALERT",{"data_row":{},"target_resource_id":target_resource_id,"mode":"add"});},resource_id),this),false);content=button;}}else{var delete_button=Basis.nbsp();if(this.resource_linker[resource_id]["resource_access"]["full_access"]){var delete_button=IMG({"src":"images/images/default_icons/png/delete.png","style":"cursor: pointer;"});Basis.signal_handler.connect(delete_button,"onclick",bind(partial(function(resource_id,alert_resource_id){var a=this.custom_ajax_action("delete_resources",[alert_resource_id]);if(a){a.addCallback(bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id),this));}},resource_id,this.resource_get_existing_alert_resource_id_for(resource_id)),this),false);Basis.attach_tooltip(delete_button,"Delete this "+this.resource_type_text(this.resource_get_existing_alert_resource_id_for(resource_id)),null,false);}
var alert_link=this.render_view("DEFAULT","resource_with_icon",this.resource_get_existing_alert_resource_id_for(resource_id),true,"Click here to change who should be alerted");content=DIV(null,alert_link,Basis.nbsp(),delete_button);alert_link.style.display="inline";delete_button.style.display="inline";content.style.display="inline";}
var button=null;if(!this.resource_is_associated_with_resource(this.current_user_resource_id,this.resource_get_existing_alert_resource_id_for(resource_id))){var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/eye.png);","value":"I want to be alerted when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){if(!this.resource_has_existing_alerts(resource_id)){var data_row={"type":"alert","attached_to_resource_id":target_resource_id,"auto_associate_user_resource_id":this.current_user_resource_id};var a=this.custom_ajax_action("add_new_resource","ALERT",data_row);a.addCallback(bind(partial(function(dashboard){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=Basis._int(response["data_row"]["misc_vars"]["attached_to_resource_id"]);if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this),a));}else{var after_reload=partial(function(dashboard,target_resource_id){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)&&dashboard.tiles.ui.tiles[0].list){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var resource_id=target_resource_id;if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this,target_resource_id);this.custom_ajax_action("associate_resources",this.current_user_resource_id,[this.resource_get_existing_alert_resource_id_for(resource_id)],after_reload);}},resource_id),this),false);}else{var button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/png/stop.png);","value":"Stop alerting me when this "+this.resource_type_text(resource_id)+" changes"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(target_resource_id){var after_reload=partial(function(dashboard,target_resource_id){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)&&dashboard.tiles.ui.tiles[0].list){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=target_resource_id;if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(detail.menu.selected_index);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this,target_resource_id);this.custom_ajax_action("unassociate_resources",this.resource_get_existing_alert_resource_id_for(target_resource_id),this.current_user_resource_id,after_reload);},resource_id),this),false);}
if(button){content=DIV(null,DIV(null,content),DIV(null,button));}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_type_associator",bind(function(resource_type,resource_id){var resource_type=resource_type?resource_type.toUpperCase():"";var content=DIV();if(resource_id&&this.resource_linker[resource_id]&&this.resource_types.indexOf(resource_type)>-1){var button=IMG({"src":"images/images/default_icons/png/add.png","style":"cursor: pointer;"});Basis.signal_handler.connect(button,"onclick",bind(partial(function(resource_type,resource_id){this.render_view("DEFAULT","resource_associate_from_list",resource_type,resource_id);},resource_type,resource_id),this),false);Basis.attach_tooltip(button,"Click here to connect "+Basis.pluralize(this.resource_type_text(resource_type)).toLowerCase()+" to "+this.resource_display_text(resource_id),false,false);var content=DIV(null,TABLE({"width":"100%","style":"border-bottom: 1px solid #c0c0c0; margin-bottom: 5px; padding-bottom: 5px;"},TBODY(null,TR(null,TD(null,STRONG(null,Basis.pluralize(this.resource_type_text(resource_type)))),TD({"width":"16"},button)))),this.render_view("DEFAULT","resource_type_associator_list",resource_type,"unassociate",resource_id));return content;}},this));Basis.state_handler.add_state("resource_associate_from_list");this.set_custom_view_renderer("DEFAULT","resource_associate_from_list",bind(function(resource_type,resource_id){Basis.state_handler.enter_state("resource_associate_from_list");var content=DIV({"style":"width: 400px; display: inline;"},this.render_view("DEFAULT","resource_type_associator_list",resource_type,"associate",resource_id));var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_type_associator_list",bind(function(resource_type,associate_or_unassociate,resource_id){var resource_type=resource_type?resource_type.toUpperCase():"";var associate_or_unassociate=(associate_or_unassociate=="unassociate")?"unassociate":"associate";var content=TBODY();if(resource_id&&this.resource_linker[resource_id]&&this.resource_types.indexOf(resource_type)>-1){var list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});list.resource_type=resource_type;list.grid_control.num_per_page=9999999;list.grid_control.fetch_raw_data(list.resource_type);list.grid_control.refresh_data();var list=Basis.keys(list.grid_control.current_dataset);if(list&&(list.length>0)){for(var i=0;i<list.length;i++){if(((associate_or_unassociate=="associate")&&!this.resource_is_associated_with_resource(resource_id,list[i]))||((associate_or_unassociate=="unassociate")&&this.resource_is_associated_with_resource(resource_id,list[i]))){var button=IMG({"src":(associate_or_unassociate=="associate")?"images/images/default_icons/png/add.png":"images/images/default_icons/png/decline.png","style":"cursor: pointer;"});var row=TR(null,TD(null,this.render_view("DEFAULT","resource_with_icon",list[i],true)),TD({"width":"16"},button));Basis.signal_handler.connect(button,"onclick",bind(partial(function(resource_id,resource_id_to_associate_or_unassociate,associate_or_unassociate,row){var btype=this.resource_linker[resource_id_to_associate_or_unassociate]["type"];var atype=this.resource_linker[resource_id]["type"];if(atype&&btype&&confirm("Are you sure you want to "+((associate_or_unassociate=="associate")?"connect":"disconnect")+" "+this.resource_display_text(resource_id_to_associate_or_unassociate)+" "+((associate_or_unassociate=="associate")?"with":"from")+" "+this.resource_display_text(resource_id)+"?")){switch(associate_or_unassociate){case"associate":this.resource_linker[resource_id]["associated_resources"][btype]=this.resource_linker[resource_id]["associated_resources"][btype]?this.resource_linker[resource_id]["associated_resources"][btype]:{};this.resource_linker[resource_id]["associated_resources"][btype][resource_id_to_associate_or_unassociate]=[];this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]=this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]?this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype]:{};this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype][resource_id]=[];fade(row,{"duration":0.50,"afterFinish":bind(partial(function(dashboard){Basis.signal_handler.execute_interactive_element(dashboard.tiles.ui.tiles[dashboard.tiles.ui.current_tile-1].getElementsByTagName("table")[3].menu.menu_items[0],"onclick");Basis.remove_element(this);},this),row)});break;case"unassociate":delete(this.resource_linker[resource_id]["associated_resources"][btype][resource_id_to_associate_or_unassociate]);delete(this.resource_linker[resource_id_to_associate_or_unassociate]["associated_resources"][atype][resource_id]);fade(row,{"duration":0.50,"afterFinish":bind(partial(function(dashboard){Basis.remove_element(this);},this),row)});break;}
this.custom_ajax_action("associate_resources",resource_id,Basis.filter_numbers(Basis.keys(this.resource_linker[resource_id]["associated_resources"],true)));}},resource_id,list[i],associate_or_unassociate,row),this),false);content.appendChild(row);}}
content=TABLE({"width":"300"},content);}else{content=DIV();}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_permissions_rendering",bind(function(resource_id){if(!this.resource_linker[resource_id]["has_restrictions"]&&this.resource_has_inherited_permissions(resource_id)){var resource_ids=this.get_resource_ids_that_resource_inherits_permissions_from(resource_id);var rendered_permissions=[];for(var i=0;i<resource_ids.length;i++){rendered_permissions.push(DIV({"style":"border: 1px solid #c0c0c0; padding: 10px;"},TABLE(null,TBODY(null,TR(null,TD(null,H3({"style":"padding: 0px; margin: 0px;"},"Permissions inherited from ")),TD(null,this.render_view("DEFAULT","resource_with_icon",resource_ids[i],true))))),this.render_view("DEFAULT","resource_permissions_rendering",resource_ids[i])));}
return rendered_permissions;}else{var content=DIV();var list=this.resource_linker[resource_id]["restrictions"];list=list?list:{};if(list["user_specific"]||list["group"]){if(list["user_specific"]){content.appendChild(H3(null,"User-Specific Permissions"));if(list["user_specific"]["read_only"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Read-Only Access"));for(var i=0;i<list["user_specific"]["read_only"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",this.get_resource_id_by_type_and_id("USER",list["user_specific"]["read_only"][i]),true)));}}
if(list["user_specific"]["full_access"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Full Access"));for(var i=0;i<list["user_specific"]["full_access"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",this.get_resource_id_by_type_and_id("USER",list["user_specific"]["full_access"][i]),true)));}}}
if(list["group"]){content.appendChild(H3(null,"Group Permissions"));if(list["group"]["read_only"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Read-Only Access"));for(var i=0;i<list["group"]["read_only"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",list["group"]["read_only"][i],true)));}}
if(list["group"]["full_access"]){content.appendChild(STRONG({"style":"padding-bottom: 5px; display: block;"},"Full Access"));for(var i=0;i<list["group"]["full_access"].length;i++){content.appendChild(DIV({"style":"padding-left: 10px;"},this.render_view("DEFAULT","resource_with_icon",list["group"]["read_only"][i],true)));}}}}else if(list["user_level"]){content.appendChild(H3(null,"User-Level Permissions"));if(list["user_level"]["read_only"]){content.appendChild(STRONG({"style":"display: block;"},"Read-Only Access"));for(var i=0;i<list["user_level"]["read_only"].length;i++){if(list["user_level"]["read_only"][i]["site_id"]==this.site_id){content.appendChild(P({"style":"padding-left: 10px;"},this.user_levels_text[list["user_level"]["read_only"][i]["user_level"]]));}}}
if(list["user_level"]["full_access"]){content.appendChild(STRONG({"style":"display: block;"},"Full Access"));for(var i=0;i<list["user_level"]["full_access"].length;i++){if(list["user_level"]["full_access"][i]["site_id"]==this.site_id){content.appendChild(P({"style":"padding-left: 10px;"},this.user_levels_text[list["user_level"]["full_access"][i]["user_level"]]));}}}}
return content;}},this));this.set_custom_view_renderer("DEFAULT","resource_permissions_1_tile",bind(function(resource_id,lock_icon){var button_manage_permissions=INPUT({"type":"button","value":this.resource_linker[resource_id]["has_restrictions"]?"Click here to change permissions":(this.resource_has_inherited_permissions(resource_id)?"Click here to set permissions that override any inherited permissions":"Click here to set permissions")});Basis.signal_handler.connect(button_manage_permissions,"onclick",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_2",resource_id,lock_icon);},resource_id,lock_icon),this),false);var button_remove_permissions=INPUT({"type":"button","value":this.resource_has_inherited_permissions(resource_id)?"Click here to remove these permissions and re-inherit from above":"Click here to make this public again"});Basis.signal_handler.connect(button_remove_permissions,"onclick",bind(partial(function(resource_id,lock_icon){var message=this.resource_has_inherited_permissions(resource_id)?"Are you sure you want to remove permissions from this "+this.resource_type_text(resource_id).toLowerCase()+" and re-inherit from above?":"Are you sure you want to make this "+this.resource_type_text(resource_id).toLowerCase()+" public again?";if(confirm(message)){var a=this.custom_ajax_action("clear_resource_permissions",resource_id,lock_icon);a.addCallback(bind(function(){this.tiles.ui.back();},this));}},resource_id,lock_icon),this),false);var rendered_permissions=this.render_view("DEFAULT","resource_permissions_rendering",resource_id);var content=DIV(null,P({"style":"text-align: center;"},this.resource_linker[resource_id]["has_restrictions"]?"This "+this.resource_type_text(resource_id).toLowerCase()+" has permissions set for it. ":(this.resource_has_inherited_permissions(resource_id)?"This "+this.resource_type_text(resource_id).toLowerCase()+" has permissions inherited from above. ":"This "+this.resource_type_text(resource_id).toLowerCase()+" is public and can be viewed by anybody. ")),TABLE({"style":"margin-left: auto; margin-right: auto;","align":"center"},TBODY(null,TR(null,TD(null,rendered_permissions)))),this.resource_linker[resource_id]["has_restrictions"]?[P({"style":"text-align: center;"},button_manage_permissions),P({"style":"text-align: center;"},button_remove_permissions)]:P({"style":"text-align: center;"},button_manage_permissions));return content;},this));Basis.state_handler.add_state("DEFAULT_resource_permissions_1");this.set_custom_view_renderer("DEFAULT","resource_permissions_1",bind(function(resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_permissions_1");var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("DEFAULT_resource_permissions_2");this.set_custom_view_renderer("DEFAULT","resource_permissions_2",bind(function(resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_permissions_2");var read_only_access=SELECT();var full_access=SELECT();var button_advanced=INPUT({"type":"button","value":"Click here to set permissions for users and groups"});Basis.select_add_options(read_only_access,this.user_levels_text);Basis.select_add_options(full_access,this.user_levels_text);if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){Basis.select_select_item_by_value(read_only_access,list[i]["user_level"]);}}}
if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){Basis.select_select_item_by_value(full_access,list[i]["user_level"]);}}}
Basis.signal_handler.connect(button_advanced,"onclick",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_consent_tile",null,resource_id,lock_icon);},resource_id,lock_icon),this),false);read_only_access.onchange=bind(partial(function(resource_id,read_only_access,full_access,lock_icon,save_via_ajax){var save_via_ajax=(save_via_ajax==false)?false:true;var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id].restrictions)?{}:this.resource_linker[resource_id].restrictions;permissions["user_level"]=permissions["user_level"]?permissions["user_level"]:{};permissions["user_level"]["read_only"]=permissions["user_level"]["read_only"]?permissions["user_level"]["read_only"]:[];var found=false;for(var i=0;i<permissions["user_level"]["read_only"].length;i++){if(permissions["user_level"]["read_only"][i]["site_id"]==this.site_id){permissions["user_level"]["read_only"]=Basis.array_delete_index(permissions["user_level"]["read_only"],i);continue;}}
permissions["user_level"]["read_only"].push({"site_id":this.site_id,"user_level":read_only_access.options[read_only_access.selectedIndex].value});this.resource_linker[resource_id].restrictions=permissions;if(this.user_levels[Basis.select_get_selected_value(full_access)]<this.user_levels[Basis.select_get_selected_value(read_only_access)]){full_access.selectedIndex=read_only_access.selectedIndex;full_access.onchange(false);var permissions=this.resource_linker[resource_id].restrictions;}
if(save_via_ajax){var a=this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);a.addCallback(bind(partial(function(resource_id,lock_icon){var content=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].firstChild.content;Basis.remove_children(content);content.appendChild(this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));},resource_id,lock_icon),this));}},resource_id,read_only_access,full_access,lock_icon),this);full_access.onchange=bind(partial(function(resource_id,read_only_access,full_access,lock_icon,save_via_ajax){var save_via_ajax=(save_via_ajax==false)?false:true;var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id].restrictions)?{}:this.resource_linker[resource_id].restrictions;permissions["user_level"]=permissions["user_level"]?permissions["user_level"]:{};permissions["user_level"]["full_access"]=permissions["user_level"]["full_access"]?permissions["user_level"]["full_access"]:[];var found=false;for(var i=0;i<permissions["user_level"]["full_access"].length;i++){if(permissions["user_level"]["full_access"][i]["site_id"]==this.site_id){permissions["user_level"]["full_access"]=Basis.array_delete_index(permissions["user_level"]["full_access"],i);continue;}}
permissions["user_level"]["full_access"].push({"site_id":this.site_id,"user_level":full_access.options[full_access.selectedIndex].value});this.resource_linker[resource_id].restrictions=permissions;if(this.user_levels[Basis.select_get_selected_value(full_access)]<this.user_levels[Basis.select_get_selected_value(read_only_access)]){read_only_access.selectedIndex=full_access.selectedIndex;read_only_access.onchange(false);var permissions=this.resource_linker[resource_id].restrictions;}
if(save_via_ajax){var a=this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);a.addCallback(bind(partial(function(resource_id,lock_icon){var content=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].firstChild.content;Basis.remove_children(content);content.appendChild(this.render_view("DEFAULT","resource_permissions_1_tile",resource_id,lock_icon));},resource_id,lock_icon),this));}},resource_id,read_only_access,full_access,lock_icon),this);var content=DIV(null,P({"style":"text-align: center;"},"Users will need to be at least this user level to access this "+this.resource_type_text(resource_id).toLowerCase()+":"),P({"style":"text-align: center;"},read_only_access),P({"style":"text-align: center;"},"Users will need to be at least this user level to modify or delete this "+this.resource_type_text(resource_id).toLowerCase()+":"),P({"style":"text-align: center;"},full_access),P({"style":"text-align: center;"},"Or"),P({"style":"text-align: center;"},button_advanced));var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_alerts",bind(function(mode,resource_id){var mode=(mode!==null)?mode:"page";if(mode&&resource_id){var alerts=this.resource_linker[resource_id]["alerts"];var users_list_tab=INPUT({"type":"button","value":"Users"});var groups_list_tab=INPUT({"type":"button","value":"Groups"});var contacts_list_tab=INPUT({"type":"button","value":"Contacts"});var search_list_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var to_alert_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var users_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});users_list.resource_type="USER";users_list.grid_control.elements["container_output"]=search_list_contents;users_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),users_list);var groups_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});groups_list.resource_type="GROUP";groups_list.grid_control.elements["container_output"]=search_list_contents;groups_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),groups_list);var contacts_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});contacts_list.resource_type="CONTACT.V2";contacts_list.grid_control.elements["container_output"]=search_list_contents;contacts_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),contacts_list);var to_alert=new Basis.grid_control.generic_resource.simplified({"dashboard":this});to_alert.grid_control.elements["container_output"]=to_alert_contents;to_alert.render();var users_list_ajax=users_list.grid_control.fetch_raw_data("USER");var groups_list_ajax=groups_list.grid_control.fetch_raw_data("GROUP");var contacts_list_ajax=contacts_list.grid_control.fetch_raw_data("CONTACT.V2");var after_fetch=new MochiKit.Async.DeferredList([users_list_ajax,groups_list_ajax,contacts_list_ajax]);if(alerts&&alerts.length){after_fetch.addCallback(partial(function(alerts,to_alert,users_list,groups_list,contacts_list){for(var i=0;i<alerts.length;i++){var resource_id=Basis._int(alerts[i]);var lists=[users_list,groups_list,contacts_list];for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[resource_id]){to_alert.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}
for(var x=0;x<lists.length;x++){lists[x].grid_control.currently_selected=[];lists[x].grid_control.clear_cached_datasets();to_alert.grid_control.clear_cached_datasets();lists[x].grid_control.refresh();to_alert.grid_control.refresh();}},alerts,to_alert,users_list,groups_list,contacts_list));}
after_fetch.addCallback(bind(function(){this.onclick();},users_list_tab));var button_to_alert=INPUT({"type":"button","value":"Add To Alerts"});var button_to_alert_remove_selected=INPUT({"type":"button","value":"Remove Selected"});to_alert.render();var dummy={};MochiKit.Signal.connect(dummy,"save",bind(partial(function(resource_id,to_alert){var alerts=[];var keys=Basis.keys(to_alert.grid_control.raw_data);for(var i=0;i<keys.length;i++){alerts.push(keys[i]);}
this.attempt_save(bind(partial(function(resource_id,alerts){this.custom_ajax_action("save_resource_alerts",resource_id,alerts);},resource_id,alerts),this));},resource_id,to_alert),this));Basis.signal_handler.connect(button_to_alert,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,to_alert){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){to_alert.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();to_alert.grid_control.clear_cached_datasets();list.grid_control.refresh();to_alert.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,to_alert),this),false);Basis.signal_handler.connect(button_to_alert_remove_selected,"onclick",bind(partial(function(dummy,search_list_contents,to_alert){var list=to_alert;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){search_list_contents.list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,to_alert),this),false);var table=TABLE({"width":"100%","cellpadding":"10"},TBODY(null,TR(null,TD({"width":"50%","style":"vertical-align: top;"},DIV(null,users_list_tab,groups_list_tab,contacts_list_tab),search_list_contents,DIV({"style":"text-align: center;"},button_to_alert)),TD({"width":"50%","style":"vertical-align: top;"},DIV({"style":"padding: 3px;"},STRONG(null,"Will be alerted when anything about this changes:")),to_alert_contents,DIV({"style":"text-align: center;"},button_to_alert_remove_selected)))));var ui=table;Basis.register_size_constraints(table,"100%","100%");Basis.register_size_constraints(search_list_contents,"100%","100%");Basis.register_size_constraints(to_alert_contents,"100%","100%");return ui;}},this));Basis.state_handler.add_state("DEFAULT_resource_consent_tile");this.set_custom_view_renderer("DEFAULT","resource_consent_tile",bind(function(mode,resource_id,lock_icon){Basis.state_handler.enter_state("DEFAULT_resource_consent_tile");Basis.block_updating_live_dom();var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),this.render_view("DEFAULT","resource_consent",mode,resource_id,lock_icon));Basis.unblock_updating_live_dom();this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","resource_consent",bind(function(mode,resource_id,lock_icon){var mode=(mode!==null)?mode:"page";if(mode&&resource_id){var permissions=this.resource_linker[resource_id]["restrictions"];var users_list_tab=INPUT({"type":"button","value":"Users"});var groups_list_tab=INPUT({"type":"button","value":"Groups"});var search_list_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var read_only_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var full_access_contents=DIV({"style":"overflow-y: auto; border: 1px solid #c0c0c0;"});var users_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});users_list.resource_type="USER";users_list.grid_control.elements["container_output"]=search_list_contents;users_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),users_list);var groups_list=new Basis.grid_control.generic_resource.simplified({"dashboard":this});groups_list.resource_type="GROUP";groups_list.grid_control.elements["container_output"]=search_list_contents;groups_list_tab.onclick=bind(partial(function(container_output){search_list_contents.list=this;this.grid_control.elements["list_output"]=null;this.grid_control.elements["container_output"]=search_list_contents;this.render();},search_list_contents),groups_list);var read_only=new Basis.grid_control.generic_resource.simplified({"dashboard":this});read_only.grid_control.elements["container_output"]=read_only_contents;var full_access=new Basis.grid_control.generic_resource.simplified({"dashboard":this});full_access.grid_control.elements["container_output"]=full_access_contents;var users_list_ajax=users_list.grid_control.fetch_raw_data("USER");var groups_list_ajax=groups_list.grid_control.fetch_raw_data("GROUP");var after_fetch=new MochiKit.Async.DeferredList([users_list_ajax,groups_list_ajax]);after_fetch.addCallback(bind(function(){this.onclick();},users_list_tab));if(permissions){after_fetch.addCallback(bind(partial(function(permissions,read_only,full_access,users_list,groups_list,dashboard){var lists=[users_list,groups_list];if(permissions["user_specific"]&&permissions["user_specific"]["read_only"]){var list=permissions["user_specific"]["read_only"];for(var i=0;i<list.length;i++){var user_resource_id=Basis._int(this.get_resource_id_by_type_and_id("USER",list[i]));if(Basis.is_number(user_resource_id)){for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[user_resource_id]){read_only.grid_control.raw_data[user_resource_id]=lists[x].grid_control.raw_data[user_resource_id];delete lists[x].grid_control.raw_data[user_resource_id];}}}}}
if(permissions["user_specific"]&&permissions["user_specific"]["full_access"]){var list=permissions["user_specific"]["full_access"];for(var i=0;i<list.length;i++){var user_resource_id=Basis._int(this.get_resource_id_by_type_and_id("USER",list[i]));if(Basis.is_number(user_resource_id)){for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[user_resource_id]){full_access.grid_control.raw_data[user_resource_id]=lists[x].grid_control.raw_data[user_resource_id];delete lists[x].grid_control.raw_data[user_resource_id];}}}}}
if(permissions["group"]&&permissions["group"]["read_only"]){var list=permissions["group"]["read_only"];for(var i=0;i<list.length;i++){for(var x=0;x<lists.length;x++){var resource_id=list[i];if(lists[x].grid_control.raw_data[resource_id]){read_only.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}}
if(permissions["group"]&&permissions["group"]["full_access"]){var list=permissions["group"]["full_access"];for(var i=0;i<list.length;i++){var resource_id=list[i];for(var x=0;x<lists.length;x++){if(lists[x].grid_control.raw_data[resource_id]){full_access.grid_control.raw_data[resource_id]=lists[x].grid_control.raw_data[resource_id];delete lists[x].grid_control.raw_data[resource_id];}}}}
for(var x=0;x<lists.length;x++){lists[x].grid_control.currently_selected=[];lists[x].grid_control.clear_cached_datasets();read_only.grid_control.clear_cached_datasets();full_access.grid_control.clear_cached_datasets();lists[x].grid_control.refresh();read_only.grid_control.refresh();full_access.grid_control.refresh();}},permissions,read_only,full_access,users_list,groups_list),this));}
var button_full_access=INPUT({"type":"button","value":"Full Access"});var button_read_only=INPUT({"type":"button","value":"Read Only"});var button_remove_all=INPUT({"type":"button","value":"Remove All Permissions","style":"width: 100%;"});var button_read_only_remove_selected=INPUT({"type":"button","value":"Remove Selected"});var button_full_access_remove_selected=INPUT({"type":"button","value":"Remove Selected"});read_only.render();full_access.render();var dummy={};MochiKit.Signal.connect(dummy,"save",bind(partial(function(resource_id,full_access,read_only,lock_icon){var permissions=MochiKit.Base.isArrayLike(this.resource_linker[resource_id]["restrictions"])?{}:this.resource_linker[resource_id]["restrictions"];permissions=Basis.is_object(permissions)?permissions:{};var keys=Basis.keys(read_only.grid_control.raw_data);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]){switch(this.resource_linker[keys[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["read_only"]=permissions["user_specific"]["read_only"]?permissions["user_specific"]["read_only"]:[];if(Basis.array_search(permissions["user_specific"]["read_only"],this.resource_linker[keys[i]]["misc_vars"]["id"])==null){permissions["user_specific"]["read_only"].push(this.resource_linker[keys[i]]["misc_vars"]["id"]);}
break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["read_only"]=permissions["group"]["read_only"]?permissions["group"]["read_only"]:[];if(Basis.array_search(permissions["group"]["read_only"],keys[i])==null){permissions["group"]["read_only"].push(keys[i]);}
break;}}}
var keys=Basis.keys(full_access.grid_control.raw_data);for(var i=0;i<keys.length;i++){if(this.resource_linker[keys[i]]){switch(this.resource_linker[keys[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["full_access"]=permissions["user_specific"]["full_access"]?permissions["user_specific"]["full_access"]:[];if(Basis.array_search(permissions["user_specific"]["full_access"],this.resource_linker[keys[i]]["misc_vars"]["id"])==null){permissions["user_specific"]["full_access"].push(this.resource_linker[keys[i]]["misc_vars"]["id"]);}
break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["full_access"]=permissions["group"]["full_access"]?permissions["group"]["full_access"]:[];if(Basis.array_search(permissions["group"]["full_access"],keys[i])==null){permissions["group"]["full_access"].push(keys[i]);}
break;}}}
this.attempt_save(bind(partial(function(resource_id,permissions,lock_icon){this.custom_ajax_action("set_resource_permissions",resource_id,permissions,false,lock_icon);},resource_id,permissions,lock_icon),this));},resource_id,full_access,read_only,lock_icon),this));Basis.signal_handler.connect(button_full_access,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,full_access){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){full_access.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();full_access.grid_control.clear_cached_datasets();list.grid_control.refresh();full_access.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,full_access),this),false);Basis.signal_handler.connect(button_read_only,"onclick.greedy.swallow",bind(partial(function(dummy,search_list_contents,read_only){var list=search_list_contents.list;if(list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){read_only.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];delete list.grid_control.raw_data[resources[i]];}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();read_only.grid_control.clear_cached_datasets();list.grid_control.refresh();read_only.grid_control.refresh();}
MochiKit.Signal.signal(dummy,"save");},dummy,search_list_contents,read_only),this),false);Basis.signal_handler.connect(button_full_access_remove_selected,"onclick",bind(partial(function(dummy,resource_id,search_list_contents,full_access,users_list,groups_list){var permissions=this.resource_linker[resource_id]["restrictions"];var list=full_access;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){switch(this.resource_linker[resources[i]]["type"]){case"USER":users_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;case"GROUP":groups_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;}
delete list.grid_control.raw_data[resources[i]];if(this.resource_linker[resource_id]){switch(this.resource_linker[resources[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["full_access"]=permissions["user_specific"]["full_access"]?permissions["user_specific"]["full_access"]:[];permissions["user_specific"]["full_access"]=Basis.array_delete_value(permissions["user_specific"]["full_access"],this.resource_linker[resources[i]]["misc_vars"]["id"]);break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["full_access"]=permissions["group"]["full_access"]?permissions["group"]["full_access"]:[];permissions["group"]["full_access"]=Basis.array_delete_value(permissions["group"]["full_access"],resources[i]);break;}}}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();users_list.grid_control.clear_cached_datasets();groups_list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
this.resource_linker[resource_id]["restrictions"]=permissions;MochiKit.Signal.signal(dummy,"save");},dummy,resource_id,search_list_contents,full_access,users_list,groups_list),this),false);Basis.signal_handler.connect(button_read_only_remove_selected,"onclick",bind(partial(function(dummy,resource_id,search_list_contents,read_only,users_list,groups_list){var permissions=this.resource_linker[resource_id]["restrictions"];var list=read_only;if(list&&search_list_contents.list){var resources=list.grid_control.currently_selected;for(var i=0;i<resources.length;i++){switch(this.resource_linker[resources[i]]["type"]){case"USER":users_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;case"GROUP":groups_list.grid_control.raw_data[resources[i]]=list.grid_control.raw_data[resources[i]];break;}
delete list.grid_control.raw_data[resources[i]];if(this.resource_linker[resources[i]]){switch(this.resource_linker[resources[i]]["type"]){case"USER":permissions["user_specific"]=permissions["user_specific"]?permissions["user_specific"]:{};permissions["user_specific"]["read_only"]=permissions["user_specific"]["read_only"]?permissions["user_specific"]["read_only"]:[];permissions["user_specific"]["read_only"]=Basis.array_delete_value(permissions["user_specific"]["read_only"],this.resource_linker[resources[i]]["misc_vars"]["id"]);break;case"GROUP":permissions["group"]=permissions["group"]?permissions["group"]:{};permissions["group"]["read_only"]=permissions["group"]["read_only"]?permissions["group"]["read_only"]:[];permissions["group"]["read_only"]=Basis.array_delete_value(permissions["group"]["read_only"],resources[i]);break;}}}
list.grid_control.currently_selected=[];list.grid_control.clear_cached_datasets();search_list_contents.list.grid_control.clear_cached_datasets();users_list.grid_control.clear_cached_datasets();groups_list.grid_control.clear_cached_datasets();list.grid_control.refresh();search_list_contents.list.grid_control.refresh();}
this.resource_linker[resource_id]["restrictions"]=permissions;MochiKit.Signal.signal(dummy,"save");},dummy,resource_id,search_list_contents,read_only,users_list,groups_list),this),false);var table=TABLE({"width":"100%","cellpadding":"10"},TBODY(null,TR(null,TD({"width":"50%","style":"vertical-align: top;"},DIV(null,users_list_tab,groups_list_tab),search_list_contents,DIV({"style":"text-align: center;"},"Give: ",button_full_access,button_read_only)),TD({"width":"50%","style":"vertical-align: top;"},DIV({"style":"padding: 3px;"},STRONG(null,"Full Access")),full_access_contents,DIV({"style":"text-align: center;"},button_full_access_remove_selected),DIV({"style":"padding: 3px;"},STRONG(null,"Read Only")),read_only_contents,DIV({"style":"text-align: center;"},button_read_only_remove_selected),null))));var maximize=IMG({"src":"images/images/default_icons/png/arrow_out.png","style":"cursor: pointer"});var ui=DIV(null,DIV({"style":"text-align: right; padding: 0px; padding-right: 10px; padding-top: 10px;"},maximize),table);Basis.signal_handler.connect(maximize,"onclick",partial(function(element){Basis.make_element_fullscreen(element);},table),false);Basis.register_size_constraints(ui,"100%","100%");Basis.register_size_constraints(table,"100%","100%");Basis.register_size_constraints(search_list_contents,"100%","100%");Basis.register_size_constraints(full_access_contents,"100%","50%");Basis.register_size_constraints(read_only_contents,"100%","100%");return ui;}},this));this.set_custom_view_renderer("DEFAULT","resource_with_icon",bind(function(resource_id,clickable,overriding_resource_name){var clickable=(clickable===true)?((this.resource_linker[resource_id]&&this.resource_linker[resource_id]["resource_access"]&&(this.resource_linker[resource_id]["resource_access"]["read_only"]||this.resource_linker[resource_id]["resource_access"]["full_access"]))?true:false):false;var resource=this.resource_linker[resource_id];if(resource){switch(resource["type"]){case"FILE":var icon=resource["misc_vars"]["icon"];break;default:var icon=this.get_view_association_icon(resource_id);break;}
var resource_name=SPAN({"id":("resource_"+resource_id)},overriding_resource_name?overriding_resource_name:this.resource_display_text(resource_id));var resource_link=TABLE({"border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD({"width":"20"},IMG({"src":icon})),TD({},resource_name))));if(clickable){if(resource_link&&resource_link.style){resource_link.style.cursor="pointer";}
Basis.signal_handler.connect(resource_link,"onclick.greedy.swallow",bind(partial(function(resource_id){this.show_resource(resource_id);},resource_id),this),false);}
return resource_link;}
return null;},this));this.set_custom_view_renderer("DEFAULT","coming_soon",bind(function(section_name){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("DEFAULT_coming_soon");this.populate_submenu("collaborate",section_name);this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Coming Soon!",DIV(null,"Coming soon!"));this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("DEFAULT","deleted_resource_with_icon",bind(function(resource_type,resource_text){if(resource_type&&resource_text){var icon=this.get_view_association_icon(resource_type,true);return TABLE({"border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD({"width":"20"},IMG({"src":icon})),TD({"style":"color: #999999;"},resource_text))));}
return null;},this));this.set_custom_view_renderer("DEFAULT","browser_row",bind(function(resource_id,options){var options=options?options:{};var resource=this.resource_linker[resource_id];if(resource){var id=resource_id+"_browser_row";var resource_name=this.render_view("DEFAULT","resource_with_icon",resource_id);var manage_resources=null;var associate_button=null;var item=DIV({"id":id,"class":"Basis.dashboard.resource_browser.resource"},TABLE({"width":"100%","border":"0","cellpadding":"2","cellspacing":"0","style":""},TBODY(null,TR(null,TD(null,resource_name),TD({"width":"20","style":"text-align: right; cursor: pointer;"},manage_resources),TD({"width":"20","style":"text-align: right; cursor: pointer;"},associate_button)))));Basis.signal_handler.connect(item,"onmouseenter",bind(function(){MochiKit.DOM.addElementClass(this,"Basis.dashboard.resource_browser.resource.selected");},item),false);Basis.signal_handler.connect(item,"onmouseleave",bind(function(){MochiKit.DOM.removeElementClass(this,"Basis.dashboard.resource_browser.resource.selected");},item),false);Basis.set_style(resource_name,{"cursor":"pointer"});Basis.signal_handler.connect(resource_name,"onclick.greedy",bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},resource_id),this),false);return item;}},this));this.set_custom_view_renderer("DEFAULT","default",bind(function(tile_name,tile_contents,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var go_back=(this.tiles[ui_or_wizard].tiles.length>0)?true:false;var go_back_text=(go_back)?this.tiles[ui_or_wizard].tiles[this.tiles[ui_or_wizard].tiles.length-1].name:null;var go_back_icon="images/images/default_icons/png/resultset_previous.png";var tile=this.tiles[ui_or_wizard].create_tile();tile.name=tile_name;var default_screen=this.default_screen(tile.name,go_back,go_back_text,go_back_icon);Basis.signal_handler.connect(default_screen.header.go_back_icon,"onclick.greedy.swallow",bind(function(){this.tiles[ui_or_wizard].back();},this),false);Basis.signal_handler.connect(default_screen.header.go_back,"onclick.greedy.swallow",bind(function(){this.tiles[ui_or_wizard].back();},this),false);tile.appendChild(default_screen);var index=this.tiles[ui_or_wizard].push_tile(tile);tile.hide_when_sliding=tile.firstChild.content;Basis.convert_div_to_box(tile.firstChild.content);if(tile_contents){tile.firstChild.content.appendChild(tile_contents);}
MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();return index;},this));this.set_custom_view_renderer("DEFAULT","resource_detail",bind(function(resource_id,return_content_only,content_container){var return_content_only=(return_content_only!==null)?return_content_only:false;if(resource_id&&this.resource_linker[resource_id]){var resource=this.resource_linker[resource_id];this.resource_id=resource_id;if(!return_content_only){var menu=this.create_menu(resource_id+"_resource_detail");var menu_right=this.create_menu(resource_id+"_resource_detail_right",true,false);menu_right.add_menu_item("button_link","Link to This",bind(partial(function(resource_id){var url=(Basis.preserve_url_path()+"/dashboard.php?load=resource&id="+resource_id);prompt("The text below is a direct link to this "+this.resource_type_text(resource_id)+". (Ctrl-C to Copy, Ctrl-V to Paste)",url);},resource_id),this));var button_history=INPUT({"type":"button","value":"History"});button_history.disabled=true;var button_remove=INPUT({"type":"button","value":"Remove"});button_remove.disabled=true;var button_delete=INPUT({"type":"button","value":"Delete"});button_delete.disabled=true;var content_container=content_container?content_container:DIV({"style":"overflow-y: auto; border-bottom: 1px solid #c8c8c8;"},content);switch(this.resource_linker[resource_id]["type"]){case"TASK_LIST":case"CONTACT_LIST":menu.add_menu_item("button_list","List",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=this.render_view("DEFAULT","resource_detail",resource_id,true,container);container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));menu.add_menu_item("button_info","Info",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"border-bottom: 1px solid #c0c0c0;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},Basis.nbsp())),TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));break;default:menu.add_menu_item("button_info","Info",bind(partial(function(resource_id,container){Basis.remove_children(container);var content=this.render_view("DEFAULT","resource_detail",resource_id,true,container);container.appendChild(content);MochiKit.Style.resizeConstrainedElements();Basis.updated_live_dom();},resource_id,content_container),this));break;}
if(this.resource_linker[resource_id]["type"]!="DISCUSSION"){menu.add_menu_item("button_notes","Notes",bind(partial(function(resource_id,dashboard){Basis.remove_children(this);var header=DIV();this.appendChild(header);notes=new Basis.discussion_board();notes.resource_id=resource_id;notes.logged_in=true;notes.is_collapsible=false;notes.is_admin=true;notes.is_moderated=false;notes.title="Notes";notes.content_element=header;notes.compile();},resource_id,this),content_container));}}
switch(this.resource_linker[resource_id]["type"]){case"CONTACT_LIST":var content=SPAN();var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});contact_list.grid_control.contact_list_resource_id=resource_id;contact_list.grid_control.elements["container_output"]=content_container;var a=contact_list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Contact list loaded successfully",true);},this),contact_list));content_container.contact_list=contact_list;break;case"DISCUSSION":var content=DIV();notes=new Basis.discussion_board();notes.resource_id=resource_id;notes.logged_in=true;notes.is_collapsible=false;notes.is_admin=true;notes.is_moderated=false;notes.content_element=content;notes.compile();break;case"TASK_LIST":var content=SPAN();var task_list=new Basis.grid_control.task_list({"dashboard":this,"num_per_page":50});task_list.grid_control.task_list_resource_id=resource_id;task_list.grid_control.elements["container_output"]=content_container;var a=task_list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Task list '[NAME]' loaded successfully",true);},this),task_list));content_container.task_list=task_list;break;case"LIST":var content=SPAN();var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.fetch_raw_data=bind(partial(function(resource_type){if(this.dashboard){this.raw_data={};this.group_map={};var site_resource_id=null;var keys=Basis.keys(this.dashboard.available_resources["SITE"]);for(var i=0;i<keys.length;i++){if(Basis._int(this.dashboard.available_resources["SITE"][keys[i]]["misc_vars"]["id"])==Basis._int(this.dashboard.site_id)){site_resource_id=keys[i];}}
if(site_resource_id){var keys=Basis.keys(this.dashboard.resource_linker[site_resource_id]["associated_resources"][resource_type]);keys=keys?keys:[];for(var i=0;i<keys.length;i++){if(this.dashboard.resource_linker[keys[i]]&&this.dashboard.resource_linker[keys[i]]["associated_resources"]){this.raw_data[keys[i]]={"display_text":this.dashboard.resource_display_text(keys[i])};this.group_map[keys[i]]=Basis.keys(this.dashboard.resource_linker[keys[i]]["associated_resources"]["GROUP"]);}}}
return new MochiKit.Async.succeed();}else{var to_post={"resource_type":resource_type};var as=new Basis.ajax_scaffold;as.alias="get_raw_resource_data";as.list=this;as.on_success=function(req){var raw_data=MochiKit.Base.evalJSON(req.responseText);this.list.raw_data=raw_data["raw_data"];this.list.group_map=raw_data["group_map"];window.status="Done";};return as.post({"to_post":to_post});}},"LIST_ITEM"),list.grid_control);list.resource_type="LIST_ITEM";list.grid_control.list_resource_id=resource_id;list.grid_control.elements["container_output"]=content_container;var a=list.grid_control.fetch_raw_data();a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("List list '[NAME]' loaded successfully",true);},this),list));content_container.list=list;break;case"IMAGE_GALLERY":var content=SPAN(null,"I will load an image gallery.");break;case"ALERT":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id,menu){var list=this.tiles.ui.tiles[this.tiles.ui.current_tile-1].list;if(!list){var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.grid_field_map={"type":{"text":"Type","type":"text","field":"type"},"date_from":{"text":"Remind Me On","type":"text","field":"date_from"},"date_to":{"text":"Through This Date","type":"text","field":"date_to"},"time":{"text":"At This Time","type":"text","field":"time"},"notes":{"text":"Notes","type":"text","field":"notes"},"disabled":{"text":"Disabled","type":"select","array":{"yes":"Yes","no":"No"},"field":"disabled"}};}
this.run_wizard("ALERT",{"grid_control":list.grid_control,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"target_resource_id":this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"],"mode":"edit"});},resource_id,menu),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this,"num_per_page":50});list.grid_control.grid_field_map={"type":{"text":"Type","type":"text","field":"type"},"date_from":{"text":"Remind Me On","type":"text","field":"date_from"},"date_to":{"text":"Through This Date","type":"text","field":"date_to"},"time":{"text":"At This Time","type":"text","field":"time"},"notes":{"text":"Notes","type":"text","field":"notes"},"disabled":{"text":"Disabled","type":"select","array":{"yes":"Yes","no":"No"},"field":"disabled"}};var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);switch(this.resource_linker[resource_id]["misc_vars"]["type"]){case"alert":var attached_to=this.render_view("DEFAULT","resource_with_icon",this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"],true);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Attached to"),Basis.nbsp(),Basis.nbsp()),TD(null,attached_to))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Optional Notes:"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("notes"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Disabled?"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("disabled"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Should Be Alerted When ",SPAN({"style":"font-style: italic;"},this.resource_display_text(this.resource_linker[resource_id]["misc_vars"]["attached_to_resource_id"]))," Changes?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;case"reminder":var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Remind Me Of:"),Basis.nbsp()),TD(null,SPAN(null,data("notes"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"On This Date:"),Basis.nbsp()),TD(null,SPAN(null,data("date_from")),((data("date_to")>"0000-00-00")?["(through",Basis.nbsp(),data("date_to"),")"]:null)))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Disabled?"),Basis.nbsp(),Basis.nbsp()),TD(null,SPAN(null,data("disabled"))))))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Should This Reminder Be Sent To?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;}
break;case"TASK":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id,menu){this.run_wizard("TASK",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile].task_list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id,menu),this),false);var print_button=INPUT({"type":"button","value":"Print"});Basis.signal_handler.connect(print_button,"onclick",bind(partial(function(resource_id){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=TASK&mode=detail&include_archived=true&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON([resource_id])));var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);var task_list=new Basis.grid_control.task_list({"dashboard":this,"num_per_page":50});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),task_list);var assigned_to=this.render_view("DEFAULT","resource_with_icon",this.resource_linker[resource_id]["misc_vars"]["assigned_to"],true);var content=DIV(null,TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_task.png); background-repeat: no-repeat; background-position: 100% 5; border-bottom: 1px solid #c0c0c0;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id)),Basis.nbsp(),SPAN({"style":"color: #464646; margin-left: 10px;"},"(",data("percent_complete")," complete)"),Basis.nbsp(),Basis.nbsp(),Basis.nbsp(),this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},print_button,(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: middle;"},STRONG(null,"Assigned to"),Basis.nbsp(),Basis.nbsp()),TD(null,assigned_to))))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},STRONG(null,"Due:"),Basis.nbsp(),SPAN(null,data("date_due"))),TD({"style":"border-bottom: 1px solid #c8c8c8;"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD(null,STRONG(null,"Assigned:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("date_assigned")),TD({"rowspan":"3"},data("notes"))),TR(null,TD(null,STRONG(null,"Status:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("status"))),TR(null,TD(null,STRONG(null,"Started:")),TD({"style":"padding-left: 0px; border-right: 1px solid #c8c8c8;"},data("priority")))))),TD(null,Basis.nbsp())))),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)))))))))));break;case"CONTACT.V2":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("CONTACT",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var print_button=INPUT({"type":"button","value":"Print"});Basis.signal_handler.connect(print_button,"onclick",bind(partial(function(resource_id){var url=window.location.href.split("?")[0];url=url.split("/");delete url[url.length-1];url=url.join("/");url+="/index.print.php?type=CONTACT.V2&mode=detail&include_archived=true&ids="+escape(encodeBase64(MochiKit.Base.serializeJSON([resource_id])));var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),contact_list);var address=DIV(null,DIV(null,data("address1")),(data("address2")?DIV(null,data("address2")):null),DIV(null,data("city"),", ",data("state")," ",data("zip_code")),DIV(null,data("country")));var emails=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["EMAIL"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["EMAIL"]);for(var i=0;i<list.length;i++){emails.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_contact.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id)),Basis.nbsp(),SPAN({"style":"color: #464646;"}," - ",STRONG(null,data("type"))," contact"),Basis.nbsp(),Basis.nbsp(),Basis.nbsp(),this.render_view("DEFAULT","resource_alerts_button",resource_id)),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},print_button,(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:null),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"175","style":"border-right: 1px solid #c8c8c8;"},address),TD(null,data("notes")),(this.resource_linker[resource_id]["resource_photos"]&&this.resource_linker[resource_id]["resource_photos"]["photo"])?TD(null,IMG({"src":("images/images/resource/"+resource_id+".photo.thumbnail.jpg?timestamp="+Basis.time())})):null))))),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Primary Email")),TD(null,data("email_address1"))),TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Email")),TD(null,data("email_address2"))),TR(null,TD({"width":"180","style":"padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Work Phone")),TD(null,data("phone_business"))),TR(null,TD({"width":"180","style":"padding-bottom: 10px; padding-left: 10px; border-right: 1px solid #c8c8c8;"},STRONG(null,"Mobile Phone")),TD({"style":"padding-bottom: 10px;"},data("phone_cell"))))))),TR(null,TD({"style":"padding: 0px; border-top: 1px solid #c8c8c8;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Can Access This "+this.resource_type_text(resource_id)+"?")),this.render_view("DEFAULT","resource_permissions_1_tile",resource_id))),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Who Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","GROUP",resource_id))),TR(null,TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id))),TR(null,TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id)))))))))))),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Emails Received:"))),TR(null,TD(null,emails))))))));break;case"EMAIL":var list=new Basis.grid_control.generic_resource({"dashboard":this});list.resource_type="EMAIL";list.grid_control.grid_field_map={"from_name":{"text":"From (name)","type":"text","field":"from_name"},"from_address":{"text":"From (address)","type":"text","field":"from_address"},"to":{"text":"To","type":"text","field":"to"},"subject":{"text":"Subject","type":"text","field":"subject"},"body":{"text":"Body","type":"text","field":"body"}};var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var contacts=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["CONTACT.V2"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["CONTACT.V2"]);for(var i=0;i<list.length;i++){contacts.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colSpan":"2"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"175","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Sent To:")),TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"From:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("from_name"),Basis.nbsp(),"[",data("from_address"),"]")),TR(null,TD({"width":"175","rowSpan":"2","style":"border-right: 1px solid #c8c8c8;"},contacts),TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Subject:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("subject"))),TR(null,TD({"width":"75","style":"border-bottom: 1px solid #c8c8c8;"},STRONG(null,"Body:")),TD({"style":"border-bottom: 1px solid #c8c8c8;"},data("body")))))))));break;case"GROUP":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("GROUP",{"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_group.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:Basis.nbsp()),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("What Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","USER",resource_id)),TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT_LIST",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","DISCUSSION",resource_id)),TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK_LIST",resource_id)),TD({"style":"vertical-align: top;"},this.render_view("DEFAULT","resource_type_associator","TASK",resource_id))))))))))))));break;case"LIST_ITEM":var edit_button=INPUT({"type":"button","value":"Edit"});Basis.signal_handler.connect(edit_button,"onclick",bind(partial(function(resource_id){this.run_wizard("LIST_ITEM",{"grid_control":this.tiles.ui.tiles[this.tiles.ui.current_tile-1].list,"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id,"mode":"edit"});},resource_id),this),false);var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?edit_button:Basis.nbsp()),TD({"width":"75"},Basis.nbsp()))));break;case"USER":var change_password=INPUT({"type":"button","value":"Change Password"});Basis.signal_handler.connect(change_password,"onclick",bind(partial(function(resource_id){this.run_wizard("USER_EDIT",{"data_row":this.resource_linker[resource_id]["misc_vars"],"resource_id":resource_id});},resource_id),this),false);var level_text=this.user_levels_text[this.resource_linker[resource_id]["misc_vars"]["site_levels"][this.site_id]];var user_level=level_text?SPAN(null,level_text):SPAN(null,SPAN({"style":"color: #FF0000; font-weight: bold;"},"User not added to site yet"));var user_level_tooltip="";if(level_text){var user_levels={};for(var i in this.user_levels_text){if(typeof(this.user_levels_text[i])!="function"){user_levels[(this.site_id+":user_level:"+i)]=this.user_levels_text[i];}}
if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_dropdown(user_level,user_levels,{"resource_id":resource_id,"field":"user_level","after_success":bind(partial(function(resource_id){this.get_assorted_resources([resource_id]);},resource_id),this)});}
var user_level_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(user_level_tooltip,"onclick",function(){Basis.popup({"window_title":"User Level","id":"user_level_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="500">\
                                                    <tr>\
                                                      <td valign="top"><b>Public</b></td>\
                                                      <td valign="top">Allows users to log in and view Public pages, but not interact with the site.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Basic (Read Only)</b></td>\
                                                      <td valign="top">Can see polls, discussion boards and Basic pages, but cannot interact with them.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Basic</b></td>\
                                                      <td valign="top">Can vote in polls, comment on discussion boards and add contacts to be approved by an administrator, but cannot view any private pages.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Private (Read Only)</b></td>\
                                                      <td valign="top">Can see Private pages, but cannot modify them.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Private</b></td>\
                                                      <td valign="top">Can modify Basic and Private pages that aren\'t Admin Change Only.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Site Administrator</b></td>\
                                                      <td valign="top">Has access to edit anything on the site, view the Admin section, create, modify, and delete pages, users, and contacts, and change the look and feel of the sites they have access to.</td>\
                                                    </tr>\
                                                    <tr>\
                                                      <td valign="top"><b>Organization Administrator</b></td>\
                                                      <td valign="top">Has all rights of a Site Adminstrator on every site within an organization.</td>\
                                                    </tr>\
                                                  </table>'});},false);}
var list=new Basis.grid_control.generic_resource({"dashboard":this});var data=bind(partial(function(data,field){return this.grid_control.get_master_field_data(field,data)},this.resource_linker[resource_id]["misc_vars"]),list);var contacts=DIV();var groups=DIV();if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["CONTACT.V2"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["CONTACT.V2"]);for(var i=0;i<list.length;i++){var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i],true);contacts.appendChild(resource_link);}}
if(this.resource_linker[resource_id].associated_resources&&this.resource_linker[resource_id].associated_resources["GROUP"]){var list=Basis.keys(this.resource_linker[resource_id].associated_resources["GROUP"]);for(var i=0;i<list.length;i++){groups.appendChild(this.render_view("DEFAULT","resource_with_icon",list[i],true));}}
var restrictions=this.get_user_restrictions(this.resource_linker[resource_id]["misc_vars"]["id"]);var read_only=DIV(null,DIV({"style":"border-bottom: 1px solid #c0c0c0; padding: 5px; margin-bottom: 10px;"},STRONG(null,"Read Only")));var full_access=DIV(null,DIV({"style":"border-bottom: 1px solid #c0c0c0; padding: 5px; margin-bottom: 10px;"},STRONG(null,"Full Access")));if(restrictions["read_only"].length>0){for(var i=0;i<restrictions["read_only"].length;i++){read_only.appendChild(DIV({"style":"padding-left: 10px; padding-bottom: 3px;"},this.render_view("DEFAULT","resource_with_icon",restrictions["read_only"][i],true)));}}else{read_only.appendChild(DIV({"style":"padding-bottom: 3px;"},Basis.nbsp()));}
if(restrictions["full_access"].length>0){for(var i=0;i<restrictions["full_access"].length;i++){full_access.appendChild(DIV({"style":"padding-left: 10px; padding-bottom: 3px;"},this.render_view("DEFAULT","resource_with_icon",restrictions["full_access"][i],true)));}}else{full_access.appendChild(DIV({"style":"padding-bottom: 3px;"},Basis.nbsp()));}
var content=TABLE({"border":"0","cellpadding":"10","cellspacing":"0","width":"100%","style":"background-image: url(images/images/dashboard/v2/icon_user.png); background-repeat: no-repeat; background-position: 100% 5;","class":"resource_detail"},TBODY(null,TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;"},SPAN({"class":"resource_title"},this.resource_display_text(resource_id))),TD({"style":"border-bottom: 1px solid #c8c8c8;","align":"right"},(this.resource_linker[resource_id]["resource_access"]["full_access"])?change_password:Basis.nbsp()),TD({"width":"75"},Basis.nbsp())),TR(null,TD({"style":"border-bottom: 1px solid #c8c8c8;","colspan":"3"},TABLE({"cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD(null,STRONG(null,"User level:")),TD({"style":"padding-left: 5px;"},user_level)))))),TR(null,TD({"style":"padding: 0px;","colspan":"3"},TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("Special Access Given To This "+this.resource_type_text(resource_id)+":")),read_only,full_access)),TD({"style":"vertical-align: top;"},FIELDSET({"style":"border: 1px solid #c0c0c0;"},LEGEND(null,STRONG("What Is Connected To This "+this.resource_type_text(resource_id)+"?")),TABLE({"border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"id":("CONTACT.V2_connected_to_"+resource_id),"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT.V2",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","CONTACT_LIST",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK",resource_id)),TD({"style":"vertical-align: top; border-bottom: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","TASK_LIST",resource_id))),TR(null,TD({"style":"vertical-align: top; border-right: 1px solid #c0c0c0;"},this.render_view("DEFAULT","resource_type_associator","DISCUSSION",resource_id))))))))))))));break;default:var content=SPAN(null,"I AM CONTENT, POPULATE ME");break;}
if(return_content_only){return content;}
if(content){content_container.appendChild(content);}
var last_updated=Basis.filter_number(this.resource_linker[resource_id]["last_updated"]);last_updated=(last_updated>0)?new Date(last_updated*1000).toLocaleString():"???";var last_updated_by=this.resource_display_text(Basis.filter_number(this.resource_linker[resource_id]["last_updated_by"]));last_updated_by=!last_updated_by?"???":this.render_view("DEFAULT","resource_with_icon",last_updated_by,true);var detail=TABLE({"width":"100%","cellspacing":"0","cellpadding":"5"},TBODY(null,TR(null,TD({"style":"height: 24px; padding: 0px;"},menu),TD({"style":"height: 24px; padding: 0px; text-align: right;"},menu_right)),TR(null,TD({"colspan":"2"},content_container)),TR(null,TD({"style":"height: 30px;"},this.render_view("DEFAULT","resource_with_icon",resource_id)),TD({"style":"height: 30px; text-align: right;"},STRONG("Last updated: "),(last_updated+" by "),last_updated_by))));detail.content=content_container;detail.menu=menu;detail.menu_right=menu_right;Basis.register_size_constraints(detail,"100%","100%");Basis.register_size_constraints(content_container,"100%","100%");return detail;}},this));this.set_custom_view_renderer("ALERT","wizard_form",bind(function(data_row,resource_id,target_resource_id,mode){var mode=mode?mode:"";var type=data_row["type"];if(!type){type=(!target_resource_id&&resource_id&&this.resource_linker[resource_id])?this.resource_linker[resource_id]["misc_vars"]["type"]:((!resource_id&&target_resource_id&&this.resource_linker[target_resource_id])?"alert":"reminder");}
var content=null;if(data_row){data_row["type"]=type;var disabled=SELECT();Basis.select_add_options(disabled,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(disabled,(this.resource_linker[resource_id]["misc_vars"]["disabled"]?"yes":"no"));this.bind_form_element(disabled,"disabled",data_row);var disabled=P(null,STRONG(null,"Disabled? "),Basis.nbsp(),disabled);switch(type){case"alert":data_row["attached_to_resource_id"]=target_resource_id;var notes=Basis.textarea({"style":"width: 300px;"},data_row["notes"]);this.bind_form_element(notes,"notes",data_row);Basis.set_input_descriptive_text(notes,"Optional notes to send with the alert...");content=DIV(null,P(null,"I want to alert users or groups when this "+this.resource_type_text(this.resource_linker[target_resource_id]["type"])+" changes."),P({"style":"font-style: italic"},"(you will choose users and groups to be alerted after you create it)"),DIV(null,notes),(mode=="edit")?disabled:null);content={"element":content,"fields":{"notes":notes}};break;case"reminder":var notes=Basis.textarea({"style":"width: 300px;"},data_row["notes"]);this.bind_form_element(notes,"notes",data_row);var date_from=Basis.create_date_formfield(data_row["date_from"],false);this.bind_form_element(date_from,"date_from",data_row);var date_to=Basis.create_date_formfield(data_row["date_to"],true);this.bind_form_element(date_to,"date_to",data_row);content=DIV(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"text-align: right;"},STRONG(null,"Remind me of:")),TD(null,notes)),TR(null,TD({"style":"text-align: right;"},STRONG(null,"On this day:")),TD(null,date_from)),TR(null,TD(null,DIV({"style":"text-align: right;"},STRONG(null,"Through this day:")),DIV({"style":"text-align: right; padding: 5px; font-style: italic;"},"(optional)")),TD(null,date_to)))),(mode=="edit")?disabled:null);content={"element":content,"fields":{"notes":notes,"date_from":date_from,"date_to":date_to}};break;}}
return content;},this));this.set_custom_view_renderer("FILE","diskspace",bind(function(){var amount_used=Basis.format_filesize(this.diskspace_used);var amount_used_percentage=(((this.diskspace_used/this.max_diskspace)*100).toFixed(2))+"%";var amount_left=Basis.format_filesize(this.max_diskspace-this.diskspace_used);var amount_left_percentage=(100-(((this.diskspace_used/this.max_diskspace)*100))).toFixed(2)+"%";var used=Basis.nbsp();var used_full_text=[amount_used,Basis.nbsp(),"used (",amount_used_percentage,")"];if((Basis.filter_number(amount_used_percentage)>=20)&&(Basis.filter_number(amount_used_percentage)<35)){used=amount_used;}else if(Basis.filter_number(amount_used_percentage)>=35){used=used_full_text;}
var left=Basis.nbsp();var left_full_text=[amount_left,Basis.nbsp(),"left (",amount_left_percentage,")"];if((Basis.filter_number(amount_left_percentage)>=20)&&(Basis.filter_number(amount_left_percentage)<35)){left=amount_left;}else if(Basis.filter_number(amount_left_percentage)>=35){left=left_full_text;}
var red=TD({"width":amount_used_percentage,"style":"padding: 2px; padding-left: 5px; padding-right: 5px; background-image: url(images/images/dashboard/v2/bar_red.png); background-repeat: repeat-x; background-position: bottom left; background-color: #d34242; color: #FFFFFF; font-size: 9px;"},used);if(Basis.filter_number(amount_used_percentage)<20){Basis.attach_tooltip(red,DIV(null,used_full_text).innerHTML,true,false);}
var green=TD({"width":amount_left_percentage,"style":"padding: 2px; padding-left: 5px; padding-right: 5px; background-image: url(images/images/dashboard/v2/bar_green.png); background-repeat: repeat-x; background-position: bottom left; background-color: #42d349; color: #08560c; text-align: right; font-size: 9px;"},left);if(Basis.filter_number(amount_left_percentage)<20){Basis.attach_tooltip(green,DIV(null,left_full_text).innerHTML,true,false);}
var diskspace_meter=DIV({"id":"diskspace_meter","style":"border: 1px solid #c8c8c8; padding: 1px;"},TABLE({"width":"100%","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,red,green))));return diskspace_meter;},this));this.set_custom_view_renderer("FILE","browser",bind(function(mode,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
this.file_browser_drags["file"]=new multipleDraggables();this.file_browser_drags["file"].selected_class="Basis.file_explorer.selected";this.file_browser_drags["file"].selectable_class="Basis.file_explorer.selectable";var nodes=[];var list=MochiKit.DOM.getElementsByTagAndClassName(null,"resource",this.files);if(list.length==0){nodes.push(DIV(null,"No files to display for ",STRONG(null,this.resource_display_text(this.file_browser_current_folder))));}else{nodes.push(DIV({"style":"margin-bottom: 10px;"},"Displaying files for ",STRONG(null,this.resource_display_text(this.file_browser_current_folder))));for(var i=0;i<list.length;i++){nodes.push(this.render_view("FILE","browser_row",Basis.filter_number(list[i].tagName),mode,ui_or_wizard));}}
return nodes;},this));this.set_custom_view_renderer("FILE","browser_row",bind(function(resource_id,mode,ui_or_wizard){var mode=(this.file_manager_only)?"file_explorer_embedded":mode;var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var element=null;if(resource_id&&this.resource_linker[resource_id]){var download_button=IMG({"src":"images/images/download.gif","style":"cursor: pointer; margin-right: 5px;"});var idx=Basis.signal_handler.connect(download_button,"onclick",bind(partial(function(resource_id){var url=Basis.preserve_url({"original_url":Basis.preserve_url_path()+"/../ajax/ajax/force_download_resource.2.php","keys_add":{"finfo":this.resource_linker[resource_id]["misc_vars"]["path_reference"],"site_id":this.site_id}});var temp=window.onbeforeunload;window.onbeforeunload=null;window.location.href=url;window.onbeforeunload=temp;},resource_id),this),false);Basis.attach_tooltip(download_button,("Download this file"),null,false);switch(mode){case"file_explorer_choose_file":this.use_this_file=bind(function(resource_id,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];var obj=Basis.misc_vars.to_populate;if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");this.tiles[ui_or_wizard].back();}}},this);var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id,ui_or_wizard){this.use_this_file(resource_id,ui_or_wizard);},resource_id,ui_or_wizard),this),this.commit);Basis.attach_tooltip(link_button,("Use this file"));var access_restrictor="";break;case"file_explorer_embedded":this.use_this_file=bind(function(resource_id){if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];if(window.opener&&window.opener.Basis){var obj=window.opener.Basis.misc_vars.to_populate;}
if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");window.onbeforeunload=function(){};window.close();}}},this);var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id){this.use_this_file(resource_id);},resource_id),this),this.commit);Basis.attach_tooltip(link_button,("Use this file"));var access_restrictor="";break;default:var link_button=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(link_button,"onclick",bind(partial(function(resource_id){var url=this.resource_linker[resource_id]["misc_vars"]["public_link"];prompt("The text below is a direct link to this file. (Ctrl-C to Copy, Ctrl-V to Paste)",url);},resource_id),this),false);Basis.attach_tooltip(link_button,("Link to this file"),null,false);var access_restrictor=IMG({"id":("resource_id_"+resource_id+"_access_restrictor"),"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":"margin-right: 5px;"});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
break;}
var file_name=SPAN({"id":("resource_"+resource_id+"_display_text"),"style":"white-space: nowrap;"},this.resource_display_text(resource_id));var file_size=SPAN({"style":"white-space: nowrap;"},Basis.format_filesize(this.resource_linker[resource_id]["misc_vars"]["filesize"]));var last_update=SPAN({"style":"white-space: nowrap;"},this.english_timestamp(this.resource_linker[resource_id]["misc_vars"]["last_changed"],true));if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(file_name,{"sid":this.session_id,"url":this.post_url,"resource_id":resource_id,"field":"filename","after_success":bind(function(){this.dashboard.get_assorted_resources([this.resource_id]);},{"dashboard":this,"resource_id":resource_id})},false);}
var icon=IMG({"src":(this.resource_linker[resource_id]?this.resource_linker[resource_id]["misc_vars"]["icon"]:""),"style":"margin-right: 4px;"});var element=DIV({"id":("resource_"+(resource_id?resource_id:""))},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},icon),TD(null,file_name),TD({"width":"100","style":"text-align: right; white-space: nowrap; padding-right: 5px; color: #999999;"},last_update),TD({"width":"85","style":"text-align: right; white-space: nowrap; padding-right: 5px;"},file_size),TD({"width":"75","style":"text-align: right; white-space: nowrap;"},[access_restrictor,download_button,link_button])))));this.file_browser_drags["file"].add_draggable(element);}
return element;},this));this.set_custom_view_renderer("FOLDER","browser",bind(function(type,mode,ui_or_wizard){var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var nodes=[];var list=this.folders[type].childNodes;if(list){this.file_browser_drags["folder"].drags={};for(var i=0;i<list.length;i++){var resource_id=Basis.filter_number(list[i].tagName);if(list[i].tagName&&(resource_id!=null)){nodes[nodes.length]=this.render_view("FOLDER","browser_row",resource_id,list[i],type,null,mode,ui_or_wizard);}}}
return nodes;},this));this.set_custom_view_renderer("FOLDER","browser_row",bind(function(resource_id,node,type,recursive,mode,ui_or_wizard){var mode=(this.file_manager_only)?"file_explorer_embedded":mode;var mode=(mode!==null)?mode:"file_explorer_embedded";switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
var element=null;var recursive=(recursive!=null)?recursive:true;if(resource_id&&this.resource_linker[resource_id]&&node){switch(mode){case"file_explorer_choose_file":this.use_this_folder=bind(function(resource_id,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];var obj=Basis.misc_vars.to_populate;if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");this.tiles[ui_or_wizard].back();}}},this);var access_restrictor=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(access_restrictor,"onclick",bind(partial(function(resource_id,ui_or_wizard){this.use_this_folder(resource_id,ui_or_wizard);},resource_id,ui_or_wizard),this),false);Basis.attach_tooltip(access_restrictor,("Use this folder"),null,false);break;case"file_explorer_embedded":this.use_this_folder=bind(function(resource_id){if(this.resource_linker[resource_id]){var turl=this.resource_linker[resource_id]["misc_vars"]["public_link"];if(window.opener.Basis){var obj=window.opener.Basis.misc_vars.to_populate;}
if(obj){obj.value=turl;if(obj.onchange){obj.onchange();}
if(obj.onblur){obj.onblur();}
MochiKit.Signal.signal(obj,"onchange");MochiKit.Signal.signal(obj,"onblur");}
window.onbeforeunload=function(){};window.close();}},this);var access_restrictor=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(access_restrictor,"onclick",bind(partial(function(resource_id){this.use_this_folder(resource_id);},resource_id),this),false);Basis.attach_tooltip(access_restrictor,("Use this folder"),null,false);break;default:var access_restrictor=IMG({"id":("resource_id_"+resource_id+"_access_restrictor"),"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":"margin-right: 5px;"});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
break;}
var add_folder=IMG({"src":"images/images/default_icons/folder_add.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(add_folder,"onclick.greedy.swallow",bind(function(){this.custom_ajax_action("create_new_folder",this.resource_linker[resource_id]["misc_vars"]["path_reference"]);},this),false);Basis.attach_tooltip(add_folder,("Add a new folder inside of "+this.resource_linker[resource_id]["display_text"]),null,false);var delete_folder=IMG({"src":"images/images/default_icons/folder_delete.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(delete_folder,"onclick.greedy.swallow",bind(function(){this.custom_ajax_action("delete_folder",this.resource_linker[resource_id]["misc_vars"]["path_reference"]);},this),false);Basis.attach_tooltip(delete_folder,("Permanently delete this folder and everything inside of it"),null,false);var folder_name=SPAN({"id":("resource_"+resource_id+"_display_text"),"style":"white-space: nowrap;"},this.resource_display_text(resource_id));if(type!="gallery_files"){if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(folder_name,{"resource_id":resource_id,"field":"filename","after_success":bind(partial(function(resource_id){var a=this.dashboard.custom_ajax_action("get_site_folders");a.addCallback(bind(partial(function(resource_id){var folder_resource_ids=this.dashboard.determine_resources_from_xml_node(this.dashboard.folders.files);var file_resource_ids=this.dashboard.determine_resources_from_xml_node(this.dashboard.files);var reload_resource_ids=MochiKit.Base.flattenArray([folder_resource_ids,(file_resource_ids?file_resource_ids:[])]);var b=this.dashboard.custom_ajax_action("get_assorted_resources",reload_resource_ids);b.addCallback(bind(partial(function(resource_id){this.dashboard.render_view("COLLABORATE","files",true);var folder_browser_row=Basis.get_element("resource_"+resource_id);Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onmousedown");Basis.signal_handler.execute_interactive_element(("resource_"+resource_id),"onclick");},resource_id),{"dashboard":this.dashboard,"resource_id":resource_id}));},resource_id),{"dashboard":this.dashboard,"resource_id":resource_id}));},resource_id),{"dashboard":this,"resource_id":resource_id})},false);}}
var element=DIV({"id":("resource_"+(resource_id?resource_id:"")),"class":"resource"},TABLE({"width":"100%","border":"0","cellpadding":"0","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"18"},IMG({"src":(this.resource_linker[resource_id]?this.resource_linker[resource_id]["misc_vars"]["icon"]:""),"style":"margin-right: 4px;"})),TD(null,folder_name),(this.resource_linker[resource_id]["resource_access"]["full_access"])?TD({"width":"18"},delete_folder):null,(this.resource_linker[resource_id]["resource_access"]["full_access"])?TD({"width":"18"},add_folder):null,TD({"width":"18"},access_restrictor)))));this.file_browser_drags["folder"].add_draggable(element);if(!element.onclick_connected){Basis.signal_handler.connect(element,"onclick.greedy",bind(partial(function(mode){var resource_id=Basis.filter_number(this.element.id);var a=this.dashboard.custom_ajax_action("get_folder_files",resource_id);a.addCallback(bind(partial(function(mode){var resources_to_load=this.determine_missing_resources_from_xml(this.files);var b=this.custom_ajax_action("get_assorted_resources",resources_to_load);b.addCallback(bind(partial(function(mode){if(this.elements["files_container"]){Basis.remove_children(this.elements["files_container"]);Basis.updated_live_dom();var upload_button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/page_white_add.gif);","value":"Upload Files"});Basis.signal_handler.connect(upload_button,"onclick",bind(function(){this.toggle_uploader();},this),false);var delete_button=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/page_white_delete.gif);","value":"Delete Files"});Basis.signal_handler.connect(delete_button,"onclick",bind(function(){var files=[];var list=this.file_browser_drags.file.selected;for(var i in list){if(typeof(list[i])!="function"){var resource_id=Basis.parse_number(i.replace(/([^0-9\.])/g,""));files.push(this.resource_linker[resource_id]["misc_vars"]["path_reference"]);}}
this.custom_ajax_action("delete_files",files);},this),false);Basis.signal_handler.connect(delete_button,"onmouseenter",bind(function(){delete_button.ctrl_state=Basis.key_handler.key_state("KEY_CTRL");Basis.key_handler.set_key_state("KEY_CTRL","down");},this),false);Basis.signal_handler.connect(delete_button,"onmouseleave",bind(function(){Basis.key_handler.set_key_state("KEY_CTRL",delete_button.ctrl_state);},this),false);var download_archive=INPUT({"type":"button","class":"gfx_but_default","style":"background-image: url(images/images/default_icons/folder_go.gif);","value":"Download this Folder"});Basis.signal_handler.connect(download_archive,"onclick",bind(function(){if(confirm("Are you sure you want to download an archive of this folder?")){var recursive=confirm("Do you want to download all subfolders of this folder as well?");var url=Basis.preserve_url();url=url.split("/");delete url[url.length-1];url=url.join("/")+"archive_folder.basis2.php?token="+this.resource_linker[this.file_browser_current_folder]["misc_vars"]["path_reference"]+(recursive?"&recursive=true":"");window.open(url);}},this),false);if(this.resource_linker[resource_id]["resource_access"]["full_access"]){this.elements["files_container"].appendChild(upload_button);this.elements["files_container"].appendChild(delete_button);}
this.elements["files_container"].appendChild(download_archive);this.file_browser_current_folder=resource_id;var files=this.render_view("FILE","browser",mode,ui_or_wizard);var resource_container=DIV({"style":"padding: 10px;"});for(var i in files){if(files[i]&&!Basis.is_function(files[i])){resource_container.appendChild(files[i]);}}
this.elements["files_container"].appendChild(resource_container);Basis.updated_live_dom();}},mode),this));},mode),this.dashboard));},mode),{"element":element,"dashboard":this}),false);element.onclick_connected=true;}
new MochiKit.DragAndDrop.Droppable(folder_name,{"hoverclass":"Basis.file_explorer.droppable","hoverfunc":bind(function(droppable){var folder_resource_id=Basis.parse_number(droppable.id.replace(/([^0-9\.])/g,""));if(this.file_browser_current_folder==folder_resource_id){}},this),"ondrop":bind(partial(function(section,draggable,droppable){var folder_resource_id=Basis.parse_number(droppable.id.replace(/([^0-9\.])/g,""));var path_reference=this.resource_linker[folder_resource_id]["misc_vars"]["path_reference"];var to_move=[];var list=MochiKit.Base.evalJSON(draggable._selected);for(var i in list){if(typeof(list[i])!="function"){var file_resource_id=Basis.parse_number(i.replace(/([^0-9\.])/g,""));var file_path_reference=this.resource_linker[file_resource_id]["misc_vars"]["path_reference"];if(file_path_reference!=path_reference){to_move.push(file_path_reference);}}}
if(Basis.array_length(to_move)>0){this.custom_ajax_action("move_files",path_reference,to_move,section);}},type),this)});var keys=this.determine_resources_from_xml_node(node,true);for(var i=0;i<keys.length;i++){var key="resource_id_"+keys[i];var child=DIV({"id":key,"class":"resource"});if(element&&child){element.appendChild(child);}}}
return element;},this));Basis.state_handler.add_state("HOME_default");this.set_custom_view_renderer("HOME","default",bind(function(){this.reset_states();Basis.state_handler.enter_state("HOME_default");this.populate_submenu("home");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Home",DIV(null,"Home Placeholder"));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("WEBSITE_default");this.set_custom_view_renderer("WEBSITE","default",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_default");this.populate_submenu("website");this.tiles.ui.clear_all_tiles();var content=this.render_view("PAGE","browser");var index=this.render_view("DEFAULT","default","Website",content);Basis.convert_nested_elements_to_tree(content.pages_root,null,true,true);this.ns=new Basis.nested_sortables();this.ns.ul_tag="div";this.ns.ul_class="Basis.file_explorer.container";this.ns.li_tag="span";this.ns.li_class="Basis.file_explorer.node_container";this.ns.custom_ondrop=bind(function(element,onto){this.custom_ajax_action("save_page_order",onto);},this);this.ns.on_update=bind(function(element){this.custom_ajax_action("save_page_order",element);},this);this.ns.build_nested_sortables(content,{"onUpdate":this.ns.on_update,"hide_dropzones":(this.managing_menus?false:true),"handle":"Basis.dashboard.page_handle","hoverclass":"hoverclass"});this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("WEBSITE");this.set_custom_view_renderer("WEBSITE","look_and_feel",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_look_and_feel");this.tiles.ui.clear_all_tiles();var menu=Basis.misc_vars.dashboard.create_menu("WEBSITE_look_and_feel");var settings=DIV();var css=DIV();var content=DIV(null,menu,settings,css);menu.add_menu_item("settings","General Settings",bind(partial(function(settings,css){var a=this.custom_ajax_action("get_site_template_configuration",this.site_id);a.addCallback(bind(partial(function(ajax,css){this.innerHTML=ajax.req.responseText;Basis.execute_javascript(this);css.style.display="none";this.style.display="";},a,css),settings));},settings,css),this));menu.add_menu_item("css","Backgrounds & Colors",bind(partial(function(settings,css){var options=new Basis.CSS();options.css=this.custom_css[this.site_id].css;options.selectors={"body":"Body",".Basis\\\\.header":"Header",".Basis\\\\.menu":"Menu",".Basis\\\\.menu\\\\.top_level_item > *":"Menu Items",".Basis\\\\.menu\\\\.submenu":"Submenu",".Basis\\\\.menu\\\\.submenu li":"Submenu Items","#content":"Main Content",".Basis\\\\.footer":"Footer"};var content=options.compile();content.options=options;Basis.remove_children(css);css.appendChild(content);css.style.display="";settings.style.display="none";},settings,css),this));menu.select_menu_item("settings");Basis.signal_handler.execute_interactive_element(menu.menu_items[menu.item_index("settings")],"onclick");var index=this.render_view("DEFAULT","default","Site Look and Feel",content);this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("WEBSITE","settings",bind(function(){this.reset_states();Basis.state_handler.enter_state("WEBSITE_settings");this.populate_submenu(null);this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Site Settings & Billing",this.render_view("RENDER","billing"));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_default");this.set_custom_view_renderer("COLLABORATE","default",bind(function(){var a=MochiKit.Async.succeed();a.addCallback(bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_default");this.populate_submenu("collaborate");this.tiles.ui.clear_all_tiles();var alerts_and_reminders=this.get_alerts_and_reminders_for_resource(this.current_user_resource_id);var alerts=null;if(alerts_and_reminders["alert"].length>0){var rows=TBODY();var list=alerts_and_reminders["alert"];var alerts_to_show=[];var history=Basis.keys(this.resource_history[this.site_id]);for(var x=0;x<history.length;x++){var history_item_resource_id=this.resource_history[this.site_id][history[x]]["resource_id"];var history_item_timestamp=this.resource_history[this.site_id][history[x]]["display_timestamp"];history_item_timestamp=history_item_timestamp.replace("(","").replace(")","");history_item_timestamp=history_item_timestamp.substring(0,(history_item_timestamp.length-2)).trim();history_item_timestamp=history_item_timestamp.split(" ");history_item_timestamp.pop();history_item_timestamp=history_item_timestamp.join(" ");for(var i=0;i<list.length;i++){var alert_resource_id=list[i];if(Basis._int(this.resource_linker[alert_resource_id]["misc_vars"]["attached_to_resource_id"])==Basis._int(history_item_resource_id)){if(parseInt(new Date(history_item_timestamp).getTime().toString().substring(0,10))>=(parseInt(new Date().getTime().toString().substring(0,10))-(60*60*24*7))){if(this.resource_linker[alert_resource_id]["misc_vars"]["disabled"]!="yes"){alerts_to_show.push({"history_item_index":history[x],"alert_resource_id":alert_resource_id});}}}}}
if(alerts_to_show.length>0){rows.appendChild(TR(null,TD(null,Basis.nbsp()),TD(null,STRONG(null,"Action Taken")),TD(null,STRONG(null,"Target Resource")),TD(null,STRONG(null,"Time Action Occurred")),TD(null,STRONG(null,"User Responsible")),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,STRONG(null,"IP Address"))));var list=this.resource_history[this.site_id];for(var x=0;x<alerts_to_show.length;x++){var i=alerts_to_show[x]["history_item_index"];switch(list[i]["resource_type"]){case"FILE":case"FOLDER":var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],false,list[i]["display_text"]);break;default:var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],true);break;}
rows.appendChild(TR(null,TD({"width":"25"},IMG({"src":this.get_view_association_icon(list[i]["resource_type"])})),TD(null,list[i]["display_action"]),TD(null,resource_link?resource_link:this.render_view("DEFAULT","deleted_resource_with_icon",list[i]["resource_type"],list[i]["display_text"])),TD(null,this.english_timestamp(strtotime(list[i]["display_timestamp"].replace("(","").replace(")","")),true)),TD(null,list[i]["display_user_responsible"]),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,list[i]["ip_address"])));}
var alerts=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Alerts (last 7 days)"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},rows));}}
var reminders=null;if(alerts_and_reminders["reminder"].length>0){var rows=TBODY();var list=alerts_and_reminders["reminder"];rows.appendChild(TR(null,TD({"width":"150","style":"font-weight: bold;"},"Link to Reminder"),TD({"style":"font-weight: bold;"},"Notes"),TD({"width":"150","style":"font-weight: bold;"},"Remind Me On")));if(list&&(list.length>0)){for(var x=0;x<list.length;x++){if(!Basis.is_function(list[x])&&(Basis.is_number(Basis.parse_number(list[x])))&&(parseInt(isoTimestamp(this.resource_linker[list[x]]["misc_vars"]["date_from"]).getTime().toString().substring(0,10))>=(parseInt(new Date().getTime().toString().substring(0,10))-(60*60*24*7)))){if(this.resource_linker[list[x]]["misc_vars"]["disabled"]!="yes"){rows.appendChild(TR(null,TD({"width":"150","style":"font-weight: bold;"},this.render_view("DEFAULT","resource_with_icon",list[x],true)),TD({"style":"font-weight: normal;"},this.resource_linker[list[x]]["misc_vars"]["notes"]),TD({"width":"150","style":"font-weight: normal;"},this.resource_linker[list[x]]["misc_vars"]["date_from"])));}}}
if(rows.getElementsByTagName("TR").length>1){var reminders=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Reminders (last 7 days)"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},rows));}}}
var requests=null;if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){var rows=TBODY();var list=this.pending_requests[this.site_id];rows.appendChild(TR(null,TD({"width":"16"}),TD({"width":"150","style":"font-weight: bold;"},"Requested Action"),TD({"style":"font-weight: bold;"},"Target Resource"),TD({"width":"175","style":"font-weight: bold;"},"Time Action Occurred"),TD({"width":"100","style":"font-weight: bold;"},"User Responsible"),TD({"width":"48","style":"font-weight: bold;"}," "),TD({"width":"16"}),TD({"width":"16"})));if(list&&(list.length>0)){for(var x in list){if(!Basis.is_function(list[x])&&(Basis.is_number(Basis.parse_number(x)))){var icon_type=null;var request_text=null;switch(list[x]["request_type"]){case"APPROVE_USER_CREATION":icon_type="USER";request_text="Approve new user signup";break;case"INVITE_USER_TO_SITE":icon_type="CONTACT.V2";request_text="Invited contact to join site";break;}
var icon=IMG({"src":this.get_view_association_icon(icon_type)});var approve=IMG({"src":"images/images/default_icons/add.gif","style":"cursor: pointer;"});Basis.attach_tooltip(approve,"Approve this request");var deny=IMG({"src":"images/images/default_icons/delete.gif","style":"cursor: pointer;"});Basis.attach_tooltip(deny,"Deny this request");var row=TR(null,TD({"width":"16"},icon),TD({"width":"150"},request_text),TD(null,list[x]["display_text"]),TD({"width":"175"},list[x]["display_timestamp_requested"]),TD({"width":"100"},list[x]["display_user_requested_by"]),TD({"width":"48","style":"font-weight: bold;"}," "),TD({"width":"16"},approve),TD({"width":"16"},deny));Basis.signal_handler.connect(approve,"onclick",bind(partial(function(request_id,request_status,element_to_delete){if(confirm("Are you sure you want to approve this request?")){this.custom_ajax_action("complete_pending_request",request_id,request_status,element_to_delete);}},list[x]["id"],"GRANTED",row),this),false);Basis.signal_handler.connect(deny,"onclick",bind(partial(function(request_id,request_status,element_to_delete){if(confirm("Are you sure you want to deny this request?")){this.custom_ajax_action("complete_pending_request",request_id,request_status,element_to_delete);}},list[x]["id"],"DENIED",row),this),false);rows.appendChild(row);}}
var requests=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"Stuff Needing Administrator Approval"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},rows));}}
var history=DIV({"style":"padding: 10px; padding-top: 0px;"},H3(null,"What's New (last 7 days)"));var table=TABLE({"width":"100%","cellpadding":"3"},TBODY(null,TR(null,TD(null,Basis.nbsp()),TD(null,STRONG(null,"Action Taken")),TD(null,STRONG(null,"Target Resource")),TD(null,STRONG(null,"Time Action Occurred")),TD(null,STRONG(null,"User Responsible")),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,STRONG(null,"IP Address")))));var list=this.resource_history[this.site_id];for(var i in list){if(Basis.is_number(i)){switch(list[i]["resource_type"]){case"FILE":case"FOLDER":var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],false,list[i]["display_text"]);break;default:var resource_link=this.render_view("DEFAULT","resource_with_icon",list[i]["resource_id"],true);break;}
var tr=TR(null,TD({"width":"25"},IMG({"src":this.get_view_association_icon(list[i]["resource_type"])})),TD(null,list[i]["display_action"]),TD(null,resource_link?resource_link:this.render_view("DEFAULT","deleted_resource_with_icon",list[i]["resource_type"],list[i]["display_text"])),TD(null,this.english_timestamp(strtotime(list[i]["display_timestamp"].replace("(","").replace(")","")),true)),TD(null,list[i]["display_user_responsible"]),(this.user_levels[this.current_user_level]<this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?null:TD(null,list[i]["ip_address"]));table.firstChild.appendChild(tr);}}
history.appendChild(table);var content=DIV(null,alerts,reminders,requests,history);var index=this.render_view("DEFAULT","default","Collaborate",content);this.tiles.ui.go_to(index);},this));},this));Basis.state_handler.add_state("COLLABORATE_alerts_and_reminders");this.set_custom_view_renderer("COLLABORATE","alerts_and_reminders",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_alerts_and_reminders");this.populate_submenu("collaborate","Alerts & Reminders");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Alerts & Reminders");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.grid_control.add_new_resource=bind(function(){this.grid_control.dashboard.run_wizard(this.resource_type,{"resource_id":null,"data_row":{},"grid_control":this.grid_control});},this.tiles.ui.tiles[index].list);this.tiles.ui.tiles[index].list.resource_type="ALERT";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("ALERT");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Alert list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_contacts");this.set_custom_view_renderer("COLLABORATE","contacts",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_contacts");this.populate_submenu("collaborate","Contact Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Contact Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="CONTACT_LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("CONTACT_LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Contact lists loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_discussions");this.set_custom_view_renderer("COLLABORATE","discussions",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_discussions");this.populate_submenu("collaborate","Discussions");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Discussions");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="DISCUSSION";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("DISCUSSION");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Discussions loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_galleries");this.set_custom_view_renderer("COLLABORATE","galleries",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_galleries");this.populate_submenu("collaborate","Image Galleries");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Image Galleries");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="IMAGE_GALLERY";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("IMAGE_GALLERY");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Image galleries loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_tasks");this.set_custom_view_renderer("COLLABORATE","tasks",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_tasks");this.populate_submenu("collaborate","Task Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Task Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="TASK_LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("TASK_LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Task lists loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_users");this.set_custom_view_renderer("COLLABORATE","users",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_users");this.populate_submenu("collaborate","Users");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Users");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="USER";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("USER");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("User list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));this.set_custom_view_renderer("COLLABORATE","emails",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_email");this.populate_submenu("collaborate","Email");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Email");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.grid_control.can_add_new_resource=false;this.tiles.ui.tiles[index].list.resource_type="EMAIL";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("EMAIL");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Email list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_groups");this.set_custom_view_renderer("COLLABORATE","groups",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_groups");this.populate_submenu("collaborate","Groups");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Groups");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="GROUP";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("GROUP");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("Group list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_lists");this.set_custom_view_renderer("COLLABORATE","lists",bind(function(){this.resource_id=null;this.reset_states();Basis.state_handler.enter_state("COLLABORATE_lists");this.populate_submenu("collaborate","Lists");this.tiles.ui.clear_all_tiles();var index=this.render_view("DEFAULT","default","Lists");this.tiles.ui.tiles[index].list=new Basis.grid_control.generic_resource({"dashboard":this});this.tiles.ui.tiles[index].list.resource_type="LIST";this.tiles.ui.tiles[index].list.grid_control.elements["container_output"]=this.tiles.ui.tiles[index].firstChild.content;var a=this.tiles.ui.tiles[index].list.grid_control.fetch_raw_data("LIST");a.addCallback(bind(partial(function(dashboard){this.render();this.grid_control.fetch_groups();dashboard.system_log("List list loaded successfully",true);},this),this.tiles.ui.tiles[index].list));this.tiles.ui.go_to(index);},this));Basis.state_handler.add_state("COLLABORATE_files");this.set_custom_view_renderer("COLLABORATE","files",bind(function(reset_to_top,section,choose_file,element_to_populate,ui_or_wizard){this.resource_id=null;var reset_to_top=(reset_to_top!==null)?reset_to_top:true;var section="file_explorer";var mode=(choose_file==true)?"file_explorer_choose_file":"file_explorer";var element_to_populate=((mode=="file_explorer_choose_file")&&Basis.is_element(element_to_populate))?element_to_populate:null;switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
if(reset_to_top){this.reset_states();}
Basis.state_handler.enter_state("COLLABORATE_files");if(reset_to_top){this.tiles[ui_or_wizard].clear_all_tiles();this.populate_submenu("files");}
if(element_to_populate){Basis.misc_vars.to_populate=element_to_populate;}
this.elements["file_explorer"]=this.render_view("RENDER","file_explorer_embedded","files",mode,ui_or_wizard);var index=this.render_view("DEFAULT","default","Files",this.elements["file_explorer"],ui_or_wizard);this.elements["file_explorer"].render_again=bind(partial(function(container,mode,ui_or_wizard){Basis.remove_children(container);container.appendChild(this.render_view("RENDER","file_explorer_embedded","files",mode,ui_or_wizard));this.elements["file_explorer"].restore_previously_opened_folders();},this.tiles[ui_or_wizard].tiles[index].firstChild.content,mode,ui_or_wizard),this);this.elements["file_explorer"].restore_previously_opened_folders();this.tiles[ui_or_wizard].go_to(index);},this));this.set_custom_view_renderer("RENDER","billing",bind(function(){var list=this.site_billing_info[this.site_id]["site"];var settings=this.site_settings[this.site_id];var renew_button=INPUT({"type":"button","value":"Go"});Basis.signal_handler.connect(renew_button,"onclick",bind(function(){this.custom_ajax_action("renew_site");},this),false);var package_options={"":" ","FREE_OR_INTERNAL":"Free / Internal Website","PROMO":"Promotional Website","30_DAY_TRIAL":"30 Day Trial","SQ20":"SQ20","SQ30":"SQ30","SQ50":"SQ50","SQ75":"SQ75","SQ100":"SQ100","SQ250":"SQ250","SQ500":"SQ500","ENTERPRISE":"Enterprise","NON_SQ_STATIC_SITE":"Static, Non-SQ Website"}
var package_name=this.is_admin?SELECT():SPAN(null,package_options[list["package_name"]]);var expiration_date=this.is_admin?Basis.create_date_formfield(list["expiration_date"],true):SPAN(null,list["expiration_date"]);if(this.is_admin){expiration_date.set_up_auto_save({"table":this.site_id,"field":"expiration_date","custom_action":"dashboard.change_site_billing_option"},partial(function(dashboard,date_element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["expiration_date"]=date_element.get_date();},this,expiration_date));}
var disable_date=this.is_admin?Basis.create_date_formfield(list["disable_date"],true):SPAN(null,list["disable_date"]);if(this.is_admin){disable_date.set_up_auto_save({"table":this.site_id,"field":"disable_date","custom_action":"dashboard.change_site_billing_option"},partial(function(dashboard,date_element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["disable_date"]=date_element.get_date();},this,disable_date));}
var send_emails=this.is_admin?SELECT():SPAN(null,list["send_billing_emails"]);var monthly_cost=this.is_admin?INPUT({"type":"text","value":list["monthly_cost"]}):SPAN(null,list["monthly_cost"]);var num_pages=this.is_admin?INPUT({"type":"text","value":list["num_pages"]}):SPAN(null,list["num_pages"]);var num_basic_users=this.is_admin?INPUT({"type":"text","value":list["num_basic_users"]}):SPAN(null,list["num_basic_users"]);var num_power_users=this.is_admin?INPUT({"type":"text","value":list["num_power_users"]}):SPAN(null,list["num_power_users"]);var num_groups=this.is_admin?INPUT({"type":"text","value":list["num_groups"]}):SPAN(null,list["num_groups"]);var num_tasks=this.is_admin?INPUT({"type":"text","value":list["num_tasks"]}):SPAN(null,list["num_tasks"]);var num_contacts=this.is_admin?INPUT({"type":"text","value":list["num_contacts"]}):SPAN(null,list["num_contacts"]);var num_lists=this.is_admin?INPUT({"type":"text","value":list["num_lists"]}):SPAN(null,list["num_lists"]);var num_discussions=this.is_admin?INPUT({"type":"text","value":list["num_discussions"]}):SPAN(null,list["num_discussions"]);var storage_capacity=this.is_admin?INPUT({"type":"text","value":list["storage_capacity"]}):SPAN(null,list["storage_capacity"]);var has_private_pages=this.is_admin?SELECT():SPAN(null,list["has_private_pages"]);var has_modules=this.is_admin?SELECT():SPAN(null,list["has_modules"]);var notes=this.is_admin?Basis.textarea({"style":"width: 250px; height: 150px;"},list["notes"]):SPAN();var num_emails=this.is_admin?INPUT({"type":"text","value":list["num_emails"]}):SPAN(null,list["num_emails"]);var custom_login_graphic_url=INPUT({"type":"text","value":Basis._string(this.resource_linker[this.site_resource_id]["misc_vars"]["custom_login_graphic"]),"style":"width: 500px;"});custom_login_graphic_url.onchange=bind(function(){if(this.editable_element.save_editable_element_changes){this.editable_element.editing=true;this.editable_element.save_editable_element_changes();}},custom_login_graphic_url);var file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"ui");},custom_login_graphic_url),this),false);var custom_login_graphic=DIV(null,custom_login_graphic_url,Basis.nbsp(),file_select);Basis.make_text_element_editable(custom_login_graphic_url,{"resource_id":this.site_resource_id,"field":"custom_login_graphic","after_success":partial(function(dashboard,element,req){dashboard.resource_linker[dashboard.site_resource_id]["misc_vars"]["custom_login_graphic"]=element.value;},this,custom_login_graphic_url)});var default_email_template=this.is_admin?Basis.textarea({"style":"width: 250px; height: 150px;"},list["default_email_template"]):SPAN();var toggle_default_email_template=INPUT({"type":"button","value":"Richtext Mode"});Basis.signal_handler.connect(toggle_default_email_template,"onclick",partial(function(element){if(tinyMCE&&!tinyMCE.get(element.id)){Basis.convert_textarea_to_richtextarea(element);}else{tinyMCE.execCommand("mceRemoveControl",false,element.id);}},default_email_template),false);var requires_login=SELECT();var default_to_admin_section=SELECT();Basis.select_add_options(requires_login,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(requires_login,(list["requires_login"]=="yes")?list["requires_login"]:"no");Basis.make_text_element_dropdown(requires_login,null,{"table":this.site_id,"field":"requires_login","custom_action":"dashboard.change_site_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["requires_login"]=element.options[element.selectedIndex].value},this,requires_login)});Basis.select_add_options(default_to_admin_section,{"true":"Yes","false":"No"});Basis.select_select_item_by_value(default_to_admin_section,(list["default_to_admin_section"]=="true")?list["default_to_admin_section"]:"false");Basis.make_text_element_dropdown(default_to_admin_section,null,{"table":this.site_id,"field":"default_to_admin_section","custom_action":"dashboard.change_site_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["default_to_admin_section"]=element.options[element.selectedIndex].value},this,default_to_admin_section)});var public_can_sign_up=null;var sign_up_passkey=null;if(this.is_admin){var public_can_sign_up=SELECT();Basis.select_add_options(public_can_sign_up,{"no":"No","yes":"Yes"});Basis.select_select_item_by_value(public_can_sign_up,settings["public_can_sign_up"]);Basis.make_text_element_dropdown(public_can_sign_up,null,{"table":this.site_id,"field":"public_can_sign_up","custom_action":"dashboard.change_site_settings"});var sign_up_passkey=INPUT({"type":"text","value":settings["sign_up_passkey"]});Basis.make_text_element_editable(sign_up_passkey,{"table":this.site_id,"field":"sign_up_passkey","custom_action":"dashboard.change_site_settings"});}
var account_representative=null;var rep_list=this.site_billing_info[this.site_id]
var name=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["name"]}):null;var address1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["address1"]}):null;var address2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["address2"]}):null;var city=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["city"]}):null;var state=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["state"]}):null;var zip=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["zip"]}):null;var country=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["country"]}):null;var phone_number1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["phone_number1"]}):null;var phone_number2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["phone_number2"]}):null;var fax=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["fax"]}):null;var email_address1=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["email_address1"]}):null;var email_address2=this.is_admin?INPUT({"type":"text","value":rep_list["representative"]["email_address2"]}):null;var rep_notes=this.is_admin?Basis.textarea({"style":"width: 250px; height: 100px;"},rep_list["representative"]["notes"]):null;if(this.is_admin){Basis.make_text_element_editable(name,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"name","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(address1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"address1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(address2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"address2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(city,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"city","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(state,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"state","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(zip,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"zip","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(country,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"country","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(phone_number1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"phone_number1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(phone_number2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"phone_number2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(fax,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"fax","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(email_address1,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"email_address1","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(email_address2,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"email_address2","custom_action":"dashboard.change_site_billing_representative_option"});Basis.make_text_element_editable(rep_notes,{"sid":this.session_id,"url":this.post_url,"table":rep_list["representative"]["id"],"field":"notes","custom_action":"dashboard.change_site_billing_representative_option"});account_representative=[H2(null,"Account Representative Information:"),TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"115","style":"font-weight: bold;"},"Name:"),TD(null,name)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Address:"),TD(null,address1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Address (cont'd):"),TD(null,address2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"City:"),TD(null,city)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"State:"),TD(null,state)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Zip:"),TD(null,zip)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Country:"),TD(null,country)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Phone Number:"),TD(null,phone_number1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Phone Number (other):"),TD(null,phone_number2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Fax:"),TD(null,fax)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Email Address:"),TD(null,email_address1)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Email Address (other):"),TD(null,email_address2)),TR(null,TD({"width":"115","style":"font-weight: bold;"},"Notes:"),TD(null,rep_notes))))];}
if(this.is_admin){Basis.select_add_options(package_name,package_options);Basis.select_select_item_by_value(package_name,list["package_name"]);Basis.make_text_element_dropdown(package_name,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"package_name","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["package_name"]=element.options[element.selectedIndex].value},this,package_name)});Basis.select_add_options(send_emails,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(send_emails,list["send_billing_emails"]);Basis.make_text_element_dropdown(send_emails,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"send_billing_emails","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["send_billing_emails"]=element.options[element.selectedIndex].value},this,send_emails)});Basis.make_text_element_editable(monthly_cost,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"monthly_cost","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["monthly_cost"]=element.value;},this,monthly_cost)});Basis.make_text_element_editable(num_pages,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_pages","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_pages"]=element.value;},this,num_pages)});Basis.make_text_element_editable(num_basic_users,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_basic_users","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_basic_users"]=element.value;},this,num_basic_users)});Basis.make_text_element_editable(num_power_users,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_power_users","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_power_users"]=element.value;},this,num_power_users)});Basis.make_text_element_editable(num_groups,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_groups","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_groups"]=element.value;},this,num_groups)});Basis.make_text_element_editable(num_tasks,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_tasks","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_tasks"]=element.value;},this,num_tasks)});Basis.make_text_element_editable(num_contacts,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_contacts","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_contacts"]=element.value;},this,num_contacts)});Basis.make_text_element_editable(num_lists,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_lists","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_lists"]=element.value;},this,num_lists)});Basis.make_text_element_editable(num_discussions,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_discussions","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_discussions"]=element.value;},this,num_discussions)});Basis.make_text_element_editable(storage_capacity,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"storage_capacity","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.max_diskspace=(Basis.filter_number(element.value)*(1024*1024));dashboard.site_billing_info[dashboard.site_id]["site"]["storage_capacity"]=element.value;},this,storage_capacity)});Basis.select_add_options(has_private_pages,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(has_private_pages,list["has_private_pages"]);Basis.make_text_element_dropdown(has_private_pages,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"has_private_pages","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["has_private_pages"]=element.options[element.selectedIndex].value},this,has_private_pages)});Basis.select_add_options(has_modules,{"yes":"Yes","no":"No"});Basis.select_select_item_by_value(has_modules,list["has_modules"]);Basis.make_text_element_dropdown(has_modules,null,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"has_modules","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["has_modules"]=element.options[element.selectedIndex].value},this,has_modules)});Basis.make_text_element_editable(notes,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"notes","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["notes"]=element.value;},this,notes)});Basis.make_text_element_editable(default_email_template,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"default_email_template","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["default_email_template"]=element.value;},this,notes)});Basis.make_text_element_editable(num_emails,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"num_emails","custom_action":"dashboard.change_site_billing_option","after_success":partial(function(dashboard,element,req){dashboard.site_billing_info[dashboard.site_id]["site"]["num_emails"]=element.value;},this,num_emails)});}
var product_list=SELECT({"style":"width: 125px;"});var product_add_button=INPUT({"type":"button","value":"Add Product"});Basis.signal_handler.connect(product_add_button,"onclick",bind(function(){if(confirm("Are you sure you want to add a new product to this site?")){var product_id=this.select.options[this.select.selectedIndex].value;this.dashboard.custom_ajax_action("add_site_product",product_id);}},{"select":product_list,"dashboard":this}),false);var list=this.site_billing_info[this.site_id]["product_list"];if(list){for(var i in list){if(!Basis.is_function(list[i])){Basis.select_add_option(product_list,list[i]["id"],list[i]["name"]);}}}
if(!this.is_admin){var product_list=null;var product_add_button=null;}
var products=[];var list=this.site_billing_info[this.site_id]["products"];if(list){for(var i in list){if(!Basis.is_function(list[i])){var product_expiration=this.is_admin?Basis.create_date_formfield(list[i]["expiration_date"],true):SPAN(null,list[i]["expiration_date"]);if(this.is_admin){product_expiration.set_up_auto_save({"table":list[i]["id"],"field":"expiration_date","custom_action":"dashboard.change_site_product_billing_option"},partial(function(dashboard,date_element,i,req){dashboard.site_billing_info[dashboard.site_id]["products"][i]["expiration_date"]=date_element.get_date();},this,product_expiration,i));}
var cycle_cost=parseFloat(Math.round((list[i]["billing_type"]=="repeated")?(Basis.parse_number(list[i]["monthly_cost"])*Basis.parse_number(list[i]["billing_cycle_num_months"])):Basis.parse_number(list[i]["monthly_cost"])));var cost=this.is_admin?INPUT({"type":"text","style":"width: 30px;","value":cycle_cost}):SPAN(null,cycle_cost);var comments=this.is_admin?INPUT({"type":"text","style":"width: 250px;","value":list[i]["comments"]}):SPAN();if(this.is_admin){Basis.make_text_element_editable(cost,{"sid":this.session_id,"url":this.post_url,"table":list[i]["id"],"field":"monthly_cost","custom_action":"dashboard.change_site_product_billing_option"});Basis.make_text_element_editable(comments,{"sid":this.session_id,"url":this.post_url,"table":list[i]["id"],"field":"comments","custom_action":"dashboard.change_site_product_billing_option"});}
products.push(TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"200","style":"font-weight: bold;"},list[i]["name"]),TD({"width":"150"},"$",cost,((list[i]["billing_type"]=="repeated")?(" (cost for "+list[i]["billing_cycle_num_months"]+" months)"):null)),(list[i]["billing_type"]=="repeated")?TD({"width":"280"},product_expiration):TD({"width":"280"}),(this.is_admin)?TD(null,"Comments: ",comments):null))));}}}
var billing=DIV({"style":"padding: 10px"},H2(null,"Site Information:"),TABLE({"width":"100%","border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Renew Site:"),TD(null,renew_button)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Package Name:"),TD(null,package_name)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Expiration Date:"),TD(null,expiration_date)),(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Disable Date:"),TD(null,disable_date)):null,(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Send Billing Emails?"),TD(null,send_emails," (toggle whether this account contact receives automated billing emails or not)")):null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Monthly Cost:"),TD(null,monthly_cost)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Pages:"),TD(null,num_pages)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Basic Users:"),TD(null,num_basic_users)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Power Users:"),TD(null,num_power_users)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Groups:"),TD(null,num_groups)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Tasks:"),TD(null,num_tasks)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Contacts:"),TD(null,num_contacts)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Discussions:"),TD(null,num_discussions)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Lists:"),TD(null,num_lists)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"# Emails Left:"),TD(null,num_emails)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Storage Capacity:"),TD(null,storage_capacity," (in MB)")),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Has Private Pages?"),TD(null,has_private_pages)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Has Modules?"),TD(null,has_modules," (Polls, discussion board, etc)")),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Requires Login?"),TD(null,requires_login)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Default to Admin Section on Login?"),TD(null,default_to_admin_section)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Custom Login Graphic?"),TD(null,custom_login_graphic)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Default Email Template?"),TD(null,default_email_template,null)),(this.is_admin)?[TR(null,TD({"width":"125","style":"font-weight: bold;"},"Can public users sign up for accounts?"),TD(null,public_can_sign_up)),TR(null,TD({"width":"125","style":"font-weight: bold;"},"Password used to auto-approve user accounts:"),TD(null,sign_up_passkey))]:null,TR(null,TD({"width":"125","style":"font-weight: bold;"},"Products:",DIV({"style":"font-weight: normal; padding-top: 10px;"},product_list,product_add_button)),TD({"style":"padding: 0px;"},products)),(this.is_admin)?TR(null,TD({"width":"125","style":"font-weight: bold;"},"Notes:"),TD(null,notes)):null)),(this.is_admin)?account_representative:null);return billing;},this));this.set_custom_view_renderer("RENDER","file_explorer_embedded",bind(function(section,mode,ui_or_wizard){switch(ui_or_wizard){case"ui":case"wizard":break;default:var ui_or_wizard="ui";break;}
switch(mode){case"file_explorer":case"file_explorer_choose_file":case"file_explorer_embedded":var mode=mode;break;default:var mode="file_explorer";break;}
switch(section){case"files":case"gallery_files":var section=section;break;default:var section="files";break;}
this.toggle_uploader=bind(function(){var obj=MochiKit.DOM.getElement("uploader_container");if(!obj){var uploader=DIV({"id":"uploader_container","style":"display: none; width: 650px; height: 340px; position: absolute; background-color: #FFFFFF; background-image: url(images/images/no_flash.gif); background-repeat: no-repeat; cursor: pointer; z-index: 5000;"},MochiKit.DOM.createDOM("embed",{"id":"uploader_container_flash_container","name":"uploader_container_flash_container","src":"twg_flash_uploader4.swf","type":"application/x-shockwave-flash","height":"340","width":"650","quality":"high","bgcolor":"#ffffff","style":"","flashvars":"path_reference="+this.resource_linker[this.file_browser_current_folder]["misc_vars"]["path_reference"]+"&PHPSESSID="+this.session_id+"&cookie_name="+this.cookie_name+"&cookie_value="+Basis.get_cookie(this.cookie_name)}));Basis.signal_handler.connect(uploader,"onclick",function(){window.open("http://www.adobe.com/go/getflashplayer");},null,false);document.body.appendChild(uploader);Basis.align_element_to_element(uploader,"container","center");uploader.style.display="";Basis.key_handler.register_key_event("KEY_ESCAPE","down",bind(function(){Basis.remove_element(this);},uploader));Basis.updated_live_dom();}else{Basis.remove_element("uploader_container");}},this);document.twg_upload_completed=bind(function(){var element=MochiKit.DOM.getElement("resource_"+this.file_browser_current_folder);if(element){Basis.signal_handler.execute_interactive_element(element,"onclick");this.custom_ajax_action("get_site_diskspace");}
if(confirm("Would you like to upload more files?")==false){var obj=MochiKit.DOM.getElement("uploader_container");if(obj){Basis.remove_element("uploader_container");}}},this);var folders=this.render_view("FOLDER","browser",section,mode,ui_or_wizard);var add_files_folder=IMG({"src":"images/images/default_icons/folder_add.gif","style":"cursor: pointer; margin-right: 5px;"});Basis.signal_handler.connect(add_files_folder,"onclick",bind(function(){this.custom_ajax_action("create_new_root_folder","files");},this));Basis.attach_tooltip(add_files_folder,("Add a new Files folder"),null,false);var files_container=DIV({"id":Basis.anonymous_element_id(),"style":"overflow: auto;"});var folders_container=DIV({"id":Basis.anonymous_element_id(),"style":"overflow: auto;"});Basis.register_size_constraints(folders_container,"100%","100%");Basis.register_size_constraints(files_container,"100%","100%");this.elements["files_container"]=files_container;this.elements["folders_container"]=folders_container;var gallery_files=(section=="gallery_files")?DIV({"id":Basis.anonymous_element_id(),"style":"padding-top: 10px; padding-bottom: 5px;"},SPAN({"style":"font-weight: bold;"},"Gallery Files"),folders):null;var diskspace_meter=this.render_view("FILE","diskspace");var files=(section=="files")?DIV({"id":Basis.anonymous_element_id(),"style":"padding-top: 10px; padding-bottom: 5px;"},TABLE({"width":"100%","cellpadding":"0","cellspacing":"0","fclass":"no_select"},TBODY(null,TR(null,TD(null,SPAN({"style":"font-weight: bold;"},"Files")),TD({"width":"18"},add_files_folder)))),folders):null;this.elements["files_root"]=files;this.elements["gallery_root"]=gallery_files;folders_container.appendChild(DIV(null,gallery_files,files));var file_browser=TABLE({"width":"100%","height":"100%","fclass":"no_select"},TBODY(null,TR(null,TD({"width":"350","style":"vertical-align: top;"},diskspace_meter,folders_container),TD({"style":"vertical-align: top;"},files_container))));Basis.convert_nested_elements_to_tree(this.elements["files_root"],null,false,true,null,false,false);Basis.convert_nested_elements_to_tree(this.elements["gallery_root"],null,false,true,null,false,false);this.attach_custom_expand_handler=bind(partial(function(type_of_files,mode,ui_or_wizard,image){Basis.signal_handler.connect(image,{"onclick":[bind(partial(function(dashboard,type_of_files,mode,ui_or_wizard){var resource=this.id.substring(0,(this.id.length-("_toggle").length));var element=Basis.get_element(resource);if(!image.expand_loaded){var children=MochiKit.DOM.getElementsByTagAndClassName("div","resource",Basis.get_element(element.id+"_c"));for(var j=0;j<children.length;j++){var child=children[j];var wrapper=Basis.get_element(child.id+"_wrapper");if(child&&wrapper){MochiKit.DOM.swapDOM(wrapper,child);var node=dashboard.folders[type_of_files].getElementsByTagName("resource_id_"+Basis.filter_number(child.id))[0];var row=dashboard.render_view("FOLDER","browser_row",Basis.filter_number(child.id),node,type_of_files,null,mode,ui_or_wizard);if(row){MochiKit.DOM.swapDOM(child,row);Basis.convert_nested_elements_to_tree(row,null,false,false,null,false,false);var timage=MochiKit.DOM.getElementsByTagAndClassName("img","Basis.convert_nested_elements_to_tree.toggle",Basis.get_element(row.id+"_wrapper"))[0];if(timage){dashboard.attach_custom_expand_handler(timage);}}}}
image.expand_loaded=true;}
var container=MochiKit.DOM.getElement((resource+"_c"));if(container){if(this.open){var image_src=(container.childNodes.length==0)?((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-node.gif"):("images/images/default_icons/tree/tree-node-end.gif"));container.style.display="none";this.src=image_src;this.open=false;}else{var image_src=(container.childNodes.length==0)?((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-leaf.gif"):("images/images/default_icons/tree/tree-leaf-end.gif")):((container.parentNode.nextSibling)?("images/images/default_icons/tree/tree-node-open.gif"):("images/images/default_icons/tree/tree-node-open-end.gif"));container.style.display="";this.src=image_src;this.open=true;}
if(this.open){var resource_id=Basis.filter_number(resource);var cookie_data=Basis.get_cookie(dashboard.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);if(Basis.array_search(open,resource_id)==null){open.push(resource_id);}
open.sort();Basis.set_cookie((dashboard.site_id+".folders"),MochiKit.Base.serializeJSON(open));}else{var resource_id=Basis.filter_number(resource);var cookie_data=Basis.get_cookie(dashboard.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);var index=Basis.array_search(open,resource_id);if(index!=null){delete open[index];}
open.sort();Basis.set_cookie((dashboard.site_id+".folders"),MochiKit.Base.serializeJSON(open));}}},this,((type_of_files=="file_explorer")?"files":"gallery_files"),mode,ui_or_wizard),image)]},null,false);},((section=="files")?"file_explorer":"gallery_explorer"),mode,ui_or_wizard),this);var list=MochiKit.DOM.getElementsByTagAndClassName("img","Basis.convert_nested_elements_to_tree.toggle",file_browser);for(var i=0;i<list.length;i++){var image=list[i];if(Basis.get_element(image)){this.attach_custom_expand_handler(image);}}
file_browser.restore_previously_opened_folders=bind(function(){var cookie_data=Basis.get_cookie(this.site_id+".folders");cookie_data=cookie_data?cookie_data:"[]";var open=MochiKit.Base.evalJSON(cookie_data);for(var i=0;i<open.length;i++){if(i!=null){var obj=Basis.get_element("resource_"+open[i]+"_toggle");if(obj){Basis.signal_handler.execute_interactive_element(obj,"onclick");}}}},this);return file_browser;},this));this.set_custom_view_renderer("PAGE","browser",bind(function(){if(!this.site_id){return;}
var type="PAGE";var list=this.available_resources[Basis._return(type)];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);this.delete_page=bind(function(page_id){if(page_id&&confirm("Are you sure you want to delete this page?")){var to_post=new Object();to_post.page_id=page_id;window.status="Deleting page...";var as=new Basis.ajax_scaffold;as.alias="delete_page";as.sid=this.session_id;as.url=this.post_url;as.page_id=page_id;as.dashboard=this;as.on_success=function(req){var response=MochiKit.Base.evalJSON(decodeBase64(req.responseText));if(response["text"]=="true"){var resource_id=this.dashboard.get_page_resource_id(this.page_id);if(resource_id){this.dashboard.purge_resource(resource_id);var obj=MochiKit.DOM.getElement("list_resource_"+resource_id+"_wrapper");if(obj){MochiKit.Visual.fade(obj,{"duration":0.5,"afterFinish":bind(function(effect){if(MochiKit.DOM.getElement(effect.element.id)){MochiKit.DOM.removeElement(effect.element.id);this.render_view("WEBSITE","default");}},this.dashboard)});}}
window.status="Done";}else{window.status="delete_page(): ERROR!";}};as.post({"to_post":to_post});}},this);this.get_page_resource_id=bind(function(page_id){if(page_id){for(var i in this.resource_linker){if(typeof(this.resource_linker[i])!="function"){if(this.resource_linker[i]["type"]=="PAGE"){if(this.resource_linker[i]["misc_vars"]["id"]==page_id){return i;}}}}}},this);var destination=DIV();var manage_menus_button=INPUT({"type":"button","value":"Manage Submenus","style":"background-image:url('images/images/default_icons/cog.gif');","class":"gfx_but_default"});Basis.signal_handler.connect(manage_menus_button,"onclick",bind(function(){this.toggle_menu_management();},this),false);var add_page_button=INPUT({"type":"button","value":"Add a Page","style":"background-image:url('images/images/record_add.gif');","class":"gfx_but_default"});Basis.signal_handler.connect(add_page_button,"onclick",bind(function(){this.run_wizard("PAGE");},this),false);if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){destination.appendChild(DIV({"id":Basis.anonymous_element_id(),"style":"padding: 10px;"},manage_menus_button,add_page_button));}else{destination.appendChild(DIV({"style":"padding: 3px;"},Basis.nbsp()));}
var page_level_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(page_level_tooltip,"onclick",function(){Basis.popup({"window_title":"Page Levels","id":"page_level_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="750">\
                                              <tr>\
                                                <td valign="top" width="200"><b>Public</b></td>\
                                                <td valign="top">Anybody can see this page</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Basic (Admin Change Only)</b></td>\
                                                <td valign="top">Only logged-in Basic users can see this page, but they can\'t interact with polls, discussions, etc on the page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Basic</b></td>\
                                                <td valign="top">Only logged-in Basic users can see this page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Private (Admin Change Only)</b></td>\
                                                <td valign="top">Only logged-in Private users can see this page, but cannot modify it.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Private</b></td>\
                                                <td valign="top">Only logged-in Private users can see this page.</td>\
                                              </tr>\
                                              <tr>\
                                                <td valign="top"><b>Admin Only</b></td>\
                                                <td valign="top">Only logged-in Site Administrators can see and edit this page</td>\
                                              </tr>\
                                            </table>'});},false);var root=DIV(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":(328),"style":"font-weight: bold;"},"Page Name"),TD({"width":"101","style":"font-weight: bold;"},"Page Type"),!this.show_v2_page_permissions()?TD({"width":"100","style":"padding-left: 0px; font-weight: bold;"},"Page Level ",page_level_tooltip):null,this.show_v2_page_permissions()?TD({"width":"125","style":"padding-left: 0px; font-weight: bold;"},"Read-Only Level"):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding-left: 0px; font-weight: bold;"},"Full Access Level"):null))));var list=organized_pages["parent_pages"];for(var i in list){if(typeof(list)!="function"){var children=this.render_view("PAGE","browser_row",list[i],organized_pages);if(children){root.appendChild(children);}}}
destination.appendChild(root);destination.pages_root=root;this.toggle_menu_management=bind(partial(function(){var objs=MochiKit.DOM.getElementsByTagAndClassName("div","dropzone",destination);for(var i in objs){if(Basis.is_element(objs[i])){MochiKit.DOM.toggleElementClass("invisible",objs[i]);this.managing_menus=MochiKit.DOM.hasElementClass(objs[i],"invisible")?false:true;}}},destination),this);return destination;},this));this.set_custom_view_renderer("PAGE","browser_row",bind(function(page_id,organized_pages,level){var tree=null;var level=(level&&(level>0))?level:0;if(page_id){var list=this.resource_linker;var resource_id=this.get_page_resource_id(page_id);var id="list_resource_"+resource_id;if(MochiKit.DOM.getElement(id)){Basis.remove_element(id);}
var item=DIV({"id":id});var page_name=SPAN({"id":("resource_"+resource_id),"style":"font-weight: bold;"+((list[resource_id]["misc_vars"]["invisible"]=="true")?" font-style: italic; color: #c0c0c0;":"")},list[resource_id]["display_text"]);page_name.value=list[resource_id]["display_text"];var icon=((parseInt(this.resource_linker[resource_id]["misc_vars"]["rank"])==0)&&(parseInt(this.resource_linker[resource_id]["misc_vars"]["parent_page_id"])==0))?this.get_view_association_icon("HOMEPAGE"):this.get_view_association_icon(this.resource_linker[resource_id]["misc_vars"]["raw_type"]);var delete_button=IMG({"src":"images/images/delete.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(delete_button,"onclick.greedy.swallow",bind(partial(function(page_id){this.delete_page.apply(null,[page_id]);},page_id),this),false);Basis.attach_tooltip(delete_button,("Delete "+list[resource_id]["display_text"]),false,false);var link_to_page=IMG({"src":"images/images/default_icons/png/link_go.png","style":"cursor: pointer;"});Basis.signal_handler.connect(link_to_page,"onclick",bind(partial(function(resource_id){var site_url=this.site_url;var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];prompt("The text below is a direct link to this page. (Ctrl-C to Copy, Ctrl-V to Paste)",(site_url+"/index.php?id="+page_id));},resource_id),this),false);Basis.attach_tooltip(link_to_page,("Link to "+list[resource_id]["display_text"]),false,false);var go_to_page=IMG({"src":"images/images/arrow_right_small.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(go_to_page,"onclick.greedy.swallow",bind(partial(function(resource_id){var site_url=this.site_url;var page_id=this.resource_linker[resource_id]["misc_vars"]["id"];window.onbeforeunload=null;window.location=(site_url+"/index.php?id="+page_id);},resource_id),this),false);Basis.attach_tooltip(go_to_page,("Go to "+list[resource_id]["display_text"]),false,false);var page_level=SPAN({"id":("resource_"+resource_id+"_level")},this.resource_linker[resource_id]["misc_vars"]["page_level"]);var page_type=this.resource_linker[resource_id]["misc_vars"]["type"]?this.resource_linker[resource_id]["misc_vars"]["type"]:"Custom Page";if(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"]){var menu_image_off=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["menu_image_off"]});var menu_image_on=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["menu_image_on"]});var visibility=SELECT();var visibility_options={"false":"Visible","true":"Invisible"};Basis.select_add_options(visibility,visibility_options);Basis.select_select_item_by_value(visibility,this.resource_linker[resource_id]["misc_vars"]["invisible"]);Basis.make_text_element_dropdown(visibility,null,{"resource_id":resource_id,"field":"invisible","after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["invisible"]=this.element.options[this.element.selectedIndex].value;switch(this.element.options[this.element.selectedIndex].value){case"true":this.page_name.style.fontWeight="bold";this.page_name.style.fontStyle="italic";this.page_name.style.color="#c0c0c0";break;case"false":this.page_name.style.fontWeight="bold";this.page_name.style.fontStyle="normal";this.page_name.style.color="#000000";break;}},resource_id),{"element":visibility,"page_name":page_name,"dashboard":this})});Basis.make_text_element_editable(menu_image_off,{"resource_id":resource_id,"field":"menu_image_off","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["menu_image_off"]=this.element.value;},resource_id),{"element":menu_image_off,"dashboard":this})});Basis.make_text_element_editable(menu_image_on,{"resource_id":resource_id,"field":"menu_image_on","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["menu_image_on"]=this.element.value;},resource_id),{"element":menu_image_on,"dashboard":this})});var target=SELECT();var target_options={"":"New Window"," ":"Current Window"};Basis.select_add_options(target,target_options);Basis.select_select_item_by_value(target,this.resource_linker[resource_id]["misc_vars"]["target"]);Basis.make_text_element_dropdown(target,null,{"resource_id":resource_id,"field":"target","after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["target"]=this.element.options[this.element.selectedIndex].value;},resource_id),{"element":target,"dashboard":this})});var target_tr=null;if(this.resource_linker[resource_id]["misc_vars"]["raw_type"]=="LINK_TO_URL"){var target_tr=TR(null,TD({"width":"180"},STRONG(null,"URL Target")),TD(null,target));}
var link_to_url=INPUT({"type":"text","value":this.resource_linker[resource_id]["misc_vars"]["link_to_url"]});Basis.make_text_element_editable(link_to_url,{"resource_id":resource_id,"field":"link_to_url","commit":false,"after_success":bind(partial(function(resource_id){this.dashboard.resource_linker[resource_id]["misc_vars"]["link_to_url"]=this.element.value;},resource_id),{"element":link_to_url,"dashboard":this})});var link_to_url_tr=null;if(this.resource_linker[resource_id]["misc_vars"]["raw_type"]=="LINK_TO_URL"){var link_to_url_tr=TR(null,TD({"width":"180"},STRONG(null,"URL Link")),TD(null,link_to_url));}
var extended_page_options=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"180"},STRONG(null,"Visibility")),TD(null,visibility)),TR(null,TD({"width":"180"},STRONG(null,"Menu Image")),TD(null,menu_image_off)),TR(null,TD({"width":"180"},STRONG(null,"Mouseover Image")),TD(null,menu_image_on)),link_to_url_tr,target_tr));var add_page=IMG({"src":"images/images/record_add.gif","style":"cursor: pointer;"});Basis.signal_handler.connect(add_page,"onclick",bind(partial(function(page_id){this.run_wizard("PAGE",{"page_id":page_id});},this.resource_linker[resource_id]["misc_vars"]["id"]),this),false);Basis.attach_tooltip(add_page,("Add a Page Before, After or Below This Page"),false,false);var move_page=IMG({"src":"images/images/default_icons/png/arrow_nsew.png","style":"cursor: pointer;"});Basis.signal_handler.connect(move_page,"onclick",bind(partial(function(page_id){this.run_wizard("PAGE_MOVE",{"page_id":page_id});},this.resource_linker[resource_id]["misc_vars"]["id"]),this),false);Basis.attach_tooltip(move_page,("Move This Page"),false,false);var options_toggle=IMG({"src":"images/images/default_icons/png/plugin.png","style":"cursor: pointer;"});Basis.signal_handler.connect(options_toggle,"onclick",partial(function(extended_page_options){Basis.toggle_visible(extended_page_options.parentNode.parentNode);},extended_page_options),false);Basis.attach_tooltip(options_toggle,("Extended Page Options"),false,false);var access_restrictor=IMG({"src":(this.resource_linker[resource_id]["has_restrictions"]?"images/images/default_icons/png/lock.png":(this.resource_has_inherited_permissions(resource_id)?"images/images/default_icons/png/lock_inherited.png":"images/images/default_icons/png/lock_open.grey.png")),"style":""});if(this.resource_linker[resource_id]["resource_access"]["full_access"]){access_restrictor.style.cursor="pointer";Basis.signal_handler.connect(access_restrictor,"onclick.greedy.swallow",bind(partial(function(resource_id,lock_icon){this.render_view("DEFAULT","resource_permissions_1",resource_id,lock_icon);},resource_id,access_restrictor),this),false);Basis.attach_tooltip(access_restrictor,("Manage custom permissions for "+this.resource_linker[resource_id]["display_text"]),null,false);}else{Basis.attach_tooltip(access_restrictor,"You don't have permission to manage this!",null,false,true);}
if(this.resource_linker[resource_id]["restrictions"]&&(!this.resource_linker[resource_id]["restrictions"]["group"]&&!this.resource_linker[resource_id]["restrictions"]["user_specific"])){if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["read_only"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){var read_only_text=this.user_levels_text[list[i]["user_level"]];}}}}else{var read_only_text="User or Group Access";}
if(this.resource_linker[resource_id]["restrictions"]&&(!this.resource_linker[resource_id]["restrictions"]["group"]&&!this.resource_linker[resource_id]["restrictions"]["user_specific"])){if(this.resource_linker[resource_id]["restrictions"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]&&this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"]){var list=this.resource_linker[resource_id]["restrictions"]["user_level"]["full_access"];for(var i=0;i<list.length;i++){if(list[i]["site_id"]==this.site_id){var full_access_text=this.user_levels_text[list[i]["user_level"]];}}}}else{var full_access_text="User or Group Access";}
var read_only_access=SPAN(null,read_only_text);var full_access=SPAN(null,full_access_text);}else{var extended_page_options=null;}
if(!this.resource_linker[resource_id]["resource_access"]["full_access"]){delete_button=Basis.nbsp();move_page=Basis.nbsp();options_toggle=Basis.nbsp();}
item=DIV({"id":id},TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"20","height":"20"},IMG({"src":icon,"class":"Basis.dashboard.page_handle"})),TD({"width":(300-(level*18)-10),"style":"padding: 0px;"},page_name),TD({"width":"100","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},page_type),!this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},page_level):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},read_only_access):null,this.show_v2_page_permissions()?TD({"width":"130","style":"padding: 0px; border-bottom: 1px dotted #dfdfdf; color: #808080;"},full_access):null,this.show_v2_page_permissions()?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},access_restrictor):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},move_page):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},add_page):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},options_toggle):null,(this.user_levels[this.current_user_level]>=this.user_levels["USER_LEVEL_SITE_ADMINISTRATOR"])?TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},delete_button):null,TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},link_to_page),TD({"width":"20","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},go_to_page)),TR({"class":"invisible"},TD({"width":"20","height":"20"},IMG({"src":"images/images/spacer.gif"})),TD({"width":(300-(level*18)-10),"style":"padding: 0px;"}," "),TD({"width":"100","colspan":"4","style":"border-bottom: 1px dotted #dfdfdf; color: #808080;"},extended_page_options)))));item.dashboard=this;if(this.resource_linker[resource_id]["resource_access"]["full_access"]){Basis.make_text_element_editable(page_name,{"resource_id":resource_id,"after_success":bind(function(){var value=this.element.editable_element.original_value;if(value&&this.resource_id){this.dashboard.resource_linker[this.resource_id]["display_text"]=value;}},{"dashboard":this,"resource_id":resource_id,"element":page_name})});Basis.make_text_element_dropdown(page_level,this.page_levels_text,{"resource_id":resource_id,"field":"attributes","after_success":bind(function(){var value=this.element.editable_element.original_value;if(value&&this.resource_id){var render_pages_again=((value=="CUSTOM_LEVEL")||(this.dashboard.resource_linker[this.resource_id]["misc_vars"]["raw_page_level"]=="CUSTOM_LEVEL"))?true:false;this.dashboard.resource_linker[this.resource_id]["misc_vars"]["raw_page_level"]=value;this.dashboard.resource_linker[this.resource_id]["misc_vars"]["page_level"]=this.element.editable_element.dropdown_options[value];if(render_pages_again){}}},{"dashboard":this,"resource_id":resource_id,"element":page_level})});}
for(var i in organized_pages["child_pages_of"]){if(typeof(organized_pages["child_pages_of"][i])!="function"){if((Basis.parse_number(i)==Basis.parse_number(page_id))&&(Basis.array_length(organized_pages["child_pages_of"][i])>0)){var list=organized_pages["child_pages_of"][i];for(var x in list){if(typeof(list[x])!="function"){var child=this.render_view("PAGE","browser_row",list[x],organized_pages,(level+1));if(child){item.appendChild(child);}}}}}}}
if(tree&&tree.appendChild){tree.appendChild(item);}else{tree=item;}
return tree;},this));},set_up_wizards:function(){this.set_wizard("test",function(){this.on_done=function(){alert("totally done");};this.add_step("Step 1","This is step one.",{"on_load":function(){log("wizard test step 1 loaded!");}});this.add_step("Step 2","This is step two.",{"on_load":function(){log("wizard test step 2 loaded!");},"on_unload":function(){log("wizard test step 2 unloaded!");}});this.add_step("Step 3","This is step three.",{"on_load":function(){log("wizard test step 3 loaded!");},"on_unload":function(){alert("done");},"after_unload":function(){alert("after done");}});});this.set_wizard("ALERT",function(){if(list){var content=this.dashboard.render_view("ALERT","wizard_form",this.options["data_row"],this.options["resource_id"],this.options["target_resource_id"],this.options["mode"]);if(content){var fields=content["fields"];var content=content["element"];var options={"on_load":partial(function(notes){log("wizard ALERT 1 loaded!");},fields["notes"])};this.on_done=bind(partial(function(data_row,wizard){if(wizard.options["mode"]=="edit"){var a=this.custom_ajax_action("save_resource",wizard.options["resource_id"],data_row,wizard.options["grid_control"]);a.addCallback(bind(partial(function(resource_id){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},wizard.options["resource_id"]),this));}else{var a=this.custom_ajax_action("add_new_resource","ALERT",data_row);a.addCallback(bind(partial(function(dashboard){if((dashboard.tiles.ui.tiles.length==1)&&(dashboard.tiles.ui.current_tile==null)){dashboard.tiles.ui.tiles[0].list.grid_control.fetch_raw_data("ALERT");dashboard.tiles.ui.tiles[0].list.grid_control.clear_cached_datasets();dashboard.tiles.ui.tiles[0].list.grid_control.refresh();}else{var response=MochiKit.Base.evalJSON(this.req.responseText);var resource_id=Basis._int(response["data_row"]["misc_vars"]["attached_to_resource_id"]);if(resource_id&&dashboard.resource_linker[resource_id]){dashboard.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=dashboard.render_view("DEFAULT","resource_detail",resource_id);var index=dashboard.render_view("DEFAULT","default",dashboard.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);dashboard.tiles.ui.go_to(index);dashboard.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}}},this),a));}},this.options["data_row"],this),this.dashboard);var title=(this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):("Let's add a"+((this.options["data_row"]["type"]=="alert")?"n alert!":" reminder!"))
var index=this.add_step(title,content,options);this.options.width="500";this.options.height="300";}}});this.set_wizard("CONTACT_LIST",function(){if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your contact list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard CONTACT_LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your contact list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","CONTACT_LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's add a contact list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("CONTACT",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("CONTACT")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("CONTACT")+" of your available contacts!");return;}
var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.contact_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var CONTACT_type=SELECT();Basis.select_add_options(CONTACT_type,{"individual":"Individual","organization":"Organization"});this.dashboard.bind_form_element(CONTACT_type,"CONTACT_type",data_row);var company_name=INPUT({"type":"text","value":grid_control.get_master_field_data("company_name",data_row,true)});this.dashboard.bind_form_element(company_name,"company_name",data_row);var first_name=INPUT({"type":"text","value":grid_control.get_master_field_data("first_name",data_row,true)});this.dashboard.bind_form_element(first_name,"first_name",data_row);var last_name=INPUT({"type":"text","value":grid_control.get_master_field_data("last_name",data_row,true)});this.dashboard.bind_form_element(last_name,"last_name",data_row);var address1=INPUT({"type":"text","value":grid_control.get_master_field_data("address1",data_row,true)});this.dashboard.bind_form_element(address1,"address1",data_row);var address2=INPUT({"type":"text","value":grid_control.get_master_field_data("address2",data_row,true)});this.dashboard.bind_form_element(address2,"address2",data_row);var city=INPUT({"type":"text","value":grid_control.get_master_field_data("city",data_row,true)});this.dashboard.bind_form_element(city,"city",data_row);var state=SELECT();Basis.select_add_options(state,grid_control.states);Basis.select_select_item_by_value(state,grid_control.get_master_field_data("state",data_row,true,true));this.dashboard.bind_form_element(state,"state",data_row);var zip_code=INPUT({"type":"text","value":grid_control.get_master_field_data("zip_code",data_row,true)});this.dashboard.bind_form_element(zip_code,"zip_code",data_row);var county=SELECT();Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",data_row,true,true));this.dashboard.bind_form_element(county,"county",data_row);Basis.signal_handler.connect(state,"onchange",partial(function(county,state,data_row,grid_control){county.options.length=0;Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",data_row,true,true));},county,state,data_row,grid_control),false);var country=SELECT();Basis.select_add_options(country,grid_control.countries);Basis.select_select_item_by_value(country,grid_control.get_master_field_data("country",data_row,true,true));this.dashboard.bind_form_element(country,"country",data_row);var phone_business=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_business",data_row,true)});this.dashboard.bind_form_element(phone_business,"phone_business",data_row);var phone_home=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_home",data_row,true)});this.dashboard.bind_form_element(phone_home,"phone_home",data_row);var phone_cell=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_cell",data_row,true)});this.dashboard.bind_form_element(phone_cell,"phone_cell",data_row);var phone_fax=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_fax",data_row,true)});this.dashboard.bind_form_element(phone_fax,"phone_fax",data_row);var email_address1=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address1",data_row,true)});this.dashboard.bind_form_element(email_address1,"email_address1",data_row);var email_address2=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address2",data_row,true)});this.dashboard.bind_form_element(email_address2,"email_address2",data_row);var url1=INPUT({"type":"text","value":grid_control.get_master_field_data("url1",data_row,true)});this.dashboard.bind_form_element(url1,"url1",data_row);var url2=INPUT({"type":"text","value":grid_control.get_master_field_data("url2",data_row,true)});this.dashboard.bind_form_element(url2,"url2",data_row);var facebook_url=INPUT({"type":"text","value":grid_control.get_master_field_data("facebook_url",data_row,true)});this.dashboard.bind_form_element(facebook_url,"facebook_url",data_row);var twitter_username=INPUT({"type":"text","value":grid_control.get_master_field_data("twitter_username",data_row,true)});this.dashboard.bind_form_element(twitter_username,"twitter_username",data_row);var linkedin_url=INPUT({"type":"text","value":grid_control.get_master_field_data("linkedin_url",data_row,true)});this.dashboard.bind_form_element(linkedin_url,"linkedin_url",data_row);var notes=Basis.textarea(null,grid_control.get_master_field_data("notes",data_row,true));this.dashboard.bind_form_element(notes,"notes",data_row);var profile_photo_url=INPUT({"type":"text","style":"width: 300px;"});this.dashboard.bind_form_element(profile_photo_url,"profile_photo_url",data_row);var profile_photo_file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(profile_photo_file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"wizard");},profile_photo_url),this.dashboard),false);var profile_photo=DIV(null,profile_photo_url,Basis.nbsp(),profile_photo_file_select);contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":grid_control.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,grid_control.get_master_field_title("type")+":")),TD(null,CONTACT_type)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"colSpan":"2","rowSpan":"10"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url2")+":")),TD(null,url2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("facebook_url")+":")),TD(null,facebook_url)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("twitter_username")+":")),TD(null,twitter_username)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("linkedin_url")+":")),TD(null,linkedin_url))))),FIELDSET(null,LEGEND(null,STRONG("Choose a New Profile Photo:")),profile_photo))),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null))))));Basis.set_tab_indexes([company_name,first_name,last_name,address1,address2,city,state,zip_code,county,country,notes,CONTACT_type,phone_business,phone_home,phone_cell,phone_fax,email_address1,email_address2,url1,url2]);var options={"on_load":partial(function(first_name,company_name,data_row){log("wizard CONTACT 1 loaded!");if(data_row["CONTACT_type"]=="individual"){first_name.focus();}else{company_name.focus();}},first_name,company_name,data_row),"can_unload":bind(partial(function(first_name,company_name){switch(this.CONTACT_type){case"individual":var condition=(!this.first_name||!this.first_name.trim());if(condition){alert("You have to at least give your contact a first name!");first_name.focus();}
break;case"organization":var condition=(!this.company_name||!this.company_name.trim());if(condition){alert("You have to at least give your contact a company name!");company_name.focus();}
break;}
return(!condition)?true:false;},first_name,company_name),data_row)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["contact_list_resource_id"]=options["grid_control"].contact_list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["contact_list_resource_id"]=options["grid_control"].contact_list_resource_id;this.custom_ajax_action("add_new_resource","CONTACT.V2",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Let's add a new contact!"),contact,options);}});this.set_wizard("DISCUSSION",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("DISCUSSION")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("DISCUSSION")+" of your available discussions!");return;}
var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your discussion a title:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard DISCUSSION 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your discussion a title!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","DISCUSSION",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a discussion!",list_info,options);this.options.width="500";this.options.height="250";});this.set_wizard("EMAIL_CONTACTS",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var from_address=INPUT({"type":"text","style":"width: 600px;","value":""});this.dashboard.bind_form_element(from_address,"from_address",data_row);var from_name=INPUT({"type":"text","style":"width: 600px;","value":"Your Name"});this.dashboard.bind_form_element(from_name,"from_name",data_row);var subject=INPUT({"type":"text","style":"width: 600px;","value":""});this.dashboard.bind_form_element(subject,"subject",data_row);var custom_message=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");var populate_from_default_template=INPUT({"type":"button","value":"Use My Default Email Template"});Basis.signal_handler.connect(populate_from_default_template,"onclick",bind(partial(function(element){if(confirm("Are you sure? This will overwrite whatever you've already typed!")){if(this.site_billing_info[this.site_id]["site"]["default_email_template"]){if(tinyMCE&&tinyMCE.get(element.id)){tinyMCE.get(element.id).setContent(this.site_billing_info[this.site_id]["site"]["default_email_template"]);element.value=this.site_billing_info[this.site_id]["site"]["default_email_template"];}else{element.value=this.site_billing_info[this.site_id]["site"]["default_email_template"];}}}},custom_message),this.dashboard),false);var save_to_default_template=INPUT({"type":"button","value":"Save This As My Default Email Template"});Basis.signal_handler.connect(save_to_default_template,"onclick",bind(partial(function(element){if(confirm("Are you sure?")){if(tinyMCE&&tinyMCE.get(element.id)){var value=tinyMCE.get(element.id).getContent();}else{var value=element.value;}
this.site_billing_info[this.site_id]["site"]["default_email_template"]=value;Basis.force_make_text_element_editable_save(element,{"sid":this.session_id,"url":this.post_url,"table":this.site_id,"field":"default_email_template","to":value,"custom_action":"dashboard.change_site_billing_option"});}},custom_message),this.dashboard),false);email=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Your Name:")),TD({"width":"600"},from_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Email Address:")),TD({"width":"600"},from_address)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Subject:")),TD({"width":"600"},subject)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Body:")),TD({"width":"600"},custom_message)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},Basis.nbsp()),TD({"style":"text-align: center;"},populate_from_default_template,Basis.nbsp(),save_to_default_template))));Basis.set_tab_indexes([from_address,from_name,subject,custom_message]);var options={"on_load":partial(function(from_address,custom_message,dashboard,data_row){log("wizard EMAIL_CONTACTS 1 loaded!");from_address.focus();Basis.convert_textarea_to_richtextarea(custom_message);dashboard.bind_form_element(custom_message,"custom_message",data_row);},from_address,custom_message,this.dashboard,data_row),"can_unload":bind(function(){var condition=((!this.from_address||!this.from_address.trim())||(!this.from_name||!this.from_name.trim())||(!this.subject||!this.subject.trim()));if(condition){alert("You have to type at least Sender Address, Sender Name and Subject line.");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("email_contacts",{"data_row":data_row,"currently_selected":options.currently_selected});},data_row,this.options),this.dashboard);var index=this.add_step("Compose an email to the selected contacts",email,options);this.options.width="850";this.options.height="550";});this.set_wizard("ERROR_MESSAGE",function(){var content=DIV(null,this.options["error_message"]);var options={"on_load":function(){log("wizard ERROR_MESSAGE 1 loaded!");},"on_unload":this.options["action_on_ok"]};var title=this.options["title"]?this.options["title"]:"Uh oh, something went wrong!";var index=this.add_step(title,content,options);this.options.width=Basis.is_number(this.options.width)?this.options.width:"500";this.options.height=Basis.is_number(this.options.height)?this.options.height:"250";});this.set_wizard("GROUP",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("GROUP")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("GROUP")+" of your available groups!");return;}
if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your group a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard GROUP 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your group a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","GROUP",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a group!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("IMAGE_GALLERY",function(){if(list){var name=INPUT({"type":"text"});var list_info=DIV(null,H3(null,"Give your image gallery a name:"),DIV(null,SPAN({"style":"font-weight: bold;"},"Name:"),name));var options={"on_load":partial(function(name){log("wizard IMAGE_GALLERY 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your image gallery a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","IMAGE_GALLERY",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create an image gallery!",list_info,options);}});this.set_wizard("IMPORT_FROM_VCARD",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var vcard_file=INPUT({"type":"text","style":"width: 580px;"});this.dashboard.bind_form_element(vcard_file,"vcard_file",data_row);var file_select=IMG({"src":"images/images/default_icons/png/folder_magnify.png","style":"cursor: pointer;"});Basis.signal_handler.connect(file_select,"onclick",bind(partial(function(element){this.render_view("COLLABORATE","files",false,null,true,element,"wizard");},vcard_file),this.dashboard),false);var vcard_data=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");this.dashboard.bind_form_element(vcard_data,"vcard_data",data_row);var vcard=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"colSpan":"2"},STRONG("Click the folder to upload and choose a vCard file:"))),TR(null,TD(null,vcard_file),TD({"style":"text-align: right;"},file_select)),TR(null,TD({"colSpan":"2"},STRONG("OR paste vCard data here:"))),TR(null,TD({"colSpan":"2"},vcard_data))));Basis.set_tab_indexes([vcard_file,vcard_data]);var options={"on_load":partial(function(vcard_file){log("wizard IMPORT_FROM_VCARD 1 loaded!");vcard_file.focus();},vcard_file),"can_unload":bind(function(){var condition=((!this.vcard_file||!this.vcard_file.trim())&&(!this.vcard_data||!this.vcard_data.trim()));if(condition){alert("You have to choose a file or paste vCard data to import contacts!");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.please_wait_this_could_take_a_while();this.custom_ajax_action("import_contacts_from_vcard",{"vcard_file":Basis.encode64(data_row["vcard_file"]),"vcard_data":Basis.encode64(data_row["vcard_data"]),"contact_list_resource_id":options["contact_list_id"]});},data_row,this.options),this.dashboard);var index=this.add_step("Importing vCard Contacts",vcard,options);this.options.width="900";this.options.height="600";});this.set_wizard("INVITE_USERS",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var from_address=INPUT({"type":"text","style":"width: 600px;","value":"info@sitequarters.com"});this.dashboard.bind_form_element(from_address,"from_address",data_row);var from_name=INPUT({"type":"text","style":"width: 600px;","value":"SiteQuarters"});this.dashboard.bind_form_element(from_name,"from_name",data_row);var subject=INPUT({"type":"text","style":"width: 600px;","value":"Invitation to a SiteQuarters site!"});this.dashboard.bind_form_element(subject,"subject",data_row);var custom_message=Basis.textarea({"style":"width: 600px; height: 120px;","value":""},"");this.dashboard.bind_form_element(custom_message,"custom_message",data_row);var email=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Sender Address:")),TD({"width":"600"},from_address)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Sender Name:")),TD({"width":"600"},from_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Subject:")),TD({"width":"600"},subject)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Body:")),TD({"width":"600"},custom_message))));Basis.set_tab_indexes([from_address,from_name,subject,custom_message]);var options={"on_load":partial(function(from_address){log("wizard INVITE_USERS 1 loaded!");from_address.focus();},from_address),"can_unload":bind(function(){var condition=((!this.from_address||!this.from_address.trim())||(!this.from_name||!this.from_name.trim())||(!this.subject||!this.subject.trim()));if(condition){alert("You have to type at least Sender Address, Sender Name and Subject line.");}
return(!condition)?true:false;},data_row)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("invite_contacts_as_user",{"data_row":data_row,"currently_selected":options.currently_selected});},data_row,this.options),this.dashboard);var index=this.add_step("Let's invite some users!",email,options);this.options.width="850";this.options.height="400";});this.set_wizard("LIST",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("LIST")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("LIST")+" of your available lists!");return;}
if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's create a list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("LIST_ITEM",function(){var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.generic_resource({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var name=INPUT({"type":"text","value":grid_control.get_master_field_data("name",data_row,true)});this.dashboard.bind_form_element(name,"name",data_row);var list_info=DIV(null,H3(null,(this.options["mode"]=="edit")?"Change this item's name:":"Give your new item a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard LIST_ITEM 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your new item a name!");name.focus();}
return name.value.trim()?true:false;},name)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["list_resource_id"]=options["grid_control"].list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].contact_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["list_resource_id"]=options["grid_control"].list_resource_id;this.custom_ajax_action("add_new_resource","LIST_ITEM",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Add an item to this list:"),list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("PAGE",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("PAGE")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("PAGE")+" of your available pages!");return;}
var page_types={"RICHTEXTAREA":"Editable Text","IMAGE_GALLERY":"Image Gallery","CALENDAR":"Calendar","CONTACT_LIST":"Contact List","PLACEHOLDER":"Placeholder","POLL":"Poll","RSS_FEED":"RSS Feed","FILE_UPLOAD":"File Upload","FILE_LISTING":"File Listing","ADVANCED_FILE_LISTING":"Advanced File Listing","LINK_TO_FILE":"Link to File","LINK_TO_URL":"Link to Website","FILE_UPLOAD_AND_LISTING":"File Uploader + Listing","DOCUMENT_VIEW":"Link to a Document","HTML":"Custom HTML","YOUTUBE_EMBED":"Link / Embed a Youtube Video","LOGIN_BOX":"Login Box","NEWSLETTER_SIGNUP":"Our Newsletter","EVENT_SIGNUP":"Event Signup"};if(this.dashboard.is_admin){page_types["RICHTEXT_AND_HTML"]="Editable Text + HTML";}
var page_name=INPUT({"type":"text","name":"page_name"});var page_type=SELECT({"name":"page_type"});Basis.select_add_options(page_type,page_types);var page_where=SELECT({"name":"page_where"});Basis.select_add_options(page_where,{"":" ","before":"Before","after":"After","under":"In Sub-Menu, Under"});Basis.select_select_item_by_value(pages,this.options["page_where"]);var pages=SELECT({"name":"pages"});var list=this.dashboard.available_resources[Basis._return("PAGE")];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.dashboard.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.dashboard.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);var populate_submenu_options=function(list,element,level,dashboard){var level=level?level:"";if(list&&Basis.get_element(element)){for(var i in list){if(typeof(list[i])!="function"){var parent_page_id=Basis.filter_number(list[i]);var parent_page_rank=level+(Basis.filter_number(i)+1).toString()+".";Basis.select_add_option(element,parent_page_id,(parent_page_rank.substring(0,parent_page_rank.length-1)+" - "+dashboard.resource_display_text(dashboard.get_page_resource_id(parent_page_id))));for(var x in organized_pages["child_pages_of"]){if(Basis.filter_number(x)==parent_page_id){populate_submenu_options(organized_pages["child_pages_of"][x],element,parent_page_rank,dashboard);}}}}}};populate_submenu_options(organized_pages["parent_pages"],pages,"",this.dashboard);Basis.select_select_item_by_value(pages,this.options["page_id"]);var link_url=INPUT({"type":"text","name":"link_url"});var choose_file=INPUT({"type":"button","value":"Choose File","style":"display: none;"});var url_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Link:"),TD(null,SPAN(null,link_url,choose_file)));var document_listing=SELECT({"name":"document_listing"});var doc_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Documents:"),TD(null,SPAN(null,document_listing)));var contact_list_listing=SELECT({"name":"contact_list_listing"});var contact_list_tr=TR({"style":"display: none;"},TD({"width":100,"style":"font-weight: bold;"},"Contact Lists:"),TD(null,SPAN(null,contact_list_listing)));var enable_comments=SELECT({"name":"comments_enabled"});Basis.select_add_options(enable_comments,{"no":"No","yes":"Yes"});var comments_tr=TR({"style":"display: ;"},TD({"width":100,"style":"font-weight: bold;"},"Enable comments?"),TD(null,enable_comments));Basis.signal_handler.connect(choose_file,"onclick",bind(function(){Basis.misc_vars.file_browser=window.open("file_manager.php","file_browser","width=1000,height=800,status=no,resizable=no");Basis.misc_vars.to_populate=link_url;},this),false);Basis.signal_handler.connect(page_type,"onchange",bind(function(){switch(this.select.options[this.select.selectedIndex].value){case"CONTACT_LIST":this.contact_list_tr.style.display="";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";contact_list_listing.options.length=0;var lists=Basis.keys(this.dashboard.resource_linker[this.dashboard.site_resource_id]["associated_resources"]["CONTACT_LIST"]);for(var i=0;i<lists.length;i++){Basis.select_add_option(contact_list_listing,lists[i],this.dashboard.resource_display_text(lists[i]));}
Basis.select_sort(contact_list_listing);break;case"DOCUMENT_VIEW":this.contact_list_tr.style.display="none";this.doc_tr.style.display="";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";document_listing.options.length=0;document_listing.appendChild(new Option("Loading documents...",1));this.dashboard.custom_ajax_action("get_site_documents",this.site_id,document_listing);break;case"LINK_TO_URL":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="";this.choose_file.style.display="none";this.comments_tr.style.display="none";break;case"LINK_TO_FILE":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="";this.choose_file.style.display="";this.comments_tr.style.display="none";break;case"RICHTEXTAREA":this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="";break;default:this.contact_list_tr.style.display="none";this.doc_tr.style.display="none";this.url_tr.style.display="none";this.choose_file.style.display="none";this.comments_tr.style.display="none";break;}},{"dashboard":this.dashboard,"select":page_type,"choose_file":choose_file,"comments_tr":comments_tr,"site_id":this.dashboard.site_id,"url_tr":url_tr,"doc_tr":doc_tr,"contact_list_tr":contact_list_tr,"contact_list_listing":contact_list_listing,"document_listing":document_listing}),false);var page_type_tooltip=IMG({"src":"images/images/default_icons/help.gif","style":"cursor: pointer; vertical-align: middle; margin-left: 5px;"});Basis.signal_handler.connect(page_type_tooltip,"onclick",function(){Basis.popup({"window_title":"Page Type","id":"page_type_tooltip","html":' <table cellpadding="5" cellspacing="0" border="0" width="500">\
                                            <tr>\
                                              <td width="110" valign="top"><b>Editable Text</b></td>\
                                              <td valign="top">Blank text page, similar to a Word document, which allows you to enter text, images, hyperlinks and tables into any order or layout that you wish.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Image Gallery</b></td>\
                                              <td valign="top">Allows you to upload and organize your photos in a simple, easy to use image gallery.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Calendar</b></td>\
                                              <td valign="top">A full calendar accessible through your website. Use this to keep track of important dates and meetings for your entire organization or yourself.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Project List</b></td>\
                                              <td valign="top">Keep track of important projects from one location. Allows your sites users to enter in tasks and collaborate to complete them on time.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Contact List</b></td>\
                                              <td valign="top">A fully featured contact list for you to keep track of all of your clients, employees and business relations.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Placeholder</b></td>\
                                              <td valign="top">A placeholder is used when a dropdown menu is neccessary but the heading does not need it\'s own page with content on it.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Poll</b></td>\
                                              <td valign="top">A customizable poll that you can use to gather information from your website\'s users based on questions that you choose.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>RSS Feed</b></td>\
                                              <td valign="top">An RSS Feed reader that will pull in an RSS feed of your choosing and display it within your website automatically.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>File Upload</b></td>\
                                              <td valign="top">Allows your users to upload files to a predetermined directory if you do not want them to have full access to your companys SiteQuarters File Manager.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Link to File</b></td>\
                                              <td valign="top">Allows a menu item to link directly to a document stored on the web. One common use is for a .PDF or .DOC file.</td>\
                                            </tr>\
                                            <tr>\
                                              <td width="110" valign="top"><b>Link to Website</b></td>\
                                              <td valign="top">Allows a menu item to link directly to another website.</td>\
                                            </tr>\
                                          </table>'});},false);var page_info=DIV(null,H3(null,"Add a Page"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"width":100,"style":"font-weight: bold;"},"Page Name:"),TD({"height":"18"},page_name)),TR(null,TD({"width":100,"style":"font-weight: bold;"},"Page Type:"),TD(null,page_type,page_type_tooltip)),comments_tr,url_tr,doc_tr,contact_list_tr)),H3(null,"Where in the menu does it go?"),DIV(null,page_where,Basis.nbsp(),pages));var options={"on_load":partial(function(page_name){log("wizard PAGE 1 loaded!");page_name.focus();},page_name),"can_unload":bind(partial(function(page_name,page_type,enable_comments,document_listing,link_url,page_where,pages,contact_list_listing){var unload=true;if(!page_name.value.trim()){alert("You need to give the new page a name.");unload=false;}
if(((page_type.options[page_type.selectedIndex].value=="LINK_TO_FILE")||(page_type.options[page_type.selectedIndex].value=="LINK_TO_URL"))&&!link_url.value.trim()){alert("You need to give the new link an address or file to link to!");unload=false;}
if(unload){var comments=(enable_comments.options[enable_comments.selectedIndex].value=="yes")?"true":"false";var content=null;var type=page_type.options[page_type.selectedIndex].value;if(type=="DOCUMENT_VIEW"){content=document_listing.options[document_listing.selectedIndex].value;}
if(type=="CONTACT_LIST"){content=contact_list_listing.options[contact_list_listing.selectedIndex].value;}
this.custom_ajax_action("add_page",page_name.value,type,link_url.value,comments,content,page_where.options[page_where.selectedIndex].value,pages.options[pages.selectedIndex].value);}
return unload;},page_name,page_type,enable_comments,document_listing,link_url,page_where,pages,contact_list_listing),this.dashboard)};this.on_done=bind(partial(function(name,wizard){},name,this),this.dashboard);var index=this.add_step("Let's add a new page!",page_info,options);});this.set_wizard("PAGE_MOVE",function(){var page_where=SELECT({"name":"page_where"});Basis.select_add_options(page_where,{"before":"Before","after":"After","under":"In Sub-Menu, Under"});Basis.select_select_item_by_value(pages,this.options["page_where"]);var pages=SELECT({"name":"pages"});var list=this.dashboard.available_resources[Basis._return("PAGE")];var organized_pages={"parent_pages":[],"child_pages_of":[]};for(var i in list){if(typeof(list[i])!="function"){var linked_to_this_site=false;linked_to_this_site=(list[i]["site_ids"]&&list[i]["site_ids"]["direct"]&&(MochiKit.Base.findValue(list[i]["site_ids"]["direct"],this.dashboard.site_id)>-1))?true:linked_to_this_site;linked_to_this_site=(this.dashboard.site_id?linked_to_this_site:true);if(linked_to_this_site){if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]==0)){organized_pages["parent_pages"][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];}else if(list[i]["misc_vars"]&&(list[i]["misc_vars"]["parent_page_id"]>0)){var update={};update[list[i]["misc_vars"]["parent_page_id"]]={};update[list[i]["misc_vars"]["parent_page_id"]][list[i]["misc_vars"]["rank"]]=list[i]["misc_vars"]["id"];MochiKit.Base.updatetree(organized_pages["child_pages_of"],update);}}}}
organized_pages=Basis.ksort(organized_pages);var populate_submenu_options=function(list,element,level,dashboard){var level=level?level:"";if(list&&Basis.get_element(element)){for(var i in list){if(typeof(list[i])!="function"){var parent_page_id=Basis.filter_number(list[i]);var parent_page_rank=level+(Basis.filter_number(i)+1).toString()+".";Basis.select_add_option(element,parent_page_id,(parent_page_rank.substring(0,parent_page_rank.length-1)+" - "+dashboard.resource_display_text(dashboard.get_page_resource_id(parent_page_id))));for(var x in organized_pages["child_pages_of"]){if(Basis.filter_number(x)==parent_page_id){populate_submenu_options(organized_pages["child_pages_of"][x],element,parent_page_rank,dashboard);}}}}}};populate_submenu_options(organized_pages["parent_pages"],pages,"",this.dashboard);var page_info=DIV(null,H3(null,"Where in the menu does it go?"),DIV(null,page_where,Basis.nbsp(),pages));var options={"on_load":function(){log("wizard PAGE_MOVE 1 loaded!");},"can_unload":bind(partial(function(page_id,page_where,pages){if(confirm("Are you sure you want to move this page?")){this.custom_ajax_action("move_page",page_id,page_where.options[page_where.selectedIndex].value,pages.options[pages.selectedIndex].value);}
return true;},this.options["page_id"],page_where,pages),this.dashboard)};var index=this.add_step("Let's move this page!",page_info,options);});this.set_wizard("TASK_LIST",function(){if(list){var name=INPUT({"type":"text","style":"width: 100%;"});var list_info=DIV(null,H3(null,"Give your task list a name:"),DIV(null,name));var options={"on_load":partial(function(name){log("wizard TASK_LIST 1 loaded!");name.focus();},name),"can_unload":partial(function(name){if(!name.value.trim()){alert("You have to give your task list a name!");name.focus();}
return name.value.trim()?true:false;},name)};this.on_done=bind(partial(function(name,wizard){this.custom_ajax_action("add_new_resource","TASK_LIST",{"name":name.value},wizard.options["grid_control"]);},name,this),this.dashboard);var index=this.add_step("Let's add a task list!",list_info,options);this.options.width="500";this.options.height="250";}});this.set_wizard("TASK",function(){if(this.dashboard.initialized&&!this.dashboard.site_can_create_new("TASK")&&(this.options["mode"]!="edit")){this.dashboard.error_message("You have used up all "+this.dashboard.get_available_amount_of("TASK")+" of your available tasks!");return;}
var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.task_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){var data_row=this.options["data_row"]?this.options["data_row"]:{};var task_name=INPUT({"type":"text","style":"width: 700px;","value":grid_control.get_master_field_data("task_name",data_row,true)});this.dashboard.bind_form_element(task_name,"task_name",data_row);var date_assigned=Basis.create_date_formfield(null,false);date_assigned.set_date(grid_control.get_master_field_data("date_assigned",data_row,true));this.dashboard.bind_form_element(date_assigned,"date_assigned",data_row);var notes=Basis.textarea({"style":"width: 700px; height: 120px;"},grid_control.get_master_field_data("notes",data_row,true));this.dashboard.bind_form_element(notes,"notes",data_row);var date_due=Basis.create_date_formfield(null,true);date_due.set_date(grid_control.get_master_field_data("date_due",data_row,true));if(date_due.get_date()!="0000-00-00"){date_due.toggle("on");}
this.dashboard.bind_form_element(date_due,"date_due",data_row);var status=SELECT();Basis.select_add_options(status,["Not Started","In Progress","Completed","Deferred","Waiting on someone else"]);this.dashboard.bind_form_element(status,"status",data_row);var priority=SELECT();Basis.select_add_options(priority,["(1) High Priority","(2) Normal Priority","(3) Low Priority","(4) Scheduled"]);this.dashboard.bind_form_element(priority,"priority",data_row,1);var percent_complete=SELECT();Basis.select_add_options(percent_complete,["0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"]);this.dashboard.bind_form_element(percent_complete,"percent_complete",data_row);var assigned_to=SELECT();Basis.select_add_option(assigned_to,""," ");Basis.select_add_options(assigned_to,this.dashboard.get_site_resource_list("CONTACT.V2"));Basis.select_sort(assigned_to);this.dashboard.bind_form_element(assigned_to,"assigned_to",data_row);task=TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG({"style":"padding: 0px; margin: 0px;"},"Task:")),TD({"width":"100%"},task_name)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Notes:")),TD({"width":"100%"},notes)),TR(null,TD({"style":"padding-right: 5px; text-align: right"},STRONG(null,"Info:")),TD({"width":"100%","style":"padding-top: 0px;"},TABLE({"border":"0","cellpadding":"5","cellspacing":"0","style":"border: 1px solid #c0c0c0;","width":"700"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Date Assigned:")),TD({"width":"100%"},date_assigned),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Status:")),TD({"width":"100%"},status)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Date Due:")),TD({"width":"100%"},date_due),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"% Complete:")),TD({"width":"100%"},percent_complete)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Assigned To:")),TD({"width":"100%"},assigned_to),TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Priority:")),TD({"width":"100%"},priority))))))));Basis.set_tab_indexes([task_name,notes,date_assigned,date_due,assigned_to,status,percent_complete,priority]);var options={"on_load":partial(function(task_name){log("wizard TASK 1 loaded!");task_name.focus();},task_name),"can_unload":bind(function(){var condition=(!this.task_name||!this.task_name.trim());if(condition){alert("You have to give your new task a name!");}
return(!condition)?true:false;},data_row)};if(this.options["resource_id"]&&(this.options["mode"]=="edit")){this.on_done=bind(partial(function(data_row,options){data_row["task_list_resource_id"]=options["grid_control"].task_list_resource_id;var a=this.custom_ajax_action("save_resource",options["resource_id"],data_row,options["grid_control"],"data_row");a.addCallback(bind(partial(function(resource_id,grid_control){if(resource_id&&this.resource_linker[resource_id]){this.tiles.ui.pop_tile();Basis.block_updating_live_dom();var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);this.tiles.ui.tiles[this.tiles.ui.current_tile].task_list=options["grid_control"];this.tiles.ui.tiles[index].content=detail;Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},options["resource_id"],options["grid_control"]),this));},data_row,this.options),this.dashboard);}else{this.on_done=bind(partial(function(data_row,options){data_row["task_list_resource_id"]=options["grid_control"].task_list_resource_id;this.custom_ajax_action("add_new_resource","TASK",data_row,options["grid_control"],"data_row");},data_row,this.options),this.dashboard);}
var index=this.add_step(((this.options["mode"]=="edit")?this.dashboard.resource_display_text(this.options["resource_id"]):"Let's add a new task!"),task,options);this.options.width="850";this.options.height="400";}});this.set_wizard("USER",function(){var grid_control=this.options["grid_control"];if(!grid_control){var grid_control=new Basis.grid_control.contact_list({"dashboard":this.dashboard,"num_per_page":50});grid_control=grid_control.grid_control;this.options["grid_control"]=grid_control;}
if(grid_control){Basis.misc_vars.data_row=this.options["data_row"]?this.options["data_row"]:{};var username=INPUT({"type":"text","style":"width: 250px;","value":grid_control.get_master_field_data("username",Basis.misc_vars.data_row,true)});var password=INPUT({"type":"password","style":"width: 250px;","value":grid_control.get_master_field_data("password",Basis.misc_vars.data_row,true)});var password_again=INPUT({"type":"password","style":"width: 250px;","value":grid_control.get_master_field_data("password_again",Basis.misc_vars.data_row,true)});var user_level=SELECT();var user_levels=this.dashboard.user_levels_text;for(var i in user_levels){if(!(this.dashboard.user_levels[i]<=this.dashboard.user_levels[this.dashboard.current_user_level])){delete user_levels[i];}}
Basis.select_add_options(user_level,user_levels);Basis.select_select_item_by_value(user_level,grid_control.get_master_field_data("user_level",Basis.misc_vars.data_row,true));var fields={"username":username,"password":password,"password_again":password_again,"user_level":user_level};var user_info=DIV(null,H3(null,"Type in the user's information:"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Username:")),TD({"width":"100%"},username)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Password:")),TD({"width":"100%"},password)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Re-type Password:")),TD({"width":"100%"},password_again)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"User Level:")),TD({"width":"100%"},user_level)))));var options={"on_load":bind(partial(function(fields){log("wizard USER 1 loaded!");for(var i in fields){if(i&&!Basis.is_function(fields[i])){this.bind_form_element(fields[i],i,Basis.misc_vars.data_row);}}
fields["username"].focus();},fields),this.dashboard),"can_unload":partial(function(username,password,password_again,dashboard){var message="";var unload=true;if(!username.value.trim()){message+="You have to give your user a username!\n\n";username.focus();unload=false;}
if(!password.value.trim()||!password_again.value.trim()||(password.value.trim()&&password_again.value.trim()&&(password.value.trim()!=password_again.value.trim()))){message+="The passwords don't match!\n\n";password.focus();unload=false;}
var list=dashboard.available_resources["USER"];for(var i in list){if(list[i]&&list[i].misc_vars){if(list[i].misc_vars["username"]==username.value.trim()){if(dashboard.in_site(i)){message="This username already exists in this site!\n\n";username.focus();unload=false;}else{dashboard.system_log("ALERT: prompt to import user from org to site!");}}}}
if(message){alert(message);}
return unload;},username,password,password_again,this.dashboard)};var index=this.add_step("Let's add a user!",user_info,options);var contact_list=new Basis.grid_control.contact_list({"dashboard":this,"num_per_page":50});var grid_control=contact_list.grid_control;if(grid_control){var CONTACT_type=SELECT();Basis.select_add_options(CONTACT_type,{"individual":"Individual","organization":"Organization"});var company_name=INPUT({"type":"text","value":grid_control.get_master_field_data("company_name",Basis.misc_vars.data_row,true)});var first_name=INPUT({"type":"text","value":grid_control.get_master_field_data("first_name",Basis.misc_vars.data_row,true)});var last_name=INPUT({"type":"text","value":grid_control.get_master_field_data("last_name",Basis.misc_vars.data_row,true)});var address1=INPUT({"type":"text","value":grid_control.get_master_field_data("address1",Basis.misc_vars.data_row,true)});var address2=INPUT({"type":"text","value":grid_control.get_master_field_data("address2",Basis.misc_vars.data_row,true)});var city=INPUT({"type":"text","value":grid_control.get_master_field_data("city",Basis.misc_vars.data_row,true)});var state=SELECT();Basis.select_add_options(state,grid_control.states);Basis.select_select_item_by_value(state,grid_control.get_master_field_data("state",Basis.misc_vars.data_row,true,true));var zip_code=INPUT({"type":"text","value":grid_control.get_master_field_data("zip_code",Basis.misc_vars.data_row,true)});var county=SELECT();Basis.select_add_options(county,grid_control.counties[grid_control.get_master_field_data("state",Basis.misc_vars.data_row,true,true)]);Basis.select_select_item_by_value(county,grid_control.get_master_field_data("county",Basis.misc_vars.data_row,true,true));var country=SELECT();Basis.select_add_options(country,grid_control.countries);Basis.select_select_item_by_value(country,grid_control.get_master_field_data("country",Basis.misc_vars.data_row,true,true));var phone_business=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_business",Basis.misc_vars.data_row,true)});var phone_home=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_home",Basis.misc_vars.data_row,true)});var phone_cell=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_cell",Basis.misc_vars.data_row,true)});var phone_fax=INPUT({"type":"text","value":grid_control.get_master_field_data("phone_fax",Basis.misc_vars.data_row,true)});var email_address1=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address1",Basis.misc_vars.data_row,true)});var email_address2=INPUT({"type":"text","value":grid_control.get_master_field_data("email_address2",Basis.misc_vars.data_row,true)});var url1=INPUT({"type":"text","value":grid_control.get_master_field_data("url1",Basis.misc_vars.data_row,true)});var url2=INPUT({"type":"text","value":grid_control.get_master_field_data("url2",Basis.misc_vars.data_row,true)});var notes=Basis.textarea(null,grid_control.get_master_field_data("notes",Basis.misc_vars.data_row,true));var fields={"CONTACT_type":CONTACT_type,"company_name":company_name,"first_name":first_name,"last_name":last_name,"address1":address1,"address2":address2,"city":city,"state":state,"zip_code":zip_code,"county":county,"country":country,"phone_business":phone_business,"phone_home":phone_home,"phone_cell":phone_cell,"phone_fax":phone_fax,"email_address1":email_address1,"email_address2":email_address2,"url1":url1,"url2":url2,"notes":notes};contact=TABLE({"border":"0","cellpadding":"0","cellspacing":"0","width":"650","class":grid_control.root_class_name+".contact.detail"},TBODY(null,TR(null,TD(null,TABLE({"border":"0","cellpadding":"5","cellspacing":"0","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("company_name")+":")),TD({"width":"140"},company_name),TD({"width":"100"},STRONG(null,grid_control.get_master_field_title("type")+":")),TD(null,CONTACT_type)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("first_name")+":")),TD({"width":"140"},first_name),TD({"colSpan":"2","rowSpan":"10"},FIELDSET(null,LEGEND(null,STRONG("Phone Numbers:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_business")+":")),TD(null,phone_business)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_home")+":")),TD(null,phone_home)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_cell")+":")),TD(null,phone_cell)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("phone_fax")+":")),TD(null,phone_fax))))),FIELDSET(null,LEGEND(null,STRONG("Internet:")),TABLE({"border":"0","cellpadding":"0","cellspacing":"2","width":"100%"},TBODY(null,TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address1")+":")),TD(null,email_address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("email_address2")+":")),TD(null,email_address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url1")+":")),TD(null,url1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("url2")+":")),TD(null,url2))))))),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("last_name")+":")),TD({"width":"140"},last_name)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address1")+":")),TD({"width":"140"},address1)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("address2")+":")),TD({"width":"140"},address2)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("city")+":")),TD({"width":"140"},city)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("state")+":")),TD({"width":"140"},state)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("zip_code")+":")),TD({"width":"140"},zip_code)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("county")+":")),TD({"width":"140"},county)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("country")+":")),TD({"width":"140"},country)),TR(null,TD({"width":"100"},STRONG("Groups:")),TD({"width":"140"},null)),TR(null,TD({"width":"100"},STRONG(grid_control.get_master_field_title("notes")+":")),TD({"width":"140"},notes)),null))))));Basis.set_tab_indexes([company_name,first_name,last_name,address1,address2,city,state,zip_code,county,country,notes,CONTACT_type,phone_business,phone_home,phone_cell,phone_fax,email_address1,email_address2,url1,url2]);var options={"on_load":bind(partial(function(fields){log("wizard USER 2 loaded!");for(var i in fields){if(i&&!Basis.is_function(fields[i])){this.bind_form_element(fields[i],i,Basis.misc_vars.data_row);}}
if(Basis.misc_vars.data_row["CONTACT_type"]=="individual"){fields["first_name"].focus();}else{fields["company_name"].focus();}},fields),this.dashboard),"can_unload":bind(partial(function(first_name,company_name){switch(this.CONTACT_type){case"individual":var condition=(!this.first_name||!this.first_name.trim());if(condition){alert("You have to at least give your contact a first name!");first_name.focus();}
break;case"organization":var condition=(!this.company_name||!this.company_name.trim());if(condition){alert("You have to at least give your contact a company name!");company_name.focus();}
break;}
return(!condition)?true:false;},first_name,company_name),Basis.misc_vars.data_row)};var index=this.add_step("Who is this new user?",contact,options);}
this.on_done=bind(partial(function(options){this.custom_ajax_action("add_new_resource","USER",Basis.misc_vars.data_row,options["grid_control"],"display_text");},this.options),this.dashboard);}});this.set_wizard("USER_EDIT",function(){var data_row=this.options["data_row"]?this.options["data_row"]:{};var resource_id=this.options["resource_id"]?this.options["resource_id"]:null;if(!resource_id){return;}
var username=STRONG(null,this.dashboard.resource_display_text(resource_id));var password=INPUT({"type":"password","style":"width: 250px;"});this.dashboard.bind_form_element(password,"password",data_row);var password_again=INPUT({"type":"password","style":"width: 250px;"});this.dashboard.bind_form_element(password_again,"password_again",data_row);var user_info=DIV(null,H3(null,"Change password:"),TABLE({"border":"0","cellpadding":"5","cellspacing":"0"},TBODY(null,TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Username:")),TD({"width":"100%"},username)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Password:")),TD({"width":"100%"},password)),TR(null,TD({"style":"white-space: nowrap; text-align: right"},STRONG(null,"Re-type Password:")),TD({"width":"100%"},password_again)))));var options={"on_load":partial(function(password){log("wizard USER_EDIT 1 loaded!");password.focus();},password),"can_unload":partial(function(password,password_again,dashboard){var message="";var unload=true;if(!password.value.trim()||!password_again.value.trim()||(password.value.trim()&&password_again.value.trim()&&(password.value.trim()!=password_again.value.trim()))){message+="The passwords don't match!\n\n";password.focus();unload=false;}
if(message){alert(message);}
return unload;},password,password_again,this.dashboard)};this.on_done=bind(partial(function(data_row,options){this.custom_ajax_action("user_change_password",resource_id,data_row["password"]);},data_row,this.options),this.dashboard);var index=this.add_step(this.dashboard.resource_display_text(resource_id),user_info,options);this.options.width="600";this.options.height="300";});},set_wizard:function(alias,func){this.debug_log(["set_wizard()",alias]);if(alias&&func&&(typeof(func)=="function")){var options={};if(this.wizards[alias]){var options=this.wizards[alias].options;}
this.wizards[alias]=new Basis.wizard({"tiles":this.tiles.wizard});this.wizards[alias].options=options;this.wizards[alias].dashboard=this;var func=bind(func,this.wizards[alias]);this.wizards[alias].setup=bind(partial(function(alias,func){this.set_wizard(alias,func);},alias,func),this);func();}},show_resource:function(resource_id,clear_tiles){var clear_tiles=(clear_tiles===true)?true:false;if(resource_id&&this.resource_linker[resource_id]){Basis.block_updating_live_dom();if(clear_tiles){this.resource_id=null;this.reset_states();this.tiles.ui.clear_all_tiles();}
var detail=this.render_view("DEFAULT","resource_detail",resource_id);var index=this.render_view("DEFAULT","default",this.resource_display_text(resource_id),detail);detail.menu.highlight_item(0);this.tiles.ui.go_to(index);Basis.unblock_updating_live_dom();Basis.updated_live_dom();}},site_can_create_new:function(resource_type){if(resource_type&&this.site_billing_info[this.site_id]){var resource_type=resource_type.toUpperCase();switch(resource_type){case"PAGE":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_pages"])?true:false;break;case"GROUP":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_groups"])?true:false;break;case"TASK":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_tasks"])?true:false;break;case"CONTACT":return(Basis.array_length(this.get_site_resource_list("CONTACT.V2"))<this.site_billing_info[this.site_id]["site"]["num_contacts"])?true:false;break;case"LIST":return(Basis.array_length(this.get_site_resource_list("LIST"))<this.site_billing_info[this.site_id]["site"]["num_lists"])?true:false;break;case"DISCUSSION":return(Basis.array_length(this.get_site_resource_list(resource_type))<this.site_billing_info[this.site_id]["site"]["num_discussions"])?true:false;break;case"USER_BASIC":case"USER_POWER":this.debug_log(["site_can_create_new()",resource_type,"make me do something"]);break;}}
return false;},system_log:function(message,is_for_end_user){if(message){var is_for_end_user=(is_for_end_user!=null)?((is_for_end_user===true)?true:false):false;var timestamp=Basis.time();MochiKit.Logging.log(timestamp+" "+message);if(is_for_end_user){var obj=Basis.get_element(this.elements["notifications"]);if(obj){obj.innerHTML=message;this.system_log_history.push([timestamp,message]);if(obj.parentNode.highlight_reference&&obj.parentNode.highlight_reference.cancel){obj.parentNode.highlight_reference.cancel();}
obj.parentNode.highlight_reference=Highlight(obj.parentNode);}}}},verify_login:function(loop){var check=this.custom_ajax_action("verify_login");if(loop){check.addCallback(bind(function(){MochiKit.Async.callLater(30,bind(function(){this.verify_login(true);},this));},this));}
return check;}};Basis.dashboard.header_block=function(title,go_back,go_back_text,go_back_icon){if((go_back===false)||(go_back==null)){return DIV({"style":"background-image: url(images/images/dashboard/v2/resource_title_background.gif); background-repeat: repeat-x; height: 57px;"},DIV(null,TABLE({"width":"100%","border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"16","style":"padding-right: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_left.gif); background-position: top left; background-repeat: no-repeat;"}),TD(null,DIV({"style":"padding: 5px; text-align: center; font-family: verdana; font-size: 16pt; font-weight: bold; color: #2B4D70;"},title)),TD({"width":"16","style":"padding-left: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_right.gif); background-position: top right; background-repeat: no-repeat;"}))))));}else{var link=MochiKit.DOM.createDOM("B",{"style":"cursor: pointer;"},["Go Back to ",SPAN({"style":"color: #4676bb"},go_back_text)]);var icon=IMG({"src":go_back_icon?go_back_icon:"images/images/arrow_left_small.gif","style":"cursor: pointer;"})
var d=DIV({"style":"background-image: url(images/images/dashboard/v2/resource_title_background.gif); background-repeat: repeat-x; height: 57px;"},DIV(null,TABLE({"width":"100%","border":"0","cellpadding":"10","cellspacing":"0"},TBODY(null,TR(null,TD({"width":"16","style":"padding-right: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_left.gif); background-position: top left; background-repeat: no-repeat;"},icon),TD({"width":"200"},link),TD(null,DIV({"style":"padding: 5px; text-align: center; font-family: verdana; font-size: 16pt; font-weight: bold; color: #2B4D70;"},title)),TD({"width":"200"}),TD({"width":"16","style":"padding-left: 0px; background-image: url(images/images/dashboard/v2/resource_title_background.top_right.gif); background-position: top right; background-repeat: no-repeat;"}))))));d.go_back=link;d.go_back_icon=icon;return d;}};

  // ===================================================================
  // Author : Matt Kruse <matt@ajaxtoolbox.com>
  // WWW    : http://www.ajaxtoolbox.com/
  // ===================================================================

  function AjaxRequest() {
  
    var req               = new Object();
    req.timeout           = null;
    req.generateUniqueUrl = true;
    req.url               = window.location.href;
    req.method            = "GET";
    req.async             = true;
    req.username          = null;
    req.password          = null;
    req.parameters        = new Object();
    req.requestIndex      = AjaxRequest.numAjaxRequests++;
    req.responseReceived  = false;
    req.groupName         = null;
    req.queryString       = "";
    req.responseText      = null;
    req.responseXML       = null;
    req.status            = null;
    req.statusText        = null;
    req.aborted           = false;
    req.xmlHttpRequest    = null;
  
    req.onTimeout         = null; 
    req.onLoading         = null;
    req.onLoaded          = null;
    req.onInteractive     = null;
    req.onComplete        = null;
    req.onSuccess         = null;
    req.onError           = null;
    req.onGroupBegin      = null;
    req.onGroupEnd        = null;
  
    req.xmlHttpRequest    = AjaxRequest.getXmlHttpRequest();

    if (req.xmlHttpRequest==null) { return null; } // end if
    
    req.xmlHttpRequest.onreadystatechange = function() {

      if (req==null || req.xmlHttpRequest==null) { return; } // end if
      if (req.xmlHttpRequest.readyState==1) { req.onLoadingInternal(req);     } // end if
      if (req.xmlHttpRequest.readyState==2) { req.onLoadedInternal(req);      } // end if
      if (req.xmlHttpRequest.readyState==3) { req.onInteractiveInternal(req); } // end if
      if (req.xmlHttpRequest.readyState==4) { req.onCompleteInternal(req);    } // end if

    }; // end function()
    
    req.onLoadingInternalHandled     = false;
    req.onLoadedInternalHandled      = false;
    req.onInteractiveInternalHandled = false;
    req.onCompleteInternalHandled    = false;
    req.onLoadingInternal = function() {

      if (req.onLoadingInternalHandled) { return; } // end if

      AjaxRequest.numActiveAjaxRequests++;

      if (AjaxRequest.numActiveAjaxRequests==1 && typeof(window['AjaxRequestBegin'])=="function") {

        AjaxRequestBegin();

      } // end if

      if (req.groupName!=null) {

        if (typeof(AjaxRequest.numActiveAjaxGroupRequests[req.groupName])=="undefined") {

          AjaxRequest.numActiveAjaxGroupRequests[req.groupName] = 0;

        } // end if

        AjaxRequest.numActiveAjaxGroupRequests[req.groupName]++;

        if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==1 && typeof(req.onGroupBegin)=="function") {

          req.onGroupBegin(req.groupName);

        } // end if

      } // end if

      if (typeof(req.onLoading)=="function") {

        req.onLoading(req);

      } // end if

      req.onLoadingInternalHandled = true;

    }; // end function()

    req.onLoadedInternal = function() {

      if (req.onLoadedInternalHandled) { return; } // end if

      if (typeof(req.onLoaded)=="function") {

        req.onLoaded(req);

      } // end if

      req.onLoadedInternalHandled = true;

    }; // end function()

    req.onInteractiveInternal = function() {

      if (req.onInteractiveInternalHandled) { return; } // end if

      if (typeof(req.onInteractive)=="function") {

        req.onInteractive(req);

      } // end if

      req.onInteractiveInternalHandled = true;

    }; // end function()

    req.onCompleteInternal = function() {

      if (req.onCompleteInternalHandled || req.aborted) { return; } // end if

      req.onCompleteInternalHandled = true;

      AjaxRequest.numActiveAjaxRequests--;

      if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") {

        AjaxRequestEnd(req.groupName);

      } // end if

      if (req.groupName!=null) {

        AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--;

        if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") {

          req.onGroupEnd(req.groupName);

        } // end if

      } // end if

      req.responseReceived = true;
      req.status           = req.xmlHttpRequest.status;
      req.statusText       = req.xmlHttpRequest.statusText;
      req.responseText     = req.xmlHttpRequest.responseText;
      req.responseXML      = req.xmlHttpRequest.responseXML;

      if (typeof(req.onComplete)=="function") {

        req.onComplete(req);

      } // end if

      if (req.xmlHttpRequest.status==200 && typeof(req.onSuccess)=="function") {

        req.onSuccess(req);

      } else if (typeof(req.onError)=="function") {

        req.onError(req);

      } // end if

      delete req.xmlHttpRequest['onreadystatechange'];
      req.xmlHttpRequest = null;

    }; // end function()

    req.onTimeoutInternal = function() {

      if (req!=null && req.xmlHttpRequest!=null && !req.onCompleteInternalHandled) {

        req.aborted = true;
        req.xmlHttpRequest.abort();
        AjaxRequest.numActiveAjaxRequests--;

        if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") {

          AjaxRequestEnd(req.groupName);

        } // end if

        if (req.groupName!=null) {

          AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--;

          if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") {

            req.onGroupEnd(req.groupName);

          } // end if

        } // end if

        if (typeof(req.onTimeout)=="function") {

          req.onTimeout(req);

        } // end if

        delete req.xmlHttpRequest['onreadystatechange'];
        req.xmlHttpRequest = null;

      } // end if

    }; // end function()
  
    req.process = function() {

      if (req.xmlHttpRequest!=null) {

        if (req.generateUniqueUrl && req.method=="GET") {

          req.parameters["AjaxRequestUniqueId"] = new Date().getTime() + "" + req.requestIndex;

        } // end if

        var content = null; // For POST requests, to hold query string

        for (var i in req.parameters) {

          if (req.queryString.length>0) { req.queryString += "&"; }  // end if

          req.queryString += encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]);

        } // end for

        if (req.method=="GET") {

          if (req.queryString.length>0) {

            req.url += ((req.url.indexOf("?")>-1)?"&":"?") + req.queryString;

          } // end if

        } // end if

        req.xmlHttpRequest.open(req.method,req.url,req.async,req.username,req.password);

        if (req.method=="POST") {

          if (typeof(req.xmlHttpRequest.setRequestHeader)!="undefined") {

            req.xmlHttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

          } // end if

          content = req.queryString;

        } // end if

        if (req.timeout>0) {

          setTimeout(req.onTimeoutInternal,req.timeout);

        } // end if

        req.xmlHttpRequest.send(content);

      } // end if

    }; // end function()
  
    req.handleArguments = function(args) {

      for (var i in args) {

        if (typeof(req[i])=="undefined") {

          req.parameters[i] = args[i];

        } else {

          req[i] = args[i];

        } // end if

      } // end for

    }; // end function()
  
    req.getAllResponseHeaders = function() {

      if (req.xmlHttpRequest!=null) {

        if (req.responseReceived) {

          return req.xmlHttpRequest.getAllResponseHeaders();

        } // end if

        alert("Cannot getAllResponseHeaders because a response has not yet been received");

      } // end if

    }; // end function()

    req.getResponseHeader = function(headerName) {

      if (req.xmlHttpRequest!=null) {

        if (req.responseReceived) {

          return req.xmlHttpRequest.getResponseHeader(headerName);

        } // end if

        alert("Cannot getResponseHeader because a response has not yet been received");

      } // end if

    }; // end function()
  
    return req;

  } // end class AjaxRequest
  
  AjaxRequest.getXmlHttpRequest = function() {

    if (window.XMLHttpRequest) {

      return new XMLHttpRequest();

    } else if (window.ActiveXObject) {

      // Based on http://jibbering.com/2002/4/httprequest.html
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
      try {
        return new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          return new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          return null;
        }
      }
      @end @*/

    } else {

      return null;

    } // end if

  }; // end getXmlHttpRequest()
  
  AjaxRequest.isActive = function() {

    return (AjaxRequest.numActiveAjaxRequests>0);

  }; // end isActive()
  
  AjaxRequest.get = function(args) {

    AjaxRequest.doRequest("GET",args);

  }; // end get()
  
  AjaxRequest.post = function(args) {

    AjaxRequest.doRequest("POST",args);

  }; // end post()
  
  AjaxRequest.doRequest = function(method,args) {

    if (typeof(args)!="undefined" && args!=null) {

      var myRequest    = new AjaxRequest();
      myRequest.method = method;
      myRequest.handleArguments(args);
      myRequest.process();

    } // end if

  }; // end doRequest
  
  AjaxRequest.submit = function(theform, args) {

    var myRequest         = new AjaxRequest();

    if (myRequest==null) { return false; } // end if

    var serializedForm    = AjaxRequest.serializeForm(theform);
    myRequest.method      = theform.method.toUpperCase();
    myRequest.url         = theform.action;
    myRequest.handleArguments(args);
    myRequest.queryString = serializedForm;
    myRequest.process();
    return true;

  }; // end submit()
  
  AjaxRequest.serializeForm = function(theform) {

    var els         = theform.elements;
    var len         = els.length;
    var queryString = "";

    this.addField = function(name,value) { 

        if (queryString.length>0) { 

          queryString += "&";

        } // end if

        queryString += encodeURIComponent(name) + "=" + encodeURIComponent(value);

    }; // end function()

    for (var i=0; i<len; i++) {

      var el = els[i];

      if (!el.disabled) {

        switch(el.type) {

          case 'text':
          case 'password':
          case 'hidden':
          case 'textarea': 

            this.addField(el.name,el.value);

            break;

          case 'select-one':

            if (el.selectedIndex>=0) {

              this.addField(el.name,el.options[el.selectedIndex].value);

            } // end if

            break;

          case 'select-multiple':

            for (var j=0; j<el.options.length; j++) {

              if (el.options[j].selected) {

                this.addField(el.name,el.options[j].value);

              } // end if

            } // end for

            break;

          case 'checkbox':
          case 'radio':

            if (el.checked) {

              this.addField(el.name,el.value);

            } // end if

            break;

        } // end switch

      } // end if

    } // end for

    return queryString;

  }; // end serializeForm()
  
  AjaxRequest.numActiveAjaxRequests      = 0;
  AjaxRequest.numActiveAjaxGroupRequests = new Object();
  AjaxRequest.numAjaxRequests            = 0;
    var misc_vars  = new Object();

    var tabs       = new Object();
    var active_tab = "";

    var detect = navigator.userAgent.toLowerCase();
    var OS,browser,version,total,thestring;

    if (check_it('konqueror')) {
      browser = "Konqueror";
      OS      = "Linux";
    } else if (check_it('safari'))  { browser = "Safari";            }
      else if (check_it('omniweb')) { browser = "OmniWeb";           }
      else if (check_it('opera'))   { browser = "Opera";             }
      else if (check_it('webtv'))   { browser = "WebTV";             }
      else if (check_it('icab'))    { browser = "iCab";              }
      else if (check_it('msie'))    { browser = "Internet Explorer"; }
      else if (!check_it('compatible')) {
            browser = "Netscape Navigator";
            version = detect.charAt(8);
    } else { browser = "An unknown browser"; }

    if (!version) version = detect.charAt(place + thestring.length);

    if (!OS) {
      if (check_it('linux'))    { OS = "Linux";   }
      else if (check_it('x11')) { OS = "Unix";    }
      else if (check_it('mac')) { OS = "Mac"      }
      else if (check_it('win')) { OS = "Windows"  }
      else { OS = "an unknown operating system"; }
    } // end if

    function check_it(string) {

      place     = detect.indexOf(string) + 1;
      thestring = string;
      return place;

    } // end check_it()

    function ie_getElementsByTagName(str) {

      // Map to the all collections
      if (str=="*") {
        return document.all;
      } else {
        return document.all.tags(str);
      }

    } // end ie_getElementsByTagName()

    if (document.all) { document.getElementsByTagName = ie_getElementsByTagName; } // end if

    delete_form_lookup    = new Object();
    duplicate_form_lookup = new Object();
    notified              = new Object();
    selected_menu_item    = "";

    function submit_delete_form(mik_md5) {

      if (delete_form_lookup[mik_md5]) {

        if (MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5])) {

          MochiKit.DOM.getElement('form_'+delete_form_lookup[mik_md5]).submit();

        } // end if

      } // end if

    } // end submit_delete_form()
    
    function submit_duplicate_form(mik_md5) {

      if (duplicate_form_lookup[mik_md5]) {

        if (MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5])) {

          MochiKit.DOM.getElement('form_'+duplicate_form_lookup[mik_md5]).submit();

        } // end if

      } // end if

    } // end submit_duplicate_form()

    function toggle_menu_item(item_idnum,prepend,a,b) {

      if (!a)       { a = "menu_item_parent"; } // end if
      if (!b)       { b = "menu_item_child";  } // end if
      if (!prepend) { prepend = ""; } // end if

      a_parent = prepend+"menu_parent_"+item_idnum;

      if (MochiKit.DOM.getElement(a_parent)) {

        if ((prepend+item_idnum) != selected_menu_item) {

          a_child  = prepend+"menu_child_"+item_idnum;
          a_img    = prepend+"menu_child_img_"+item_idnum;

          if (MochiKit.DOM.getElement(a_parent).className == a+"_off") { MochiKit.DOM.getElement(a_parent).className = a+"_on"; } else { MochiKit.DOM.getElement(a_parent).className = a+"_off"; } // end if

          if (MochiKit.DOM.getElement(a_child).className  == b+"_off")  {

            MochiKit.DOM.getElement(a_child).className  = b+"_on";
            MochiKit.DOM.getElement(a_img).src          = "images/images/menu_item_on.gif";

          } else {

            MochiKit.DOM.getElement(a_child).className  = b+"_off";
            MochiKit.DOM.getElement(a_img).src          = "images/images/menu_item_off.gif";

            } // end if

        } // end if

      } // end if

    } // end toggle_menu_item()

    function set_tab_type(idnum,type) {

      MochiKit.DOM.getElement("tab"+idnum+"_a_img").src = "images/images/spacer.gif";

      switch (type) {

        case "regular_selected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/tab_on_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/tab_on_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "tab_regular_on_middle";
          break;

        case "regular_unselected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/tab_off_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/tab_off_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "tab_regular_off_middle";
          break;

        case "end_selected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/right_tab_on_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/right_tab_on_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "right_tab_on_middle";
          break;

        case "end_unselected":

          MochiKit.DOM.getElement("tab"+idnum+"_b_img").src   = "images/images/right_tab_off_left.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_d_img").src   = "images/images/right_tab_off_right.gif";
          MochiKit.DOM.getElement("tab"+idnum+"_c").className = "right_tab_off_middle";
          break;

      } // end switch

    } // end set_tab_type()

    function load_tab(current_tab,to_tab,form_id) {

      if (current_tab == to_tab) { return false; } else { MochiKit.DOM.getElement(form_id).submit(); return true; } // end if

      if (active_tab  == "tab" ) {

        MochiKit.DOM.getElement(form_id).submit();
        return true;

      } // end if

      if (current_tab != to_tab) {

        export_form_values('form_0');

        if (tabs[to_tab]["json"]) {

          restore_form_values(to_tab,'form_0');

          for (x=0;x<MochiKit.DOM.getElement('form_0').elements.length;x++) {

            tid  = MochiKit.DOM.getElement('form_0').elements[x].id;
            tv   = MochiKit.DOM.getElement('form_0').elements[x].value;
            tdiv = (tid.substr(0,(tid.length-6))+"div");

            if (tv == "Show / Edit Note") { toggle_object(tdiv,"off"); } else if (tv == "Hide Note") { toggle_object(tdiv,"on"); } // end if

          } // end for

          tindex = current_tab.substr(3);

          tab_class = MochiKit.DOM.getElement(current_tab+"_c").className;
          if (tab_class == "tab_regular_on_middle")  { set_tab_type(tindex,"regular_unselected"); } // end if
          if (tab_class == "right_tab_on_middle")    { set_tab_type(tindex,"end_unselected"); } // end if

          tindex = to_tab.substr(3);

          tab_class = MochiKit.DOM.getElement(to_tab+"_c").className;
          if (tab_class == "tab_regular_off_middle") { set_tab_type(tindex,"regular_selected"); } // end if
          if (tab_class == "right_tab_off_middle")   { set_tab_type(tindex,"end_selected"); } // end if

          active_tab = to_tab;

          return false;

        } else {

          var tabs_field = document.createElement("input");
          tabs_field.setAttribute("name","current_tabs");
          tabs_field.setAttribute("id","current_tabs");
          tabs_field.setAttribute("type","hidden");
          tabs_field.setAttribute("value", encodeBase64(MochiKit.Base.serializeJSON(tabs)));
          MochiKit.DOM.getElement(form_id).appendChild(tabs_field);

          MochiKit.DOM.getElement(form_id).submit();
          return true;

        } // end if

      } // end if

    } // end load_tab
    
    function htmlentities(text) {

      var v = text;
      var s = "";
      var c;

      for (var i=0;i<v.length;i++) {

        c  = v.charAt(i);
        c  = c.charCodeAt(0);
        c  = '&#'+ c + ';'
        s += c;

      } // end for
      
      return s;

    } // end htmlentities()
    
    function auto_save(form,refresh_speed) {
    
      window.status = "Auto-saving form...";

      AjaxRequest.submit(form,{

        'url'         : MochiKit.DOM.getElement(form).action,
        'onSuccess'   : function(req){ 
                          window.status = "Done";
                        }
      });        

      init_auto_save(form,refresh_speed);
    
    } // end auto_save()
    
    function init_auto_save(form,refresh_speed) {
    
      if (!refresh_speed) { refresh_speed = 300000; } // end if
    
      window.setTimeout("auto_save('"+form+"',"+refresh_speed+")",refresh_speed);

    } // end init_auto_save()
    
    function export_form_values(form) {

      output = new Array();
      style  = new Array();

      for (x=0;x<MochiKit.DOM.getElement(form).elements.length;x++) {

        tstyle             = new Object();

        output[x]          = new Object();
        output[x]["id"]    = MochiKit.DOM.getElement(form).elements[x].id;
        output[x]["name"]  = MochiKit.DOM.getElement(form).elements[x].name;
        output[x]["value"] = MochiKit.DOM.getElement(form).elements[x].value;

      } // end for

      tabs[active_tab]         = new Object();
      tabs[active_tab]["link"] = document.URL;
      tabs[active_tab]["json"] = MochiKit.Base.serializeJSON(output);

    } // end export_form_values()

    function restore_form_values(from_tab,to_form) {

      output  = new Array();
      output  = MochiKit.Base.evalJSON(tabs[from_tab]["json"]);
      theform = MochiKit.DOM.getElement(to_form);

      for (var x in output) {

        theform.elements[x].id    = output[x]["id"];
        theform.elements[x].name  = output[x]["name"];
        theform.elements[x].value = output[x]["value"];

      } // end for

    } // end restore_form_values()

    function print_r(theObj) {

      if (theObj) {

        var output = "";

        if ((theObj.constructor==Array)||(theObj.constructor==Object)) {

          output += "<ul>";

          for (var p in theObj) {

            if ((theObj[p].constructor==Array)||(theObj[p].constructor==Object)) {

              output += "<li>["+p+"] => "+(typeof theObj)+"</li>";
              output += "<ul>";
              output += print_r(theObj[p]);
              output += "</ul>";

            } else {

              output += "<li>["+p+"] => "+theObj[p]+"</li>";

            } // end if

          } // end for

          output += "</ul>";

        } // end if

        return output;
        
      } // end if

    } // end print_r
    
    function list_add_item(e) {
    
      if (!confirm('Are you sure you want to add this item?')) { return; } // end if

      list          = new Object();
      
      window.status = "Adding item to list...";

      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if

      if (e) {

        if (!target) {
        
          var target        = detectTarget(e);

        } // end if

        list["id"]          = target.id.substring(0,(target.id.length-13))+target.id.substring((target.id.length-2),target.id.length);
        list["list_name"]   = list_name;
        list["name"]        = MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);
        list["options"]     = new Object();
        
        rrv_length = 0;

        for (var chi = list["id"].length; chi > 0; chi--) {

          if (list["id"].substring(chi, chi-1) == "_") { chi = 0; } // end if

          rrv_length++;

        } // end for
        
        if (MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value) {

          select_add_option(list["id"],null,MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value);
        
          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {
        
            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        
          
        } // end if

      } // end if

    } // end list_add_item()
    
    function list_rename_item(e) {

      if (!confirm('Are you sure you want to rename this item with the text currently typed into the "Add This Item" text box?')) { return; } // end if

      list          = new Object();

      window.status = "Renaming item in list...";

      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if

      if (e) {

        if (!target) {

          var target        = detectTarget(e);

        } // end if

        list["id"]          = target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);
        list["list_name"]   = list_name;
        list["name"]        = MochiKit.DOM.getElement(list["id"]).name.substring(0,MochiKit.DOM.getElement(list["id"]).name.length-2);
        list["options"]     = new Object();

        index               = MochiKit.DOM.getElement(list["id"]).selectedIndex;

        rrv_length = 0;

        for (var chi = list["id"].length; chi > 0; chi--) {

          if (list["id"].substring(chi, chi-1) == "_") { chi = 0; } // end if

          rrv_length++;

        } // end for
        
        if (MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value) {

          MochiKit.DOM.getElement(list["id"]).options[index].text  = MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value;
          MochiKit.DOM.getElement(list["name"]+"_text"+(list["id"].substring(list["id"].length-rrv_length,list["id"].length))).value = "";

          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {

            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        

        } // end if

      } // end if

    } // end list_rename_item()
    
    function list_delete_item(e) {

      if (confirm("Are you sure you want to delete this item?")) {

        list = new Object();

        window.status                       = "Deleting item from list...";

        if (!e) { window.status = "done"; return false; } // end if

        if (is_string(e)) {

          var target = MochiKit.DOM.getElement(e);

        } // end if

        if (e) {

          if (!target) {

            var target        = detectTarget(e);

          } // end if

          list["id"]          = target.id.substring(0,(target.id.length-16))+target.id.substring((target.id.length-2),target.id.length);
          list["list_name"]   = list_name;
          list["name"]        = MochiKit.DOM.getElement(list["id"]).name;
          list["options"]     = new Object();

          index               = MochiKit.DOM.getElement(list["id"]).selectedIndex;

          MochiKit.DOM.getElement(list["id"]).options[index] = null;

          for (x=0;x<MochiKit.DOM.getElement(list["id"]).options.length;x++) {

            list["options"][x]          = new Object();
            list["options"][x]["value"] = MochiKit.DOM.getElement(list["id"]).options[x].value;
            list["options"][x]["text"]  = MochiKit.DOM.getElement(list["id"]).options[x].text;

          } // end for

          var to_post         = list;

          AjaxRequest.post({
  
            'url'         : 'ajax/list.php',
            'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
            'onSuccess'   : function(req){ 
                              eval(req.responseText);
                              window.status = "Done";
                            }
          });        

        } // end if

      } // end if

    } // end list_delete_item()
    
    function update_date_dropdowns(e) {

      date_array = new Object();

      window.status                       = "Updating date dropdown...";
      
      if (!e) { window.status = "done"; return false; } // end if

      if (is_string(e)) {

        var target = MochiKit.DOM.getElement(e);

      } // end if
      
      if (e) {

        if (!target) {
          var target        = detectTarget(e);
        } // end if

        date_array["id"]    = target.id;
        temp                = date_array["id"].split("_");
        date_array["rrv"]   = temp[temp.length-1];
        date_array["oid"]   = temp[temp.length-2];
        temp                = date_array["id"].substr(0,(date_array["id"].length-temp[temp.length-1].length-temp[temp.length-2].length)-2);
        date_array["id"]    = temp;
        date_array["month"] = MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_month_"+date_array["rrv"]).selectedIndex].text;
        date_array["year"]  = MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).options[MochiKit.DOM.getElement(date_array["id"]+"_year_"+date_array["rrv"]).selectedIndex].text;

        var to_post         = date_array;
        
        AjaxRequest.post({

          'url'         : 'ajax/date.php',
          'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_post))),
          'onSuccess'   : function(req){ 
                            return_response = MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));
                            update_days(return_response);
                            MochiKit.Signal.signal(target,"update_calendar");
                          }
        });        

      } // end if

    } // end update_date_dropdowns()

    function update_days(return_array) {

      id                 = return_array["id"]+"_day_"+return_array["rrv"];
      var obj            = MochiKit.DOM.getElement(id);

      if (obj) {

        var sel_id         = obj.selectedIndex;
        obj.options.length = 0;
  
        for (var x=0;x<return_array["days"];x++) {
  
          obj.options[x] = new Option(x+1,x);
  
        } // end for
  
        if (obj.options.length > sel_id) {
  
          obj.selectedIndex = sel_id;
  
        } else {
  
          obj.selectedIndex = obj.options.length-1;
  
        } // end if

      } // end if

      window.status     = "Done";

    } // end update_days()

    function update_json_variables(e) {

      window.status                       = "Validating form fields...";

      if (e) {

        var target                        = detectTarget(e);

        var rrv_run                       = target.id.split("_");
        rrv_run                           = rrv_run[rrv_run.length-1];

      } // end if

      notified[target.id] = "";

      for (var i in variables["form_"+rrv_run]) {
      
        if (!MochiKit.DOM.getElement(i+"_"+rrv_run)) {

          alert("update_json_variables() failed for element ["+i+"_"+rrv_run+"]");
          
        } else {

          variables["form_"+rrv_run][i] = MochiKit.DOM.getElement(i+"_"+rrv_run).value;

        } // end if

      } // end for

      validate_array["form_"+rrv_run]["variables"]         = variables["form_"+rrv_run];
      validate_array["form_"+rrv_run]["require_variables"] = require_variables["form_"+rrv_run];
      validate_array["form_"+rrv_run]["submit_buttons"]    = submit_buttons["form_"+rrv_run];
      validate_array["form_"+rrv_run]["rrv_run"]           = rrv_run;

      validate(validate_array["form_"+rrv_run]);

    } // end update_json_variables()
    
    function notify_validation(return_response) {

      notify_text        = "";
      num_false          = 0;

      var rrv_run        = return_response["rrv_run"];
      var submit_buttons = return_response["submit_buttons"];
      return_response    = return_response["array"];

      for (var key in return_response) {

        for (var rule in return_response[key]) {

          if (is_object(return_response[key][rule])) {

            if (return_response[key][rule][0]==false) {

              if (MochiKit.DOM.getElement(key+"_"+rrv_run)) {

                MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor = "#FF0000";
                num_false++;
  
                if ((!notified[key+"_"+rrv_run])||(notified[key+"_"+rrv_run] == "")) {
  
                  notified[key+"_"+rrv_run] = "notified";
                  notify_text = notify_text + "Variable \""+key+"_"+rrv_run+"\" does not meet the requirements of constraint \""+rule+"\".\n";
                  
                } // end if

              } // end if

            } else if (return_response[key][rule][0]==true) { //true

              if (MochiKit.DOM.getElement(key+"_"+rrv_run)) {

                MochiKit.DOM.getElement(key+"_"+rrv_run).style.backgroundColor = "";
                notified[key+"_"+rrv_run]                                      = null;

              } // end if

            } // end if

          } // end if

        } // end for

      } // end for

      if (num_false > 0) {
      
        for (var button in submit_buttons) {

          if (MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)) {

            MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled = true;

          } // end if

        } // end for

        if (!is_empty(notify_text)) {

          alert(notify_text);

        } // end if

      } else {
      
        for (var button in submit_buttons) {

          if (MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run)) {

            MochiKit.DOM.getElement(submit_buttons[button]+"_"+rrv_run).disabled = false;

          } // end if

        } // end for

      } // end if

      window.status = "Done";

    } // end notify_validation()

    function validate(input_array) {

      AjaxRequest.post({

        'url'         : 'ajax/validate.php',
        'queryString' : 'array='+urlencode(encodeBase64(MochiKit.Base.serializeJSON(input_array))),
        'onSuccess'   : function(req){ 
                          return_response = MochiKit.Base.evalJSON(decodeBase64(urldecode(req.responseText)));
                          notify_validation(return_response);
                        }
      });        

    } // end validate()
    
    function checkRegExpress(obj,submit) {

      if (! obj.value.match(/\d\d-\d\d\d-\d\d$/)) {

        if (obj.value.match(/\d\d-\d\d\d-\d\dP$/)) {

          obj.style.backgroundColor = '';
          submit.disabled=false;
          return true;

        } // end if

        obj.style.backgroundColor = '#FF0000';
        alert("Internal IDs are in the form:\n\txx-xxx-xx");
        submit.disabled=true;
        return false;

      } else {

        obj.style.backgroundColor = '';
        submit.disabled=false;
        return true;

      } // end if

    } // end checkRegExpress()

    function set_date(when,monthfield,dayfield,yearfield) {

      if (when == "today") {
  
        var today = new Date();
        var month = today.getMonth();
        var day   = today.getDate()-1;
        var year  = today.getYear();
    
        if (year > 99) { year = 2000 + (year - 100); }
        else { year = 1900 + year; } // end if
    
        monthfield[month].selected = true;
        dayfield[day].selected     = true;

        for(i=0;i<yearfield.length;i++) {

          if (yearfield[i].text == year) {

            yearfield[i].selected   = true;

          } // end if

        } // end for

      } // end if

    } // end set_date()

    function note_onoff(objtxt,rrv_run) {

      obj    = MochiKit.DOM.getElement(objtxt+'_notediv');
      button = MochiKit.DOM.getElement(objtxt+'_notebutton');
      texta  = MochiKit.DOM.getElement(objtxt+'_note'+'_'+rrv_run);
  
      if (obj.style.display == "none") {
  
        obj.style.display = "";
        button.value = "Delete Note";

      } else {
  
        if (confirm('Are you sure you want to delete this note?') == true) {
  
          obj.style.display = "none";
          button.value = "Add Note";
          texta.value = "";
      
        } // end if

      } // end if

    } // end comment_onoff()
    
    function toggle_image(theobj,a,b) {

      theobj = MochiKit.DOM.getElement(theobj);

      if (theobj.src == a.src) { theobj.src = b.src; } else if (theobj.src == b.src) { theobj.src = a.src; } // end if

    } // end toggle_image()

    function toggle_object(obj,specific) {

      if (!is_object(obj)) {

        if (MochiKit.DOM.getElement(obj)) {

          obj = MochiKit.DOM.getElement(obj);

        } // end if
        
      } // end if
      
      if (!specific) {
      
        if (obj.style.display == "none") {

          obj.style.display = "";

        } else {

          obj.style.display = "none";

        } // end if

      } else {
      
        if (specific == "on") {

          obj.style.display = "";

        } else if (specific == "off") {
          
          obj.style.display = "none";
            
        } // end if
          
      } // end if

    } // end toggle_object()

    function detectTarget(e) {

      var targ;

      if (!e) var e=window.event;

      if (e.target) { targ=e.target; }
      else if (e.srcElement) { targ=e.srcElement; }

      if (targ.nodeType==3) { targ=targ.parentNode; }

      return targ;

    } // end detectTarget()

    /********************************************************
     * Copyright (C) 2002-2003, CodeHouse.com. All rights reserved.
     * CodeHouse(TM) is a registered trademark.
     *
     * THIS SOURCE CODE MAY BE USED FREELY PROVIDED THAT
     * IT IS NOT MODIFIED OR DISTRIBUTED, AND IT IS USED
     * ON A PUBLICLY ACCESSIBLE INTERNET WEB SITE.
     *
     * CodeHouse.com JavaScript Library Module: Register Event Class
     *
     * You can obtain this script at http://www.codehouse.com
     ********************************************************/
    function CJL_RegisterEvent(elemName, elem, type, listener, useCapture, noAutoStart) {

      var proto = arguments.callee.prototype;

      this.e    = elem;
      this.type = type;
      this.cap  = useCapture;
      this.l    = listener;

      proto.start = function() {

        if (!elem) { alert("CJL_RegisterEvent() failed for element ["+elemName+"]"); return; } // end if

        if (this.e.attachEvent) {

          this.e.attachEvent("on" + this.type, this.l);

        } else if (this.e.addEventListener) {

          this.e.addEventListener(this.type, this.l, this.cap);

        } // end if

      } // end function()

      if (!noAutoStart) {

        this.start(elem, type, listener);

      } // end if

      proto.stop = function() {
      
        if (this.e.detachEvent) {

          this.e.detachEvent("on" + this.type, this.l);

        } else if( this.e.removeEventListener ) {

          this.e.removeEventListener(this.type, this.l, this.cap);

        } // end if

      } // end function()

    } // end CJL_RegisterEvent()

    var END_OF_INPUT = -1;

    var base64Chars = new Array(
        'A','B','C','D','E','F','G','H',
        'I','J','K','L','M','N','O','P',
        'Q','R','S','T','U','V','W','X',
        'Y','Z','a','b','c','d','e','f',
        'g','h','i','j','k','l','m','n',
        'o','p','q','r','s','t','u','v',
        'w','x','y','z','0','1','2','3',
        '4','5','6','7','8','9','+','/'
    );

    var reverseBase64Chars = new Array();

    for (var i=0; i < base64Chars.length; i++){

      reverseBase64Chars[base64Chars[i]] = i;

    } // end for

    var base64Str;
    var base64Count;
    
    function setBase64Str(str) {

      base64Str   = str;
      base64Count = 0;

    } // end setBase64Str()
    
    function readBase64(){

      if (!base64Str) { return END_OF_INPUT; } // end if
      if (base64Count >= base64Str.length) { return END_OF_INPUT; } // end if
      var c = base64Str.charCodeAt(base64Count) & 0xff;
      base64Count++;
      return c;

    } // end readBase64()
    
    function encodeBase64(str){
        setBase64Str(str);
        var result = '';
        var inBuffer = new Array(3);
        var lineCount = 0;
        var done = false;
        while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
            inBuffer[1] = readBase64();
            inBuffer[2] = readBase64();
            result += (base64Chars[ inBuffer[0] >> 2 ]);
            if (inBuffer[1] != END_OF_INPUT){
                result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
                if (inBuffer[2] != END_OF_INPUT){
                    result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                    result += (base64Chars [inBuffer[2] & 0x3F]);
                } else {
                    result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                    result += ('=');
                    done = true;
                }
            } else {
                result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
                result += ('=');
                result += ('=');
                done = true;
            }
    //        lineCount += 4;
    //        if (lineCount >= 76){
    //            result += ('\n');
    //            lineCount = 0;
    //        }
        }
        return result;
    }
    function readReverseBase64(){   
        if (!base64Str) return END_OF_INPUT;
        while (true){      
            if (base64Count >= base64Str.length) return END_OF_INPUT;
            var nextCharacter = base64Str.charAt(base64Count);
            base64Count++;
            if (reverseBase64Chars[nextCharacter]){
                return reverseBase64Chars[nextCharacter];
            }
            if (nextCharacter == 'A') return 0;
        }
        return END_OF_INPUT;
    }
    
    function ntos(n){
        n=n.toString(16);
        if (n.length == 1) n="0"+n;
        n="%"+n;
        return unescape(n);
    }
    
    function decodeBase64(str){
        setBase64Str(str);
        var result = "";
        var inBuffer = new Array(4);
        var done = false;
        while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
            && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
            inBuffer[2] = readReverseBase64();
            inBuffer[3] = readReverseBase64();
            result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
            if (inBuffer[2] != END_OF_INPUT){
                result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
                if (inBuffer[3] != END_OF_INPUT){
                    result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
                } else {
                    done = true;
                }
            } else {
                done = true;
            }
        }
        return result;
    }
    
    function urlencode( val )
    {
            // The Javascript escape and unescape functions do not correspond
            // with what browsers actually do...
            var SAFECHARS = "0123456789" +                                        // Numeric
                                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +        // Alphabetic
                                            "abcdefghijklmnopqrstuvwxyz" +
                                            "-_.!~*'()";                                        // RFC2396 Mark characters
            var HEX = "0123456789ABCDEF";
    
            var plaintext = val;
            var encoded = "";
            for (var i = 0; i < plaintext.length; i++ ) {
                    var ch = plaintext.charAt(i);
                if (ch == " ") {
                        encoded += "+";                                // x-www-urlencoded, rather than %20
                    } else if (SAFECHARS.indexOf(ch) != -1) {
                        encoded += ch;
                    } else {
                        var charCode = ch.charCodeAt(0);
                            if (charCode > 255) {
                                alert( "Unicode Character '" 
                            + ch 
                            + "' cannot be encoded using standard URL encoding.\n" +
                                              "(URL encoding only supports 8-bit characters.)\n" +
                                                      "A space (+) will be substituted." );
                                    encoded += "+";
                            } else {
                                    encoded += "%";
                                    encoded += HEX.charAt((charCode >> 4) & 0xF);
                                    encoded += HEX.charAt(charCode & 0xF);
                            }
                    }
            } // for
    
            return encoded;
    };
    
    function urldecode( val )
    {
       // Replace + with ' '
       // Replace %xx with equivalent character
       // Put [ERROR] in output if %xx is invalid.
       var HEXCHARS = "0123456789ABCDEFabcdef"; 
       var encoded = val;
       var plaintext = "";
       var i = 0;
       while (i < encoded.length) {
           var ch = encoded.charAt(i);
               if (ch == "+") {
                   plaintext += " ";
                       i++;
               } else if (ch == "%") {
                            if (i < (encoded.length-2) 
                                            && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
                                            && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
                                    plaintext += unescape( encoded.substr(i,3) );
                                    i += 3;
                            } else {
                                    alert( 'Bad escape combination near ...' + encoded.substr(i) );
                                    plaintext += "%[ERROR]";
                                    i++;
                            }
                    } else {
                       plaintext += ch;
                       i++;
                    }
            } // while
       return plaintext;
    };
    
    function is_alien(a) {
       return is_object(a) && typeof a.constructor != 'function';
    } // end is_alien()
    
    function is_array(a) {
        return is_object(a) && a.constructor == Array;
    } // end is_array()
    
    function is_boolean(a) {
        return typeof a == 'boolean';
    } // end is_boolean()
    
    function is_empty(o) {
        var i, v;
        if (is_object(o)) {
            for (i in o) {
                v = o[i];
                if (is_undefined(v) && is_function(v)) {
                    return false;
                } // end if
            } // end for
        } else if (is_string(o)) {
          if (o.length>0) { return false; } // end if
        } // end if
        return true;
    } // end is_empty()
    
    function is_function(a) {
        return typeof a == 'function';
    } // end is_function()
    
    function is_null(a) {
        return typeof a == 'object' && !a;
    } // end is_null()
    
    function is_number(a) {
        return typeof a == 'number' && isFinite(a);
    } // end is_number()
    
    function is_object(a) {
        return (a && typeof a == 'object') || is_function(a);
    } // end is_object()
    
    function is_string(a) {
        return typeof a == 'string';
    } // end is_string()
    
    function is_undefined(a) {
        return typeof a == 'undefined';
    }  // end is_undefined()
    
    function select_add_option(theobj,tvalue,ttext) {
    
      var temp    = document.createElement('option');
      temp.value  = tvalue;
      temp.text   = ttext;
    
      if (is_string(theobj)) { theobj = MochiKit.DOM.getElement(theobj); } // end if
    
      try       { theobj.add(temp, null); }
      catch(ex) { theobj.add(temp);       }
    
    } // end select_add_option()

    function calendar_add_date(liid,pid,button_elem) {
    
      thevar    = 'calendar'+liid+'_add_date';

      screend   = MochiKit.Style.getViewportDimensions();
      dated     = MochiKit.Style.getElementDimensions(thevar);
    
      to_pos    = new Object;
      to_pos.x  = ((screend.w / 2)-(dated.w / 2));
      to_pos.y  = ((screend.h / 2)-(dated.h / 2));
    
      MochiKit.Style.setElementPosition(thevar, to_pos);

      if (eval('calendar'+liid+'_adding') == true) { 
    
        eval('calendar'+liid+'_adding = false;'); 
        button_elem.style.backgroundImage = 'url(${root}images/images/edit.gif)';
        button_elem.value = 'Add Date to Calendar';
    
      } else {
    
        eval('calendar'+liid+'_adding = true;'); 
        button_elem.style.backgroundImage = 'url(${root}images/images/cancel.gif)';
        button_elem.value = 'Cancel';
    
      } // end if
    
      toggle_object(thevar);
    
    } // end calendar_add_date()

    function set_date_dropdowns_date(id,rrv,date) {

        temp        = date.split("-");
 
        year        = eval(temp[0]);
        month       = eval(temp[1]);
        day         = eval(temp[2]);

        year_field  = MochiKit.DOM.getElement((id+'_year_'+rrv));
        month_field = MochiKit.DOM.getElement((id+'_month_'+rrv));
        day_field   = MochiKit.DOM.getElement((id+'_day_'+rrv));

        year_idx    = null;
        month_idx   = null;
        day_idx     = null;

        for (x=0;x<year_field.options.length;x++) {

          if (year_field.options[x].text == year) { year_idx = year_field.options[x].value; } // end if

        } // end for

        for (x=0;x<month_field.options.length;x++) {

          if (month_field.options[x].value == (month-1)) { month_idx = month_field.options[x].value; } // end if

        } // end for

        for (x=0;x<day_field.options.length;x++) {

          if (day_field.options[x].text == day) { day_idx = day_field.options[x].value; } // end if

        } // end for

        if (year_idx)  { year_field.selectedIndex  = year_idx;  } // end if
        if (month_idx) { month_field.selectedIndex = month_idx; } // end if
        if (day_idx)   { day_field.selectedIndex   = day_idx;   } // end if

    } // end set_date_dropdowns_date()
// <script>

// Copyright (C) 2005 Ilya S. Lyubinskiy. All rights reserved.
// Technical support: http://www.php-development.ru/
//
// YOU MAY NOT
// (1) Remove or modify this copyright notice.
// (2) Distribute this code, any part or any modified version of it.
//     Instead, you can link to the homepage of this code:
//     http://www.php-development.ru/javascripts/menu.php.
//
// YOU MAY
// (1) Use this code on your website.
// (2) Use this code as a part of another product provided that
//     its main use is not creating javascript menus.
//
// NO WARRANTY
// This code is provided "as is" without warranty of any kind, either
// expressed or implied, including, but not limited to, the implied warranties
// of merchantability and fitness for a particular purpose. You expressly
// acknowledge and agree that use of this code is at your own risk.

// If you find my script useful, you can support my site in the following ways:
// 1. Vote for the script at HotScripts.com (you can do it on my site)
// 2. Link to the homepage of this script or to the homepage of my site:
//    http://www.php-development.ru/javascripts/menu.php
//    http://www.php-development.ru/
//    You will get 50% commission on all orders made by your referrals.
//    More information can be found here:
//    http://www.php-development.ru/affiliates.php

// ----- DropDown Control ------------------------------------------------------

// ----- Show Aux -----

function at_show_aux(parent, child)
{
  var p = document.getElementById(parent);
  var c = document.getElementById(child);

  var top  = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
  var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;

  for (; p; p = p.offsetParent)
  {
    if (p.style.position != 'absolute')
    {
      left += p.offsetLeft;
      top  += p.offsetTop;
    }
  }

  c.style.position   = "absolute";
  c.style.top        = top +'px';
  c.style.left       = left+'px';
  c.style.visibility = "visible";
}

// ----- Hide Aux -----

function at_hide_aux(parent, child)
{
  document.getElementById(child).style.visibility = "hidden";
}

// ----- Show -----

function at_show_p()
{
  c = document.getElementById(this["at_child" ]);
  at_show_aux(this.id, c.id);
  clearTimeout(c["at_timeout"]);
}

function at_show_c()
{
  p = document.getElementById(this["at_parent"]);
  at_show_aux(p.id, this.id);
  clearTimeout(this["at_timeout"]);
}

// ----- Hide -----

function at_hide_p()
{
  c = document.getElementById(this["at_child" ]);
  c["at_timeout"] = setTimeout("at_hide_aux('"+this.id+"', '"+c.id+"')", 100);
}

function at_hide_c()
{
  p = document.getElementById(this["at_parent"]);
  this["at_timeout"] = setTimeout("at_hide_aux('"+p.id+"', '"+this.id+"')", 100);
}

// ----- Attach -----

function at_attach(parent, child, position) {

  p = document.getElementById(parent);
  c = document.getElementById(child);

  p["at_child"]    = c.id;
  c["at_parent"]   = p.id;
  c["at_position"] = position;

  p.onmouseover = at_show_p;
  p.onmouseout  = at_hide_p;
  c.onmouseover = at_show_c;
  c.onmouseout  = at_hide_c;
  
  at_show_aux(parent,child);
  at_hide_aux(parent,child);

}

// ----- Menu ---------------------------------------------------------

// ----- Build Aux -----

function dhtmlmenu_build_aux(parent, child, position) {

  document.write('<div class="container_menu" id="'+parent+'_child"><div class="menu_over" id="'+parent+'_child_sub">');

  n = 0;
  
  for (var i in child) {
  
    if (typeof child[i] != "object") {

      if (child[i].substring(0,7) == 'base64:') {
    
        document.write('<div class="menu_item" id="'+parent+'_'+n+'">'+decodeBase64(child[i].substring(7,child[i].length))+'</div>');
        continue;

      } else {

        document.write('<div class="menu_item" id="'+parent+'_'+n+'">'+i+'</div>'); // href="'+child[i]+'"

      } // end if
    
    } else {

      document.write('<div class="menu_item" onmouseover="this.className=\'menu_item_hover\';" onmouseout="this.className=\'menu_item\';" id="'+parent+'_'+n+'"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td>'+i+'</td><td width="20px">&#9658;</td></tr></table></div>');
      dhtmlmenu_build_aux(parent+'_'+n, child[i], "x");

    } // end if
    
    n++;

  } // end for

  document.write('</div></div>');

  at_attach(parent, parent+"_child", position);

} // end dhtmlmenu_build_aux()

// ----- Build -----

function dhtmlmenu_build(menu)
{
  for (var i in menu) dhtmlmenu_build_aux(i, menu[i], "y");
}


  // class.form_data.print_content.print_content.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  // Basic usage:
  //
  //     <form id="form1">
  //       First Name: <input type="text" value="Kevin" name="first_name" id="first_name_1">
  //     </form>
  //
  //     <script>
  //
  //       var form     = new form_data();
  //       form.form_id = "form1";
  //       form.is_printable();
  //
  //     </script>
  //
  //     <input type="button" value="Click to Render" onclick="form.printer.render();">

// =================================================================================================================================================

  var printable_forms = new Object();

// =================================================================================================================================================

  if (typeof(form_data) == 'undefined') {

    form_data = {};

  } // end if

  form_data.NAME     = "form_data";
  form_data.VERSION  = "0.1";

  form_data.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  form_data.toString = function () {

    return this.__repr__();

  }; // end toString()

  form_data = function () {

    this.__init__();

  }; // end form_data()

  form_data.prototype = {

    __init__: function () {

      var form_id;
      var printer;

    }, // end __init__()

    form_ids: function () {

      var ids  = [];
      var m    = MochiKit.Base;
      var self = MochiKit.DOM;

      if (typeof(this.form_id) == "undefined" || this.form_id === null) {

        form_elem = self._document;

      } else {

        form_elem = self.getElement(this.form_id);

      } // end if

      m.nodeWalk(form_elem, function (elem) {

        var id = elem.id;

        if (m.isNotEmpty(id)) {

          var tag_name = elem.nodeName.toUpperCase();

          if (tag_name == "SELECT") {

            ids.push(id);
            return null;

          } // end if

          switch (tag_name) {

            case "FORM":
            case "P":
            case "SPAN":
            case "DIV":
            case "TABLE":
            case "TR":
            case "TD":

              return elem.childNodes;
              break;

          } // end switch

          ids.push(id);

          return null;

        } // end if

        return elem.childNodes;

      }); // end nodeWalk

      return [ids];

    }, // end form_ids()

    is_printable: function () {

      this.parent_document = MochiKit.DOM.currentDocument();
      this.printer         = new form_data.print_content();
      this.printer.parent  = this;

    } // end is_printable()

  }; // end class form_data

// =================================================================================================================================================

  if (typeof(form_data.print_content) == 'undefined') {

    form_data.print_content = {};

  } // end if

  form_data.print_content.NAME     = "form_data.print_content";
  form_data.print_content.VERSION  = "0.1";

  form_data.print_content.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  form_data.print_content.toString = function () {

    return this.__repr__();

  }; // end toString()

  form_data.print_content = function () {

    this.__init__();

  }; // end form_data.print_content()

  form_data.print_content.prototype = {

    __init__: function () {

      var parent = new Object();
      var print_window;
      var destination;

    }, // end __init__()

    render: function () {

      var theobj = this;

      if (document.getElementById(this.parent.form_id)) {

        content = document.getElementById(this.parent.form_id);

        if (content.innerHTML) {

          this.print_window = window.open("","print_window");

          MochiKit.DOM.withWindow(this.print_window, function () {

            var prefix            = "wrapper_";
            var doc               = MochiKit.DOM.currentDocument();
            doc.body.innerHTML    = "<html><head><link rel=stylesheet type=\"text/css\" href=\"http://demo.occrra-central.org/registry/css/default.css\"><script src=\"http://demo.occrra-central.org/registry/js/javascript.php\"></script></head><body>"+content.innerHTML+"</body></html>";

            var oid               = theobj.parent.form_id;
            theobj.parent.form_id = theobj.parent.form_id.substring(prefix.length);
            theobj.destination    = eval("doc.getElementById('"+theobj.parent.form_id+"');");

            theobj.render_form();

            theobj.parent.form_id = oid;

            theobj.print_window.focus();

          });

        } // end if

      } // end if

    }, // end render()

    render_form: function () {

      if (this.destination) {

        var theform     = MochiKit.DOM.getElement(this.parent.form_id);
        var fields      = this.parent.form_ids();
        var replacement = "";

        for (var i in fields[0]) {

          var el = MochiKit.DOM.getElement(fields[0][i]);

          if (el && el.id) {

            if (!el.disabled) {

              parent_el   = this.parent.parent_document.getElementById(el.id);
              replacement = "";

              switch(parent_el.type) {

                case 'text':
                case 'password':
                case 'textarea':

                  replacement           = MochiKit.DOM.createDOM("span",{"id":parent_el.id});
                  replacement.innerHTML = parent_el.value;

                  break;

                case 'select-one':

                  if (parent_el.selectedIndex>=0) {

                    replacement           = MochiKit.DOM.createDOM("span",{"id":parent_el.id});
                    replacement.innerHTML = parent_el.options[parent_el.selectedIndex].text;

                  } // end if

                  break;

                case 'select-multiple':

                  var ms_replacement = "";

                  for (var j=0; j<parent_el.options.length; j++) {

                    if (parent_el.options[j].selected) {

                      ms_replacement += parent_el.options[j].text+"<br>\n";

                    } // end if

                  } // end for

                  replacement           = MochiKit.DOM.createDOM("div",{"id":parent_el.id});
                  replacement.innerHTML = ms_replacement;

                  break;

                case 'checkbox':

                  if (el.checked) {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/checkbox_on.gif"});

                  } else {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/checkbox_off.gif"});

                  } // end if

                  break;

                case 'radio':

                  if (el.checked) {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/radio_on.gif"});

                  } else {

                    replacement = MochiKit.DOM.createDOM("img",{"id":parent_el.id,"src":"http://demo.occrra-central.org/registry/images/radio_off.gif"});

                  } // end if

                  break;

                case 'button':
                case 'submit':
                case 'hidden':

                  replacement = MochiKit.DOM.createDOM("div",{"id":parent_el.id}," ");

                  break;

                default:

                  replacement = MochiKit.DOM.createDOM("div",{"id":parent_el.id}," ");

                  break;

              } // end switch

              if (replacement) {

                MochiKit.DOM.swapDOM(parent_el.id,replacement);

              } // end if

            } // end if

          } // end if

        } // end for
 
      } // end if

    } // end render_form()

  }; // end class form_data.print_content

// =================================================================================================================================================

  // class.basis_functions.js
  // Copyright (c) 2005,2006 Kevin Kaiser / Data Resolutions

  try {

    document.execCommand("BackgroundImageCache", false, true);

  } catch(err) {} // end IE6.SP1+ CSS background-flicker fix

  // =====================================================================================
  // from quirksmode:
  // =====================================================================================

    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"
        },
        {		// for newer Netscapes (6+)
          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"
        },
        { 		// for older Netscapes (4-)
          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"
        }
      ]

    };

    BrowserDetect.init();

  // =====================================================================================
/*
  MochiKit.Signal.connect(document, "onkeydown", function(e) {

    if (e.key() && (e.key().string == "KEY_ESC")) {

      MochiKit.LoggingPane.createLoggingPane(true);

    } // end if

  });
*/
  // =====================================================================================

  if (typeof(Basis) == 'undefined') {

    Basis = {};

  } // end if

  Basis.NAME     = "Basis";
  Basis.VERSION  = "0.1";

  Basis.__repr__ = function () {

    return "[" + this.NAME + " " + this.VERSION + "]";

  }; // end __repr__()

  Basis.misc_vars = new Object();

  if (MochiKit.DOM.currentDocument().images) {

    Basis.misc_vars["ajax_loading"]     = new Image();
    Basis.misc_vars["ajax_loading"].src = "images/images/ajax_loading.gif";

  } // end if

  MochiKit.Signal.connect(MochiKit.DOM.currentDocument(),"onmousemove",function (e) {

    var pos = e.mouse().client;

    Basis.misc_vars["mouse_x"] = pos.x;
    Basis.misc_vars["mouse_y"] = pos.y;

  });

  Basis.connect_unload = function (func) {

    if (func && (typeof(func)=="function")) {

      MochiKit.Signal.connect(window,"onbeforeunload",func);

    } // end if

  }; // end Basis.connect_unload()

  Basis.load_external_javascript = function (url) {

    if (url) {

      var script  = MochiKit.DOM.createDOM("script");
      script.src  = url;
      script.type = "text/javascript";
      document.getElementsByTagName("head")[0].appendChild(script);

    } // end if

  }; // end Basis.connect_unload()

  Basis.get_cookie = function (cookie_name) {

    if (document.cookie.length > 0) {

      var c_start = document.cookie.indexOf(cookie_name + "=");

      if (c_start != -1) {

        c_start   = c_start + cookie_name.length + 1;
        var c_end = document.cookie.indexOf(";",c_start)

        if (c_end == -1) {

          c_end = document.cookie.length;

        } // end if

        return unescape(document.cookie.substring(c_start,c_end));

      } // end if

    } // end if

    return "";

  }; // end Basis.get_cookie()

  Basis.find_key = function (list, value) {

    if (list && (Basis.array_length(list) > 0)) {

      for (var i in list) {

        if (typeof(list[i]) != "function") {

          if (list[i] == value) {

            return i;

          } // end if

        } // end if

      } // end for

    } // end if

    return false;

  }; // end Basis.find_key()

  Basis.find_node = function (key, root) {

    if (key && root) {

      var node = null;

      for (var i in root) {

        if (typeof(root[i]) != "function") {

          if (i == key) {

            node = root[i];

          } // end if

          var tnode = Basis.find_node(key, root[i]);

          if (tnode) {

            node = tnode;

          } // end if

        } // end if

      } // end for

      return node;

    } // end if

  } // end Basis.find_node()

  Basis.keys = function (root, recursive) {

    if (root) {

      var recursive = recursive ? true : false;
      var keys      = [];

      for (var i in root) {

        if (typeof(root[i]) != "function") {

          keys.push(i);

          if (recursive) {

            var tkeys = Basis.keys(root[i], recursive);

            keys      = flattenArray([keys, tkeys]);

          } // end if

        } // end if

      } // end for

      return keys;

    } // end if

  } // end Basis.keys()

  Basis.post_throw = function (url, token, options) {

    if (url && token && options) {

      var data = [];

      options["throw_verify"] = hex_md5(Basis.get_cookie("PHPSESSID"));
      options["throw_vars"]   = Basis.encode64("a:1:{i:0;s:"+ token.length +':"'+ token +'";}');

      for (var i in options) {

        if (!Basis.is_function(options[i])) {

          data.push(INPUT({"type"  : "text",
                           "name"  : i,
                           "value" : options[i]})
                   );

        } // end if

      } // end for

      var form = new FORM({"action" : url,
                           "style"  : "display: none;",
                           "method" : "POST"},
                       data
                     );

      document.body.appendChild(form);

      form.submit();

    } // end options

  }; // end Basis.post_throw()

  Basis.format_filesize = function (size) {

    var size   = Basis.parse_number(size);
    var type   = "bytes";
    var string = "";

    if (size) {

      if ((size > 0) && (size < 1024)) {

        type = "bytes";
        size = (size).toFixed(0);

      } else if ((size >= 1024) && (size < (1024 * 1024))) {

        type = "kilobytes";
        size = (size / 1024).toFixed(2);

      } else if ((size >= (1024 * 1024)) && (size < (1024 * 1024 * 1024))) {

        type = "megabytes";
        size = (size / (1024 * 1024)).toFixed(2);

      } else if ((size >= (1024 * 1024 * 1024)) && (size < (1024 * 1024 * 1024 * 1024))) {

        type = "gigabytes";
        size = (size / (1024 * 1024 * 1024)).toFixed(2);

      } // end if

      size = numberFormatter("###,###.##")(size);

      switch (type) {

        case "bytes":

          string = size + " bytes";

          break;

        case "kilobytes":

          string = size + " KB";

          break;

        case "megabytes":

          string = size + " MB";

          break;

        case "gigabytes":

          string = size + " GB";

          break;

      } // end switch

      return string;

    } // end if

  }; // end Basis.format_filesize()

  Basis.blank_object = function () {

    var a = {};

    for (var i in a) {

      if (Basis.is_function(a[i])) {

        delete a[i];

      } // end if

    } // end for

    return a;

  }; // end Basis.blank_object()

  Basis.ksort = function (arr) {

    var sorted_array = {};
    var temp_sorted  = {};
    var temp_array   = [];
    var x            = 0;

    this.pad = function (count, chr) {

      var count  = (parseInt(count) > 0) ? parseInt(count) : 0;
      var retval = "";

      if (chr) {

        for (var x = 0; x < count; x++) {

          retval += chr;

        } // end for

      } // end if

      return retval;

    }; // end pad()

    for (i in arr) {

      var key = (!i.toString().match(/[^0-9]/g)) ? (this.pad((10 - parseInt(i).toString().length), "0") + parseInt(i).toString()) : i;

      switch (typeof(arr[i])) {

        case "function":
          break;

        case "array":
        case "object":

          temp_sorted[key] = Basis.is_element(arr[i]) ? arr[i] : Basis.ksort(arr[i]);
          temp_array[x++]  = key + "|Basis.ksort.temp_sorted";

          break;

        default:

          temp_array[x++] = key + "|" + arr[i];

          break;

      } // end switch

    } // end for

    temp_array = temp_array.sort();

    for (var i in temp_array) {

      switch (typeof(temp_array[i])) {

        case "function":
        case "array":
        case "object":
          break;

        default:

          var x = temp_array[i].split("|");

          if (x[1] == "Basis.ksort.temp_sorted") {

            sorted_array[x[0]] = temp_sorted[x[0]];

          } else {

            sorted_array[x[0]] = x[1];

          } // end if

          break;

      } // end switch

    } // end for

    return sorted_array;

  }; // end Basis.ksort()

  Basis.is_formfield = function (element) {

    var retval  = false;

    var element = MochiKit.DOM.getElement(element);

    if (element && element.tagName) {

      switch (element.tagName.toUpperCase()) {

        case "INPUT":
        case "SELECT":
        case "TEXTAREA":

          retval = true;

          break;

      } // end switch

    } // end if

    return retval;

  }; // end Basis.is_formfield()

  Basis.is_number = function (value) {

    if (value && value.match && (value.match(/([^0-9\.])/g) != null)) {

      return false;

    } // end if

    return (Basis.parse_number(value) != null) ? true : false;

  }; // end Basis.is_number()

  Basis.is_function = function (variable) {

    return (typeof(variable) == "function") ? true : false;

  }; // end Basis.is_function()

  Basis.parse_number = function (value) {

    if (value != null) {

      if (value == 0) { return 0; } // end if

      var unpad  = value.toString().replace(/(^[0]+)/,"");
      var retval = (unpad.match(/\./g) ? parseFloat(unpad) : parseInt(unpad));

      return (!isNaN(retval)) ? retval : null;

    } // end if

    return null;

  }; // end Basis.parse_number()

  Basis.get_all_parent_scroll = function (element) {

    var scroll  = {"x" : 0, "y" : 0};
    var element = MochiKit.DOM.getElement(element);

    if (element) {

      scroll.x += (element.scrollLeft ? element.scrollLeft : 0);
      scroll.y += (element.scrollTop  ? element.scrollTop  : 0);

      var parent = element.parentNode;

      while (parent) {

        scroll.x += (parent.scrollLeft ? parent.scrollLeft : 0);
        scroll.y += (parent.scrollTop  ? parent.scrollTop  : 0);

        parent    = parent.parentNode;

      } // end while

    } // end if

    return scroll;

  }; // end Basis.get_all_parent_scroll()

  Basis.get_element_dimensions = function (element) {

    var element = MochiKit.DOM.getElement(element);
    var dim     = {"x" : 0, "y" : 0};

    if (element) {

      MochiKit.DOM.makePositioned(element);

      var dim = MochiKit.Style.getElementDimensions(element);

      MochiKit.DOM.undoPositioned(element);

    } // end if

    return dim;

  }; // end Basis.get_element_dimensions()

  Basis.execute_function_with_callbacks = function (func, callbacks) {

    if (typeof(func) == "function") {

      func();

      if (callbacks.length > 0) {

        for (var i = 0; i < callbacks.length; i++) {

          if (typeof(callbacks[i]) == "function") {

            callbacks[i]();

          } // end if

        } // end for

      } // end if

    } // end if

  }; // end Basis.execute_function_with_callbacks()

  Basis.clone = function (obj) {

    if (Basis.is_element(obj)) {

      return obj.cloneNode(true);

    } else {

      if (obj && obj.prototype) {

        return MochiKit.Base.clone(obj);

      } else if (obj && !obj.prototype) {

        return MochiKit.Base.update({}, obj);

      } // end if

    } // end if

  }; // end Basis.clone()

  Basis.pluralize = function (input) {

    if (input) {

      if (input.substring(input.length - 1) == "y") {

        var ch = input.substring(input.length - 2);

        switch (ch) {

          case "a":
          case "e":
          case "i":
          case "o":
          case "u":
            input += "s";
            break;

          default:
            input = input.substring(0, (input.length - 1)) + "ies";
            break;

        } // end switch

      } else if ((input.substring(input.length - 2) == "ss") || (input.substring(input.length - 2) == "ch")) {

        input += "es";

      } else if (input.substring(input.length - 1) != "s") {

        input += "s";

      } // end if

      return input;

    } // end if

  }; // end Basis.pluralize()

  Basis.implode = function (values, token) {

    var token  = token ? token : "";
    var values = (values && (values.length > 0)) ? values : [];
    var string = "";

    for (var i = 0; i < Basis.array_length(values); i++) {

      var value = values[i] ? values[i] : "";

      string   += (value + ((i < (Basis.array_length(values) - 1)) ? token : ""));

    } // end for

    return string;

  }; // end Basis.implode()

  Basis.insert_after = function (node, to_insert) {

    node.parentNode.insertBefore(to_insert, node.nextSibling);

  }; // end Basis.insert_after()

  Basis.preserve_url = function (options) {

    /* just_keys, original_url, keys_add, force_https, force_http */

    var options      = (options && (Basis.array_length(options) > 0)) ? options : {};

    var just_keys    = options["just_keys"]    ? options["just_keys"]    : false;
    var original_url = options["original_url"] ? options["original_url"] : null;
    var keys_add     = options["keys_add"]     ? options["keys_add"]     : {};
    var force_https  = options["force_https"]  ? options["force_https"]  : false;
    var force_http   = options["force_http"]   ? options["force_http"]   : false;

    if (original_url == "clear") {

      original_url = null;

    } // end if

    var url      = original_url ? original_url : ("" + window.location + "").split("?")[0];
    var split    = url.split(":");
    var protocol = split[0];

    protocol     = (force_http ? "http" : (force_https ? "https" : "http"));

    original_url = original_url ? original_url : ("" + window.location + "");

    original_url = original_url.split("?");
    original_url = original_url[1] ? original_url[1] : "";
    original_url = original_url.split("&");

    var ourl     = {};

    if (original_url.length > 0) {

      for (var i in original_url) {

        if (typeof(original_url[i]) != "function") {

          var qitem = original_url[i];

          var titem = qitem.split("=");

          if (titem[0] && titem[1]) {

            ourl[titem[0]] = titem[1];

          } // end if

        } // end if

      } // end for

    } // end if

    for (var i in keys_add) {

      if (typeof(keys_add[i]) != "function") {

        var key   = i;
        var value = keys_add[i];

        if (value || (value == 0)) {

          ourl[key] = value;

         } else {

          if (ourl[key]) {

            delete ourl[key];

          } // end if

        } // end if

      } // end if

    } // end foreach

    original_url = url;

    if (original_url.substring(original_url.length - 1, 1) != "?") {

      original_url += "?";

    } // end if

    keys = "";

    for (var i in ourl) {

      if (typeof(ourl[i]) != "function") {

        var key   = i;
        var value = ourl[i];

        if (value || (value == 0)) {

          keys += (key + "=" + value + "&");

        } // end if

      } // end if

    } // end foreach

    if (just_keys) {

      return keys;

    } // end if

    original_url += keys;

    return original_url.substring(0, (original_url.length - 1));

  } // end Basis.preserve_url()

  Basis.attach_tooltip = function (element, text, is_html) {
/*
    if (BrowserDetect) {

      if ((BrowserDetect.browser != "Firefox") || (BrowserDetect.version < 2)) {

        return;

      } // end if

    } // end if
*/
    this.position_tooltip = MochiKit.Base.noop;

    var element           = MochiKit.DOM.getElement(element);

    if (element && text) {

      element.tooltip_text = text;
      element.is_html      = (is_html == true) ? true : false;

      element.signals = element.signals ? element.signals : [];

      element.signals.push(MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

        var tooltip     = DIV({"id"    : "Basis.tooltip",
                               "class" : "Basis.tooltip",
                               "style" : "white-space: nowrap;"
                              }, (element.is_html ? null : element.tooltip_text));

        tooltip.signals = tooltip.signals ? tooltip.signals : [];

        if (element.is_html) {

          tooltip.innerHTML = element.tooltip_text;

        } // end if

        element.tooltip = tooltip;

        var dim         = MochiKit.Style.getElementDimensions(tooltip);

        Basis.set_style(tooltip, {"position" : "absolute"});

        document.body.appendChild(tooltip);

        this.position_tooltip = MochiKit.Base.bind(function () {

          var scroll   = Basis.scroll_coords();

          var mouse    = {"x" : Basis.misc_vars.mouse_x,
                          "y" : Basis.misc_vars.mouse_y};

          MochiKit.Style.setElementPosition(this, {"x" : (mouse.x + scroll.x + 15),
                                                   "y" : (mouse.y + scroll.y + 10)});

          if (BrowserDetect) {

            if ((BrowserDetect.browser == "Firefox") && (BrowserDetect.version >= 2)) {

              var pos      = MochiKit.Style.getElementPosition(this);
              var dim      = MochiKit.Style.getElementDimensions(this);
              var viewport = MochiKit.Style.getViewportDimensions();

              if ((pos.x + dim.w) > (viewport.w + scroll.x)) {

                MochiKit.Style.setElementPosition(this, {"x" : (mouse.x + scroll.x - dim.w - 15),
                                                         "y" : (mouse.y + scroll.y + 10)});

              } // end if

            } // end if

          } // end if

        }, tooltip); // end position_tooltip()

        tooltip.signals.push(MochiKit.Signal.connect(tooltip, "onmouseover", MochiKit.Base.bind(function () {

          Basis.remove_element(this);

        }, tooltip)));

      }, this)));


      element.signals.push(MochiKit.Signal.connect(element, "onmousemove", MochiKit.Base.bind(function () {

        this.position_tooltip();

      }, this)));

      element.signals.push(MochiKit.Signal.connect(element, "onmouseleave", MochiKit.Base.bind(function () {

        Basis.remove_element(this.tooltip);

      }, element)));

    } // end if

  }; // end Basis.attach_tooltip()

//Basis.editable_element_request_queue = {};

  Basis.make_text_element_editable = function (element, scaffold_options) {

    /*

      scaffold_options is required, here are the basic options:

      {"sid"           : current PHP SESSION_ID,
       "url"           : URL for ajax_scaffold to post to,
       "resource_id"   : used by catch code to determine what table, row and field to update,
       "database"      : OPTIONAL, used by catch code to determine what database to update
       "table"         : OPTIONAL, used by catch code to determine what table to update if there is no matching resource_id
       "field"         : OPTIONAL, used by catch code to determine what field to update
       "custom_action" : OPTIONAL, used by catch code to determine what code to execute
       "is_password"   : true/false, used by Basis.make_text_element_editable, not Basis.ajax_scaffold
      }

    */

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      element.is_password   = (scaffold_options["is_password"] == true) ? true : false;

      element.signals       = [];

      element.clear_signals = MochiKit.Base.bind(function () {

        if (this.signals) {

          for (var i = 0; i < this.signals.length; i++) {

            MochiKit.Signal.disconnect(this.signals[i]);

          } // end for

        } // end if

        if (this.shadow && this.shadow.signals) {

          for (var i = 0; i < this.shadow.signals.length; i++) {

            MochiKit.Signal.disconnect(this.shadow.signals[i]);

          } // end for

        } // end if

      }, element);

      if (!Basis.is_formfield(element)) {

        element.value     = element.value ? element.value : MochiKit.DOM.scrapeText(element);
        element.editing   = false;

        element.edit_text = MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.editing         = true;

            var input            = INPUT({"id"    : (this.id +"_input"),
                                          "type"  : (this.is_password ? "password" : "text"),
                                          "value" : (this.is_password ? "" : this.value),
                                          "style" : "background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"
                                         });

            var dim              = Basis.get_element_dimensions(this);

            input.is_password    = this.is_password;

            input.signals        = [];

            this.font_multiplier = (dim.w / this.value.length);

            Basis.set_style(input, {"width"       : Math.floor(this.font_multiplier * this.value.length) + 15,
                                    "font-family" : MochiKit.Style.getStyle(this, "font-family"),
                                    "font-size"   : MochiKit.Style.getStyle(this, "font-size")
                                   });

            input.shadow = this;
            this.shadow  = input;

            MochiKit.DOM.swapDOM(this, input);

            input.save_editable_element_changes = MochiKit.Base.bind(function () {

              window.status   = "Saving...";

              if (this.value == this.shadow.value) {

                this.cancel_save_editable_element_changes();

                window.status = "Done";

              } else {

                var to_post              = new Object();
                to_post["to"]            = this.value;
                to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
                to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
                to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
                to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
                to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
                to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

                var as   = new Basis.ajax_scaffold;
                as.alias = "Basis.save_editable_element_changes";

                MochiKit.Base.update(as, scaffold_options);

                as.input      = this;

                as.on_success = function (req) {

                  var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                  if (response["text"] == "true") {

                    if (this.is_password) {

                      this.input.shadow.innerHTML = this.input.shadow.value;

                    } else {

                      this.input.shadow.innerHTML = this.input.value;
                      this.input.shadow.value     = this.input.value;

                    } // end if

                    MochiKit.DOM.swapDOM(this.input, this.input.shadow);

                  } else {

                    this.input.cancel_save_editable_element_changes();

                  } // end if

                  this.input.shadow.clear_signals();

                  this.input.shadow.editing = false;

                  window.status             = "Done";

                };

                as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

                as.post({"to_post":to_post});

              } // end if

            }, input); // end save_editable_element_changes()

            input.cancel_save_editable_element_changes = MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".cancel_save_editable_element_changes()");

                this.shadow.clear_signals();

                MochiKit.DOM.swapDOM(this, this.shadow);

                this.shadow.editing = false;

              } // end if

            }, input); // end cancel_save_editable_element_changes()

            input.signals.push(MochiKit.Signal.connect(input, "onblur", MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_element_changes()!");

                this.save_editable_element_changes();

              } // end if

            }, input)));

            this.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

              MochiKit.Logging.log("document.onclick()");

              if (e.target() && (e.target() != this) && (e.target() != this.shadow)) {

                MochiKit.Logging.log("document.onclick(), attempting to save_editable_element_changes()!");

                this.save_editable_element_changes();

              } // end if

            }, input)));

            input.signals.push(MochiKit.Signal.connect(input, "onkeydown", MochiKit.Base.bind(function(e) {

              var key = e.key();

              if (key.code == 13) {

                MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_element_changes()!");

                this.save_editable_element_changes();

              } else if (key.code == 27) {

                MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_element_changes()!");

                this.cancel_save_editable_element_changes();

              } // end if

              // Basis.set_style(this, {"width" : Math.floor(this.shadow.font_multiplier * this.value.length)});

            }, input)));

            input.focus();

            input.select();

          } // end if

        }, element);

        element.onmouseleave = MochiKit.Base.bind(function () {

          if (!this.editing) {

            var original_contents = MochiKit.DOM.getElement(this.id + "_replace");

            if (original_contents) {

              var restore_text = document.createTextNode(MochiKit.DOM.scrapeText(original_contents));

              this.innerHTML   = "";

              MochiKit.DOM.removeElementClass(original_contents, "Basis.edit_text.highlight");

              this.appendChild(restore_text);

            //var dim = Basis.get_element_dimensions(this);

            //MochiKit.Style.setElementDimensions(this, dim);

              this.clear_signals();

            } // end if

          } // end if

        }, element);

        // these two shouldn't clear:

        MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.onmouseleave();

            var dim          = Basis.get_element_dimensions(this);

            var pencil_image = IMG({"src" : "images/images/edit.gif"
                                   });

            var pencil       = TABLE({
                                    //"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0",
                                      "style"       : "cursor: pointer;",
                                      "class"       : "Basis.edit_text.highlight"
                                     },
                                 TBODY(null,
                                   TR(null,
                                     TD({"id"    : this.id + "_replace",
                                         "width" : dim.w,
                                         "style" : "font-size: "   + MochiKit.Style.getStyle(this, "font-size")   + "; " +
                                                   "font-weight: " + MochiKit.Style.getStyle(this, "font-weight") + "; " +
                                                   "font-family: " + MochiKit.Style.getStyle(this, "font-family") + ";"
                                        },
                                       //this.firstChild
                                       document.createTextNode(MochiKit.DOM.scrapeText(this))
                                     ),
                                     TD({"style" : "padding-left: 5px;"
                                        },
                                       pencil_image
                                     )
                                   )
                                 )
                               );

            if (this.firstChild) {

              Basis.remove_element(this.firstChild);

            } // end if

            this.appendChild(pencil);

            var edit = MochiKit.Base.bind(function () {

              this.onmouseleave();

              this.edit_text();

            }, this);

            this.signals.push(MochiKit.Signal.connect(pencil_image, "onclick",    edit));
            this.signals.push(MochiKit.Signal.connect(pencil,       "ondblclick", edit));

          } // end if

        }, element));

        MochiKit.Signal.connect(element, "onmouseleave", element.onmouseleave);

      } else {

        element.original_value = element.value;

        element.save_editable_element_changes = MochiKit.Base.bind(function () {

          window.status = "Saving...";

          var to_post              = new Object();
          to_post["to"]            = this.value;
          to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
          to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
          to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
          to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
          to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
          to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

          var as   = new Basis.ajax_scaffold;
          as.alias = "Basis.save_editable_element_changes";

          MochiKit.Base.update(as, scaffold_options);

          as.element    = this;

          as.on_success = function (req) {

            var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

            if (response["text"] == "true") {

              as.element.original_value = as.element.value;

            } // end if

            window.status = "Done";

          };

          as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

          as.post({"to_post":to_post});

        }, element); // end save_editable_element_changes()

        element.signals.push(MochiKit.Signal.connect(element, "onblur", MochiKit.Base.bind(function () {

          if (element.value != element.original_value) {

            MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_element_changes()!");

            this.save_editable_element_changes();

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

          if (element.value != element.original_value) {

            if (e.target() && (e.target() != this)) {

              MochiKit.Logging.log("document.onclick(), attempting to save_editable_element_changes()!");

              this.save_editable_element_changes();

            } // end if

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(element, "onkeydown", MochiKit.Base.bind(function(e) {

          var key = e.key();

          if (key.code == 13) {

            if (element.value != element.original_value) {

              MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_element_changes()!");

              this.save_editable_element_changes();

            } // end if

          } // end if

          // Basis.set_style(this, {"width" : Math.floor(this.shadow.font_multiplier * this.value.length)});

        }, element)));

      } // end if

    } // end if

  }; // end Basis.make_text_element_editable()

  Basis.make_text_element_dropdown = function (element, dropdown_options, scaffold_options) {

    /*

      scaffold_options is required, here are the basic options:

      {"sid"           : current PHP SESSION_ID,
       "url"           : URL for ajax_scaffold to post to,
       "resource_id"   : used by catch code to determine what table, row and field to update,
       "database"      : OPTIONAL, used by catch code to determine what database to update
       "table"         : OPTIONAL, used by catch code to determine what table to update if there is no matching resource_id
       "field"         : OPTIONAL, used by catch code to determine what field to update
       "custom_action" : OPTIONAL, used by catch code to determine what code to execute
       "is_date"       : true/false, used by Basis.make_text_element_dropdown, not Basis.ajax_scaffold
       "is_time"       : true/false, used by Basis.make_text_element_dropdown, not Basis.ajax_scaffold
      }

    */

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      element.value         = element.value ? element.value : MochiKit.DOM.scrapeText(element);
      element.editing       = false;
      element.signals       = [];

      element.clear_signals = MochiKit.Base.bind(function () {

        if (this.signals) {

          for (var i = 0; i < this.signals.length; i++) {

            MochiKit.Signal.disconnect(this.signals[i]);

          } // end for

        } // end if

        if (this.shadow && this.shadow.signals) {

          for (var i = 0; i < this.shadow.signals.length; i++) {

            MochiKit.Signal.disconnect(this.shadow.signals[i]);

          } // end for

        } // end if

      }, element);

      if (!Basis.is_formfield(element)) {

        element.make_dropdown = MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.editing         = true;

            var select           = SELECT({"id"    : (this.id +"_select"),
                                           "style" : "background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;"
                                          });

            Basis.select_add_options(select, dropdown_options);
            Basis.select_select_item_by_text(select, this.value);

            var dim              = Basis.get_element_dimensions(this);

            select.signals       = [];

            this.font_multiplier = (dim.w / this.value.length);

            Basis.set_style(select, {"width"       : Math.floor(this.font_multiplier * this.value.length) + 30,
                                     "font-family" : MochiKit.Style.getStyle(this, "font-family"),
                                     "font-size"   : MochiKit.Style.getStyle(this, "font-size")
                                    });

            select.shadow = this;
            this.shadow   = select;

            MochiKit.DOM.swapDOM(this, select);

            select.save_editable_dropdown_changes = MochiKit.Base.bind(function () {

              window.status   = "Saving...";

              if (this.options[this.selectedIndex].text == this.shadow.value) {

                this.cancel_save_editable_dropdown_changes();

                window.status = "Done";

              } else {

                var to_post              = new Object();
                to_post["to"]            = this.value;
                to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
                to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
                to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
                to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
                to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
                to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

                if (scaffold_options["is_time"] || scaffold_options["is_date"]) {

                  var parts = this.id.split("_");
                  var part  = (parts[parts.length - 2]);
                  var rrv   = (parts[parts.length - 1]);
                  var base  = this.id.substring(0, this.id.length + (-1 * (part.length + rrv.length + 2)));

                  switch (part) {

                    case "hour":
                      var minute    = Basis.get_element(base + "_minute_" + rrv);
                      var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                      to_post["to"] = this.options[this.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                      break;

                    case "minute":
                      var hour      = Basis.get_element(base + "_hour_" + rrv);
                      var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                      to_post["to"] = hour.options[hour.selectedIndex].text + ":" + this.options[this.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                      break;

                    case "ampm":
                      var hour      = Basis.get_element(base + "_hour_" + rrv);
                      var minute    = Basis.get_element(base + "_minute_" + rrv);
                      to_post["to"] = hour.options[hour.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + this.options[this.selectedIndex].text ;
                      break;

                    case "year":
                      var month     = Basis.get_element(base + "_month_" + rrv);
                      var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                      var day       = Basis.get_element(base + "_day_" + rrv);
                      to_post["to"] = this.options[this.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                      break;

                    case "month":
                      var year      = Basis.get_element(base + "_year_" + rrv);
                      var month_val = (this.options[this.selectedIndex].value.length == 1) ? ("0" + this.options[this.selectedIndex].value) : this.options[this.selectedIndex].value;
                      var day       = Basis.get_element(base + "_day_" + rrv);
                      to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                      break;

                    case "day":
                      var year      = Basis.get_element(base + "_year_" + rrv);
                      var month     = Basis.get_element(base + "_month_" + rrv);
                      var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                      to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + this.options[this.selectedIndex].text ;
                      break;

                  } // end switch

                } // end if

                var as   = new Basis.ajax_scaffold;
                as.alias = "Basis.save_editable_element_changes";

                MochiKit.Base.update(as, scaffold_options);

                as.select     = this;

                as.on_success = function (req) {

                  var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                  if (response["text"] == "true") {

                    this.select.shadow.innerHTML = this.select.options[this.select.selectedIndex].text;
                    this.select.shadow.value     = this.select.options[this.select.selectedIndex].text;

                    MochiKit.DOM.swapDOM(this.select, this.select.shadow);

                  } else {

                    this.select.cancel_save_editable_dropdown_changes();

                  } // end if

                  this.select.shadow.clear_signals();

                  this.select.shadow.editing = false;

                  window.status             = "Done";

                };

                as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

                as.post({"to_post":to_post});

              } // end if

            }, select); // end save_editable_dropdown_changes()

            select.cancel_save_editable_dropdown_changes = MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".cancel_save_editable_dropdown_changes()");

                this.shadow.clear_signals();

                MochiKit.DOM.swapDOM(this, this.shadow);

                this.shadow.editing = false;

              } // end if

            }, select); // end cancel_save_editable_dropdown_changes()

             select.signals.push(MochiKit.Signal.connect(select, "onblur", MochiKit.Base.bind(function () {

              if (this.shadow.editing) {

                MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } // end if

            }, select)));

            this.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

              MochiKit.Logging.log("document.onclick()");

              if (e.target() && (e.target() != this) && (e.target() != this.shadow)) {

                MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } // end if

            }, select)));

            select.signals.push(MochiKit.Signal.connect(select, "onkeydown", MochiKit.Base.bind(function(e) {

              var key = e.key();

              if (key.code == 13) {

                MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");

                this.save_editable_dropdown_changes();

              } else if (key.code == 27) {

                MochiKit.Logging.log("Escape key pressed... "+this.id+".cancel_save_editable_dropdown_changes()!");

                this.cancel_save_editable_dropdown_changes();

              } // end if

            }, select)));

            select.focus();

          } // end if

        }, element);

        element.onmouseleave = MochiKit.Base.bind(function () {

          if (!this.editing) {

            var original_contents = MochiKit.DOM.getElement(this.id + "_replace");

            if (original_contents) {

              var restore_text = document.createTextNode(MochiKit.DOM.scrapeText(original_contents));

              this.innerHTML   = "";

              MochiKit.DOM.removeElementClass(original_contents, "Basis.make_dropdown.highlight");

              this.appendChild(restore_text);

              var dim = Basis.get_element_dimensions(this);

              MochiKit.Style.setElementDimensions(this, dim);

              this.clear_signals();

            } // end if

          } // end if

        }, element);

        // these two shouldn't clear:

        MochiKit.Signal.connect(element, "onmouseenter", MochiKit.Base.bind(function () {

          if (!this.editing) {

            this.onmouseleave();

            var dim          = Basis.get_element_dimensions(this);

            var pencil_image = IMG({"src" : "images/images/edit.gif"
                                   });

            var pencil       = TABLE({
                                    //"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0",
                                      "style"       : "cursor: pointer;",
                                      "class"       : "Basis.make_dropdown.highlight"
                                     },
                                 TBODY(null,
                                   TR(null,
                                     TD({"id"    : this.id + "_replace",
                                         "width" : dim.w,
                                         "style" : "font-size: "   + MochiKit.Style.getStyle(this, "font-size")   + "; " +
                                                   "font-weight: " + MochiKit.Style.getStyle(this, "font-weight") + "; " +
                                                   "font-family: " + MochiKit.Style.getStyle(this, "font-family") + ";"
                                        },
                                       this.firstChild
                                     ),
                                     TD({"style" : "padding-left: 5px;"
                                        },
                                       pencil_image
                                     )
                                   )
                                 )
                               );

            this.appendChild(pencil);

            var edit = MochiKit.Base.bind(function () {

              this.onmouseleave();

              this.make_dropdown();

            }, this);

            this.signals.push(MochiKit.Signal.connect(pencil_image, "onclick",    edit));
            this.signals.push(MochiKit.Signal.connect(pencil,       "ondblclick", edit));

          } // end if

        }, element));

        MochiKit.Signal.connect(element, "onmouseleave", element.onmouseleave);

      } else {

        element.original_value = element.value;

        element.save_editable_dropdown_changes = MochiKit.Base.bind(function () {

          window.status   = "Saving...";

          var to_post              = new Object();
          to_post["to"]            = this.value;
          to_post["resource_id"]   = scaffold_options["resource_id"]   ? scaffold_options["resource_id"]   : "";
          to_post["database"]      = scaffold_options["database"]      ? scaffold_options["database"]      : "";
          to_post["table"]         = scaffold_options["table"]         ? scaffold_options["table"]         : "";
          to_post["row_id"]        = scaffold_options["row_id"]        ? scaffold_options["row_id"]        : "";
          to_post["field"]         = scaffold_options["field"]         ? scaffold_options["field"]         : "";
          to_post["custom_action"] = scaffold_options["custom_action"] ? scaffold_options["custom_action"] : "";

          if (scaffold_options["is_time"] || scaffold_options["is_date"]) {

            var parts = this.id.split("_");
            var part  = (parts[parts.length - 2]);
            var rrv   = (parts[parts.length - 1]);
            var base  = this.id.substring(0, this.id.length + (-1 * (part.length + rrv.length + 2)));

            switch (part) {

              case "hour":
                var minute    = Basis.get_element(base + "_minute_" + rrv);
                var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                to_post["to"] = this.options[this.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                break;

              case "minute":
                var hour      = Basis.get_element(base + "_hour_" + rrv);
                var ampm      = Basis.get_element(base + "_ampm_" + rrv);
                to_post["to"] = hour.options[hour.selectedIndex].text + ":" + this.options[this.selectedIndex].text + ampm.options[ampm.selectedIndex].text;
                break;

              case "ampm":
                var hour      = Basis.get_element(base + "_hour_" + rrv);
                var minute    = Basis.get_element(base + "_minute_" + rrv);
                to_post["to"] = hour.options[hour.selectedIndex].text + ":" + minute.options[minute.selectedIndex].text + this.options[this.selectedIndex].text ;
                break;

              case "year":
                var month     = Basis.get_element(base + "_month_" + rrv);
                var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                var day       = Basis.get_element(base + "_day_" + rrv);
                to_post["to"] = this.options[this.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                break;

              case "month":
                var year      = Basis.get_element(base + "_year_" + rrv);
                var month_val = (this.options[this.selectedIndex].value.length == 1) ? ("0" + this.options[this.selectedIndex].value) : this.options[this.selectedIndex].value;
                var day       = Basis.get_element(base + "_day_" + rrv);
                to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + day.options[day.selectedIndex].text;
                break;

              case "day":
                var year      = Basis.get_element(base + "_year_" + rrv);
                var month     = Basis.get_element(base + "_month_" + rrv);
                var month_val = (month.options[month.selectedIndex].value.length == 1) ? ("0" + month.options[month.selectedIndex].value) : month.options[month.selectedIndex].value;
                to_post["to"] = year.options[year.selectedIndex].text + "-" + month_val + "-" + this.options[this.selectedIndex].text ;
                break;

            } // end switch

          } // end if

          var as   = new Basis.ajax_scaffold;
          as.alias = "Basis.save_editable_element_changes";

          MochiKit.Base.update(as, scaffold_options);

          as.element    = this;

          as.on_success = function (req) {

            var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

            if (response["text"] == "true") {

              as.element.original_value = as.element.value;

            } // end if

            window.status = "Done";

          };

          as.after_success = Basis.is_function(scaffold_options["after_success"]) ? scaffold_options["after_success"] : function () {};

          as.post({"to_post":to_post});

        }, element); // end save_editable_dropdown_changes()

        element.signals.push(MochiKit.Signal.connect(element, "onblur", MochiKit.Base.bind(function () {

          if (element.value != element.original_value) {

            MochiKit.Logging.log(this.id+".onblur(), attempting to save_editable_dropdown_changes()!");

            this.save_editable_dropdown_changes();

          } // end if

        }, element)));

        element.signals.push(MochiKit.Signal.connect(document, "onclick", MochiKit.Base.bind(function (e) {

          if (element.value != element.original_value) {

            if (e.target() && (e.target() != this)) {

              MochiKit.Logging.log("document.onclick(), attempting to save_editable_dropdown_changes()!");

              this.save_editable_dropdown_changes();

            } // end if

          } // end if

        }, element)));
 
        element.signals.push(MochiKit.Signal.connect(element, "onkeydown", MochiKit.Base.bind(function(e) {

          var key = e.key();

          if (key.code == 13) {

            if (element.value != element.original_value) {

              MochiKit.Logging.log("Enter key pressed... "+this.id+".save_editable_dropdown_changes()!");

              this.save_editable_dropdown_changes();

            } // end if

          } // end if

        }, element)));

      } // end if

    } // end if

  }; // end Basis.make_text_element_dropdown()

  Basis.get_css = function (selector) {

    if (selector && document.styleSheets) {

      for (var i = (document.styleSheets.length - 1); i >= 0; i--) {

        if (document.styleSheets[i] && document.styleSheets[i].href && (document.styleSheets[i].href.indexOf("http://") != -1) && (document.styleSheets[i].href.split("http://")[1].split("/")[0] != window.location.href.split("http://")[1].split("/")[0])) {

          // some browsers won't allow non-domain stylesheets to be accessed due to XSS; we will ignore them

          continue;

        } // end if

        var list = document.styleSheets[i].cssRules ? document.styleSheets[i].cssRules : document.styleSheets[i].rules;

        if (list) {

          for (var x = 0; x < list.length; x++) {

            if (list[x].selectorText && (list[x].selectorText.toLowerCase() == selector.replace(/ /g, "").toLowerCase())) {

              // converting decimal RGB color declarations back to hex

              var text = list[x].style.cssText;

              var rgbs = text.match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/g);

              if (rgbs && (rgbs.length > 0)) {

                for (var y = 0; y < rgbs.length; y++) {

                  var temp = rgbs[y].match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\);/);

                  if (temp.length == 4) {

                    text = text.replace(rgbs[y], ("#" + ((parseInt(temp[1]).toString(16).length == 1) ? ("0" + parseInt(temp[1]).toString(16)) : parseInt(temp[1]).toString(16)) +
                                                        ((parseInt(temp[2]).toString(16).length == 1) ? ("0" + parseInt(temp[2]).toString(16)) : parseInt(temp[2]).toString(16)) +
                                                        ((parseInt(temp[3]).toString(16).length == 1) ? ("0" + parseInt(temp[3]).toString(16)) : parseInt(temp[3]).toString(16)) + ";"));

                  } // end if

                } // end for

              } // end if

              return text.toLowerCase();

            } // end if

          } // end for

        } // end if

      } // end for

    } // end if

    return null;

  } // end Basis.get_css()

  Basis.get_direct_child_elements_by_tag_and_class_name = function (tag_name, class_name, parent) {

    var tag_name   = tag_name   ? tag_name   : null;
    var class_name = class_name ? class_name : null;
    var parent     = MochiKit.DOM.getElement(parent) ? MochiKit.DOM.getElement(parent) : document;

    var children   = [];

    if ((tag_name || class_name) && parent) {

      var potential_children = MochiKit.DOM.getElementsByTagAndClassName(tag_name, class_name, parent);

      if (potential_children.length > 0) {

        for (var i = 0; i < potential_children.length; i++) {

          if (potential_children[i].parentNode && (potential_children[i].parentNode == parent)) {

            children.push(potential_children[i]);

          } // end if

        } // end for

      } // end if

    } // end if

    return children;

  }; // end Basis.get_direct_child_elements_by_tag_and_class_name()

  Basis.convert_nested_elements_to_tree = function (element, nested_tag, default_expanded, ignore_root, nested_tag_class_name) {

    if (!Basis.trees) { Basis.trees = {}; } // end if

    var default_expanded = (default_expanded != null) ? default_expanded : false;
    var ignore_root      = (ignore_root      != null) ? ignore_root      : false;

    var nested_tag            = nested_tag ? nested_tag : "div";
    var nested_tag_class_name = nested_tag_class_name ? nested_tag_class_name : null;
    var element               = MochiKit.DOM.getElement(element);

    if (element) {

      var index          = (element.id ? element.id : Basis.array_length(Basis.trees));
      Basis.trees[index] = {"nodes" : {"with_children"    : [],
                                       "without_children" : []}};

      element.tree       = Basis.trees[index];

      MochiKit.Base.nodeWalk(element, function (node) {

        var parent = node.parentNode;

        if (parent) {

          // CREATE CONTAINER DIV, INSERT AFTER CURRENT UNTRANSFORMED DIV
          var container = MochiKit.DOM.createDOM(nested_tag, {"id" : (node.id + "_c")});
          var children  = MochiKit.DOM.getElementsByTagAndClassName(nested_tag, nested_tag_class_name, node);

          if (!node.nextSibling) {

            var next_sibling = DIV({"style" : "display: none;"});

            parent.appendChild(next_sibling);

            parent.insertBefore(container, next_sibling);

            Basis.remove_element(next_sibling);

          } else {

            parent.insertBefore(container, node.nextSibling);

          } // end if

          // APPEND ALL CHILD DIVS OF UNTRANSFORMED DIV TO CONTAINER DIV
          for (var i = 0; i < children.length; i++) {

            if (children[i].parentNode == node) {

              container.appendChild(children[i]);

            } // end if

          } // end for

          // SET REFERENCES
          node.tree_children    = container;
          container.tree_parent = node;

          MochiKit.DOM.addElementClass(container, "Basis.file_explorer.container");

          if (container.nextSibling) {

            MochiKit.DOM.addElementClass(container, "has_remaining_siblings");

          } // end if

          if (container.childNodes.length == 0) {

            MochiKit.DOM.addElementClass(container, "invisible");

          } // end if

          if (ignore_root && (node == element)) {

            var placeholder = TD();

            var new_node    = TABLE({"width"       : "100%",
                                     "border"      : "0",
                                     "cellpadding" : "0",
                                     "cellspacing" : "0"},
                                TBODY(null,
                                  TR(null,
                                    TD({"width" : "18"},
                                      IMG({"src"    : "images/images/spacer.gif",
                                           "width"  : "18",
                                           "height" : "18"})
                                    ),
                                    placeholder
                                  )
                                )
                              );

          } else {

            if (!default_expanded) {

              var image_src   = (container.childNodes.length == 0) ?
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif") : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node.gif") : ("images/images/default_icons/tree/tree-node-end.gif"));

              container.style.display = "none";

            } else {

              var image_src   = (container.childNodes.length == 0) ?
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif")      : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                  ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node-open.gif") : ("images/images/default_icons/tree/tree-node-open-end.gif"));

            } // end if

            var image       = IMG({"src"   : image_src,
                                   "id"    : (node.id + "_toggle"),
                                   "style" : ((container.childNodes.length == 0) ? "" : "cursor: pointer;")
                                  });

            image.open      = default_expanded;

            if (container.childNodes.length > 0) {

              element.tree["nodes"]["with_children"].push(image);

              MochiKit.Signal.connect(image, "onclick", MochiKit.Base.bind(function () {

                var container = MochiKit.DOM.getElement((this.id.substring(0, (this.id.length - ("_toggle").length)) + "_c"));

                if (container) {

                  if (this.open) {

                    var image_src   = (container.childNodes.length == 0) ?
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif") : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node.gif") : ("images/images/default_icons/tree/tree-node-end.gif"));

                    container.style.display = "none";
                    this.src                = image_src;
                    this.open               = false;

                  } else {

                    var image_src   = (container.childNodes.length == 0) ?
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-leaf.gif")      : ("images/images/default_icons/tree/tree-leaf-end.gif")) :
                                        ((container.nextSibling) ? ("images/images/default_icons/tree/tree-node-open.gif") : ("images/images/default_icons/tree/tree-node-open-end.gif"));

                    container.style.display = "";
                    this.src                = image_src;
                    this.open               = true;

                  } // end if

                } // end if

              }, image));

            } else {

              element.tree["nodes"]["without_children"].push(image);

            } // end if

            var placeholder  = TD();
            var branch_image = TD({"width" : "18",
                                   "style" : "vertical-align: top;"
                                  }, image);

            var new_node     = TABLE({"width"       : "100%",
                                      "border"      : "0",
                                      "cellpadding" : "0",
                                      "cellspacing" : "0"},
                                 TBODY(null,
                                   TR(null,
                                     branch_image,
                                     placeholder
                                   )
                                 )
                               );

            if (container.nextSibling) {

              // MochiKit.DOM.addElementClass(branch_image, "has_remaining_siblings");

            } // end if

          } // end if

          // INSERT WRAPPER TABLE AFTER CURRENT UNTRANSFORMED DIV
          if (node.nextSibling) {

            node.parentNode.insertBefore(new_node, node.nextSibling);

          } else {

            node.parentNode.appendChild(new_node);

          } // end if

          // TRANSFORM DIV BY MOVING UNTRANSFORMED DIV INSIDE OF WRAPPER TABLE
          placeholder.appendChild(node);

          // CREATE BLANK CONTAINER

          var blank_container = SPAN({"id"    : node.id + "_wrapper",
                                      "style" : "display: block; position: static;",
                                      "class" : "Basis.file_explorer.node_container"
                                     });

          // INSERT BLANK CONTAINER BEFORE WRAPPER TABLE

          new_node.parentNode.insertBefore(blank_container, new_node);

          // APPEND WRAPPER TABLE AND CONTAINER DIV TO BLANK CONTAINER TO ENCAPSULATE

          blank_container.appendChild(new_node);
          blank_container.appendChild(container);

          return container.childNodes;

        } // end if

      });

    } // end if

  }; // end Basis.convert_nested_elements_to_tree()

  Basis.set_element_dimensions = function (element, dimensions, units) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      return MochiKit.Style.setElementDimensions(element, dimensions, units);

    } // end if

  }; // end Basis.set_element_dimensions()

  Basis.set_element_position = function (element, options) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var options   = options ? options : {};
      var positions = {};

      options["x"]  = Basis.is_number(options["x"]) ? Basis.parse_number(options["x"]) : 0;
      options["y"]  = Basis.is_number(options["y"]) ? Basis.parse_number(options["y"]) : 0;

      switch (options["mode"]) {

        case "relative":

          element.style.position = "relative";

          var relative_to = MochiKit.DOM.getElement(options["relative_to"]);

          if (relative_to) {

            element.style.left = 0;
            element.style.top  = 0;

            positions["element"]     = MochiKit.Style.getElementPosition(element);
            positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

            positions["element"]     = positions["element"]     ? positions["element"]     : {"x" : 0, "y" : 0};
            positions["relative_to"] = positions["relative_to"] ? positions["relative_to"] : {"x" : 0, "y" : 0};

            var offset = {"x" : ((positions["relative_to"].x - positions["element"].x) + options["x"]),
                          "y" : ((positions["relative_to"].y - positions["element"].y) + options["y"])};

            element.style.left = offset.x;
            element.style.top  = offset.y;

          } // end if

          break;

        case "absolute":
        default:

          element.style.position = "absolute";

          var relative_to = MochiKit.DOM.getElement(element.offsetParent);

          if (relative_to) {

            positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

            MochiKit.Style.setElementPosition(element, {"x" : -1 * (positions["relative_to"].x - options["x"]),
                                                        "y" : -1 * (positions["relative_to"].y - options["y"])});

          } // end if

          break;

      } // end switch

    } // end if

  }; // end Basis.set_element_position()

  Basis.get_style = function (element, style) {

    var got     = "";

    var element = MochiKit.DOM.getElement(element);

    if (element && style) {

      got = MochiKit.Style.getStyle(element, style);

    } // end if

    return (got ? got : "");

  }; // end Basis.get_style()

  Basis.set_style = function (element, style) {

    var element = MochiKit.DOM.getElement(element);

    if (element && style) {

      for (var i in style) {

        if (!Basis.is_function(style[i]) && MochiKit.Base.camelize(i)) {

          if (i == "opacity") {

            MochiKit.Style.setOpacity(element, style[i]);

          } else {

            if (Basis.is_number(style[i]) && (style[i] < 0)) {

              style[i] = 0;

            } // end if

            element.style[MochiKit.Base.camelize(i)] = style[i];

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.set_style()

  Basis.sort_ul = function (ul, get, descending) {

    // Based off of code from http://www.the-art-of-web.com/javascript/shellsort

    var ul = Basis.get_element(ul);

    if (ul) {

      var items  = MochiKit.DOM.getElementsByTagAndClassName("LI", null, ul);
      var length = items.length;

      function compare(a, b, descending) { 

        return (descending) ? (a > b) : (a < b);

      } // end compare()

      var exchange = function (a, b) {

        ul.insertBefore(items[a], items[b]);

      }; // end exchange()

      var get = (typeof(get) == "function") ? get : function (items, a) {

        return MochiKit.DOM.scrapeText(items[a]);

      }; // end get()

      function isort(m, k, descending) {

        for (var j = (m + k); j < length; j += k) {

          for (var i = j; i >= k && compare(get(items, i), get(items, (i - k)), descending); i -= k) {

            exchange(i, (i - k));

          } // end for

        } // end for

      } // end isort()

      // implement shell sort:

      if ((k = Math.floor(length / 5)) > 7) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end if

      if ((k = Math.floor(length / 7)) > 7) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end if

      for(k = 7; k > 0; k -= 2) {

        for (var m = 0; m < k; m++) {

          isort(m, k, descending);

        } // end for

      } // end for

      var sorted = true;

      for (var i = 0; i < length; i++) {

        if (get(items, i) > get(items, (i + 1))) {

          sorted = false;
          break;

        } // end if

      } // end for

      if (!sorted) {

        Basis.sort_ul(ul, get, descending);

      } // end if

    } // end if

  }; // end Basis.sort_ul()

  Basis.swap_elements = function (a, b) {

    var a = MochiKit.DOM.getElement(a);
    var b = MochiKit.DOM.getElement(b);

    if (a && b) {

      var a_parent_insert         = a.nextSibling ? false : true;
      var a_sibling_insert_before = a.nextSibling;
      var b_parent_insert         = b.nextSibling ? false : true;
      var b_sibling_insert_before = b.nextSibling;

      if (a_parent_insert) {

        a.parentNode.appendChild(b);

      } else {

        a.parentNode.insertBefore(a_sibling_insert_before, b);

      } // end if

      if (b_parent_insert) {

        b.parentNode.appendChild(a);

      } else {

        b.parentNode.insertBefore(a_sibling_insert_before, a);

      } // end if

    } // end if

  }; // end Basis.swap_elements()

  Basis._int = function (value) {

    return (!isNaN(parseInt(value)) ? parseInt(value) : 0);

  }; // end Basis._int()

  Basis._return = function (value) {

    return value;

  }; // end Basis._return()

  Basis.sum_scroll_of_all_parents = function (element) {

    var sum     = {"top":0,"left":0};
    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var parent = element.parentNode;

      while (parent && parent.style) {

        sum.top  += parent.scrollTop;
        sum.left += parent.scrollLeft;

        parent    = parent.parentNode;

      } // end while

    } // end if

    return sum;

  }; // end Basis.sum_scroll_of_all_parents()

  Basis.sum_of_all_parents = function (element, selector) {

    var sum     = {"top":0,"left":0,"right":0,"bottom":0};
    var element = MochiKit.DOM.getElement(element);

    var width   = (selector == "border") ? "-width" : "";

    if (element) {

      var tsum    = Basis.sum_of_element(element);

      sum.top    += tsum.top;
      sum.left   += tsum.left;
      sum.right  += tsum.right;
      sum.bottom += tsum.bottom;

      var parent = element.parentNode;

      while (parent && parent.style) {

        var tsum    = Basis.sum_of_element(parent);

        sum.top    += tsum.top;
        sum.left   += tsum.left;
        sum.right  += tsum.right;
        sum.bottom += tsum.bottom;

        parent      = parent.parentNode;

      } // end while

    } // end if

    return sum;

  }; // end Basis.sum_of_all_parents()

  Basis.sum_of_element = function (element, selector) {

    var sum     = {"top":0,"left":0,"right":0,"bottom":0};
    var element = MochiKit.DOM.getElement(element);

    var width   = (selector == "border") ? "-width" : "";

    if (element) {

      sum.top    += Basis._int(Basis.get_style(element, selector+"-top"+width).replace(/([^0-9\.])/g, ""));
      sum.left   += Basis._int(Basis.get_style(element, selector+"-left"+width).replace(/([^0-9\.])/g, ""));
      sum.right  += Basis._int(Basis.get_style(element, selector+"-right"+width).replace(/([^0-9\.])/g, ""));
      sum.bottom += Basis._int(Basis.get_style(element, selector+"-bottom"+width).replace(/([^0-9\.])/g, ""));

    } // end if

    return sum;

  }; // end Basis.sum_of_element()

  Basis.sum_borders_of_all_parents = function (element) {

    return Basis.sum_of_all_parents(element, "border");

  }; // end Basis.sum_borders_of_all_parents()

  Basis.sum_padding_of_all_parents = function (element) {

    return Basis.sum_of_all_parents(element, "padding");

  }; // end Basis.sum_padding_of_all_parents()

  Basis.hide_all_object_elements = function () {

    var objs = MochiKit.DOM.getElementsByTagAndClassName("object");

    if (objs.length > 0) {

      for (x = 0; x < objs.length; x++) {

        var pnode = objs[x].parentNode;

        if (pnode) {

          var dims           = MochiKit.Style.getElementDimensions(pnode);
          pnode.style.width  = dims.w;
          pnode.style.height = dims.h;

        } // end if

        objs[x].style.display = "none";

      } // end for

      return true;

    } // end if

    return false;

  }; // end Basis.hide_all_object_elements()

  Basis.unhide_all_object_elements = function () {

    var objs = MochiKit.DOM.getElementsByTagAndClassName("object");

    if (objs.length > 0) {

      for (x = 0; x < objs.length; x++) {

        objs[x].style.display = "";

      } // end for

      return true;

    } // end if

    return false;

  }; // end Basis.unhide_all_object_elements()

  Basis.idle_timeout = function (duration,sid,url) {

    if (duration && sid && url) {

      Basis.misc_vars["keepalive_timeout"] = MochiKit.Async.callLater(duration,function () {

        Basis.misc_vars.timeout_popup = Basis.popup({"id"           : "timeout_popup",
                                                     "window_title" : "You are idle",
                                                     "html"         : '\
\
          <div>You have been idle for too long! Do you want to remain logged in?</div>\
          <div align="right" style="padding-top: 10px;">\
            <input type="button" value="Yes" id="timeout_popup_yes">\
            <input type="button" value="No" id="timeout_popup_no">\
          </div>\
          <script>\
\
            MochiKit.Signal.connect("timeout_popup_yes","onclick",function () {\
\
              new Basis.keep_alive({"sid"       : "'+ sid +'",\
                                    "url"       : "'+ url +'",\
                                    "propagate" : false,\
                                    "duration"  : 1});\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
              Basis.idle_timeout('+ duration +',"'+ sid +'","'+ url +'");\
\
            });\
\
            MochiKit.Signal.connect("timeout_popup_no","onclick",function () {\
\
              var url = ""+window.location+"";\
\
              if (url.indexOf("?") == -1) {\
\
                window.location = (url + "?logout=true");\
\
              } else {\
\
                window.location = (url + "&logout=true");\
\
              }\
\
              var element = MochiKit.DOM.getElement("timeout_popup");\
\
              if (element && element.close) {\
\
                element.close();\
\
              }\
\
              if (Basis.misc_vars["final_timeout"] && Basis.misc_vars["final_timeout"].cancel) {\
\
                Basis.misc_vars["final_timeout"].cancel();\
\
              }\
\
            });\
\
          </script>'
                                                    });

        Basis.misc_vars["final_timeout"] = MochiKit.Async.callLater(30,function () {

          var url = ""+window.location+"";

          if (url.indexOf("?") == -1) {

            window.location = (url + "?logout=true");

          } else {

            window.location = (url + "&logout=true");

          } // end if

        });

      });

    } // end if

  }; // end Basis.idle_timeout()

  Basis.keep_alive = function (options) {

    this.__init__(options);

  }; // end Basis.keep_alive()

  /*
    ex:

      new Basis.keep_alive({"sid"      : "bd027bada8d45a7707d08fc58a6aa3f5",
                            "url"      : "http://server1.dataresolutions.com/sites/dataresolutions/index.php?id=297",
                            "duration" : 3
      });

  */

  Basis.keep_alive.prototype = {

    __init__: function (options) {

      this.sid       = options["sid"]                 ? options["sid"]       : null;
      this.url       = options["url"]                 ? options["url"]       : null;
      this.duration  = options["duration"]            ? options["duration"]  : 3;
      this.propagate = (options["propagate"] != null) ? options["propagate"] : true;

      this.compile();

    }, // end __init__()

    compile: function () {

      if (this.duration) {

        Basis.misc_vars["keepalive_timeout"] = MochiKit.Async.callLater(this.duration, MochiKit.Base.bind(function () {

          this.send_active_status();

        }, this));

      } // end if

    }, // end compile()

    send_active_status: function () {

      if (this.sid && this.url) {

        var as   = new Basis.ajax_scaffold;
        as.alias = "Basis.active_status";
        as.sid   = this.sid;
        as.url   = this.url;

        as.pvar  = this;

        as.on_success = function () {

          if (this.pvar.propagate) {

            this.pvar.compile();

          } // end if

        };

        as.post();

      } // end if

    } // end send_active_status()

  }; // end class Basis.keep_alive

  Basis.add_content_element = function (page_id, replacement_id, type) {

    var type = (type !== null) ? type : "";

    if (page_id && replacement_id && confirm("Are you sure you want to add a new content element to this page?")) {

      var to_post               = {};
      to_post["page_id"]        = page_id;
      to_post["replacement_id"] = replacement_id;
      to_post["type"]           = type;

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_content_element";

      as.on_success = function (req) {

        if (req.responseText == "true") {

          window.location = ""+window.location+"";

        } else {

          MochiKit.Logging.log("Unable to add content element!");

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    } // end if

  }; // end Basis.add_content_element()

  Basis.delete_content_element = function (content_element_id) {

    if (content_element_id && confirm("Are you sure you want to delete this content element?")) {

      var to_post                   = {};
      to_post["content_element_id"] = content_element_id;

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_content_element";

      as.on_success = function (req) {

        if (req.responseText == "true") {

          Basis.remove_element("ce_" + content_element_id);

        } else {

          MochiKit.Logging.log("Unable to delete content element #" + content_element_id);

        } // end if

      };

      return as.post({"to_post":to_post});

    } // end if

  }; // end Basis.delete_content_element()

  Basis.show_flash_demo = function (filename, options) {

    var options     = MochiKit.Base.updatetree(Basis.blank_object(), options);

    options["w"]    = options["w"] ? options["w"] : "680";
    options["h"]    = options["h"] ? options["h"] : "534";

    var flash_popup = Basis.popup({"id"           : "show_flash",
                                   "html"         : "&nbsp;",
                                   "window_title" : "Flash Demo"
                                  });

    var obj = Basis.misc_vars.popups[flash_popup.reference];

    if (obj) {

      obj.style.display = "none";

      if (flash_popup && flash_popup.html_container && flash_popup.html_container.id) {

        var so = new SWFObject(filename, "mymovie", options["w"], options["h"], "8","#ffffff");
        so.useExpressInstall("/js/js/expressinstall.swf");
        so.write(flash_popup.html_container.id);

      } // end if

      Basis.center_element(obj);

      obj.style.display = "";

    } // end if

  }; // end Basis.show_flash_demo()

  Basis.tinyMCE_getInstanceById = function (obj) {

    var obj = MochiKit.DOM.getElement(obj);

    if (obj && obj.id) {

      if (tinyMCE && tinyMCE.instances) {

        for (var i in tinyMCE.instances) {

          if (typeof(tinyMCE.instances[i]) != "function") {

            if (tinyMCE.instances[i].formElement && tinyMCE.instances[i].formElement.id && (tinyMCE.instances[i].formElement.id == obj.id)) {

              return tinyMCE.instances[i];

            } // end if

          } // end if

        } // end for

      } // end if

    } // end if

    return false;

  }; // end Basis.tinyMCE_getInstanceById()

  Basis.tinyMCE_set_dirty_flag = function (inst) {

    if (inst.formElement) {

      Basis.misc_vars["tinyMCE_"+inst.formElement.id+"_changed"] = true;

    } // end if

  }; // end Basis.tinyMCE_set_dirty_flag()

  Basis.tinyMCE_correct_span_nesting = function (html) {

    var container       = DIV();
    container.innerHTML = html;

    Basis.tinyMCE_correct_span_nesting_walk(container.childNodes);

    return container.innerHTML;

  }; // end Basis.tinyMCE_correct_span_nesting()

  Basis.tinyMCE_correct_span_nesting_walk = function (nodes) {

    if (nodes) {

      for (var x in nodes) {

        var node = nodes[x];

        if (Basis.is_element(node) && Basis.is_element(node.parentNode)) {

          var collapsed_tags = false;

          if ((node.tagName.toUpperCase() == "SPAN") && (node.parentNode.tagName.toUpperCase() == "SPAN") && !node.previousSibling) { // && !node.nextSibling) 

log("merging...");

            // move node children up to become node's siblings

            for (var i in node.childNodes) {

              if ((node.childNodes[i].nodeType == 1) || (node.childNodes[i].nodeType == 3)) {

                node.parentNode.insertBefore(node.childNodes[i], node);

              } // end if

            } // end for

            // apply node classes to parent

            var node_classes = Basis.get_element(node).className.split(" ");

            for (var i in node_classes) {

              if (!Basis.is_function(node_classes[i])) {

                MochiKit.DOM.addElementClass(node.parentNode, node_classes[i]);

              } // end if

            } // end for

            // apply node styles to parent

            for (var i = 0; i < node.style; i++) {

              var style            = Basis.blank_object();
              style[node.style[i]] = Basis.get_style(node, node.style[i]);

              Basis.set_style(node.parentNode, style);

            } // end for

            // remove node

            Basis.remove_element(node)

          } // end if

          // if you merged a child with a parent, start again to re-check parent's children in
          // case a former grandchild needs merged with the parent

          if (collapsed_tags) {

            Basis.tinyMCE_correct_span_nesting_walk(node.parentNode.childNodes);

          } else {

            Basis.tinyMCE_correct_span_nesting_walk(node.childNodes);

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.tinyMCE_correct_span_nesting_walk()

  Basis.array_flip = function (arr) {

    temp = new Object();

    for (var i in arr) {

      temp[arr[i]] = i;

    } // end for

    return temp;

  }; // end Basis.array_flip()

  Basis.array_size = function (arr) {

    arr_size = 0;

    for (var i in arr) {

      arr_size++;

    } // end for

    return arr_size;

  }; // end Basis.array_size()

  Basis.array_insert = function (arr, index, value) {

    if (arr && arr.splice) {

      arr.splice(index, 0, value);

    } // end if

    return arr;

  }; // end Basis.array_insert()

  Basis.remove_children = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      for (var i = 0; i < element.childNodes.length; i++) {

        Basis.remove_element(element.childNodes[i]);

      } // end for

      element.innerHTML = "";

    } // end if

  }; // end Basis.remove_children()

  Basis.remove_element = function (element) {

    var garbage_bin = MochiKit.DOM.getElement("IELeakGarbageBin");

    if (!garbage_bin) {

      var garbage_bin = new MochiKit.DOM.DIV({"id"    : "IELeakGarbageBin",
                                              "style" : "display: none;"});
      document.body.appendChild(garbage_bin);

    } // end if

    var element = MochiKit.DOM.getElement(element);

    if (element && garbage_bin) { // && Basis.is_element(element)

      MochiKit.Signal.disconnectAll(element);

      if (element.tooltip) { // from Basis.attach_tooltip()

        Basis.remove_element(element.tooltip);

      } // end if

      if (element.drag_events) { // from multipleDraggables

        for (var i in element.drag_events) {

          if (typeof(element.drag_events[i]) != "function") {

            MochiKit.Signal.disconnect(element.drag_events[i]);

          } // end if

        } // end for

      } // end if

      // NOTE: NEED TO STANDARDIZE WHERE SIGNAL REFERENCES ARE STORED. I LIKE element.signals[alias].

      if (element.signals) { // from Basis.make_text_element_editable / Basis.make_text_element_dropdown

        for (var i in element.signals) {

          if (typeof(element.signals[i]) != "function") {

            MochiKit.Signal.disconnect(element.signals[i]);

          } // end if

        } // end for

      } // end if

      var list_to_remove = [];

      MochiKit.Base.nodeWalk(element, function (node) {

        list_to_remove.push(node);

        return node.childNodes;

      });

      for (var x = list_to_remove.length; x > 0; x--) {

        Basis.remove_element(list_to_remove[x]);

      } // end for

      var list = MochiKit.DragAndDrop.Droppables.drops;

      for (var i = 0; i < list.length; i++) {

        if (list[i].element == element) {

          list[i].destroy();

        } // end if

      } // end for

      var list = MochiKit.DragAndDrop.Draggables.drags;

      for (var i = 0; i < list.length; i++) {

        if (list[i].element == element) {

          list[i].destroy();

        } // end if

      } // end for

      // move the element to the garbage bin
      garbage_bin.appendChild(element);
      garbage_bin.innerHTML = "";

    } // end if

  } // end Basis.remove_element()

  Basis.admin = function () {

    this.__init__();

  }; // end gallery()

  Basis.admin.prototype = {

    __init__: function () {

      this.ul_lists  = new Array();
      this.ul_ids    = new Array();
      this.root      = '';
      this.sid       = '';
      this.self_url  = '';
      this.edit_mode = false;

    }, // end __init__()

    add_page: function (site_id) {

      var to_post     = new Object();
      to_post.sid     = site_id;
      to_post["type"] = Basis.misc_vars["get_page_type_type"];
      to_post["name"] = Basis.misc_vars["get_page_type_name"];

      window.status = "Adding page to site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_page";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

          Basis.misc_vars.admin.render_pages(this.site_id);

        } else {

          window.status = "add_page(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end add_page()

    add_site: function (oid,folder_name,user_id) {

      if (!folder_name) { return; } // end if

      var to_post         = new Object();
      to_post.oid         = oid;
      to_post.folder_name = folder_name;
      to_post.user_id     = user_id;

      window.status = "Adding new site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "add_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "add_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end add_site()

    delete_page: function (pid) {

      var to_post     = new Object();
      to_post.pid     = pid;

      window.status = "Deleting page...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_page";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.pid   = pid;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var obj = MochiKit.DOM.getElement("page_"+this.pid+"_container");

          if (obj) {

            MochiKit.Visual.fade(obj,{"duration":0.5,"afterFinish":function (effect) {

              if (MochiKit.DOM.getElement(effect.element.id)) {

                MochiKit.DOM.removeElement(effect.element.id);

              } // end if

            }});

          } // end if

          window.status = "Done";

        } else {

          window.status = "delete_page(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end delete_page()

    delete_site: function (site_id) {

      var to_post   = new Object();
      to_post.sid   = site_id;

      window.status = "Deleting site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "delete_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "delete_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end delete_site()

    duplicate_site: function (site_id,folder_name) {

      if (!folder_name) { return; } // end if

      var to_post         = new Object();
      to_post.sid         = site_id;
      to_post.folder_name = folder_name;

      window.status = "Duplicating site...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "duplicate_site";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.location.reload();

          window.status = "Done";

        } else {

          window.status = "duplicate_site(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end duplicate_site()

    edit_organization_name: function (oid) {

      var obj = MochiKit.DOM.getElement("organization_"+oid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var organization_name = obj.innerHTML;
        obj.innerHTML         = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj                = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.oorganization_name = Basis.decode_html_entities(organization_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(organization_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.oid  = oid;

        input_obj.pvar = this;

        input_obj.save_organization_name = function () {

          window.status   = "Renaming organization...";

          if (input_obj.oorganization_name == input_obj.value) {

            input_obj.cancel_save_organization_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["oid"] = input_obj.oid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_organization_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj      = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_organization_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_organization_name()

        input_obj.cancel_save_organization_name = function () {

          var obj = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.oorganization_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_organization_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_organization_name()!");

          input_obj.save_organization_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_organization_name()!");

            input_obj.save_organization_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_organization_name()!");

            input_obj.cancel_save_organization_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_organization_name()

    edit_page_name: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var page_name = obj.innerHTML;
        obj.innerHTML = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj        = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.opage_name = Basis.decode_html_entities(page_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(page_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.pid  = pid;

        input_obj.pvar = this;

        input_obj.save_page_name = function () {

          window.status   = "Renaming page...";

          if (input_obj.opage_name == input_obj.value) {

            input_obj.cancel_save_page_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["pid"] = input_obj.pid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_page_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj      = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_page_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_page_name()

        input_obj.cancel_save_page_name = function () {

          var obj     = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.opage_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_page_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_name()!");

          input_obj.save_page_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_name()!");

            input_obj.save_page_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_name()!");

            input_obj.cancel_save_page_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_page_name()

    edit_page_attributes: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_attributes");

      if (obj && !obj.editing) {

        obj.editing = true;
        obj.pid     = pid;

        var to_post       = new Object();
        to_post["ivalue"] = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][pid]][pid]["attributes"];

        var as   = new Basis.ajax_scaffold;
        as.alias = "page_attributes_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.eid   = obj.id;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          var obj      = MochiKit.DOM.getElement(this.eid);

          if (obj) {

            if (response["text"]=="true") {

              var page_attributes        = obj.innerHTML;
              obj.innerHTML              = response["form"];

              var input_obj              = MochiKit.DOM.getElement(response["input_obj"]);

              input_obj.opage_attributes = Basis.decode_html_entities(page_attributes);
              input_obj.obj              = obj;

              MochiKit.DOM.removeElementClass(obj,"no_select");

              if (obj && input_obj) {

                input_obj.pvar = this.pvar;

                input_obj.save_page_attributes = function () {

                  window.status   = "Changing page attributes...";

                  if (input_obj.opage_attributes == input_obj.options[input_obj.selectedIndex].text) {

                    input_obj.cancel_save_page_attributes();

                    window.status = "Done";

                  } else {

                    var to_post    = new Object();
                    to_post["to"]  = input_obj.options[input_obj.selectedIndex].value;
                    to_post["pid"] = obj.pid;

                    var tas   = new Basis.ajax_scaffold;
                    tas.alias = "save_page_attributes";
                    tas.sid   = this.pvar.sid;
                    tas.url   = this.pvar.self_url;

                    tas.eid   = obj.id;

                    tas.on_success = function (req) {

                      var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                      if (response["text"]=="true") {

                        Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["attributes"] = input_obj.options[input_obj.selectedIndex].text;

                        obj.innerHTML = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["attributes"];

                        MochiKit.DOM.addElementClass(obj,"no_select");

                      } else {

                        input_obj.cancel_save_page_attributes();

                      } // end if

                      obj.editing   = false;

                      window.status = "Done";

                    };

                    tas.post({"to_post":to_post});

                  } // end if

                } // end save_page_attributes()

                input_obj.cancel_save_page_attributes = function () {

                  var obj = MochiKit.DOM.getElement(this.obj);

                  if (obj) {

                    obj.innerHTML = input_obj.opage_attributes;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                    obj.editing   = false;

                  } // end if

                } // end cancel_save_page_attributes()

                input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

                  MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_attributes()!");

                  input_obj.save_page_attributes();

                });

                MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

                  var key = e.key();

                  if (key.code == 13) {

                    MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_attributes()!");

                    input_obj.save_page_attributes();

                  } else if (key.code == 27) {

                    MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_attributes()!");

                    input_obj.cancel_save_page_attributes();

                  } // end if

                });

                input_obj.focus();

              } // end if

            } // end if

          } // end if

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end edit_page_attributes()

    edit_page_type: function (pid) {

      var obj = MochiKit.DOM.getElement("page_"+pid+"_type");

      if (obj && !obj.editing) {

        obj.editing = true;
        obj.pid     = pid;

        var to_post       = new Object();
        to_post["ivalue"] = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][pid]][pid]["type"];

        var as   = new Basis.ajax_scaffold;
        as.alias = "page_type_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.eid   = obj.id;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          var obj      = MochiKit.DOM.getElement(this.eid);

          if (obj) {

            if (response["text"]=="true") {

              var page_type = obj.innerHTML;
              obj.innerHTML = response["form"];

              var input_obj = MochiKit.DOM.getElement(response["input_obj"]);

              input_obj.opage_type = Basis.decode_html_entities(page_type);
              input_obj.obj        = obj;

              MochiKit.DOM.removeElementClass(obj,"no_select");

              if (obj && input_obj) {

                input_obj.pvar = this.pvar;

                input_obj.save_page_type = function () {

                  window.status   = "Changing page type...";

                  if (input_obj.opage_type == input_obj.options[input_obj.selectedIndex].text) {

                    input_obj.cancel_save_page_type();

                    window.status = "Done";

                  } else {

                    var to_post    = new Object();
                    to_post["to"]  = input_obj.options[input_obj.selectedIndex].value;
                    to_post["pid"] = obj.pid;

                    var tas   = new Basis.ajax_scaffold;
                    tas.alias = "save_page_type";
                    tas.sid   = this.pvar.sid;
                    tas.url   = this.pvar.self_url;

                    tas.eid   = obj.id;

                    tas.on_success = function (req) {

                      var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

                      if (response["text"]=="true") {

                        Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["type"] = input_obj.options[input_obj.selectedIndex].text;

                        obj.innerHTML = Basis.misc_vars["admin"]["pages"][Basis.misc_vars["admin"]["page_link"][obj.pid]][obj.pid]["type"];

                        MochiKit.DOM.addElementClass(obj,"no_select");

                      } else {

                        input_obj.cancel_save_page_type();

                      } // end if

                      obj.editing   = false;

                      window.status = "Done";

                    };

                    tas.post({"to_post":to_post});

                  } // end if

                } // end save_page_type()

                input_obj.cancel_save_page_type = function () {

                  var obj = MochiKit.DOM.getElement(this.obj);

                  if (obj) {

                    obj.innerHTML = input_obj.opage_type;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                    obj.editing   = false;

                  } // end if

                } // end cancel_save_page_type()

                input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

                  MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_page_type()!");

                  input_obj.save_page_type();

                });

                MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

                  var key = e.key();

                  if (key.code == 13) {

                    MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_page_type()!");

                    input_obj.save_page_type();

                  } else if (key.code == 27) {

                    MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_page_type()!");

                    input_obj.cancel_save_page_type();

                  } // end if

                });

                input_obj.focus();

              } // end if

            } // end if

          } // end if

          window.status = "Done";

        };

        as.post({"to_post":to_post});

      } // end if

    }, // end edit_page_type()

    edit_site_name: function (sid) {

      var obj = MochiKit.DOM.getElement("site_"+sid+"_name");

      if (obj && !obj.editing) {

        obj.editing   = true;

        var dim       = MochiKit.Style.getElementDimensions(obj);

        var site_name = obj.innerHTML;
        obj.innerHTML = "<input id=\""+obj.id+"_input\" type=\"text\" style=\"background-color: #ffffff; padding: 1px; padding-left: 3px; border: 1px solid #000000;\">";

        var input_obj        = MochiKit.DOM.getElement(obj.id+"_input");
        input_obj.osite_name = Basis.decode_html_entities(site_name);

        if (input_obj) {

          input_obj.value = Basis.decode_html_entities(site_name);

        } // end if

        MochiKit.DOM.removeElementClass(obj,"no_select");

        input_obj.sid  = sid;

        input_obj.pvar = this;

        input_obj.save_site_name = function () {

          window.status   = "Renaming site...";

          if (input_obj.osite_name == input_obj.value) {

            input_obj.cancel_save_site_name();

            window.status = "Done";

          } else {

            var to_post    = new Object();
            to_post["to"]  = input_obj.value;
            to_post["sid"] = input_obj.sid;

            var as   = new Basis.ajax_scaffold;
            as.alias = "save_site_name";
            as.sid   = this.pvar.sid;
            as.url   = this.pvar.self_url;

            as.eid   = obj.id;

            as.on_success = function (req) {

              var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

              var obj = MochiKit.DOM.getElement(this.eid);

              if (obj) {

                var input_obj = MochiKit.DOM.getElement(obj.id+"_input");

                if (obj && input_obj) {

                  if (response["text"]=="true") {

                    obj.innerHTML = input_obj.value;

                    MochiKit.DOM.addElementClass(obj,"no_select");

                  } else {

                    input_obj.cancel_save_site_name();

                  } // end if

                } // end if

              } // end if

              obj.editing   = false;

              window.status = "Done";

            };

            as.post({"to_post":to_post});

          } // end if

        } // end save_site_name()

        input_obj.cancel_save_site_name = function () {

          var obj     = MochiKit.DOM.getElement(this.id.substring(0,(this.id.length - ("_input").length)));

          if (obj) {

            obj.innerHTML = input_obj.osite_name;

            MochiKit.DOM.addElementClass(obj,"no_select");

            obj.editing   = false;

          } // end if

        } // end cancel_save_site_name()

        input_obj.fmdir_blur = MochiKit.Signal.connect(input_obj, 'onblur', function () {

          MochiKit.Logging.log(input_obj.id+".onblur(), attempting to save_site_name()!");

          input_obj.save_site_name();

        });

        MochiKit.Signal.connect(input_obj, 'onkeydown', function(e) {

          var key = e.key();

          if (key.code == 13) {

            MochiKit.Logging.log("Enter key pressed... "+input_obj.id+".save_site_name()!");

            input_obj.save_site_name();

          } else if (key.code == 27) {

            MochiKit.Logging.log("Escape key pressed... "+input_obj.id+".cancel_save_site_name()!");

            input_obj.cancel_save_site_name();

          } // end if

        });

        Basis.set_style(input_obj,{"width":(dim.w+15)});

        input_obj.focus();

        input_obj.select();

      } // end if

    }, // end edit_site_name()

    get_page_type: function (site_id) {

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_type_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.page_type_popup = Basis.popup({"id"           : "page_type_popup",
                                                   "html"         : "<div style=\"padding: 10px;\">"+response["form"]+"&nbsp;<input id=\"submit_999999\" type=\"button\" value=\"Next\"></div>",
                                                   "window_title" : "What kind of page do you want to add?"
                                                  });

          MochiKit.Signal.connect("submit_999999","onclick",MochiKit.Base.bind(function () {

            var obj = MochiKit.DOM.getElement("type_999999");

            if (obj) {

              Basis.misc_vars["get_page_type_type"] = obj.options[obj.selectedIndex].value;

            } // end if

            var obj = MochiKit.DOM.getElement("page_type_popup");

            if (obj && obj.close) {

              obj.close();

            } // end if

            Basis.prompt({"window_title"   : "Give your page a name",
                          "variable_title" : "Page name:",
                          "on_true"        : MochiKit.Base.bind(function () {

                                               Basis.misc_vars["get_page_type_name"] = Basis.misc_vars.prompt_value;

                                               this.pvar.add_page(this.site_id);

                                              },this)
                         });

          },this));

        } // end if

        window.status = "Done";

      };

      as.post({"to_post":{"ivalue":"novalue"}});

    }, // end get_page_type()

    manage_template: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      window.status = "Fetching form to manage site template...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "get_site_config_form";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = req.responseText;

        if (response) {

          var popup = Basis.popup({"id"           : "manage_template_popup",
                                   "window_title" : "Manage Site Look and Feel",
                                   "html"         : response
                                  });

        } // end if

        window.status = "Done";

      };

      as.post({"to_post":to_post});

    }, // end manage_template()

    render_pages: function (site_id) {

      var to_post     = new Object();
      to_post.site_id = site_id;

      window.status = "Fetching pages for site...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "render_pages";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;
      as.admin   = this;

      as.on_success = function (req) {

        var response = req.responseText;

        if (response) {

          var obj = MochiKit.DOM.getElement("pagelist_"+this.site_id+"_container_c");

          if (obj) {

            obj.innerHTML = response;

            Basis.execute_javascript(obj);

            MochiKit.Sortable.Sortable.create(obj, {dropOnEmpty : true,
                                                    containment : [obj.id],
                                                    constraint  : "vertical",
                                                    handle      : "icon_handle",
                                                    starteffect : MochiKit.Base.noop,
                                                    endeffect   : MochiKit.Base.noop,
                                                    onUpdate    : MochiKit.Base.bind(function (element) {

                                                                    this.site_page_order(element.id);

                                                                  },this.admin)
                                                   });

          } // end if

          window.status = "Done";

        } else {

          window.status = "render_pages(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end render_pages()

    set_page_privacy: function (pid,is_private) {

      var to_post        = new Object();
      to_post.pid        = pid;
      to_post.is_private = is_private;

      window.status = "Auto-saving page privacy...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_privacy";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_privacy(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_privacy()

    set_page_visibility: function (pid,in_menu) {

      var to_post     = new Object();
      to_post.pid     = pid;
      to_post.in_menu = in_menu;

      window.status = "Auto-saving page visibility...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_visibility";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_visibility(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_visibility()

    set_page_restriction: function (pid,is_restricted) {

      var to_post           = new Object();
      to_post.pid           = pid;
      to_post.is_restricted = is_restricted;

      window.status = "Auto-saving page restriction...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "set_page_restriction";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "set_page_restriction(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end set_page_restriction()

    save_site_template_configuration: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      // 1. collect all basis_template_replacement_override information

      if (this.manage_template_overrides && (this.manage_template_overrides.length > 0)) {

        to_post["overrides"] = new Array();

        for (var x=0; x < this.manage_template_overrides.length; x++) {

          var o_value = MochiKit.DOM.getElement("value_"+this.manage_template_overrides[x]+"_999999");
          var o_type  = MochiKit.DOM.getElement("type_"+this.manage_template_overrides[x]+"_999999");

          if (this.manage_template_overrides[x]) {

            to_post["overrides"][to_post["overrides"].length] = { "replacement_id" : this.manage_template_overrides[x],
                                                                  "value"          : ((o_value) ? (o_value.value) : ""),
                                                                  "type"           : ((o_type && o_type.options) ? (o_type.options[o_type.selectedIndex].value) : "")
                                                                };

          } // end if

        } // end for

      } // end if

      // 2. grab template_id

      var objs = MochiKit.DOM.getElementsByTagAndClassName("input","manage_template_template_id");

      if (objs) {

        for (var i in objs) {

          if (objs[i] && objs[i].checked) {

            to_post["template_id"] = objs[i].value;

          } // end if

        } // end for

      } // end if

      // 3. grab chosen color + default setting

      if (this.color_chooser && this.color_chooser.color && this.color_chooser.color.toHexString) {

        to_post["color"] = this.color_chooser.color.toHexString();

      } // end if

      var obj = MochiKit.DOM.getElement("restore_template_999999_0");

      if (obj && obj.checked) {

        to_post["restore_default_color"] = "true";

      } // end if

      window.status = "Applying changes to site template...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "save_site_template_configuration";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.site_id = site_id;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "save_site_template_configuration(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end save_site_template_configuration()

    site_page_order: function (ul_element) {

      var element = MochiKit.DOM.getElement(ul_element);

      if (element) {

        final_site  = new Array();

        if (!element.childNodes || element.childNodes.length==0) { return false; }

        for (var itemi=0; itemi<element.childNodes.length; itemi++) {

          var item = element.childNodes[itemi];

          if (item.nodeName == "LI") {

            final_site[final_site.length] = item.value;

          } // end if

        } // end for

        var parent_id = element.id.split("_");

        if (parent_id[0] == "pagelist") {

          parent_id       = parent_id[1];
          var parent_type = "site";

        } else if (parent_id[0] == "page") {

          parent_id       = parent_id[1];
          var parent_type = "page";

        } // end if

        final_order = {"parent_id" : parent_id,
                       "type"      : parent_type,
                       "order"     : final_site
                      };

      } // end if

      var to_post         = new Object();
      to_post.final_order = final_order;

      window.status = "Auto-saving page rankings...";

      var as   = new Basis.ajax_scaffold;
      as.alias = "site_page_order";
      as.sid   = this.sid;
      as.url   = this.self_url;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          window.status = "Done";

        } else {

          window.status = "site_page_order(): ERROR!";

        } // end if

      };

      as.post({"to_post":to_post});

    }, // end site_page_order()

    toggle_menu_management: function (site_id) {

      var parent = document;

      if (site_id) {

        parent = MochiKit.DOM.getElement("pagelist_"+site_id+"_container");

      } // end if

      var objs = MochiKit.DOM.getElementsByTagAndClassName("div","dropzone",parent);

      if (!this.managing_menus) {

        this.managing_menus = [];

      } // end if

      if (!this.managing_menus[site_id]) {

        this.managing_menus[site_id] = true;

        for (var i in objs) {

          if (Basis.is_element(objs[i])) {

            MochiKit.DOM.removeElementClass(objs[i],"invisible");

          } // end if

        } // end for

      } else {

        this.managing_menus[site_id] = false;

        for (var i in objs) {

          if (Basis.is_element(objs[i])) {

            MochiKit.DOM.addElementClass(objs[i],"invisible");

          } // end if

        } // end for

      } // end if

    } // end toggle_menu_management()

  }; // end class Basis.admin

  Basis.ajax_scaffold = function () {

    this.__init__();

  }; // end Basis.ajax_scaffold()

  Basis.ajax_scaffold.instances = [];
  Basis.ajax_scaffold.blocked   = false; // used by this.should_block

  Basis.ajax_scaffold.prototype = {

    __init__: function () {

      this.alias;
      this.sid;
      this.url;

      this.send_raw      = false;
      this.should_block  = false; // a blocking request is one that needs to be allowed to complete before another blocking request is allowed to be sent

      this.on_success    = function () { return; };
      this.after_success = function () { return; };

      this.index         = Basis.ajax_scaffold.instances.length;
      Basis.ajax_scaffold.instances[this.index] = this;

    }, // end __init__()

    attach_indicator: function () {

      var obj = MochiKit.DOM.getElement("ajax_scaffold_indicator");

      if (!obj) {

        var obj = new MochiKit.DOM.DIV({"id":"ajax_scaffold_indicator","style":"display:none; width: 16px; height: 16px; position: absolute;"},null);

        obj.innerHTML = "<img id='ajax_scaffold_indicator_image' src=''><script>var obj = MochiKit.DOM.getElement('ajax_scaffold_indicator_image'); if (obj && Basis.misc_vars['ajax_loading'].src) { obj.src = Basis.misc_vars['ajax_loading'].src; }</script>";

        document.body.appendChild(obj);

        Basis.execute_javascript(obj);

        this.position_indicator();

        this.draw_indicator = MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), "onmousemove", this, function () { this.position_indicator(); });

        obj.style.display   = "";

      } // end if

    }, // end attach_indicator()

    form_post: function (form_id) {

      var obj = MochiKit.DOM.getElement(form_id);

      if (obj) {

        var action    = MochiKit.DOM.getElement(obj).action;
        var form_data = MochiKit.DOM.formContents(obj);

        if (action && form_data) {

          form_data[0][form_data[0].length] = "exit_after_catch";
          form_data[1][form_data[1].length] = "true";

          var to_post = new Object();

          for (var i in form_data[0]) {

            if (typeof(form_data[0][i]) != "function") {

              to_post[form_data[0][i]] = form_data[1][i];

            } // end if

          } // end for

          this.url = action;

          return this.post(to_post);

        } else {

          MochiKit.Logging.log("no action or no form_data");

        } // end if

      } // end if

    }, // end form_post()

    position_indicator: function () {

      var obj    = MochiKit.DOM.getElement("ajax_scaffold_indicator");
      var scroll = Basis.scroll_coords();

      if (obj && Basis.misc_vars["mouse_x"] && Basis.misc_vars["mouse_y"] && scroll && (scroll.x >= 0) && (scroll.y >= 0)) {

        var pos    = {"x":(Basis.misc_vars["mouse_x"] + scroll.x + 15),
                      "y":(Basis.misc_vars["mouse_y"] + scroll.y + 10)};

        MochiKit.Style.setElementPosition(obj,pos);

      } // end if

    }, // end position_indicator()

    post: function (options) {

      if (this.should_block && Basis.ajax_scaffold.blocked) {

        log("ERROR: blocking request already made; cannot send this until it has completed!");

        return false;

      } // end if

      this.url = this.url ? this.url : window.location.href;
      this.sid = this.sid ? this.sid : Basis.get_cookie("PHPSESSID");

      if (this.url && this.sid) {

        if (!this.send_raw) {

          var to_send = { "alias"             : this.alias,
                          "ajax_throw_verify" : hex_md5(this.sid)
                        };

          if (options) {

            for (var i in options) {

              to_send[i] = options[i];

            } // end for

          } // end if

        } else {

          var to_send = options;

        } // end if

        if (this.url.indexOf("?") != -1) {

          var base = this.url.substring(0,this.url.indexOf("?"));
          var args = parseQueryString(this.url.substring((this.url.indexOf("?")+1),this.url.length), true);

        } else {

          var base = this.url;
          var args = {};

        } // end if

        args["PHPSESSID"] = this.sid;
        args["alias"]     = this.alias;
        var date          = new Date();
        args["unique"]    = date.getTime();

        var query_string = "";

        for (var i in args) {

          if (typeof(args[i]) != "function") {

            query_string += i+"="+args[i]+"&";

          } // end if

        } // end for

        this.url = base+"?"+query_string;

        this.attach_indicator();

        if (!this.send_raw) {

          var send_content = "array="+urlencode(encodeBase64(MochiKit.Base.serializeJSON(to_send)));

        } else {

          var temp = "";

          for (var i in to_send) {

            temp += urlencode(i)+"="+urlencode(to_send[i])+"&";

          } // end for

          var send_content = temp;

        } // end if

        this.deferred = MochiKit.Async.doXHR(this.url,{"method"      : "POST",
                                                       "headers"     : {"Content-type":"application/x-www-form-urlencoded"},
                                                       "sendContent" : send_content
                                                      });

        this.deferred.addCallback(MochiKit.Base.bind(function (req) {

          this.req = req;

        }, this.deferred));

        this.deferred.addCallback(MochiKit.Base.bind(function () {

          var func = MochiKit.Base.bind(this.on_success, this);

          func.apply(null, [this.deferred.req]);

        }, this));

        this.deferred.addCallback(this.after_success);
        this.deferred.addCallback(MochiKit.Base.bind(this.remove_indicator, this));

        this.deferred.addCallback(MochiKit.Base.partial(function (should_block) {

          Basis.ajax_scaffold.blocked = should_block ? false : Basis.ajax_scaffold.blocked;

        }, this.should_block));

        Basis.ajax_scaffold.blocked = this.should_block ? true : Basis.ajax_scaffold.blocked;

        return this.deferred;

      } else {

        if (!this.url) {

          MochiKit.Logging.log("ERROR: this.url is null!");

        } // end if

        if (!this.sid) {

          MochiKit.Logging.log("ERROR: this.sid is null!");

        } // end if

      } // end if

      return false;

    }, // end post()

    remove_indicator: function () {

      var obj = MochiKit.DOM.getElement("ajax_scaffold_indicator");

      if (obj) {

        MochiKit.DOM.removeElement(obj);

      } // end if

      MochiKit.Signal.disconnect(this.draw_indicator);

    } // end remove_indicator()

  }; // end Basis.ajax_scaffold

  Basis.admin.user_management = function () {

    this.__init__();

  }; // end admin.user_management()

  Basis.admin.user_management.prototype = {

    __init__: function (site_id) {

      this.user_list    = new Object;
      this.user_info    = new Object;

      this.sid          = "";
      this.form_html    = "";
      this.self_url     = "";

      this.form_id            = "user_management_popup";
      this.all_users_popup_id = "user_management_all_users_popup";

      this.site_id            = site_id;

      this.current_user = null;

    }, // end __init__()

    add_user: function () {

      if (this.site_id) {

        Basis.prompt({"window_title"   : "Add User",
                      "variable_title" : "Username:",
                      "on_true"        : MochiKit.Base.bind(function () {

                                           if (Basis.misc_vars.prompt_value) {

                                             var d1 = this.create_username(Basis.misc_vars.prompt_value,this.site_id);

                                           } else {

                                             alert('You need to give each new user a username before their account can be created!');

                                           } // end if

                                         },this)
                     });

      } // end if

    }, // end add_user()

    check_username: function (username, site_id) {

    }, // end check_username()

    compile: function (site_id) {

      if (site_id) {

        this.site_id = site_id;

      } // end if

      var on_loaded = function () {

        if (this.form_html) {

          var window_title = ("User Management for <span style=\"color: #B43232;\">"+MochiKit.DOM.getElement("site_"+this.site_id+"_name").innerHTML+"</span>");

          var obj = MochiKit.DOM.getElement(this.form_id);

          if (!obj) {

            this.popup = Basis.popup({"id"           : this.form_id,
                                      "html"         : this.form_html,
                                      "window_title" : window_title
                                     });

          } else {

            this.popup.html_container.innerHTML = this.form_html;
            this.popup.window_title.innerHTML   = window_title;

          } // end if

        } // end if

        this.render_users();

      };

      if (this.form_html) {

        var d1 = this.get_users(this.site_id);

        d1.addCallback(MochiKit.Base.bind(on_loaded,this));

      } else {

        var d1    = this.get_form();
        var d2    = this.get_users(this.site_id);
        var dlist = new MochiKit.Async.DeferredList([d1,d2], false, false, true);

        dlist.addCallback(MochiKit.Base.bind(on_loaded,this));

      } // end if

    }, // end compile()

    create_username: function (username, site_id) {

      if (username && site_id) {

        var to_post = new Object();
        to_post["username"] = username;
        to_post["site_id"]  = site_id;

        window.status = "Creating new user for site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_create_username";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.site_id = site_id;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

            var obj = MochiKit.DOM.getElement(this.pvar.all_users_popup_id);

            if (obj) {

              this.pvar.show_all_users();

            } // end if

          } else {

            window.status = "create_username(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

      return false;

    }, // end create_username()

    delete_user: function () {

      if (this.current_user) {

        var to_post = new Object();
        to_post["user_id"] = this.current_user;

        window.status = "Deleting user from site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_delete_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

            var obj = MochiKit.DOM.getElement(this.pvar.all_users_popup_id);

            if (obj) {

              this.pvar.show_all_users();

            } // end if

          } else {

            window.status = "delete_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

      return false;

    }, // end delete_user()

    file_restrictions_get_form: function (site_id) {

      var to_post = new Object();

      window.status = "Fetching file restrictions form...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_get_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var popup = Basis.popup({"id"           : "file_restrictions_popup",
                                   "html"         : response["html"],
                                   "window_title" : "Manage File Restrictions"
                                  });

          var d1    = this.pvar.get_site_users(this.pvar.site_id);

          d1.addCallback(MochiKit.Base.bind(function () {

            var d2 = this.file_restrictions_load_file_restrictions();

            d2.addCallback(MochiKit.Base.bind(function () {

              var html  = "";
              var js    = "";

              for (var i in this.user_list_site) {

                if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

                  html += '<tr><td style="text-align: center;"><input type="checkbox" id="Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'" class="Basis.admin.file_restrictions.list.checkbox"></td><td style="text-align: center;"><input type="checkbox" id="Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'" class="Basis.admin.file_restrictions.list.checkbox"></td><td>'+this.user_list_site[i]["username"]+'</td></tr>';
                  js   += '<script>\
\
                             var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'");\
\
                             MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                               var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'");\
\
                               if (obj2 && this.checked) { obj2.checked = true; }\
\
                             },obj));\
\
                             var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only.'+this.user_list_site[i]["id"]+'");\
\
                             MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                               var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access.'+this.user_list_site[i]["id"]+'");\
\
                               if (obj2 && !this.checked) { obj2.checked = false; }\
\
                             },obj));\
\
                           </script>';

                } // end if

              } // end for

              if (html) {

                var obj = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list");

                if (obj) {

                  obj.innerHTML = '<table width="100%"><tr><td width="75" style="text-align: center; font-weight: bold;">Ability To Change file</td><td width="60" style="text-align: center; font-weight: bold;">Ability To See file</td><td style="font-weight: bold;">Username</td></tr>'+html+'</table>'+js;

                  Basis.execute_javascript(obj);

                  var obj = MochiKit.DOM.getElement("save_button_555555");

                  if (obj) {

                    MochiKit.Signal.connect(obj,"onclick",MochiKit.Base.bind(function () {

                      this.file_restrictions_save_file_restrictions();

                    },this));

                  } // end if

                } // end if

              } // end if

            },this));

          },this.pvar));

          window.status = "Done";

        } else {

          window.status = "file_restrictions_get_form(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_get_form()

    file_restrictions_load_file_restrictions: function () {

      var user_ids     = new Array();

      for (var i in this.user_list_site) {

        if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

          user_ids[user_ids.length] = this.user_list_site[i]["id"];

        } // end if

      } // end for

      var to_post      = new Object();
      to_post.user_ids = user_ids;

      window.status = "Fetching file restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_load_file_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        if (req.responseText) {

          this.pvar.file_restrictions = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_load_file_restrictions()

    file_restrictions_populate_file_restrictions: function (pid) {

      var restriction_type = "blacklist";

      if (pid && this.file_restrictions) {

        var checkboxes = MochiKit.DOM.getElementsByTagAndClassName("input","Basis.admin.file_restrictions.list.checkbox");

        if (checkboxes) {

          for (var i in checkboxes) {

            if (i && checkboxes[i]) {

              checkboxes[i].checked = false;

            } // end if

          } // end for

        } // end if

        for (var uid in this.file_restrictions) {

          if (uid && this.file_restrictions[uid]) {

            if (this.file_restrictions[uid]["blacklist"] && (this.file_restrictions[uid]["blacklist"].length > 0)) {

              for (var i in this.file_restrictions[uid]["blacklist"]) {

                if (i && this.file_restrictions[uid]["blacklist"][i] && ((typeof this.file_restrictions[uid]["blacklist"][i]) != "function")) {

                  var temp  = this.file_restrictions[uid]["blacklist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "blacklist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } else if (this.file_restrictions[uid]["whitelist"] && (this.file_restrictions[uid]["whitelist"].length > 0)) {

              for (var i in this.file_restrictions[uid]["whitelist"]) {

                if (i && this.file_restrictions[uid]["whitelist"][i] && ((typeof this.file_restrictions[uid]["whitelist"][i]) != "function")) {

                  var temp  = this.file_restrictions[uid]["whitelist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "whitelist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } // end if

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("restriction_type_555555");

        if (obj) {

          for (var i in obj.options) {

            if (i && obj.options[i] && (obj.options[i].value == restriction_type)) {

              obj.options[i].selected = true;

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end file_restrictions_populate_file_restrictions()

    file_restrictions_save_file_restrictions: function () {

      var update = new Object();

      var obj = MochiKit.DOM.getElement("files_555555");

      if (obj) {

        update["file_id"] = obj.options[obj.selectedIndex].value;

      } // end if

      var obj = MochiKit.DOM.getElement("restriction_type_555555");

      if (obj) {

        update["restriction_type"] = obj.options[obj.selectedIndex].value;

      } // end if

      update["users"] = new Array();

      for (var i in this.user_list_site) {

        if (this.user_list_site[i] && this.user_list_site[i]["id"] && this.user_list_site[i]["username"]) {

          var obj1 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.read_only."+this.user_list_site[i]["id"]);

          if (obj1 && obj1.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]+":read_only");

          } // end if

          var obj2 = MochiKit.DOM.getElement("Basis.admin.file_restrictions.list.full_access."+this.user_list_site[i]["id"]);

          if (obj2 && obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]+":full_access");

          } // end if

          if (obj1 && obj2 && !obj1.checked && !obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_site[i]["id"]);

          } // end if

        } // end if

      } // end for

      var to_post   = update;

      window.status = "Saving file restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "file_restrictions_save_file_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        this.pvar.file_restrictions_load_file_restrictions();

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end file_restrictions_save_file_restrictions()

    get_all_users: function () {

      var to_post        = new Object();
      to_post["site_id"] = this.site_id;

      window.status = "Fetching all users...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_all_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = this.site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list_all = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_all_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_all_users()

    get_site_users: function () {

      var to_post        = new Object();
      to_post["site_id"] = this.site_id;

      window.status = "Fetching all users for site...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_site_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = this.site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list_site = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_all_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_site_users()

    get_form: function () {

//    if (!this.form_html) {

        window.status = "Fetching user management form...";

        var as   = new Basis.ajax_scaffold;
        as.alias = "user_management_get_form";
        as.sid   = this.sid;
        as.url   = this.self_url;

        as.pvar  = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            this.pvar.form_html  = response["html"];
            this.pvar.form_html += "<div style=\"text-align: right;\"><input type=\"button\" value=\"Save\" onclick=\"Basis.misc_vars.user_manager.save_user_info(Basis.misc_vars.user_manager.current_user);\"></div>";

            window.status  = "Done";

          } else {

            window.status = "get_form(): ERROR!";

          } // end if

        };

        return as.post({"site_id":this.site_id});

//    } // end if
//
//    return false;

    }, // end get_form()

    get_users: function (site_id) {

      var to_post        = new Object();
      to_post["site_id"] = site_id;

      window.status = "Fetching users...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_users";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.site_id = site_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_list = response["users"];

          window.status  = "Done";

        } else {

          window.status = "get_users(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_users()

    get_user_info: function (user_id) {

      var to_post        = new Object();
      to_post["user_id"] = user_id;
      to_post["site_id"] = this.site_id;

      window.status = "Fetching user info...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "user_management_get_user_info";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.user_id = user_id;
      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          this.pvar.user_info[this.user_id] = response["user_info"];

          window.status  = "Done";

          var obj = MochiKit.DOM.getElement("user_details");

          if (obj) {

            obj.innerHTML = this.pvar.user_info[this.user_id]["username"];

          } // end if

          this.pvar.populate_user_data(this.user_id);

        } else {

          window.status = "get_user_info(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end get_user_info()

    import_user: function (user_id) {

      if (user_id && this.site_id) {

        var to_post        = new Object();
        to_post["user_id"] = user_id;
        to_post["site_id"] = this.site_id;

        window.status = "Importing user to site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_import_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = user_id;
        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

          } else {

            window.status = "import_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end import_user()

    page_restrictions_get_form: function (oid) {

      var to_post = new Object();
      to_post.oid = oid;

      window.status = "Fetching page restrictions form...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_get_form";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        if (response["text"]=="true") {

          var obj = MochiKit.DOM.getElement("page_type_popup");

          if (obj) {

            MochiKit.DOM.removeElement(obj);

          } // end if

          var obj = MochiKit.DOM.getElement("page_type_popup");

          if (!obj) {

            var popup = Basis.popup({"id"           : "page_restrictions_popup",
                                     "html"         : response["html"],
                                     "window_title" : "Manage Page Restrictions"
                                    });

            var d1    = this.pvar.get_all_users();

            d1.addCallback(MochiKit.Base.bind(function () {

              var d2 = this.page_restrictions_load_page_restrictions();

              d2.addCallback(MochiKit.Base.bind(function () {

                var html  = "";
                var js    = "";

                for (var i in this.user_list_all) {

                  if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

                    html += '<tr><td style="text-align: center;"><input type="checkbox" id="Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'" class="Basis.admin.page_restrictions.list.checkbox"></td><td style="text-align: center;"><input type="checkbox" id="Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'" class="Basis.admin.page_restrictions.list.checkbox"></td><td>'+this.user_list_all[i]["username"]+'</td></tr>';
                    js   += '<script>\
\
                               var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'");\
\
                               MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                                 var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'");\
\
                                 if (obj2 && this.checked) { obj2.checked = true; }\
\
                               },obj));\
\
                               var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only.'+this.user_list_all[i]["id"]+'");\
\
                               MochiKit.Signal.connect(obj,"onchange",MochiKit.Base.bind(function () {\
\
                                 var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access.'+this.user_list_all[i]["id"]+'");\
\
                                 if (obj2 && !this.checked) { obj2.checked = false; }\
\
                               },obj));\
\
                             </script>';

                  } // end if

                } // end for

                if (html) {

                  var obj = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list");

                  if (obj) {

                    obj.innerHTML = '<table width="100%"><tr><td width="75" style="text-align: center; font-weight: bold;">Ability To Change Page</td><td width="60" style="text-align: center; font-weight: bold;">Ability To See Page</td><td style="font-weight: bold;">Username</td></tr>'+html+'</table>'+js;

                    Basis.execute_javascript(obj);

                    var obj = MochiKit.DOM.getElement("save_button_777777");

                    if (obj) {

                      MochiKit.Signal.connect(obj,"onclick",MochiKit.Base.bind(function () {

                        this.page_restrictions_save_page_restrictions();

                      },this));

                    } // end if

                  } // end if

                } // end if

              },this));

            },this.pvar));

          } // end if

          window.status = "Done";

        } else {

          window.status = "page_restrictions_get_form(): ERROR!";

        } // end if

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_get_form()

    page_restrictions_load_page_restrictions: function () {

      var user_ids     = new Array();

      for (var i in this.user_list_all) {

        if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

          user_ids[user_ids.length] = this.user_list_all[i]["id"];

        } // end if

      } // end for

      var to_post      = new Object();
      to_post.user_ids = user_ids;

      window.status = "Fetching page restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_load_page_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        if (req.responseText) {

          this.pvar.page_restrictions = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

        } // end if

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_load_page_restrictions()

    page_restrictions_populate_page_restrictions: function (pid) {

      var restriction_type = "blacklist";

      if (pid && this.page_restrictions) {

        var checkboxes = MochiKit.DOM.getElementsByTagAndClassName("input","Basis.admin.page_restrictions.list.checkbox");

        if (checkboxes) {

          for (var i in checkboxes) {

            if (i && checkboxes[i]) {

              checkboxes[i].checked = false;

            } // end if

          } // end for

        } // end if

        for (var uid in this.page_restrictions) {

          if (uid && this.page_restrictions[uid]) {

            if (this.page_restrictions[uid]["blacklist"] && (this.page_restrictions[uid]["blacklist"].length > 0)) {

              for (var i in this.page_restrictions[uid]["blacklist"]) {

                if (i && this.page_restrictions[uid]["blacklist"][i] && ((typeof this.page_restrictions[uid]["blacklist"][i]) != "function")) {

                  var temp  = this.page_restrictions[uid]["blacklist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "blacklist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } else if (this.page_restrictions[uid]["whitelist"] && (this.page_restrictions[uid]["whitelist"].length > 0)) {

              for (var i in this.page_restrictions[uid]["whitelist"]) {

                if (i && this.page_restrictions[uid]["whitelist"][i] && ((typeof this.page_restrictions[uid]["whitelist"][i]) != "function")) {

                  var temp  = this.page_restrictions[uid]["whitelist"][i].split(":");
                  var ttype = temp[temp.length-1];
                  var tpid  = temp[temp.length-3];

                  if (tpid == pid) {

                    restriction_type = "whitelist";

                    var obj          = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list."+ttype+"."+uid);

                    if (obj) {

                      obj.checked = true;

                    } // end if

                  } // end if

                } // end if

              } // end for

            } // end if

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("restriction_type_777777");

        if (obj) {

          for (var i in obj.options) {

            if (i && obj.options[i] && (obj.options[i].value == restriction_type)) {

              obj.options[i].selected = true;

            } // end if

          } // end for

        } // end if

      } // end if

    }, // end page_restrictions_populate_page_restrictions()

    page_restrictions_save_page_restrictions: function () {

      var update = new Object();

      var obj = MochiKit.DOM.getElement("pages_777777");

      if (obj) {

        update["page_id"] = obj.options[obj.selectedIndex].value;

      } // end if

      var obj = MochiKit.DOM.getElement("restriction_type_777777");

      if (obj) {

        update["restriction_type"] = obj.options[obj.selectedIndex].value;

      } // end if

      update["users"] = new Array();

      for (var i in this.user_list_all) {

        if (this.user_list_all[i] && this.user_list_all[i]["id"] && this.user_list_all[i]["username"]) {

          var obj1 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.read_only."+this.user_list_all[i]["id"]);

          if (obj1 && obj1.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]+":read_only");

          } // end if

          var obj2 = MochiKit.DOM.getElement("Basis.admin.page_restrictions.list.full_access."+this.user_list_all[i]["id"]);

          if (obj2 && obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]+":full_access");

          } // end if

          if (obj1 && obj2 && !obj1.checked && !obj2.checked) {

            update["users"][update["users"].length] = (this.user_list_all[i]["id"]);

          } // end if

        } // end if

      } // end for

      var to_post   = update;

      window.status = "Saving page restrictions...";

      var as     = new Basis.ajax_scaffold;
      as.alias   = "page_restrictions_save_page_restrictions";
      as.sid     = this.sid;
      as.url     = this.self_url;

      as.pvar    = this;

      as.on_success = function (req) {

        this.pvar.page_restrictions_load_page_restrictions();

        window.status = "Done";

      };

      return as.post({"to_post":to_post});

    }, // end page_restrictions_save_page_restrictions()

    populate_user_data: function (user_id) {

      var rrv_run = 999999;
      var ui      = this.user_info[user_id];

      if (ui) {

        var obj = MochiKit.DOM.getElement("username_"+rrv_run);
        if (obj) { obj.value = ui["username"]; } // end if

        var obj = MochiKit.DOM.getElement("password_"+rrv_run);
        if (obj) { obj.value = ui["password"]; } // end if

        var obj = MochiKit.DOM.getElement("user_level_"+rrv_run);
        if (obj && obj.options) {

          for (var i in obj.options) {

            if (obj.options[i] && obj.options[i].value) {

              obj.options[i].value = obj.options[i].value.replace("SITE_ID",this.site_id);

            } // end if

            if (obj.options[i] && (obj.options[i].value == ui["user_level"])) {

              obj.selectedIndex = i;

            } // end if

          } // end for

        } // end if

        var uicl = ui["contact_list"];

        if (uicl) {

          var obj = MochiKit.DOM.getElement("contact_name_"+rrv_run);
          if (obj) { obj.value = uicl["contact_name"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_email_address_"+rrv_run);
          if (obj) { obj.value = uicl["contact_email_address"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_phone_number1_"+rrv_run);
          if (obj) { obj.value = uicl["contact_phone_number1"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_phone_number2_"+rrv_run);
          if (obj) { obj.value = uicl["contact_phone_number2"]; } // end if

          var obj = MochiKit.DOM.getElement("contact_notes_"+rrv_run);
          if (obj) { obj.value = uicl["contact_notes"]; } // end if

        } // end if

        this.current_user = user_id;

      } // end if

    }, // end populate_user_data()

    remove_user: function () {

      if (this.current_user && this.site_id) {

        var to_post        = new Object();
        to_post["user_id"] = this.current_user;
        to_post["site_id"] = this.site_id;

        window.status = "Removing user from site...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_remove_user";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = this.current_user;
        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

            this.pvar.compile();

          } else {

            window.status = "remove_user(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end remove_user()

    render_all_users: function () {

      if (this.user_list_all) {

        var output = "";

        for (var i in this.user_list_all) {

          if ((typeof this.user_list_all[i]) != "function") {

            output += '<div style="border-bottom: 1px dashed #c0c0c0; padding: 5px;"><img style="vertical-align: middle;" border="0" src="images/images/user.gif" width="16" height="16"> <span style="cursor: pointer;" onclick="Basis.misc_vars.user_manager.import_user('+this.user_list_all[i]["id"]+');">'+this.user_list_all[i]["username"]+'</span></div>';

          } // end if

        } // end for

        output = '<div style="border: 1px solid #c0c0c0; background-color: #f5f5f5; padding: 5px; width: 300px;">\
                    <div id="user_list_all" style="border: 1px solid #c0c0c0; background-color: #ffffff; padding: 0px; overflow: auto; height: 200px;">'+output+'</div>\
                  </div>';

        var obj = MochiKit.DOM.getElement(this.all_users_popup_id);

        if (!obj) {

          this.all_users_popup = Basis.popup({"id"           : this.all_users_popup_id,
                                              "html"         : output,
                                              "window_title" : "All Users in Organization"
                                             });

        } else {

          this.all_users_popup.html_container.innerHTML = output;

        } // end if

      } // end if

    }, // end render_all_users()

    render_users: function () {

      if (this.user_list && this.form_html) {

        var output = "";

        for (var i in this.user_list) {

          if ((typeof this.user_list[i]) != "function") {

            output += '<div style="border-bottom: 1px dashed #c0c0c0; padding: 5px;"><img style="vertical-align: middle;" border="0" src="images/images/user.gif" width="16" height="16"> <span style="cursor: pointer;" onclick="Basis.misc_vars.user_manager.get_user_info('+this.user_list[i]["id"]+');">'+this.user_list[i]["username"]+'</span></div>';

          } // end if

        } // end for

        var obj = MochiKit.DOM.getElement("user_list");

        if (obj) {

          obj.innerHTML = output;

          Basis.execute_javascript(obj);

        } // end if

      } // end if

    }, // end render_users()

    save_user_info: function (user_id) {

      if (user_id) {

        var rrv_run = 999999;

        var to_post        = new Object();
        to_post["user_id"] = user_id;
        to_post["site_id"] = this.site_id;

        var obj = MochiKit.DOM.getElement("username_"+rrv_run);
        if (obj) { to_post["username"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("password_"+rrv_run);
        if (obj) { to_post["password"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("user_level_"+rrv_run);
        if (obj.selectedIndex) {

          to_post["user_level"] = obj.options[obj.selectedIndex].value;

        } else {

          to_post["user_level"] = obj.options[0].value;

        } // end if

        this.user_info[user_id]["user_level"] = to_post["user_level"];


        to_post["contact_info"] = new Object();

        var obj = MochiKit.DOM.getElement("contact_name_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_name"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_email_address_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_email_address"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_phone_number1_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_phone_number1"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_phone_number2_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_phone_number2"] = obj.value; } // end if

        var obj = MochiKit.DOM.getElement("contact_notes_"+rrv_run);
        if (obj) { to_post["contact_info"]["contact_notes"] = obj.value; } // end if


        window.status = "Saving user info...";

        var as     = new Basis.ajax_scaffold;
        as.alias   = "user_management_save_user_info";
        as.sid     = this.sid;
        as.url     = this.self_url;

        as.user_id = user_id;

        as.pvar    = this;

        as.on_success = function (req) {

          var response = MochiKit.Base.evalJSON(decodeBase64(req.responseText));

          if (response["text"]=="true") {

            window.status  = "Done";

          } else {

            window.status = "save_user_info(): ERROR!";

          } // end if

        };

        return as.post({"to_post":to_post});

      } // end if

    }, // end save_user_info()

    show_all_users: function () {

      var d1 = this.get_all_users();
      d1.addCallback(MochiKit.Base.bind(this.render_all_users,this));

    } // end show_all_users()

  }; // end class Basis.admin.user_management

  Basis.ajax_form_post = function () {

    this.__init__();

  }; // end class Basis.ajax_form_post

  Basis.ajax_form_post.instances = [];

  Basis.ajax_form_post.prototype = {

    __init__: function () {

      this.sid;
      this.form_data;
      this.form_element;
      this.origin_element;
      this.status_element;

      this.is_posting = false;

      this.progress_element = "progress_element";

      this.on_success       = function () { return; };

      this.index            = Basis.ajax_form_post.instances.length;
      Basis.ajax_form_post.instances[this.index] = this;

    }, // end __init__()

    compile: function(origin_element) {

      if (!this.is_posting && this.sid && this.form_element && MochiKit.DOM.getElement(this.form_element)) {

        if (origin_element && MochiKit.DOM.getElement(origin_element)) {

          this.origin_element = origin_element;
          MochiKit.DOM.getElement(origin_element).disabled = true;

        } // end if

        var action     = MochiKit.DOM.getElement(this.form_element).action;

        this.form_data = MochiKit.DOM.formContents(this.form_element);

        this.form_data[0][this.form_data[0].length] = "PHPSESSID";
        this.form_data[1][this.form_data[1].length] = this.sid;

        this.form_data[0][this.form_data[0].length] = "exit_after_catch";
        this.form_data[1][this.form_data[1].length] = "true";

        window.status = "Auto-saving...";

        this.create_progress_bar();
        this.is_posting = true;

        AjaxRequest.progress_object = Basis.ajax_form_post.instances[this.index];

        setTimeout(function () {

          AjaxRequest.post({

            'url'         : action,
            'queryString' : MochiKit.Base.queryString(AjaxRequest.progress_object.form_data[0],AjaxRequest.progress_object.form_data[1]),
            'onSuccess'   : function(req) {

                              AjaxRequest.progress_object.on_success();

                              MochiKit.DOM.getElement(AjaxRequest.progress_object.progress_element+"_message").innerHTML = "<b>Success!</b>";
                              MochiKit.DOM.getElement(AjaxRequest.progress_object.progress_element+"_image").innerHTML   = "&nbsp;";

                              setTimeout(function () {

                                           MochiKit.Visual.toggle(AjaxRequest.progress_object.progress_element+"_under","appear",{"duration":0.25});
                                           MochiKit.Visual.toggle(AjaxRequest.progress_object.progress_element,"appear",{"duration":0.25});

                                           if (AjaxRequest.progress_object.origin_element && MochiKit.DOM.getElement(AjaxRequest.progress_object.origin_element)) {

                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.origin_element).disabled = false;

                                           } // end if

                                           if (AjaxRequest.progress_object.forms_container_element && MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element)) {

                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element).innerHTML = "";
                                             MochiKit.DOM.getElement(AjaxRequest.progress_object.forms_container_element).innerHTML = req.responseText;

                                             Basis.execute_javascript(AjaxRequest.progress_object.forms_container_element);

                                           } // end if

                                           window.status = "Done";

                                           AjaxRequest.progress_object.is_posting = false;

                                         },0);

                            }
          });

        },0);

      } // end if

    }, // end compile()

    create_progress_bar: function () {

      var screend = MochiKit.Style.getViewportDimensions();
      var scroll  = Basis.scroll_coords();

// =================

      if (!MochiKit.DOM.getElement(this.progress_element+"_under")) {

        var progress_element_under = new MochiKit.DOM.DIV({"id":this.progress_element+"_under","style":"display:none; background-color: #000000; position: absolute;"},null);

      } else {

        var progress_element_under = MochiKit.DOM.getElement(this.progress_element+"_under");

      } // end if

      document.body.appendChild(progress_element_under);

      MochiKit.DOM.getElement(this.progress_element+"_under").style.height = "75";

      var progressd = MochiKit.Style.getElementDimensions(this.progress_element+"_under");

      to_pos    = new Object;
      to_pos.x  = 0 + scroll.x;
      to_pos.y  = (screend.h/2)-(progressd.h/2) + scroll.y;

      MochiKit.DOM.getElement(this.progress_element+"_under").style.width  = screend.w;

      MochiKit.Style.setElementPosition(this.progress_element+"_under", to_pos);

// =================

      if (!MochiKit.DOM.getElement(this.progress_element)) {

        var progress_element = new MochiKit.DOM.DIV({"id":this.progress_element,"style":"display:none; background-color: #FFFFFF; position: absolute; border-top: 1px solid #000000; border-bottom: 1px solid #000000"},null);

      } else {

        var progress_element = MochiKit.DOM.getElement(this.progress_element);

      } // end if

      document.body.appendChild(progress_element);

      MochiKit.DOM.getElement(this.progress_element).innerHTML    = '<div id="'+this.progress_element+'_message" style="text-align: center; padding: 5px;"><b>Please wait while your document saves...</b></div><div id="'+this.progress_element+'_image" style="text-align: center; padding: 5px;"><img src="images/images/ajax_loading.gif"></div>';
      MochiKit.DOM.getElement(this.progress_element).style.height = "50";

      var progressd = MochiKit.Style.getElementDimensions(this.progress_element);

      to_pos    = new Object;
      to_pos.x  = 0 + scroll.x;
      to_pos.y  = (screend.h/2)-(progressd.h/2) + scroll.y;

      MochiKit.DOM.getElement(this.progress_element).style.width  = screend.w;

      MochiKit.Style.setElementPosition(this.progress_element, to_pos);

// =================

      MochiKit.Visual.toggle(this.progress_element+"_under","appear",{"duration":0.25,"to":0.50});
      MochiKit.Visual.toggle(this.progress_element,"appear",{"duration":0.25});

    } // end create_progress_bar()

  }; // end class Basis.ajax_form_post

  Basis.decode_html_entities = function (string) {

    if (string) {

      var htmlentities = {"nbsp":160,
                          "iexcl":161,
                          "cent":162,
                          "pound":163,
                          "curren":164,
                          "yen":165,
                          "brvbar":166,
                          "sect":167,
                          "uml":168,
                          "copy":169,
                          "ordf":170,
                          "laquo":171,
                          "not":172,
                          "shy":173,
                          "reg":174,
                          "macr":175,
                          "deg":176,
                          "plusmn":177,
                          "sup2":178,
                          "sup3":179,
                          "acute":180,
                          "micro":181,
                          "para":182,
                          "middot":183,
                          "cedil":184,
                          "sup1":185,
                          "ordm":186,
                          "raquo":187,
                          "frac14":188,
                          "frac12":189,
                          "frac34":190,
                          "iquest":191,
                          "Agrave":192,
                          "Aacute":193,
                          "Acirc":194,
                          "Atilde":195,
                          "Auml":196,
                          "Aring":197,
                          "AElig":198,
                          "Ccedil":199,
                          "Egrave":200,
                          "Eacute":201,
                          "Ecirc":202,
                          "Euml":203,
                          "Igrave":204,
                          "Iacute":205,
                          "Icirc":206,
                          "Iuml":207,
                          "ETH":208,
                          "Ntilde":209,
                          "Ograve":210,
                          "Oacute":211,
                          "Ocirc":212,
                          "Otilde":213,
                          "Ouml":214,
                          "times":215,
                          "Oslash":216,
                          "Ugrave":217,
                          "Uacute":218,
                          "Ucirc":219,
                          "Uuml":220,
                          "Yacute":221,
                          "THORN":222,
                          "szlig":223,
                          "agrave":224,
                          "aacute":225,
                          "acirc":226,
                          "atilde":227,
                          "auml":228,
                          "aring":229,
                          "aelig":230,
                          "ccedil":231,
                          "egrave":232,
                          "eacute":233,
                          "ecirc":234,
                          "euml":235,
                          "igrave":236,
                          "iacute":237,
                          "icirc":238,
                          "iuml":239,
                          "eth":240,
                          "ntilde":241,
                          "ograve":242,
                          "oacute":243,
                          "ocirc":244,
                          "otilde":245,
                          "ouml":246,
                          "divide":247,
                          "oslash":248,
                          "ugrave":249,
                          "uacute":250,
                          "ucirc":251,
                          "uuml":252,
                          "yacute":253,
                          "thorn":254,
                          "yuml":255,
                          "fnof":402,
                          "Alpha":913,
                          "Beta":914,
                          "Gamma":915,
                          "Delta":916,
                          "Epsilon":917,
                          "Zeta":918,
                          "Eta":919,
                          "Theta":920,
                          "Iota":921,
                          "Kappa":922,
                          "Lambda":923,
                          "Mu":924,
                          "Nu":925,
                          "Xi":926,
                          "Omicron":927,
                          "Pi":928,
                          "Rho":929,
                          "Sigma":931,
                          "Tau":932,
                          "Upsilon":933,
                          "Phi":934,
                          "Chi":935,
                          "Psi":936,
                          "Omega":937,
                          "alpha":945,
                          "beta":946,
                          "gamma":947,
                          "delta":948,
                          "epsilon":949,
                          "zeta":950,
                          "eta":951,
                          "theta":952,
                          "iota":953,
                          "kappa":954,
                          "lambda":955,
                          "mu":956,
                          "nu":957,
                          "xi":958,
                          "omicron":959,
                          "pi":960,
                          "rho":961,
                          "sigmaf":962,
                          "sigma":963,
                          "tau":964,
                          "upsilon":965,
                          "phi":966,
                          "chi":967,
                          "psi":968,
                          "omega":969,
                          "thetasym":977,
                          "upsih":978,
                          "piv":982,
                          "bull":8226,
                          "hellip":8230,
                          "prime":8242,
                          "Prime":8243,
                          "oline":8254,
                          "frasl":8260,
                          "weierp":8472,
                          "image":8465,
                          "real":8476,
                          "trade":8482,
                          "alefsym":8501,
                          "larr":8592,
                          "uarr":8593,
                          "rarr":8594,
                          "darr":8595,
                          "harr":8596,
                          "crarr":8629,
                          "lArr":8656,
                          "uArr":8657,
                          "rArr":8658,
                          "dArr":8659,
                          "hArr":8660,
                          "forall":8704,
                          "part":8706,
                          "exist":8707,
                          "empty":8709,
                          "nabla":8711,
                          "isin":8712,
                          "notin":8713,
                          "ni":8715,
                          "prod":8719,
                          "sum":8721,
                          "minus":8722,
                          "lowast":8727,
                          "radic":8730,
                          "prop":8733,
                          "infin":8734,
                          "ang":8736,
                          "and":8743,
                          "or":8744,
                          "cap":8745,
                          "cup":8746,
                          "int":8747,
                          "there4":8756,
                          "sim":8764,
                          "cong":8773,
                          "asymp":8776,
                          "ne":8800,
                          "equiv":8801,
                          "le":8804,
                          "ge":8805,
                          "sub":8834,
                          "sup":8835,
                          "nsub":8836,
                          "sube":8838,
                          "supe":8839,
                          "oplus":8853,
                          "otimes":8855,
                          "perp":8869,
                          "sdot":8901,
                          "lceil":8968,
                          "rceil":8969,
                          "lfloor":8970,
                          "rfloor":8971,
                          "lang":9001,
                          "rang":9002,
                          "loz":9674,
                          "spades":9824,
                          "clubs":9827,
                          "hearts":9829,
                          "diams":9830,
                          "quot":34,
                          "amp":38,
                          "lt":60,
                          "gt":62,
                          "OElig":338,
                          "oelig":339,
                          "Scaron":352,
                          "scaron":353,
                          "Yuml":376,
                          "circ":710,
                          "tilde":732,
                          "ensp":8194,
                          "emsp":8195,
                          "thinsp":8201,
                          "zwnj":8204,
                          "zwj":8205,
                          "lrm":8206,
                          "rlm":8207,
                          "ndash":8211,
                          "mdash":8212,
                          "lsquo":8216,
                          "rsquo":8217,
                          "sbquo":8218,
                          "ldquo":8220,
                          "rdquo":8221,
                          "bdquo":8222,
                          "dagger":8224,
                          "Dagger":8225,
                          "permil":8240,
                          "lsaquo":8249,
                          "rsaquo":8250,
                          "euro":8364};

      var return_string = string;

      for (var i in htmlentities) {

        return_string = return_string.replace(new RegExp( ("&"+i+";"), "gi" ), String.fromCharCode(htmlentities[i]));

      } // end for

    } // end if

    return return_string;

  }; // end Basis.decode_html_entities()

  Basis.execute_javascript = function (element) {

    var element = MochiKit.DOM.getElement(element);

    if (element) {

      var st = element.getElementsByTagName("SCRIPT");
      var string_to_execute;

      for (var i=0;i<st.length; i++) {

        string_to_execute = st[i].innerHTML;

        try {

          eval(string_to_execute.split("<!--").join("").split("-->").join(""));

        } catch(e) {

          MochiKit.Logging.log(e);

        } // end try

      } // end for

    } // end if

  }; // end Basis.execute_javascript()

  Basis.image_rotator = function (element, array, options) {

    /*

      argument in this format:

      element = id of image to swap with

      array( "URL",
             "URL2",
           );

    */

    var options = options ? options : {};

    var d       = MochiKit.DOM.currentDocument();

    if (d.images) {

      if (!d.preloaded_images)           { d.preloaded_images           = new Object(); } // end if
      if (!d.preloaded_images["rotate"]) { d.preloaded_images["rotate"] = new Array();  } // end if

      var fade     = options["fade"] ? true : false;
      var duration = options["duration"] ? options["duration"] : 2000;

      var index = d.preloaded_images["rotate"].length;
      var obj   = MochiKit.DOM.getElement(element);

      d.preloaded_images["rotate"][index]    = new Array();
      d.preloaded_images["rotate"][index][0] = element;

      if (obj) {

        if (fade) {

          var image_dimensions = MochiKit.Style.getElementDimensions(obj);

          var layer_a   = DIV({"style" : "position: absolute; top: 0px; left: 0px; display: none;"});
          var layer_b   = DIV({"style" : "position: absolute; top: 0px; left: 0px; display: none;"});
          var container = DIV({"style" : "overflow: hidden; position: relative;"});
          var obj_b     = IMG({"src" : obj.src});

          MochiKit.Style.setElementDimensions(container, image_dimensions);
          MochiKit.Style.setElementDimensions(layer_a, image_dimensions);
          MochiKit.Style.setElementDimensions(layer_b, image_dimensions);

          MochiKit.Style.setOpacity(layer_a, 100);
          MochiKit.Style.setOpacity(layer_b, 0);

          obj.parentNode.insertBefore(container, obj);

          layer_a.appendChild(obj);
          layer_b.appendChild(obj_b);

          container.appendChild(layer_a);
          container.appendChild(layer_b);
 
          layer_a.style.display = "";
          layer_b.style.display = "";

        } // end if

        for (var i in array) {

          var idx = d.preloaded_images["rotate"][index].length;

          d.preloaded_images["rotate"][index][idx]     = new Image();
          d.preloaded_images["rotate"][index][idx].src = array[i];

        } // end for

        if (fade) {

          obj.rotate = MochiKit.Base.bind(function (index, idx) {

            var d = MochiKit.DOM.currentDocument();

            var current_image = (this.layer_a.style.display == "none") ? this.image_b : this.image_a;
            var swap_to_image = (current_image == this.image_a) ? this.image_b : this.image_a;

            if (d.preloaded_images["rotate"][index][idx] && d.preloaded_images["rotate"][index][idx].src) {

              swap_to_image.src = d.preloaded_images["rotate"][index][idx].src;

              MochiKit.Visual.fade(current_image.parentNode, 0, {"duration" : 0.50, "afterFinish" : MochiKit.Base.bind(function () { this.style.display = "none"; }, current_image)});
              MochiKit.Visual.appear(swap_to_image.parentNode, 100, {"duration" : 0.50, "afterFinish" : MochiKit.Base.bind(function () { this.style.display = ""; }, swap_to_image)});

            } // end if

            var max = d.preloaded_images["rotate"][index].length;

            if (idx == (max-1)) {

              var nidx = 1;

            } else {

              var nidx = idx+1;

            } // end if

            setTimeout(("MochiKit.DOM.getElement('"+ this.element.id +"').rotate("+ index +","+ nidx +");"), duration);

          }, {"element" : obj,
              "layer_a" : layer_a,
              "layer_b" : layer_b,
              "image_a" : obj,
              "image_b" : obj_b}); // end rotate()

        } else {

          obj.rotate = function (index, idx) {

            var element = MochiKit.DOM.getElement(d.preloaded_images["rotate"][index][0]);

            if (element) {

              if (d.preloaded_images["rotate"][index][idx] && d.preloaded_images["rotate"][index][idx].src) {

                element.src = d.preloaded_images["rotate"][index][idx].src;

              } // end if

              var max = d.preloaded_images["rotate"][index].length;

              if (idx == (max-1)) {

                var nidx = 1;

              } else {

                var nidx = idx+1;

              } // end if

              setTimeout(("MochiKit.DOM.getElement('"+ element.id +"').rotate("+ index +","+ nidx +");"), duration);

            } // end if

          }; // end rotate()

        } // end if

        if (d.preloaded_images["rotate"][index].length > 1) {

          obj.rotate(index, 1);

        } // end if

      } // end if

    } // end if

  }; // end Basis.image_rotator()

  Basis.load_rollover_images = function (array) {

    /*

      argument in this format:

      array( array("id"  => IMG_ID,
                   "off" => URL,
                   "on"  => URL,
                   "ids" => array() of additional id's to attach events to,
                   "link_image" => true/false
                  ),
             array(),
           );

    */

    var d = MochiKit.DOM.currentDocument();

    if (d.images) {

      if (!d.preloaded_images) { d.preloaded_images = new Object(); } // end if

      for (var i in array) {

        if (array[i]["id"] && MochiKit.DOM.getElement(array[i]["id"])) {

          d.preloaded_images[array[i]["id"]]         = new Object();
          d.preloaded_images[array[i]["id"]].off     = new Image();
          d.preloaded_images[array[i]["id"]].off.src = array[i]["off"];
          d.preloaded_images[array[i]["id"]].on      = new Image();
          d.preloaded_images[array[i]["id"]].on.src  = array[i]["on"];

          var obj = MochiKit.DOM.getElement(array[i]["id"]);

          if (obj) {

            obj.do_not_swap = false;

            obj.set = function (toggle) {

              if (!this.do_not_swap) {

                if (toggle == "on") {

                  this.src = d.preloaded_images[this.id].on.src;

                } else if (toggle == "off") {

                  this.src = d.preloaded_images[this.id].off.src;

                } // end if

              } // end if

            } // end set()

            obj.swap = function (toggle) {

              if (!this.do_not_swap) {

                if ((this.src == d.preloaded_images[this.id].off.src) || (toggle == "on")) {

                  this.src = d.preloaded_images[this.id].on.src;

                } else {

                  this.src = d.preloaded_images[this.id].off.src;

                } // end if

              } // end if

            } // end swap()

            if (!array[i]["noswap"] && (array[i]["link_image"] != false)) {

              // USED TO BE ONMOUSEENTER / ONMOUSELEAVE; INTERFERED WITH Basis.load_rollover_images()

              MochiKit.Signal.connect(obj,"onmouseover",function () { this.swap("on"); });
              MochiKit.Signal.connect(obj,"onmouseout",function () { this.swap("off"); });

            } // end if

          } // end if

          if (array[i]["ids"]) {

            for (var x in array[i]["ids"]) {

              var eobj = MochiKit.DOM.getElement(array[i]["ids"][x]);

              if (eobj) {

                MochiKit.Signal.connect(eobj,"onmouseover",obj,function () { this.swap("on"); });
                MochiKit.Signal.connect(eobj,"onmouseout",obj,function () { this.swap("off"); });

              } // end if

            } // end for

          } // end if

        } // end if

      } // end for

    } // end if

  }; // end Basis.load_rollover_images()

  Basis.populator = function () {

    this.__init__();

  }; // end gallery()

  Basis.populator.instances = [];

  Basis.populator.prototype = {

    __init__: function () {

      this.dropdown_a                       = '';
      this.dropdown_b                       = new Array;

      this.rrv_run                          = -1;

      this.populate_array                   = new Object;

      this.index                            = Basis.populator.instances.length;
      Basis.populator.instances[this.index] = this;

    }, // end __init__()

    add_dropdown_b: function (element) {

      this.dropdown_b[this.dropdown_b.length] = element;

    }, // end add_dropdown_b()

    populate: function (ddb,to_oidx) {

      var opopulate_array;

      if (typeof this.populate_array == "object") {

        opopulate_array = this.populate_array;

      } else {

        opopulate_array     = MochiKit.Base.evalJSON(decodeBase64(this.populate_array));
        this.populate_array = opopulate_array;

      } // end if

      var i_ddb_idx = false;

      for (var tddb in this.dropdown_b) {

        if (this.dropdown_b[tddb] == ddb) {

          i_ddb_idx = tddb;

        } // end if

      } // end for

      if (this.dropdown_b[tddb]) {

        ddb_idx = this.dropdown_b[i_ddb_idx].substring(0,(this.dropdown_b[i_ddb_idx].length-this.rrv_run.length-1));

        if (this.dropdown_a && this.populate_array) {

          var to             = document.getElementById(this.dropdown_b[i_ddb_idx]);
          var indexes        = {"from" : document.getElementById(this.dropdown_a).options[document.getElementById(this.dropdown_a).selectedIndex].value,
                                "to"   : to.selectedIndex
                               };

          populate_array     = ((opopulate_array[ddb_idx] && opopulate_array[ddb_idx][indexes.from]) ? opopulate_array[ddb_idx][indexes.from] : []);
          to.options.length  = 0;
          x                  = 0;

          for (var i in populate_array) {

            to.options[x] = new Option(populate_array[i],i);
            x++;

          } // end for

          if (to_oidx) {

            to.selectedIndex = to_oidx;

          } // end if

        } // end if

      } // end if

    }, // end populate()

    set_onchange: function (ddb) {

      var tfunc = new Function('Basis.populator.instances['+this.index+'].populate(\''+ddb+'\');');

      MochiKit.Signal.connect(this.dropdown_a,'onchange',tfunc);

    } // end set_onchange()

  }; // end class Basis.populator

  Basis.scroll_coords = function () {

    var scroll_x, scroll_y;

    if (self.pageYOffset) {

      scroll_x = self.pageXOffset;
      scroll_y = self.pageYOffset;

    } else if (document.documentElement && document.documentElement.scrollTop) {

      scroll_x = document.documentElement.scrollLeft;
      scroll_y = document.documentElement.scrollTop;

    } else if (document.body) {

      scroll_x = document.body.scrollLeft;
      scroll_y = document.body.scrollTop;

    } // end if

    return {"x":scroll_x,"y":scroll_y};

  }; // end Basis.scroll_coords()

  Basis.submenu = function () {

    this.__init__();

  }; // end Basis.submenu()

  Basis.submenu.attachments = new Object();

  Basis.submenu.prototype = {

    __init__: function () {

      this.parent;
      this.children = new Array();

      this.menu_title;
      this.menu_link;

    }, // end __init__()

    add_menu_item: function(title,link) {

      var menu_item        = new Basis.submenu();

      menu_item.parent     = this;
      menu_item.menu_title = title;
      menu_item.menu_link  = link;

      this.children[this.children.length] = menu_item;

      return this.children[this.children.length-1];

    }, // end add_menu_item()

    clear_parent_timeouts: function () {

      if (this.id) {

        if (this.id != this.parent_element) {

          var container_id = this.id.split('_');
          container_id     = container_id[container_id.length-1];
          container_id     = this.id.substring(0,(this.id.length-container_id.length-1))+'_container';

        } else {

          var container_id = this.parent_element;

        } // end if

        MochiKit.Logging.log('clearTimeout(MochiKit.DOM.getElement('+container_id+').timeout);\n');
        clearTimeout(MochiKit.DOM.getElement(container_id).timeout);

      } // end if

      if (this.parent && (this.parent.id != this.id)) {

        this.parent.clear_parent_timeouts();

      } else {

        return;

      } // end if

    }, // end clear_parent_timeouts()

    compile: function (x) {

      var output = '';

      if (!x) {

        x = 0;

      } // end if

      if (!this.id && !this.parent && !this.container_id) {

        this.id           = this.parent_element;
        this.container_id = 'submenu_0_container';
        this.parent       = this;

      } // end if

      if (!Basis.submenu.attachments[this.id]) {

        Basis.submenu.attachments[this.id] = new Object();

      } // end if

      output += '<div id="submenu_'+x+'_container" class="menu_container">\n';

      Basis.submenu.attachments[this.id]['onmouseover'] = 'MochiKit.Signal.connect(\''+this.id+'\',\'onmouseover\',function () { MochiKit.Style.showElement(\'submenu_'+x+'_container\'); clearTimeout(MochiKit.DOM.getElement(\'submenu_'+x+'_container\').timeout); });\n';
//    Basis.submenu.attachments[this.id]['onmouseout']  = 'MochiKit.Signal.connect(\''+this.id+'\',\'onmouseout\', function () { MochiKit.DOM.getElement(\'submenu_'+x+'_container\').timeout = setTimeout("MochiKit.Style.hideElement(\'submenu_'+x+'_container\');",1000); });\n';

      if (this.children && (this.children.length>0)) {

        for (var i in this.children) {

          var element                   = 'submenu_'+x;
          this.children[i].id           = 'submenu_'+x+'_'+i;
          this.children[i].container_id = 'submenu_'+x+'_container';

          output += '<div id="'+this.children[i].id+'"><a href="'+this.children[i].menu_link+'">'+this.children[i].menu_title+'</a></div>\n';

          if (this.children[i].children && (this.children[i].children.length>0)) {

            output += this.children[i].compile(x+1);

          } // end if

        } // end for

      } // end if

      output += "</div>\n";

      return output;

    }, // end compile()

    find_node: function (node) {

      var obj = this;

      if (is_array(node)) {

        for (var i in node) {

          if (obj && obj.children && (obj.children.length>0) && obj.children[node[i]]) {

            obj = obj.children[node[i]];

          } // end if

        } // end for

        return obj;

      } // end if

    }, // end find_node()

    find_node_by_id: function (id) {

      var to_return;

      if (this.id == id) {

        return this;

      } else {

        if (this && this.children && (this.children.length>0)) {

          for (var i in this.children) {

            to_return = this.children[i].find_node_by_id(id);

          } // end for

        } // end if

      } // end if

      return to_return;

    } // end find_node_by_id()

  }; // end class Basis.submenu

  Basis.timeout = function () {

    alert('You have been idle for too long. Please \'Save\' the record that you currently have open!');

  }; // end Basis.timeout()

  Basis.mouse_coords = function (e) {

    var posx = 0;
    var posy = 0;

    if (!e) { var e = window.event; } // end if

    if (e.pageX || e.pageY) {

      posx = e.pageX;
      posy = e.pageY;

    } else if (e.clientX || e.clientY) {

      posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
      posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;

    } // end if

    return {"x":posx,"y":posy};

  }; // end Basis.mouse_coords()

  Basis.array_length = function (element) {

    var x = 0;

    if (element) {

      switch (typeof(element)) {

        case "string":
        case "number":
        case "function":
        case "boolean":
        case "undefined":

          return x;

          break;

      } // end switch

      for (var i in element) {

        if (typeof(element[i]) != "function") {

          x++;

        } // end if

      } // end for

    } // end if

    return x;

  }; // end Basis.array_length()

  Basis.confirm = function (options) {

    var default_options = { "window_title"       : "&nbsp;",
                            "variable_title"     : "&nbsp;",
                            "ivalue"             : "",
                            "target"             : null,
                            "button_ok_text"     : "OK",
                            "button_cancel_text" : "Cancel",
                            "on_true"            : function () { return true;  },
                            "on_false"           : function () { return false; }
                          };

    // ===============================================================

      if (!options) {

        var options = {};

      } // end if

      for (var i in default_options) {

        if (!options[i]) {

          options[i] = default_options[i];

        } // end if

      } // end for

    // ===============================================================

    var confirm_id = "Basis_confirm_987654321";
    var obj        = MochiKit.DOM.getElement(confirm_id);

    if (!options["target"]) {

      options["target"] = confirm_id;

    } else {

      options["target"] = MochiKit.DOM.getElement(options["target"]).id;

      if (!options["target"]) {

        options["target"] = confirm_id;

      } // end if

    } // end if

    if (!obj) {

      // ===============================================================

        MochiKit.Signal.disconnect(Basis.misc_vars.confirm_true_signal);
        MochiKit.Signal.disconnect(Basis.misc_vars.confirm_false_signal);

        delete Basis.misc_vars.confirm_true_signal;
        delete Basis.misc_vars.confirm_false_signal;

      // ===============================================================

      options["html"] = '<div id="'+confirm_id+'_variable_title" style="display: inline; padding-right: 10px;">'+options["variable_title"]+'</div>\
                         <div class="win32_block" style="text-align: right;"> \
                           <input id="'+confirm_id+'_ok" type="button" class="win32_button" value="'+options["button_ok_text"]+'" onclick="MochiKit.Signal.signal(\''+options["target"]+'\',\'on_true\'); MochiKit.DOM.removeElement(\''+confirm_id+'\');"> \
                           <input id="'+confirm_id+'_cancel" type="button" class="win32_button" value="'+options["button_cancel_text"]+'" onclick="MochiKit.Signal.signal(\''+options["target"]+'\',\'on_false\'); MochiKit.DOM.removeElement(\''+confirm_id+'\');"> \
                         </div>';

      Basis.popup({"id"           : confirm_id,
                   "html"         : options["html"],
                   "style"        : options["style"],
                   "window_title" : options["window_title"]
                  });

      if (!Basis.misc_vars.confirm_true_signal) {

        Basis.misc_vars.confirm_true_signal   = MochiKit.Signal.connect(options["target"],"on_true",options["on_true"]);

      } // end if

      if (!Basis.misc_vars.confirm_false_signal) {

        Basis.misc_vars.confirm_false_signal  = MochiKit.Signal.connect(options["target"],"on_false",options["on_false"]);

      } // end if

      return true;

    } else {

      return false;

    } // end if

  }; // end Basis.confirm()

  Basis.prompt = function (options) {

    var default_options = { "window_title"       : "&nbsp;",
                            "variable_title"     : "&nbsp;",
                            "ivalue"             : "",
                            "target"             : null,
                            "button_ok_text"     : "OK",
                            "button_cancel_text" : "Cancel",
                            "on_true"            : function () { return true;  },
                            "on_false"           : function () { return false; }
                          };

    // ===============================================================

      if (!options) {

        var options = {};

      } // end if

      for (var i in default_options) {

        if (!options[i]) {

          options[i] = default_options[i];

        } // end if

      } // end for

    // ===============================================================

    var prompt_id = "Basis_prompt_987654321";
    var obj       = MochiKit.DOM.getElement(prompt_id);

    if (!options["target"]) {

      options["target"] = prompt_id;

    } else {

      options["target"] = MochiKit.DOM.getElement(options["target"]).id;

      if (!options["target"]) {

        options["target"] = prompt_id;

      } // end if

    } // end if

    if (!obj) {

      // ===============================================================

        MochiKit.Signal.disconnect(Basis.misc_vars.prompt_true_signal);
        MochiKit.Signal.disconnect(Basis.misc_vars.prompt_false_signal);

        delete Basis.misc_vars.prompt_true_signal;
        delete Basis.misc_vars.prompt_false_signal;
        delete Basis.misc_vars.prompt_value;

      // ===============================================================

      options["html"] = '<div id="'+prompt_id+'_variable_title" style="display: inline; padding-right: 10px;">'+options["variable_title"]+'</div><input type="text" id="'+prompt_id+'_input" value="'+options["ivalue"]+'" style="width: 125px;">\
                         <div class="win32_block" style="text-align: right;"> \
                           <input id="'+prompt_id+'_ok" type="button" class="win32_button" value="OK" onclick="Basis.misc_vars.prompt_value = MochiKit.DOM.getElement(\''+prompt_id+'_input\').value; MochiKit.Signal.signal(\''+options["target"]+'\',\'on_true\'); MochiKit.DOM.removeElement(\''+prompt_id+'\');"> \
                           <input id="'+prompt_id+'_cancel" type="button" class="win32_button" value="Cancel" onclick="Basis.misc_vars.prompt_value = null; MochiKit.Signal.signal(\''+options["target"]+'\',\'on_false\'); MochiKit.DOM.removeElement(\''+prompt_id+'\');"> \
                         </div>';

      Basis.popup({"id"           : prompt_id,
                   "html"         : options["html"],
                   "style"        : options["style"],
                   "window_title" : options["window_title"]
                  });

      if (!Basis.misc_vars.prompt_true_signal) {

        Basis.misc_vars.prompt_true_signal   = MochiKit.Signal.connect(options["target"],"on_true",options["on_true"]);

      } // end if

      if (!Basis.misc_vars.prompt_false_signal) {

        Basis.misc_vars.prompt_false_signal  = MochiKit.Signal.connect(options["target"],"on_false",options["on_false"]);

      } // end if

      return true;

    } else {

      return false;

    } // end if

  }; // end Basis.prompt()

  Basis.align_element_to_element = function (element, dest, how, offset, animation, duration) {

    var element = MochiKit.DOM.getElement(element);
    var dest    = MochiKit.DOM.getElement(dest);

    if (element && dest && how) {

      // MochiKit.Style.getElementPosition won't return coordinates if element.style.display = "none";
      //   if that's the case, need to make them completely transparent but display = ""

      // MochiKit.Style.getOpacity doesn't exist, so I need to write Basis.get_opacity and use that in
      // the commented-out sections below

      var e_disp    = element.style.display;
//    var e_opacity = MochiKit.Style.getOpacity(element);
      var d_disp    = dest.style.display;
//    var d_opacity = MochiKit.Style.getOpacity(dest);

      if (e_disp == "none") {

//      MochiKit.Style.setOpacity(element,0);
        element.style.display = "";

      } // end if

      if (d_disp == "none") {

//      MochiKit.Style.setOpacity(dest,0);
        element.style.display = "";

      } // end if

      var e_pos    = MochiKit.Style.getElementPosition(element);
      var e_dim    = MochiKit.Style.getElementDimensions(element);
      var d_pos    = MochiKit.Style.getElementPosition(dest);
      var d_dim    = MochiKit.Style.getElementDimensions(dest);
      var d_anchor = {};

      if (e_pos && e_dim && d_pos && d_dim) {

        switch (how) {

          case "center":

            var e_center = {"x" : e_pos.x + Math.floor(e_dim.w / 2),
                            "y" : e_pos.y + Math.floor(e_dim.h / 2)};

            var d_center = {"x" : d_pos.x + Math.floor(d_dim.w / 2),
                            "y" : d_pos.y + Math.floor(d_dim.h / 2)};

            var d_anchor = {"x" : (d_center.x - (e_center.x - e_pos.x)),
                            "y" : (d_center.y - (e_center.y - e_pos.y))};

            break;

          case "bottom_to_top":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y + (d_pos.y - e_pos.y - e_dim.h)};

            break;

          case "bottom_to_bottom":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y - ((e_pos.y + e_dim.h) - (d_pos.y + d_dim.h))};

            break;

          case "top_to_bottom":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y + (d_pos.y - e_pos.y + d_dim.h)};

            break;

          case "top_to_top":

            var d_anchor = {"x" : e_pos.x,
                            "y" : e_pos.y - (e_pos.y - d_pos.y)};

            break;

          case "left_to_right":

            var d_anchor = {"x" : e_pos.x + (d_pos.x - e_pos.x + e_dim.w),
                            "y" : e_pos.y};

            break;

          case "left_to_left":

            var d_anchor = {"x" : d_pos.x,
                            "y" : e_pos.y};

            break;

          case "right_to_left":

            var d_anchor = {"x" : e_pos.x + (d_pos.x - e_pos.x - e_dim.w),
                            "y" : e_pos.y};

            break;

          case "right_to_right":

            var d_anchor = {"x" : d_pos.x + (d_dim.w - e_dim.w),
                            "y" : e_pos.y};

            break;

        } // end switch

        if (offset && offset.x) {

          d_anchor.x += offset.x;

        } // end if

        if (offset && offset.y) {

          d_anchor.y += offset.y;

        } // end if

        if (!((d_anchor.x == 0) && (d_anchor.y == 0))) {

          element.style.position = "absolute";

          if (!animation) {

            MochiKit.Style.setElementPosition(element, d_anchor);
/*
            Basis.set_element_position(element, {"x"           : d_anchor.x,
                                                 "y"           : d_anchor.y,
                                                 "mode"        : "relative",
                                                 "relative_to" : dest
                                                });
*/
          } else {

            if (!duration) {

              duration = 0.50
