var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari)
Prototype.BrowserFeatures.SpecificElementExtensions=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
parent=properties.shift();function klass(){this.initialize.apply(this,arguments);}
Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}
for(var i=0;i<properties.length;i++)
klass.addMethods(properties[i]);if(!klass.prototype.initialize)
klass.prototype.initialize=Prototype.emptyFunction;klass.prototype.constructor=klass;return klass;}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)
properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}
this.prototype[property]=value;}
return this;}};var Abstract={};Object.extend=function(destination,source){for(var property in source)
destination[property]=source[property];return destination;};Object.extend(Object,{inspect:function(object){try{if(Object.isUndefined(object))return'undefined';if(object===null)return'null';return object.inspect?object.inspect():String(object);}catch(e){if(e instanceof RangeError)return'...';throw e;}},toJSON:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'boolean':return object.toString();}
if(object===null)return'null';if(object.toJSON)return object.toJSON();if(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(!Object.isUndefined(value))
results.push(property.toJSON()+': '+value);}
return'{'+results.join(', ')+'}';},toQueryString:function(object){return $H(object).toQueryString();},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object);},keys:function(object){var keys=[];for(var property in object)
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);},isElement:function(object){return!!(object&&object.nodeType==1);},isArray:function(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object;},isHash:function(object){return object instanceof Hash;},isFunction:function(object){return typeof object=="function";},isString:function(object){return typeof object=="string";},isNumber:function(object){return typeof object=="number";},isUndefined:function(object){return typeof object=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)));}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args);},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)));};}});Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+'-'+
(this.getUTCMonth()+1).toPaddedString(2)+'-'+
this.getUTCDate().toPaddedString(2)+'T'+
this.getUTCHours().toPaddedString(2)+':'+
this.getUTCMinutes().toPaddedString(2)+':'+
this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
return returnValue;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(value){return value==null?'':String(value);},specialChar:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','\\':'\\\\'}});Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);}
else hash[key]=value;}
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}');},isJSON:function(){var str=this;if(str.blank())return false;str=this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')');}catch(e){}
throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return/^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');},unescapeHTML:function(){return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))
object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}
return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;}
return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index))
throw $break;});return result;},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
results.push(iterator.call(context,value,index));});return results;},include:function(object){if(Object.isFunction(this.indexOf))
if(this.indexOf(object)!=-1)return true;var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result)
result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result)
result=value;});return result;},partition:function(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value){results.push(value[property]);});return results;},reject:function(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))
results.push(value);});return results;},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last()))
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)
return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;};}
Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))
array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach))
Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)
if(this[i]===item)return i;return-1;};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[];}
if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
return array;};}
Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(iterator,context){$R(0,this,true).each(iterator,context);return this;},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string;},toJSON:function(){return isFinite(this)?this.toString():'null';}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize();});function $H(object){return new Hash(object);};var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value));}
return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},set:function(key,value){return this._object[key]=value;},get:function(key){if(this._object[key]!==Object.prototype[key])
return this._object[key];},unset:function(key){var value=this._object[key];delete this._object[key];return value;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},index:function(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;},merge:function(object){return this.clone().update(object);},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});},toQueryString:function(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
return results.concat(values.map(toQueryPair.curry(key)));}else results.push(toQueryPair(key,values));return results;}).join('&');},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:'',evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters))
this.options.parameters=this.options.parameters.toQueryParams();else if(Object.isHash(this.options.parameters))
this.options.parameters=this.options.parameters.toObject();}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=='get')
this.url+=(this.url.include('?')?'&':'?')+params;else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
params+='&_=';}
try{var response=new Ajax.Response(this);if(this.options.onCreate)this.options.onCreate(response);Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)this.respondToReadyState.bind(this).defer(1);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange();}
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close';}
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push))
for(var i=0,length=extras.length;i<length;i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
for(var name in headers)
this.transport.setRequestHeader(name,headers[name]);},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
this.evalResponse();}
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}
if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json'))||this.responseText.blank())
return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}
else options.insertion(receiver,responseText);}
else receiver.update(responseText);}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}
this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements;}
if(Object.isString(element))
element=document.getElementById(element);return Element.extend(element);}
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
results.push(Element.extend(query.snapshotItem(i)));return results;};}
if(!window.Node)var Node={};if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}
(function(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&attributes.name){tagName='<'+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}
if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});if(element)this.Element.prototype=element.prototype;}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){element=$(element);element.style.display='none';return element;},show:function(element){element=$(element);element.style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}
element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
insertions={bottom:insertions};var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;}
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();}
return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper))
$(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode)
element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $(element).select("*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector))
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}
return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=Object.isUndefined(value)?true:value;for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null)
element.removeAttribute(name);else if(value===true)
element.setAttribute(name,name);else element.setAttribute(name,value);}
return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className))
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode;}
return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition)
return(element.compareDocumentPosition(ancestor)&8)===8;if(ancestor.contains)
return ancestor.contains(element)&&ancestor!==element;while(element=element.parentNode)
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value||value=='auto'){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}
for(var property in styles)
if(property=='opacity')element.setOpacity(styles[property]);else
elementStyle[(property=='float'||property=='cssFloat')?(Object.isUndefined(elementStyle.styleFloat)?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=element.getStyle('display');if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0;}}
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden')
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=='BODY'))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()])
return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];}
else{properties=['border-left-width','padding-left','padding-right','border-right-width'];}
return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});}
else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent}
catch(e){return $(document.body)}
var position=element.getStyle('position');if(position!=='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent}
catch(e){return Element._returnOffset(0,0)}
var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed')
offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent}
catch(e){return Element._returnOffset(0,0)}
return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1])return parseFloat(value[1])/100;return 1.0;}
if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none'))
return element['offset'+style.capitalize()]+'px';return null;}
return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');}
element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal'))
element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc frameBorder').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);}
else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1)
if(element.tagName.toUpperCase()=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}
return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};}
if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});}
else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
if('outerHTML'in document.createElement('div')){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}
content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling)
fragments.each(function(node){parent.insertBefore(node,nextSibling)});else
fragments.each(function(node){parent.appendChild(node)});}
else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:['<table>','</table>',1],TBODY:['<table><tbody>','</tbody></table>',2],TR:['<table><tbody><tr>','</tr></tbody></table>',3],TD:['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT:['<select>','</select>',1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return!!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true;}
Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)
return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))
element[property]=value.methodize();}
element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});}
if(arguments.length==2){var tagName=methods;methods=arguments[1];}
if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);}
function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName])
Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);}
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination))
destination[property]=value.methodize();}}
function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass];}
if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);}
if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}}
Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D];}});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))
return false;if((/(\[[\w-]*?:|:checked)/).test(e))
return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;}
return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}
this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}
this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;}
results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}}
var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}
return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}}
return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/))
return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c);      c = false;',className:'n = h.className(n, r, "#{1}", c);    c = false;',id:'n = h.id(n, r, "#{1}", c);           c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++)
node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i<l;i++)
if(!(n=nodes[i])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;results.push(Element.extend(n));}
return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
h.concat(results,node.getElementsByTagName('*'));return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,child;child=node.childNodes[j];j++)
if(child.nodeType==1&&child.tagName!='!')results.push(child);}
return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next)results.push(next);}
return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
h.concat(results,Element.nextSiblings(node));return results;},nextElementSibling:function(node){while(node=node.nextSibling)
if(node.nodeType==1)return node;return null;},previousElementSibling:function(node){while(node=node.previousSibling)
if(node.nodeType==1)return node;return null;},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++)
h.concat(results,node.getElementsByTagName(tagName));return results;}else nodes=this[combinator](nodes);if(tagName=="*")return nodes;}
for(var i=0,node;node=nodes[i];i++)
if(node.tagName.toUpperCase()===uTagName)results.push(node);return results;}else return root.getElementsByTagName(tagName);},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(!targetNode)return[];if(!nodes&&root==document)return[targetNode];if(nodes){if(combinator){if(combinator=='child'){for(var i=0,node;node=nodes[i];i++)
if(targetNode.parentNode==node)return[targetNode];}else if(combinator=='descendant'){for(var i=0,node;node=nodes[i];i++)
if(Element.descendantOf(targetNode,node))return[targetNode];}else if(combinator=='adjacent'){for(var i=0,node;node=nodes[i];i++)
if(Selector.handlers.previousElementSibling(targetNode)==node)
return[targetNode];}else nodes=h[combinator](nodes);}
for(var i=0,node;node=nodes[i];i++)
if(node==targetNode)return[targetNode];return[];}
return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes)nodes=Selector.handlers.descendant([root]);var needle=' '+className+' ';for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0)continue;if(nodeClassName==className||(' '+nodeClassName+' ').include(needle))
results.push(node);}
return results;},attrPresence:function(nodes,root,attr,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var results=[];for(var i=0,node;node=nodes[i];i++)
if(Element.hasAttribute(node,attr))results.push(node);return results;},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null)continue;if(handler(nodeValue,value))results.push(node);}
return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);if(!nodes)nodes=root.getElementsByTagName("*");return Selector.pseudos[name](nodes,value,root);}},pseudos:{'first-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node))continue;results.push(node);}
return results;},'last-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node))continue;results.push(node);}
return results;},'only-child':function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
if(!h.previousElementSibling(node)&&!h.nextElementSibling(node))
results.push(node);return results;},'nth-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},'nth-last-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},'nth-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},'nth-last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},'first-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},'last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},'only-of-type':function(nodes,formula,root){var p=Selector.pseudos;return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0)return b>0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}
if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++)
if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++)
if(node.nodeIndex==indices[j])results.push(node);}}
h.unmark(nodes);h.unmark(indexed);return results;},'empty':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=='!'||node.firstChild)continue;results.push(node);}
return results;},'not':function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++)
if(!node._countedByPrototype)results.push(node);h.unmark(exclusions);return results;},'enabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(!node.disabled&&(!node.type||node.type!=='hidden'))
results.push(node);return results;},'disabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(node.disabled)results.push(node);return results;},'checked':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(node.checked)results.push(node);return results;}},operators:{'=':function(nv,v){return nv==v;},'!=':function(nv,v){return nv!=v;},'^=':function(nv,v){return nv==v||nv&&nv.startsWith(v);},'$=':function(nv,v){return nv==v||nv&&nv.endsWith(v);},'*=':function(nv,v){return nv==v||nv&&nv.include(v);},'$=':function(nv,v){return nv.endsWith(v);},'*=':function(nv,v){return nv.include(v);},'~=':function(nv,v){return(' '+nv+' ').include(' '+v+' ');},'|=':function(nv,v){return('-'+(nv||"").toUpperCase()+'-').include('-'+(v||"").toUpperCase()+'-');}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
if(element._countedByPrototype)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}
return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(','));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}
return(l>1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++)
if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node.removeAttribute('_countedByPrototype');return nodes;}});}
function $$(){return Selector.findChildElements(document,$A(arguments));}
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(Object.isUndefined(options.hash))options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!='file'&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);}
else result[key]=value;}}
return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input));}
return matchingInputs;},disable:function(form){form=$(form);Form.getElements(form).invoke('disable');return form;},enable:function(form){form=$(form);Form.getElements(form).invoke('enable');return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return'hidden'!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute('tabIndex')&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);}
if(form.hasAttribute('method')&&!options.method)
options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}}
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
element.select();}catch(e){}
return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value))
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}
else opt.selected=value.include(currentValue);}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;switch(event.type){case'mouseover':element=event.fromElement;break;case'mouseout':element=event.toElement;break;default:return null;}
return Element.extend(element);}});Event.Methods=(function(){var isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};isButton=function(event,code){return event.button==buttonMap[code];};}else if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}
return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&&currentTarget.tagName){if(type==='load'||type==='error'||(type==='click'&&currentTarget.tagName.toLowerCase()==='input'&&currentTarget.type==='radio'))
node=currentTarget;}
if(node.nodeType==Node.TEXT_NODE)node=node.parentNode;return Element.extend(node);},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+
(docElement.scrollLeft||body.scrollLeft)-
(docElement.clientLeft||0)),y:event.pageY||(event.clientY+
(docElement.scrollTop||body.scrollTop)-
(docElement.clientTop||0))};},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}};})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")['__proto__'];Object.extend(Event.prototype,methods);return Prototype.K;}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName;}
function getCacheForID(id){return cache[id]=cache[id]||{};}
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
return false;Event.extend(event);handler.call(element,event);};wrapper.handler=handler;c.push(wrapper);return wrapper;}
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
function destroyCache(){for(var id in cache)
for(var eventName in cache[id])
cache[id][eventName]=null;}
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false);}
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=true;}
if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))
fireContentLoadedEvent();},0);Event.observe(window,"load",fireContentLoadedEvent);}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName)document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}
instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(''):iter(className);return cond?document._getElementsByXPath('.//*'+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className)return elements;var nodes=$(element).getElementsByTagName('*');className=' '+className+' ';for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=' '+child.className+' ')&&(cn.include(className)||(classNames&&classNames.all(function(name){return!name.toString().blank()&&cn.include(' '+name+' ');}))))
elements.push(Element.extend(child));}
return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||'';};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2)+.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'},tagifyText:function(element){var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element('span',{style:tagifyStyle}).update(character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||Object.isFunction(element))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
this.effects[i]&&this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName))return queueName;return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get('global');Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+'Internal']?'this.options.'+eventName+'Internal(this);':'')+
(options[eventName]?'this.options.'+eventName+'(this);':''));}
if(options&&options.transition===false)options.transition=Effect.Transitions.linear;this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+'Internal'])
effect.options[eventName+'Internal'](effect);if(effect.options[eventName])
effect.options[eventName](effect);}
return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,'beforeSetup');if(this.setup)this.setup();dispatch(this,'afterSetup');}
if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,'beforeUpdate');if(this.update)this.update(pos);dispatch(this,'afterUpdate');}};})();this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
if(!Object.isFunction(this[property]))data.set(property,this[property]);return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+'px',top:(this.options.y*position+this.originalTop).round()+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width.round()+'px';if(this.options.scaleY)d.height=height.round()+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10.0;var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options));}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else{if(options.style.include(':'))
this.style=options.style.parseStyle();else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]='';});};}}
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});}
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
(Math.round(transform.originalValue[0]+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
(Math.round(transform.originalValue[1]+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
(Math.round(transform.originalValue[2]+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+
(transform.targetValue-transform.originalValue)*position).toFixed(3)+
(transform.unit===null?'':transform.unit);this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get('ids'),effect=track.get('effect'),options=track.get('options');var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement('div');String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit)
style=new Element('div',{style:this}).style;else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}
Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules.set(property,style[property]);});if(Prototype.Browser.IE&&this.include('opacity'))
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity)styles.opacity=element.getOpacity();return styles;};}
Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+'pulsate shake puff squish switchOff dropOut').each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);if(Object.isUndefined(Effect))
throw("dragdrop.js requires including script.aculo.us' effects.js library");var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if(Object.isArray(containment)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
if(Element.isParent(drops[i].element,deepest.element))
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var drop,affected=[];this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
affected.push(drop);});if(affected.length>0)
drop=Droppables.findDeepestChild(affected);if(this.last_active&&this.last_active!=drop)this.deactivate(this.last_active);if(drop){Position.within(drop.element,point[0],point[1]);if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));if(drop!=this.last_active)Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if(this.last_active.onDrop){this.last_active.onDrop(element,this.last_active.element,event);return true;}},reset:function(){if(this.last_active)
this.deactivate(this.last_active);}};var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{window.focus();this.activeDraggable=draggable;}},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null;}
if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});if(draggable.options[eventName])draggable.options[eventName](draggable,event);},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}};var Draggable=Class.create({initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:'_draggable',position:'end'}});},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1.0;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:'_draggable',position:'end'},afterFinish:function(){Draggable._dragging[element]=false}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect))
Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&Object.isString(options.handle))
this.handle=this.element.down('.'+options.handle,0);if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element,options.scroll);}
Element.makePositioned(this.element);this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(!this.delta)
this.delta=this.currentDelta();if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this._originallyAbsolute=(this.element.getStyle('position')=='absolute');if(!this._originallyAbsolute)
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;}}
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element);}
Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}
if(this.options.ghosting){if(!this._originallyAbsolute)
Position.relativize(this.element);delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null;}
var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped)dropped=false;}
if(dropped&&this.options.onDropped)this.options.onDropped(this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&Object.isFunction(revert))revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!='failure')
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);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(Object.isFunction(this.options.snap)){p=this.options.snap(p[0],p[1],this);}else{if(Object.isArray(this.options.snap)){p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i]}.bind(this));}else{p=p.map(function(v){return(v/this.options.snap).round()*this.options.snap}.bind(this));}}}
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;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(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);}
if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight;}}
return{top:T,left:L,width:W,height:H};}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
this.observer(this.element)}});var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){element=$(element);var s=Sortable.sortables[element.id];if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,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(element){element.style.top=0;element.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,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover};var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass};Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).select('.'+options.handle)[0]:e);options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.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)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.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);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Sortable._marker.hide();},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=($('dropmarker')||Element.extend(document.createElement('DIV'))).hide().addClassName('dropmarker').setStyle({position:'absolute'});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left:offsets[0]+'px',top:offsets[1]+'px'});if(position=='after')
if(sortable.overlap=='horizontal')
Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+'px'});else
Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show();},_tree:function(element,options,parent){var children=Sortable.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:$(children[i]).down(options.treeTag)};if(child.container)
this._tree(child.container,options,child);parent.children.push(child);}
return parent;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:[],container:element,position:0};return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"[id]="+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}};Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);};Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);};Element.offsetSize=function(element,type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')];};if(typeof Effect=='undefined')
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element);this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
this.options.tokens=new Array(this.options.tokens);if(!this.options.tokens.include('\n'))
this.options.tokens.push('\n');this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,'blur',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keydown',this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(event);return;}
else
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
{this.index=element.autocompleteIndex;this.render();}
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--;else this.index=this.entryCount-1;this.getEntry(this.index).scrollIntoView(true);},markNext:function(){if(this.index<this.entryCount-1)this.index++;else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
var value='';if(this.options.select){var nodes=$(selectedElement).select('.'+this.options.select)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]);var whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value+this.element.value.substr(bounds[1]);}else{this.element.value=value;}
this.oldElementValue=this.element.value;this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}
this.oldElementValue=this.element.value;},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip();},getTokenBounds:function(){if(null!=this.tokenBounds)return this.tokenBounds;var value=this.element.value;if(value.strip().empty())return[-1,0];var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue);var offset=(diff==this.oldElementValue.length?1:0);var prevTokenPos=-1,nextTokenPos=value.length;var tp;for(var index=0,l=this.options.tokens.length;index<l;++index){tp=value.lastIndexOf(this.options.tokens[index],diff+offset-1);if(tp>prevTokenPos)prevTokenPos=tp;tp=value.indexOf(this.options.tokens[index],diff+offset);if(-1!=tp&&tp<nextTokenPos)nextTokenPos=tp;}
return(this.tokenBounds=[prevTokenPos+1,nextTokenPos]);}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(newS,oldS){var boundary=Math.min(newS.length,oldS.length);for(var index=0;index<boundary;++index)
if(newS[index]!=oldS[index])
return index;return boundary;};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){this.startIndicator();var entry=encodeURIComponent(this.options.paramName)+'='+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
if(partial.length)
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length));return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);};Ajax.InPlaceEditor=Class.create({initialize:function(element,url,options){this.url=url;this.element=element=$(element);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(options);Object.extend(this.options,options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+'-inplaceeditor';if($(this.options.formId))
this.options.formId='';}
if(this.options.externalControl)
this.options.externalControl=$(this.options.externalControl);if(!this.options.externalControl)
this.options.externalControlOnly=false;this._originalBackground=this.element.getStyle('background-color')||'transparent';this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners();},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey)return;if(Event.KEY_ESC==e.keyCode)
this.handleFormCancellation(e);else if(Event.KEY_RETURN==e.keyCode)
this.handleFormSubmission(e);},createControl:function(mode,handler,extraClasses){var control=this.options[mode+'Control'];var text=this.options[mode+'Text'];if('button'==control){var btn=document.createElement('input');btn.type='submit';btn.value=text;btn.className='editor_'+mode+'_button';if('cancel'==mode)
btn.onclick=this._boundCancelHandler;this._form.appendChild(btn);this._controls[mode]=btn;}else if('link'==control){var link=document.createElement('a');link.href='#';link.appendChild(document.createTextNode(text));link.onclick='cancel'==mode?this._boundCancelHandler:this._boundSubmitHandler;link.className='editor_'+mode+'_link';if(extraClasses)
link.className+=' '+extraClasses;this._form.appendChild(link);this._controls[mode]=link;}},createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement('input');fld.type='text';var size=this.options.size||this.options.cols||0;if(0<size)fld.size=size;}else{fld=document.createElement('textarea');fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}
fld.name=this.options.paramName;fld.value=text;fld.className='editor_field';if(this.options.submitOnBlur)
fld.onblur=this._boundSubmitHandler;this._controls.editor=fld;if(this.options.loadTextURL)
this.loadExternalText();this._form.appendChild(this._controls.editor);},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options['text'+mode+'Controls'];if(!text||condition===false)return;ipe._form.appendChild(document.createTextNode(text));};this._form=$(document.createElement('form'));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if('textarea'==this._controls.editor.tagName.toLowerCase())
this._form.appendChild(document.createElement('br'));if(this.options.onFormCustomization)
this.options.onFormCustomization(this,this._form);addText('Before',this.options.okControl||this.options.cancelControl);this.createControl('ok',this._boundSubmitHandler);addText('Between',this.options.okControl&&this.options.cancelControl);this.createControl('cancel',this._boundCancelHandler,'editor_cancel');addText('After',this.options.okControl||this.options.cancelControl);},destroy:function(){if(this._oldInnerHTML)
this.element.innerHTML=this._oldInnerHTML;this.leaveEditMode();this.unregisterListeners();},enterEditMode:function(e){if(this._saving||this._editing)return;this._editing=true;this.triggerCallback('onEnterEditMode');if(this.options.externalControl)
this.options.externalControl.hide();this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL)
this.postProcessEditField();if(e)Event.stop(e);},enterHover:function(e){if(this.options.hoverClassName)
this.element.addClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onEnterHover');},getText:function(){return this.element.innerHTML.unescapeHTML();},handleAJAXFailure:function(transport){this.triggerCallback('onFailure',transport);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null;}},handleFormCancellation:function(e){this.wrapUp();if(e)Event.stop(e);},handleFormSubmission:function(e){var form=this._form;var value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||'';if(Object.isString(params))
params=params.toQueryParams();params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,options);}else{var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}
if(e)Event.stop(e);},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl)
this.options.externalControl.show();this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback('onLeaveEditMode');},leaveHover:function(e){if(this.options.hoverClassName)
this.element.removeClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onLeaveHover');},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;if(this.options.stripLoadedTextTags)
text=text.stripTags();this._controls.editor.value=text;this._controls.editor.disabled=false;this.postProcessEditField();}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,options);},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;if(fpc)
$(this._controls.editor)['focus'==fpc?'focus':'activate']();},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs);}.bind(this));},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving();},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this);this._listeners[pair.key]=listener;if(!this.options.externalControlOnly)
this.element.observe(pair.key,listener);if(this.options.externalControl)
this.options.externalControl.observe(pair.key,listener);}.bind(this));},removeForm:function(){if(!this._form)return;this._form.remove();this._form=null;this._controls={};},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show();},triggerCallback:function(cbName,arg){if('function'==typeof this.options[cbName]){this.options[cbName](this,arg);}},unregisterListeners:function(){$H(this._listeners).each(function(pair){if(!this.options.externalControlOnly)
this.element.stopObserving(pair.key,pair.value);if(this.options.externalControl)
this.options.externalControl.stopObserving(pair.key,pair.value);}.bind(this));},wrapUp:function(transport){this.leaveEditMode();this._boundComplete(transport,this.element);}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(element,url,options);},createEditField:function(){var list=document.createElement('select');list.name=this.options.paramName;list.size=1;this._controls.editor=list;this._collection=this.options.collection||[];if(this.options.loadCollectionURL)
this.loadCollection();else
this.checkForExternalText();this._form.appendChild(this._controls.editor);},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js))
throw('Server returned an invalid collection representation.');this._collection=eval(js);this.checkForExternalText();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options);},showLoadingText:function(text){this._controls.editor.disabled=true;var tempOption=this._controls.editor.firstChild;if(!tempOption){tempOption=document.createElement('option');tempOption.value='';this._controls.editor.appendChild(tempOption);tempOption.selected=true;}
tempOption.update((text||'').stripScripts().stripTags());},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL)
this.loadExternalText();else
this.buildOptionList();},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip();this.buildOptionList();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,options);},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten();});var marker=('value'in this.options)?this.options.value:this._text;var textFound=this._collection.any(function(entry){return entry[0]==marker;}.bind(this));this._controls.editor.update('');var option;this._collection.each(function(entry,index){option=document.createElement('option');option.value=entry[0];option.selected=textFound?entry[0]==marker:0==index;option.appendChild(document.createTextNode(entry[1]));this._controls.editor.appendChild(option);}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor);}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options)return;function fallback(name,expr){if(name in options||expr===undefined)return;options[name]=expr;};fallback('cancelControl',(options.cancelLink?'link':(options.cancelButton?'button':options.cancelLink==options.cancelButton==false?false:undefined)));fallback('okControl',(options.okLink?'link':(options.okButton?'button':options.okLink==options.okButton==false?false:undefined)));fallback('highlightColor',options.highlightcolor);fallback('highlightEndColor',options.highlightendcolor);};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:'link',cancelText:'cancel',clickToEditText:'Click to edit',externalControl:null,externalControlOnly:false,fieldPostCreation:'activate',formClassName:'inplaceeditor-form',formId:null,highlightColor:'#ffff99',highlightEndColor:'#ffffff',hoverClassName:'',htmlResponse:true,loadingClassName:'inplaceeditor-loading',loadingText:'Loading...',okControl:'button',okText:'ok',paramName:'value',rows:1,savingClassName:'inplaceeditor-saving',savingText:'Saving...',size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:'',textBeforeControls:'',textBetweenControls:''},DefaultCallbacks:{callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:true});},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor;if(ipe._effect)
ipe._effect.cancel();},onFailure:function(transport,ipe){alert('Error communication with the server: '+transport.responseText.stripTags());},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});}},Listeners:{click:'enterEditMode',keydown:'checkForEscapeOrReturn',mouseover:'enterHover',mouseout:'leaveHover'}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:'Loading options...'};Form.Element.DelayedObserver=Class.create({initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}});(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}
if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])
selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])
return jQuery().find(selector);return jQuery(elem);}
selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))
return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)
if(value===undefined)
return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}
return this.each(function(i){for(name in options)
jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)
value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)
return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)
ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])
jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)
elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)
this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)
this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)
this[expando]=null;});if(events===true)
this.find("*").andSelf().each(function(i){if(this.nodeType==3)
return;var events=jQuery.data(this,"events");for(var type in events)
for(var handler in events[type])
jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)
if(isSimple.test(selector))
return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)
return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)
return value;values.push(value);}}
return values;}else
return(this[0].value||"").replace(/\r/g,"");}
return undefined;}
if(value.constructor==Number)
value+='';return this.each(function(){if(this.nodeType!=1)
return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))
this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)
this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)
data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)
elems.reverse();}
var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))
obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))
scripts=scripts.add(elem);else{if(elem.nodeType==1)
scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)
jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)
elem.parentNode.removeChild(elem);}
function now(){return+new Date;}
jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}
if(typeof target!="object"&&typeof target!="function")
target={};if(length==i){target=this;--i;}
for(;i<length;i++)
if((options=arguments[i])!=null)
for(var name in options){var src=target[name],copy=options[name];if(target===copy)
continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)
target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)
target[name]=copy;}
return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)
window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)
script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)
id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])
jQuery.cache[id]={};if(data!==undefined)
jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])
break;if(!name)
jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)
elem.removeAttribute(expando);}
delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)
if(callback.apply(object[name],args)===false)
break;}else
for(;i<length;)
if(callback.apply(object[i++],args)===false)
break;}else{if(length==undefined){for(name in object)
if(callback.call(object[name],name,object[name])===false)
break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}
return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))
value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))
elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)
elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}
callback.call(elem);for(var name in options)
elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}
if(jQuery(elem).is(":visible"))
getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}
return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)
return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}
if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}
if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}
if(name.match(/float/i))
name=styleFloat;if(!force&&style&&style[name])
ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))
name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))
ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)
stack.unshift(a);for(;i<stack.length;i++)
if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}
ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)
if(swap[i]!=null)
stack[i].style.display=swap[i];}
if(name=="opacity"&&ret=="")
ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}
return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')
context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)
return;if(elem.constructor==Number)
elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)
div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)
if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)
tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))
div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}
elem=jQuery.makeArray(div.childNodes);}
if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))
return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)
ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)
return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)
elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)
throw"type property can't be changed";elem[name]=value;}
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))
return elem.getAttributeNode(name).nodeValue;return elem[name];}
if(msie&&notxml&&name=="style")
return jQuery.attr(elem.style,"cssText",value);if(set)
elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}
if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+
(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}
return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}
name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)
elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)
ret[0]=array;else
while(i)
ret[--i]=array[i];}
return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)
if(array[i]===elem)
return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])
if(elem.nodeType!=8)
first[pos++]=elem;}else
while(elem=second[i++])
first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}
return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)
if(!inv!=!callback(elems[i],i))
ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)
ret[ret.length]=value;}
return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")
ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)
jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)
this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)
this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)
this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}
return cur;},find:function(t,context){if(typeof t!="string")
return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)
return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)
for(var c=ret[i].firstChild;c;c=c.nextSibling)
if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))
r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)
if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}
if(m=="+")break;}}
ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}
if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}
m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])
oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")
tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}
if(m[1]==".")
r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)
if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}
r=tmp;}
ret=r;}
t=t.replace(re2,"");}}
if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}
if(t)
ret=[];if(ret&&context==ret[0])
ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)
tmp.push(r[i]);}
return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}
if(!m)
break;if(m[1]==":"&&m[2]=="not")
r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")
r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))
z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)
tmp.push(a);}
r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)
if(n.nodeType==1)
n.nodeIndex=c++;merge[id]=true;}
var add=false;if(first==0){if(node.nodeIndex==last)
add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)
add=true;if(add^not)
tmp.push(node);}
r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")
fn=fn[m[2]];if(typeof fn=="string")
fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}
return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)
matched.push(cur);cur=cur[dir];}
return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])
if(cur.nodeType==1&&++num==result)
break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)
r.push(n);}
return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)
return;if(jQuery.browser.msie&&elem.setInterval)
elem=window;if(!handler.guid)
handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}
var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)
return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)
elem.addEventListener(type,handle,false);else if(elem.attachEvent)
elem.attachEvent("on"+type,handle);}}
handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)
return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))
for(var type in events)
this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}
jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)
delete events[type][handler.guid];else
for(handler in events[type])
if(!parts[1]||events[type][handler].type==parts[1])
delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)
elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)
elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}
ret=null;delete events[type];}}});}
for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}
if(!elem){if(this.global[type])
jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)
return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}
data[0].type=type;if(exclusive)
data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)
val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)
val=false;if(event)
data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)
val=ret;}
if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}
this.triggered=false;}
return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)
val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}
return val;},fix:function(event){if(event[expando]==true)
return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)
event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)
originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)
originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)
event.target=event.srcElement||document;if(event.target.nodeType==3)
event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)
event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}
if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))
event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)
event.metaKey=event.ctrlKey;if(!event.which&&event.button)
event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)
jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)
fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}
jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)
document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}
jQuery.ready();})();if(jQuery.browser.opera)
document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)
if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}
jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}
if(numStyles===undefined)
numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}
jQuery.ready();})();}
jQuery.event.add(window,"load",jQuery.ready);}
jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}
return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')
return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}
callback=callback||function(){};var type="GET";if(params)
if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}
var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")
self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}
return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}
return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")
s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))
s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))
s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}
if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)
s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}
if(head)
head.removeChild(script);};}
if(s.dataType=="script"&&s.cache==null)
s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}
if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}
if(s.global&&!jQuery.active++)
jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)
script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}
head.appendChild(script);return undefined;}
var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)
xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)
xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)
xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}
if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}
if(s.global)
jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}
status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}
if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}
if(s.ifModified&&modRes)
jQuery.lastModified[s.url]=modRes;if(!jsonp)
success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)
xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)
setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)
onreadystatechange("timeout");}},s.timeout);}
try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}
if(!s.async)
onreadystatechange();function success(){if(s.success)
s.success(data,status);if(s.global)
jQuery.event.trigger("ajaxSuccess",[xhr,s]);}
function complete(){if(s.complete)
s.complete(xhr,status);if(s.global)
jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop");}
return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)
jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}
return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}
return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")
throw"parsererror";if(filter)
data=filter(data,type);if(type=="script")
jQuery.globalEval(data);if(type=="json")
data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)
jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)
if(a[j]&&a[j].constructor==Array)
jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")
this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)
return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)
return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}
if(opt.overflow!=null)
this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))
e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}
if(parts[1])
end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}
if(!type||(typeof type=="string"&&!fn))
return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)
queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)
fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)
this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)
if(timers[i].elem==this){if(gotoEnd)
timers[i](true);timers.splice(i,1);}});if(!gotoEnd)
this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)
q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}
return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)
q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)
jQuery(this).dequeue();if(jQuery.isFunction(opt.old))
opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)
options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)
this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")
this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)
return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}
t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)
if(!timers[i]())
timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")
this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)
if(this.options.curAnim[i]!==true)
done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")
this.elem.style.display="block";}
if(this.options.hide)
this.elem.style.display="none";if(this.options.hide||this.options.show)
for(var p in this.options.curAnim)
jQuery.attr(this.elem.style,p,this.options.orig[p]);}
if(done)
this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}
return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)
border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")
fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}
while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))
add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")
border(parent);parent=parent.parentNode;}
if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))
add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)
add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}
results={top:top,left:left};}
function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}
function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}
return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}
return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))
offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+
num(this,"padding"+tl)+
num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+
num(this,"border"+tl+"Width")+
num(this,"border"+br+"Width")+
(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();var $j=jQuery.noConflict();(function($){$.jGrowl=function(m,o){if($("#jGrowl").size()==0){$("<div id=\"jGrowl\"></div>").addClass($.jGrowl.defaults.position).appendTo("body");}
$("#jGrowl").jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var _6=arguments;return this.each(function(){var _7=this;if($(this).data("jGrowl.instance")==undefined){$(this).data("jGrowl.instance",$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data("jGrowl.instance").startup(this);}
if($.isFunction($(this).data("jGrowl.instance")[m])){$(this).data("jGrowl.instance")[m].apply($(this).data("jGrowl.instance"),$.makeArray(_6).slice(1));}else{$(this).data("jGrowl.instance").create(m,o);}});}};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:false,position:"top-right",glue:"after",theme:"default",corners:"10px",check:250,life:3000,speed:"normal",easing:"swing",closer:true,closeTemplate:"&times;",closerTemplate:"<div>[ close all ]</div>",log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(_17,o){var o=$.extend({},this.defaults,o);this.notifications[this.notifications.length]={message:_17,options:o};o.log.apply(this.element,[this.element,_17,o]);},render:function(_19){var _1a=this;var _1b=_19.message;var o=_19.options;var _19=$("<div class=\"jGrowl-notification"+((o.group!=undefined&&o.group!="")?" "+o.group:"")+"\"><div class=\"close\">"+o.closeTemplate+"</div><div class=\"header\">"+o.header+"</div><div class=\"message\">"+_1b+"</div></div>").data("jGrowl",o).addClass(o.theme).children("div.close").bind("click.jGrowl",function(){$(this).parent().trigger("jGrowl.close");}).parent();(o.glue=="after")?$("div.jGrowl-notification:last",this.element).after(_19):$("div.jGrowl-notification:first",this.element).before(_19);$(_19).bind("mouseover.jGrowl",function(){$(this).data("jGrowl").pause=true;}).bind("mouseout.jGrowl",function(){$(this).data("jGrowl").pause=false;}).bind("jGrowl.beforeOpen",function(){o.beforeOpen.apply(_1a.element,[_1a.element,_1b,o]);}).bind("jGrowl.open",function(){o.open.apply(_1a.element,[_1a.element,_1b,o]);}).bind("jGrowl.beforeClose",function(){o.beforeClose.apply(_1a.element,[_1a.element,_1b,o]);}).bind("jGrowl.close",function(){$(this).data("jGrowl").pause=true;$(this).trigger("jGrowl.beforeClose").animate(o.animateClose,o.speed,o.easing,function(){$(this).remove();o.close.apply(_1a.element,[_1a.element,_1b,o]);});}).trigger("jGrowl.beforeOpen").animate(o.animateOpen,o.speed,o.easing,function(){$(this).data("jGrowl").created=new Date();}).trigger("jGrowl.open");if($.fn.corner!=undefined){$(_19).corner(o.corners);}
if($("div.jGrowl-notification:parent",this.element).size()>1&&$("div.jGrowl-closer",this.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass("jGrowl-closer").addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children("div.close").trigger("click.jGrowl");if($.isFunction(_1a.defaults.closer)){_1a.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});}},update:function(){$(this.element).find("div.jGrowl-notification:parent").each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl").pause==undefined||$(this).data("jGrowl").pause!=true)){$(this).trigger("jGrowl.close");}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find("div.jGrowl-notification:parent").size()<this.defaults.pool)){this.render(this.notifications.shift());}
if($(this.element).find("div.jGrowl-notification:parent").size()<2){$(this.element).find("div.jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass("jGrowl").append("<div class=\"jGrowl-notification\"></div>");this.interval=setInterval(function(){$(e).data("jGrowl.instance").update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass("ie6");}},shutdown:function(){$(this.element).removeClass("jGrowl").find("div.jGrowl-notification").remove();clearInterval(this.interval);}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);;(function($){var helper={},current,title,tID,IE=$.browser.msie&&/MSIE\s(5\.5|6\.)/.test(navigator.userAgent),track=false;$.tooltip={blocked:false,defaults:{delay:200,fade:false,showURL:true,extraClass:"",top:15,left:15,id:"tooltip"},block:function(){$.tooltip.blocked=!$.tooltip.blocked;}};$.fn.extend({tooltip:function(settings){settings=$.extend({},$.tooltip.defaults,settings);createHelper(settings);return this.each(function(){$.data(this,"tooltip",settings);this.tOpacity=helper.parent.css("opacity");this.tooltipText=this.title;$(this).removeAttr("title");this.alt="";}).mouseover(save).mouseout(hide).click(hide);},fixPNG:IE?function(){return this.each(function(){var image=$(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)$/i)){image=RegExp.$1;$(this).css({'backgroundImage':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+image+"')"}).each(function(){var position=$(this).css('position');if(position!='absolute'&&position!='relative')$(this).css('position','relative');});}});}:function(){return this;},unfixPNG:IE?function(){return this.each(function(){$(this).css({'filter':'',backgroundImage:''});});}:function(){return this;},hideWhenEmpty:function(){return this.each(function(){$(this)[$(this).html()?"show":"hide"]();});},url:function(){return this.attr('href')||this.attr('src');}});function createHelper(settings){if(helper.parent)return;helper.parent=$('<div id="'+settings.id+'"><h3></h3><div class="body"></div><div class="url"></div></div>').appendTo(document.body).hide();if($.fn.bgiframe)helper.parent.bgiframe();helper.title=$('h3',helper.parent);helper.body=$('div.body',helper.parent);helper.url=$('div.url',helper.parent);}function settings(element){return $.data(element,"tooltip");}function handle(event){if(settings(this).delay)tID=setTimeout(show,settings(this).delay);else
show();track=!!settings(this).track;$(document.body).bind('mousemove',update);update(event);}function save(){if($.tooltip.blocked||this==current||(!this.tooltipText&&!settings(this).bodyHandler))return;current=this;title=this.tooltipText;if(settings(this).bodyHandler){helper.title.hide();var bodyContent=settings(this).bodyHandler.call(this);if(bodyContent.nodeType||bodyContent.jquery){helper.body.empty().append(bodyContent)}else{helper.body.html(bodyContent);}helper.body.show();}else if(settings(this).showBody){var parts=title.split(settings(this).showBody);helper.title.html(parts.shift()).show();helper.body.empty();for(var i=0,part;(part=parts[i]);i++){if(i>0)helper.body.append("<br/>");helper.body.append(part);}helper.body.hideWhenEmpty();}else{helper.title.html(title).show();helper.body.hide();}if(settings(this).showURL&&$(this).url())helper.url.html($(this).url().replace('http://','')).show();else
helper.url.hide();helper.parent.addClass(settings(this).extraClass);if(settings(this).fixPNG)helper.parent.fixPNG();handle.apply(this,arguments);}function show(){tID=null;if((!IE||!$.fn.bgiframe)&&settings(current).fade){if(helper.parent.is(":animated"))helper.parent.stop().show().fadeTo(settings(current).fade,current.tOpacity);else
helper.parent.is(':visible')?helper.parent.fadeTo(settings(current).fade,current.tOpacity):helper.parent.fadeIn(settings(current).fade);}else{helper.parent.show();}update();}function update(event){if($.tooltip.blocked)return;if(event&&event.target.tagName=="OPTION"){return;}if(!track&&helper.parent.is(":visible")){$(document.body).unbind('mousemove',update)}if(current==null){$(document.body).unbind('mousemove',update);return;}helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");var left=helper.parent[0].offsetLeft;var top=helper.parent[0].offsetTop;if(event){left=event.pageX+settings(current).left;top=event.pageY+settings(current).top;var right='auto';if(settings(current).positionLeft){right=$(window).width()-left;left='auto';}helper.parent.css({left:left,right:right,top:top});}var v=viewport(),h=helper.parent[0];if(v.x+v.cx<h.offsetLeft+h.offsetWidth){left-=h.offsetWidth+20+settings(current).left;helper.parent.css({left:left+'px'}).addClass("viewport-right");}if(v.y+v.cy<h.offsetTop+h.offsetHeight){top-=h.offsetHeight+20+settings(current).top;helper.parent.css({top:top+'px'}).addClass("viewport-bottom");}}function viewport(){return{x:$(window).scrollLeft(),y:$(window).scrollTop(),cx:$(window).width(),cy:$(window).height()};}function hide(event){if($.tooltip.blocked)return;if(tID)clearTimeout(tID);current=null;var tsettings=settings(this);function complete(){helper.parent.removeClass(tsettings.extraClass).hide().css("opacity","");}if((!IE||!$.fn.bgiframe)&&tsettings.fade){if(helper.parent.is(':animated'))helper.parent.stop().fadeTo(tsettings.fade,0,complete);else
helper.parent.stop().fadeOut(tsettings.fade,complete);}else
complete();if(settings(this).fixPNG)helper.parent.unfixPNG();}})(jQuery);(function($){var strImgDir='ressources/';var oImgZoomBox=$('<div>');var oImgClose=$('<img>').css({position:'absolute',top:0,left:0,cursor:'pointer',zIndex:102});$.fn.fancyzoom=function(userOptions){var oOverlay=$('<div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,cursor:"wait"});function openZoomBox(imgSrc,o){if(o.showoverlay){oOverlay.prependTo('body').click(function(){closeZoomBox(o);});if($.browser.msie&&$.browser.version<7){oOverlay.css({position:'absolute',height:$(document).height(),width:$(document).width()});}}
pos=imgSrc.offset();o=$.extend(o,{dimOri:{width:imgSrc.outerWidth(),height:imgSrc.outerHeight(),left:pos.left,top:pos.top,'opacity':0}});var oImgDisplay=$('img',oImgZoomBox);oImgZoomBox.css({'opacity':0,'text-align':'center','border':'0px solid red'}).appendTo('body');var iWidth=oImgZoomBox.outerWidth();var iHeight=oImgZoomBox.outerHeight();dimBoxTarget=$.extend({},{width:iWidth,height:iHeight,'opacity':1},__posCenter((iWidth+15),(iHeight+30)));oImgClose.css({left:(dimBoxTarget.left+dimBoxTarget.width-22-(dimBoxTarget.width-oImgDisplay.width())/2),top:dimBoxTarget.top});var $fctEnd=function(){if($.fn.shadow&&!$.browser.msie){$('img:first',oImgZoomBox).shadow(o.shadowOpts);}
if(o.Speed>0&&!$.browser.msie){oImgClose.fadeIn('slow');$('div',oImgZoomBox).fadeIn('slow');}
else{oImgClose.show();$('div',oImgZoomBox).show();}};$('div',oImgZoomBox).hide();if(o.Speed>0){oImgZoomBox.css(o.dimOri).animate(dimBoxTarget,o.Speed,$fctEnd);}
else{oImgZoomBox.css(dimBoxTarget);$fctEnd();}}
function closeZoomBox(o){oImgClose.remove();if(o.Speed>0){oImgZoomBox.animate(o.dimOri,o.Speed,function(){$(this).empty().remove();});if(o.showoverlay){oOverlay.animate({'opacity':0},o.Speed,function(){$(this).empty().remove();});}}else{oImgZoomBox.empty().remove();if(o.showoverlay){oOverlay.empty().remove();}}}
return this.each(function(){var $this=$(this);var imgTarget=$this.is('img')?$this:$('img:first',$this);var imgTargetSrc=null;if($this.attr('href')){imgTargetSrc=$this.attr('href');}
if($this.is('img')){imgTargetSrc=$this.attr('src');$this.css('cursor','pointer');}
var opts=$.extend({},$.fn.fancyzoom.defaultsOptions,userOptions||{},{dimOri:{},oImgZoomBoxProp:{position:'absolute',left:0,top:0}});oOverlay.css({opacity:opts.overlay,background:opts.overlayColor});if(($('img',$this).size()===0&&!$this.is('img'))){return;}
if($this[0].has_fancyzoom&&$this[0].prev_src==$this.attr('src')){return;}
$this[0].has_fancyzoom=true;$this[0].prev_src=$this.attr('src');$this.click(function(){if(oLoading&&oLoading.is(':visible')||timerLoadingImg){if(oImgZoomBox&&$('img:first',oImgZoomBox).attr('src')!=imgTargetSrc){__cancelLoading();}
else{return false;}}
var o=$.extend({},opts,userOptions);if(oImgZoomBox&&oImgZoomBox.parent().size()>0){var imCurrent=$('img:first',oImgZoomBox);if(imgTargetSrc==imCurrent.attr('src')){pos=imgTarget.offset();o=$.extend(o,{dimOri:{width:imgTarget.outerWidth(),height:imgTarget.outerHeight(),left:pos.left,top:pos.top,'opacity':0}});closeZoomBox(o);return false;}else{oImgClose.remove();oImgZoomBox.empty().remove();}}
if(o.showoverlay&&oOverlay){oOverlay.empty().remove().css({'opacity':o.overlay});}
oImgClose.attr('src',o.imgDir+'closebox.png').appendTo('body').hide();if($.fn.ifixpng){$.ifixpng(o.imgDir+'blank.gif');oImgClose.ifixpng(o.imgDir+'blank.gif');}
oImgClose.unbind('click').click(function(){closeZoomBox(o);});oImgZoomBox=$('<div>').empty().css(o.oImgZoomBoxProp);var strTitle=imgTarget.attr('alt');if(strTitle){var oTitle=$('<div><center><table height=0 border="0" cellspacing=0 cellpadding=0><tr><td></td><td class="fancyTitle">'+strTitle+'</td><td></td></table></center></div>').css({marginTop:10,marginRight:15});var tdL=oTitle.find('td:first').css({'background':'url('+o.imgDir+'zoom-caption-l.png)',width:'13px',height:'26px'});var tdR=oTitle.find('td:last').css({'background':'url('+o.imgDir+'zoom-caption-r.png)',width:'13px',height:'26px'});var tdC=$('.fancyTitle',oTitle).css({'background':'url('+o.imgDir+'zoom-caption-fill.png)','padding':'0px 20px',color:'#FFF','font-size':'14px'});if($.fn.ifixpng){tdL.ifixpng(o.imgDir+'blank.gif');tdR.ifixpng(o.imgDir+'blank.gif');tdC.ifixpng(o.imgDir+'blank.gif');}
oTitle.appendTo(oImgZoomBox);}
var oImgZoom=$('<img />').attr('src',imgTargetSrc).css({zIndex:100,marginTop:15,marginRight:15}).click(function(){closeZoomBox(o);}).prependTo(oImgZoomBox);var imgPreload=new Image();imgPreload.src=imgTargetSrc;var $fctEndLoading=function(){if(bCancelLoading){bCancelLoading=false;}
else{if(__getFileName(imgPreload.src)==__getFileName($('img:first',oImgZoomBox).attr('src'))){fctCalculateImageSize();openZoomBox(imgTarget,o);__stoploading();}}};var fctCalculateImageSize=function(){var divCalculate=$('<div></div>').css({position:'absolute','top':0,'left':0,opacity:0,'border':'0px solid red'});oImgZoom.appendTo(divCalculate);divCalculate.appendTo('body');imWidth=oImgZoom.width();imHeight=oImgZoom.height();maxWidth=$(window).width()*0.9;maxHeight=$(window).height()*0.8;if(maxHeight<imHeight){oImgZoom.css('height',maxHeight);}else if(maxWidth<imWidth){oImgZoom.css('width',maxWidth);}
divCalculate.remove();oImgZoom.prependTo(oImgZoomBox);};if(imgPreload.complete){fctCalculateImageSize();openZoomBox(imgTarget,o);}
else{__displayLoading();imgPreload.onload=function(){$fctEndLoading();};}
return false;});});};$.fn.fancyzoom.defaultsOptions={overlayColor:'#000',overlay:0.6,showoverlay:false,Speed:400,shadowOpts:{color:"#000",offset:4,opacity:0.2},imgDir:strImgDir};function __posCenter(iWidth,iHeight){var iLeft=($(window).width()-iWidth)/2+$(window).scrollLeft();var iTop=($(window).height()-iHeight)/2+$(window).scrollTop();iLeft=(iLeft<0)?0:iLeft;iTop=(iTop<0)?0:iTop;return{left:iLeft,top:iTop};}
var oLoading=null;var bCancelLoading=false;var timerLoadingImg=null;function __displayLoading(){if(!oLoading){oLoading=$('<div></div>').css({width:50,height:50,position:'absolute','background':'transparent',opacity:8/10,color:'#FFF',padding:'5px','font-size':'10px'});}
oLoading.css(__posCenter(50,50)).html('<img src="'+$.fn.fancyzoom.defaultsOptions.imgDir+'blank.gif" />').click(function(){__cancelLoading();}).appendTo('body').show();timerLoadingImg=setTimeout(__changeimageLoading,400);}
function __cancelLoading(){bCancelLoading=true;__stoploading();}
function __stoploading(){oLoading.hide().remove();if(timerLoadingImg){clearTimeout(timerLoadingImg);timerLoadingImg=null;}}
function __changeimageLoading(){if(!oLoading.is(':visible')){timerLoadingImg=null;return;}
var $im=$('img',oLoading);if(!$im.attr('src')||/blank\.gif/.test($im.attr('src'))){strImgSrc=$.fn.fancyzoom.defaultsOptions.imgDir+"zoom-spin-1.png";}
else{tab=$im.attr('src').split(/[- .]+/);iImg=parseInt(tab[2]);iImg=(iImg<12)?(iImg+1):1;strImgSrc=tab[0]+"-"+tab[1]+"-"+iImg+"."+tab[3];}
var pLoad=new Image();pLoad.src=strImgSrc;var $fct=function(){oLoading.css(__posCenter(50,50));$im.attr('src',strImgSrc);timerLoadingImg=setTimeout(__changeimageLoading,100);};if(pLoad.complete){$fct();}
else{pLoad.onload=$fct;}}
function __getFileName(strPath){if(!strPath){return false;}
var tabPath=strPath.split('/');return((tabPath.length<1)?strPath:tabPath[(tabPath.length-1)]);}})(jQuery);(function($){$.fn.shadowEnable=function(){return $(this).find("+ .fx-shadow").show().end();};$.fn.shadowDisable=function(){return $(this).find("+ .fx-shadow").hide().end();};$.fn.shadowDestroy=function(){return $(this).find("+ .fx-shadow").remove().end();};$.fn.shadow=function(options){options=$.extend({offset:1,opacity:0.2,color:"#000",monitor:false},options||{});options.offset-=1;return this.each(function(){var $element=$(this).shadowDestroy(),$shadow=$("<div class='fx-shadow' style='position: relative;'></div>").hide().insertAfter($element);baseWidth=$element.outerWidth(),baseHeight=$element.outerHeight(),position=$element.position(),zIndex=parseInt($element.css("zIndex"))||0;$('<div class="fx-shadow-color fx-shadow-layer-1"></div>').css({position:'absolute',opacity:options.opacity-0.05,left:options.offset,top:options.offset,width:baseWidth+1,height:baseHeight+1}).appendTo($shadow);$('<div class="fx-shadow-color fx-shadow-layer-2"></div>').css({position:'absolute',opacity:options.opacity-0.10,left:options.offset+2,top:options.offset+2,width:baseWidth,height:baseHeight-3}).appendTo($shadow);$('<div class="fx-shadow-color fx-shadow-layer-3"></div>').css({position:'absolute',opacity:options.opacity-0.10,left:options.offset+2,top:options.offset+2,width:baseWidth-3,height:baseHeight}).appendTo($shadow);$('<div class="fx-shadow-color fx-shadow-layer-4"></div>').css({position:'absolute',opacity:options.opacity,left:options.offset+1,top:options.offset+1,width:baseWidth-1,height:baseHeight-1}).appendTo($shadow);$("div.fx-shadow-color",$shadow).css("background-color",options.color);$element.css({zIndex:zIndex+1,position:($element.css("position")=="static"?"relative":"")});$shadow.css({position:"absolute",zIndex:zIndex,top:position.top+"px",left:position.left+"px",width:baseWidth,height:baseHeight,marginLeft:$element.css("marginLeft"),marginRight:$element.css("marginRight"),marginBottom:$element.css("marginBottom"),marginTop:$element.css("marginTop")}).fadeIn();if(options.monitor){function rearrangeShadow(){var $element=$(this),$shadow=$element.next();$shadow.css({top:parseInt($element.css("top"))+"px",left:parseInt($element.css("left"))+"px"})
$(">*",$shadow).css({height:this.offsetHeight+"px",width:this.offsetWidth+"px"});}
$element.bind("DOMAttrModified",rearrangeShadow);if($shadow[0].style.setExpression){$shadow[0].style.setExpression("top","parseInt(this.previousSibling.currentStyle.top ) + 'px'");$shadow[0].style.setExpression("left","parseInt(this.previousSibling.currentStyle.left) + 'px'");}}});};})(jQuery);if(typeof(Control)=='undefined')
Control={};var $proc=function(proc){return typeof(proc)=='function'?proc:function(){return proc};};var $value=function(value){return typeof(value)=='function'?value():value;};Object.Event={extend:function(object){object._objectEventSetup=function(event_name){this._observers=this._observers||{};this._observers[event_name]=this._observers[event_name]||[];};object.observe=function(event_name,observer){if(typeof(event_name)=='string'&&typeof(observer)!='undefined'){this._objectEventSetup(event_name);if(!this._observers[event_name].include(observer))
this._observers[event_name].push(observer);}else
for(var e in event_name)
this.observe(e,event_name[e]);};object.stopObserving=function(event_name,observer){this._objectEventSetup(event_name);if(event_name&&observer)
this._observers[event_name]=this._observers[event_name].without(observer);else if(event_name)
this._observers[event_name]=[];else
this._observers={};};object.observeOnce=function(event_name,outer_observer){var inner_observer=function(){outer_observer.apply(this,arguments);this.stopObserving(event_name,inner_observer);}.bind(this);this._objectEventSetup(event_name);this._observers[event_name].push(inner_observer);};object.notify=function(event_name){this._objectEventSetup(event_name);var collected_return_values=[];var args=$A(arguments).slice(1);try{for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);}catch(e){if(e==$break)
return false;else
throw e;}
return collected_return_values;};if(object.prototype){object.prototype._objectEventSetup=object._objectEventSetup;object.prototype.observe=object.observe;object.prototype.stopObserving=object.stopObserving;object.prototype.observeOnce=object.observeOnce;object.prototype.notify=function(event_name){if(object.notify){var args=$A(arguments).slice(1);args.unshift(this);args.unshift(event_name);object.notify.apply(object,args);}
this._objectEventSetup(event_name);var args=$A(arguments).slice(1);var collected_return_values=[];try{if(this.options&&this.options[event_name]&&typeof(this.options[event_name])=='function')
collected_return_values.push(this.options[event_name].apply(this,args)||null);for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);}catch(e){if(e==$break)
return false;else
throw e;}
return collected_return_values;};}}};Element.addMethods({observeOnce:function(element,event_name,outer_callback){var inner_callback=function(){outer_callback.apply(this,arguments);Element.stopObserving(element,event_name,inner_callback);};Element.observe(element,event_name,inner_callback);}});Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";if(!Prototype.Browser.IE){eventName={mouseenter:'mouseover',mouseleave:'mouseout'}[eventName]||eventName;}
return eventName;}
function getCacheForID(id){return cache[id]=cache[id]||{};}
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
return false;Event.extend(event);handler.call(element,event);};if(!(Prototype.Browser.IE)&&['mouseenter','mouseleave'].include(eventName)){wrapper=wrapper.wrap(function(proceed,event){var rel=event.relatedTarget;var cur=event.currentTarget;if(rel&&rel.nodeType==Node.TEXT_NODE)
rel=rel.parentNode;if(rel&&rel!=cur&&!rel.descendantOf(cur))
return proceed(event);});}
wrapper.handler=handler;c.push(wrapper);return wrapper;}
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
function destroyCache(){for(var id in cache)
for(var eventName in cache[id])
cache[id][eventName]=null;}
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize()});(function(){function wheel(event){var delta;if(event.wheelDelta)
delta=event.wheelDelta/120;else if(event.detail)
delta=-event.detail/3;if(!delta)
return;var custom_event=Event.element(event).fire('mouse:wheel',{delta:delta});if(custom_event.stopped){Event.stop(event);return false;}}
document.observe('mousewheel',wheel);document.observe('DOMMouseScroll',wheel);})();var IframeShim=Class.create({initialize:function(){this.element=new Element('iframe',{style:'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',src:'javascript:void(0);',frameborder:0});$(document.body).insert(this.element);},hide:function(){this.element.hide();return this;},show:function(){this.element.show();return this;},positionUnder:function(element){var element=$(element);var offset=element.cumulativeOffset();var dimensions=element.getDimensions();this.element.setStyle({left:offset[0]+'px',top:offset[1]+'px',width:dimensions.width+'px',height:dimensions.height+'px',zIndex:element.getStyle('zIndex')-1}).show();return this;},setBounds:function(bounds){for(prop in bounds)
bounds[prop]+='px';this.element.setStyle(bounds);return this;},destroy:function(){if(this.element)
this.element.remove();return this;}});if(typeof(Draggable)!='undefined'){Draggable.prototype.draw=function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(typeof this.options.snap=='function'){p=this.options.snap(p[0],p[1],this);}else{if(this.options.snap instanceof Array){p=p.map(function(v,i){return Math.round(v/this.options.snap[i])*this.options.snap[i]}.bind(this))}else{p=p.map(function(v){return Math.round(v/this.options.snap)*this.options.snap}.bind(this))}}}
if(this.options.onDraw)
this.options.onDraw.bind(this)(p);else{var style=this.element.style;if(this.options.constrainToViewport){var viewport_dimensions=document.viewport.getDimensions();var container_dimensions=this.element.getDimensions();var margin_top=parseInt(this.element.getStyle('margin-top'));var margin_left=parseInt(this.element.getStyle('margin-left'));var boundary=[[0-margin_left,0-margin_top],[(viewport_dimensions.width-container_dimensions.width)-margin_left,(viewport_dimensions.height-container_dimensions.height)-margin_top]];if((!this.options.constraint)||(this.options.constraint=='horizontal')){if((p[0]>=boundary[0][0])&&(p[0]<=boundary[1][0]))
this.element.style.left=p[0]+"px";else
this.element.style.left=((p[0]<boundary[0][0])?boundary[0][0]:boundary[1][0])+"px";}
if((!this.options.constraint)||(this.options.constraint=='vertical')){if((p[1]>=boundary[0][1])&&(p[1]<=boundary[1][1]))
this.element.style.top=p[1]+"px";else
this.element.style.top=((p[1]<=boundary[0][1])?boundary[0][1]:boundary[1][1])+"px";}}else{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="";}};}
if(typeof(Prototype)=="undefined")
throw"Control.Window requires Prototype to be loaded.";if(typeof(IframeShim)=="undefined")
throw"Control.Window requires IframeShim to be loaded.";if(typeof(Object.Event)=="undefined")
throw"Control.Window requires Object.Event to be loaded.";Control.Window=Class.create({initialize:function(container,options){Control.Window.windows.push(this);this.container=false;this.isOpen=false;this.href=false;this.sourceContainer=false;this.ajaxRequest=false;this.remoteContentLoaded=false;this.numberInSequence=Control.Window.windows.length+1;this.indicator=false;this.effects={fade:false,appear:false};this.indicatorEffects={fade:false,appear:false};this.options=Object.extend({beforeOpen:Prototype.emptyFunction,afterOpen:Prototype.emptyFunction,beforeClose:Prototype.emptyFunction,afterClose:Prototype.emptyFunction,height:null,width:null,className:false,position:'center',offsetLeft:0,offsetTop:0,iframe:false,hover:false,indicator:false,closeOnClick:false,iframeshim:true,fade:false,fadeDuration:0.75,draggable:false,onDrag:Prototype.emptyFunction,resizable:false,minHeight:false,minWidth:false,maxHeight:false,maxWidth:false,onResize:Prototype.emptyFunction,constrainToViewport:false,parameters:{},onComplete:Prototype.emptyFunction,onSuccess:Prototype.emptyFunction,onFailure:Prototype.emptyFunction,onException:Prototype.emptyFunction,onRemoteContentLoaded:Prototype.emptyFunction,insertRemoteContentAt:false},options||{});this.indicator=this.options.indicator?$(this.options.indicator):false;if(container){if(typeof(container)=="string"&&container.match(Control.Window.uriRegex))
this.href=container;else{this.container=$(container);this.createDefaultContainer(container);if(this.container&&((this.container.readAttribute('href')&&this.container.readAttribute('href')!='')||(this.options.hover&&this.options.hover!==true))){if(this.options.hover&&this.options.hover!==true)
this.sourceContainer=$(this.options.hover);else{this.sourceContainer=this.container;this.href=this.container.readAttribute('href');var rel=this.href.match(/^#(.+)$/);if(rel&&rel[1]){this.container=$(rel[1]);this.href=false;}else
this.container=false;}
this.sourceContainerOpenHandler=function(event){this.open(event);event.stop();return false;}.bindAsEventListener(this);this.sourceContainerCloseHandler=function(event){this.close(event);}.bindAsEventListener(this);this.sourceContainerMouseMoveHandler=function(event){this.position(event);}.bindAsEventListener(this);if(this.options.hover){this.sourceContainer.observe('mouseenter',this.sourceContainerOpenHandler);this.sourceContainer.observe('mouseleave',this.sourceContainerCloseHandler);if(this.options.position=='mouse')
this.sourceContainer.observe('mousemove',this.sourceContainerMouseMoveHandler);}else
this.sourceContainer.observe('click',this.sourceContainerOpenHandler);}}}
this.createDefaultContainer(container);if(this.options.insertRemoteContentAt===false)
this.options.insertRemoteContentAt=this.container;var styles={margin:0,position:'absolute',zIndex:Control.Window.initialZIndexForWindow()};if(this.options.width)
styles.width=$value(this.options.width)+'px';if(this.options.height)
styles.height=$value(this.options.height)+'px';this.container.setStyle(styles);if(this.options.className)
this.container.addClassName(this.options.className);this.positionHandler=this.position.bindAsEventListener(this);this.outOfBoundsPositionHandler=this.ensureInBounds.bindAsEventListener(this);this.bringToFrontHandler=this.bringToFront.bindAsEventListener(this);this.container.observe('mousedown',this.bringToFrontHandler);this.container.hide();this.closeHandler=this.close.bindAsEventListener(this);if(this.options.iframeshim){this.iFrameShim=new IframeShim();this.iFrameShim.hide();}
this.applyResizable();this.applyDraggable();Event.observe(window,'resize',this.outOfBoundsPositionHandler);this.notify('afterInitialize');},open:function(event){if(this.isOpen){this.bringToFront();return false;}
if(this.notify('beforeOpen')===false)
return false;if(this.options.closeOnClick){if(this.options.closeOnClick===true)
this.closeOnClickContainer=$(document.body);else if(this.options.closeOnClick=='container')
this.closeOnClickContainer=this.container;else if(this.options.closeOnClick=='overlay'){Control.Overlay.load();this.closeOnClickContainer=Control.Overlay.container;}else
this.closeOnClickContainer=$(this.options.closeOnClick);this.closeOnClickContainer.observe('click',this.closeHandler);}
if(this.href&&!this.options.iframe&&!this.remoteContentLoaded){this.remoteContentLoaded=true;if(this.href.match(/\.(jpe?g|gif|png|tiff?)$/i)){var img=new Element('img');img.observe('load',function(img){this.getRemoteContentInsertionTarget().insert(img);this.position();if(this.notify('onRemoteContentLoaded')!==false){if(this.options.indicator)
this.hideIndicator();this.finishOpen();}}.bind(this,img));img.writeAttribute('src',this.href);}else{if(!this.ajaxRequest){if(this.options.indicator)
this.showIndicator();this.ajaxRequest=new Ajax.Request(this.href,{method:'post',parameters:this.options.parameters,onComplete:function(request){this.notify('onComplete',request);this.ajaxRequest=false;}.bind(this),onSuccess:function(request){this.getRemoteContentInsertionTarget().insert(request.responseText);this.notify('onSuccess',request);if(this.notify('onRemoteContentLoaded')!==false){if(this.options.indicator)
this.hideIndicator();this.finishOpen();}}.bind(this),onFailure:function(request){this.notify('onFailure',request);if(this.options.indicator)
this.hideIndicator();}.bind(this),onException:function(request,e){this.notify('onException',request,e);if(this.options.indicator)
this.hideIndicator();}.bind(this)});}}
return true;}else if(this.options.iframe&&!this.remoteContentLoaded){this.remoteContentLoaded=true;if(this.options.indicator)
this.showIndicator();this.getRemoteContentInsertionTarget().insert(Control.Window.iframeTemplate.evaluate({href:this.href}));var iframe=this.container.down('iframe');iframe.onload=function(){this.notify('onRemoteContentLoaded');if(this.options.indicator)
this.hideIndicator();iframe.onload=null;}.bind(this);}
this.finishOpen(event);return true},close:function(event){if(!this.isOpen||this.notify('beforeClose',event)===false)
return false;if(this.options.closeOnClick)
this.closeOnClickContainer.stopObserving('click',this.closeHandler);if(this.options.fade){this.effects.fade=new Effect.Fade(this.container,{queue:{position:'front',scope:'Control.Window'+this.numberInSequence},from:1,to:0,duration:this.options.fadeDuration/2,afterFinish:function(){if(this.iFrameShim)
this.iFrameShim.hide();this.isOpen=false;this.notify('afterClose');}.bind(this)});}else{this.container.hide();if(this.iFrameShim)
this.iFrameShim.hide();}
if(this.ajaxRequest)
this.ajaxRequest.transport.abort();if(!(this.options.draggable||this.options.resizable)&&this.options.position=='center')
Event.stopObserving(window,'resize',this.positionHandler);if(!this.options.draggable&&this.options.position=='center')
Event.stopObserving(window,'scroll',this.positionHandler);if(this.options.indicator)
this.hideIndicator();if(!this.options.fade){this.isOpen=false;this.notify('afterClose');}
return true;},position:function(event){if(this.options.position=='mouse'){var xy=[Event.pointerX(event),Event.pointerY(event)];this.container.setStyle({top:xy[1]+this.options.hover.cumulativeScrollOffset()[1]+$value(this.options.offsetTop)+'px',left:xy[0]+$value(this.options.offsetLeft)+'px'});return;}
var container_dimensions=this.container.getDimensions();var viewport_dimensions=document.viewport.getDimensions();Position.prepare();var offset_left=(Position.deltaX+Math.floor((viewport_dimensions.width-container_dimensions.width)/2));var offset_top=(Position.deltaY+((viewport_dimensions.height>container_dimensions.height)?Math.floor((viewport_dimensions.height-container_dimensions.height)/2):0));if(this.options.position=='center'){this.container.setStyle({top:(container_dimensions.height<=viewport_dimensions.height)?((offset_top!=null&&offset_top>0)?offset_top:0)+'px':0,left:(container_dimensions.width<=viewport_dimensions.width)?((offset_left!=null&&offset_left>0)?offset_left:0)+'px':0});}else if(this.options.position=='relative'){var xy=this.sourceContainer.cumulativeOffset();var top=xy[1]+$value(this.options.offsetTop);var left=xy[0]+$value(this.options.offsetLeft);this.container.setStyle({top:(container_dimensions.height<=viewport_dimensions.height)?(this.options.constrainToViewport?Math.max(0,Math.min(viewport_dimensions.height-(container_dimensions.height),top)):top)+'px':0,left:(container_dimensions.width<=viewport_dimensions.width)?(this.options.constrainToViewport?Math.max(0,Math.min(viewport_dimensions.width-(container_dimensions.width),left)):left)+'px':0});}else if(this.options.position.length){var top=$value(this.options.position[1])+$value(this.options.offsetTop);var left=$value(this.options.position[0])+$value(this.options.offsetLeft);this.container.setStyle({top:(container_dimensions.height<=viewport_dimensions.height)?(this.options.constrainToViewport?Math.max(0,Math.min(viewport_dimensions.height-(container_dimensions.height),top)):top)+'px':0,left:(container_dimensions.width<=viewport_dimensions.width)?(this.options.constrainToViewport?Math.max(0,Math.min(viewport_dimensions.width-(container_dimensions.width),left)):left)+'px':0});}
if(this.iFrameShim)
this.updateIFrameShimZIndex();},ensureInBounds:function(){if(!this.isOpen)
return;var viewport_dimensions=document.viewport.getDimensions();var container_offset=this.container.cumulativeOffset();var container_dimensions=this.container.getDimensions();if(container_offset.left+container_dimensions.width>viewport_dimensions.width){this.container.setStyle({left:(Math.max(0,viewport_dimensions.width-container_dimensions.width))+'px'});}
if(container_offset.top+container_dimensions.height>viewport_dimensions.height){this.container.setStyle({top:(Math.max(0,viewport_dimensions.height-container_dimensions.height))+'px'});}},bringToFront:function(){Control.Window.bringToFront(this);this.notify('bringToFront');},destroy:function(){this.container.stopObserving('mousedown',this.bringToFrontHandler);if(this.draggable){Resizables.removeObserver(this.container);this.draggable.handle.stopObserving('mousedown',this.bringToFrontHandler);this.draggable.destroy();}
if(this.resizable){Resizables.removeObserver(this.container);this.resizable.handle.stopObserving('mousedown',this.bringToFrontHandler);this.resizable.destroy();}
if(this.container&&!this.sourceContainer)
this.container.remove();if(this.sourceContainer){if(this.options.hover){this.sourceContainer.stopObserving('mouseenter',this.sourceContainerOpenHandler);this.sourceContainer.stopObserving('mouseleave',this.sourceContainerCloseHandler);if(this.options.position=='mouse')
this.sourceContainer.stopObserving('mousemove',this.sourceContainerMouseMoveHandler);}else
this.sourceContainer.stopObserving('click',this.sourceContainerOpenHandler);}
if(this.iFrameShim)
this.iFrameShim.destroy();Event.stopObserving(window,'resize',this.outOfBoundsPositionHandler);Control.Window.windows=Control.Window.windows.without(this);this.notify('afterDestroy');},applyResizable:function(){if(this.options.resizable){if(typeof(Resizable)=="undefined")
throw"Control.Window requires resizable.js to be loaded.";var resizable_handle=null;if(this.options.resizable===true){resizable_handle=new Element('div',{className:'resizable_handle'});this.container.insert(resizable_handle);}else
resizable_handle=$(this.options.resziable);this.resizable=new Resizable(this.container,{handle:resizable_handle,minHeight:this.options.minHeight,minWidth:this.options.minWidth,maxHeight:this.options.constrainToViewport?function(element){return(document.viewport.getDimensions().height-parseInt(element.style.top||0))-(element.getHeight()-parseInt(element.style.height||0));}:this.options.maxHeight,maxWidth:this.options.constrainToViewport?function(element){return(document.viewport.getDimensions().width-parseInt(element.style.left||0))-(element.getWidth()-parseInt(element.style.width||0));}:this.options.maxWidth});this.resizable.handle.observe('mousedown',this.bringToFrontHandler);Resizables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){if(this.iFrameShim)
this.updateIFrameShimZIndex();this.notify('onResize');}.bind(this)));}},applyDraggable:function(){if(this.options.draggable){if(typeof(Draggables)=="undefined")
throw"Control.Window requires dragdrop.js to be loaded.";var draggable_handle=null;if(this.options.draggable===true){draggable_handle=new Element('div',{className:'draggable_handle'});this.container.insert(draggable_handle);}else
draggable_handle=$(this.options.draggable);this.draggable=new Draggable(this.container,{handle:draggable_handle,constrainToViewport:this.options.constrainToViewport,zindex:this.container.getStyle('z-index'),starteffect:function(){if(Prototype.Browser.IE){this.old_onselectstart=document.onselectstart;document.onselectstart=function(){return false;};}}.bind(this),endeffect:function(){document.onselectstart=this.old_onselectstart;}.bind(this)});this.draggable.handle.observe('mousedown',this.bringToFrontHandler);Draggables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){if(this.iFrameShim)
this.updateIFrameShimZIndex();this.notify('onDrag');}.bind(this)));}},createDefaultContainer:function(container){if(!this.container){this.container=new Element('div',{id:'control_window_'+this.numberInSequence});$(document.body).insert(this.container);if(typeof(container)=="string"&&$(container)==null&&!container.match(/^#(.+)$/)&&!container.match(Control.Window.uriRegex))
this.container.update(container);}},finishOpen:function(event){this.bringToFront();if(this.options.fade){if(typeof(Effect)=="undefined")
throw"Control.Window requires effects.js to be loaded."
if(this.effects.fade)
this.effects.fade.cancel();this.effects.appear=new Effect.Appear(this.container,{queue:{position:'end',scope:'Control.Window.'+this.numberInSequence},from:0,to:1,duration:this.options.fadeDuration/2,afterFinish:function(){if(this.iFrameShim)
this.updateIFrameShimZIndex();this.isOpen=true;this.notify('afterOpen');}.bind(this)});}else
this.container.show();this.position(event);if(!(this.options.draggable||this.options.resizable)&&this.options.position=='center')
Event.observe(window,'resize',this.positionHandler,false);if(!this.options.draggable&&this.options.position=='center')
Event.observe(window,'scroll',this.positionHandler,false);if(!this.options.fade){this.isOpen=true;this.notify('afterOpen');}
return true;},showIndicator:function(){this.showIndicatorTimeout=window.setTimeout(function(){if(this.options.fade){this.indicatorEffects.appear=new Effect.Appear(this.indicator,{queue:{position:'front',scope:'Control.Window.indicator.'+this.numberInSequence},from:0,to:1,duration:this.options.fadeDuration/2});}else
this.indicator.show();}.bind(this),Control.Window.indicatorTimeout);},hideIndicator:function(){if(this.showIndicatorTimeout)
window.clearTimeout(this.showIndicatorTimeout);this.indicator.hide();},getRemoteContentInsertionTarget:function(){return typeof(this.options.insertRemoteContentAt)=="string"?this.container.down(this.options.insertRemoteContentAt):$(this.options.insertRemoteContentAt);},updateIFrameShimZIndex:function(){if(this.iFrameShim)
this.iFrameShim.positionUnder(this.container);}});Object.extend(Control.Window,{windows:[],baseZIndex:9999,indicatorTimeout:250,iframeTemplate:new Template('<iframe src="#{href}" width="100%" height="100%" frameborder="0"></iframe>'),uriRegex:/^(\/|\#|https?\:\/\/|[\w]+\/)/,bringToFront:function(w){Control.Window.windows=Control.Window.windows.without(w);Control.Window.windows.push(w);Control.Window.windows.each(function(w,i){var z_index=Control.Window.baseZIndex+i;w.container.setStyle({zIndex:z_index});if(w.isOpen){if(w.iFrameShim)
w.updateIFrameShimZIndex();}
if(w.options.draggable)
w.draggable.options.zindex=z_index;});},open:function(container,options){var w=new Control.Window(container,options);w.open();return w;},initialZIndexForWindow:function(w){return Control.Window.baseZIndex+(Control.Window.windows.length-1);}});Object.Event.extend(Control.Window);Control.Window.LayoutUpdateObserver=Class.create({initialize:function(w,observer){this.w=w;this.element=$(w.container);this.observer=observer;},onStart:Prototype.emptyFunction,onEnd:function(event_name,instance){if(instance.element==this.element&&this.iFrameShim)
this.w.updateIFrameShimZIndex();},onResize:function(event_name,instance){if(instance.element==this.element)
this.observer(this.element);},onDrag:function(event_name,instance){if(instance.element==this.element)
this.observer(this.element);}});Control.Overlay={id:'control_overlay',loaded:false,container:false,lastOpacity:0,styles:{position:'fixed',top:0,left:0,width:'100%',height:'100%',zIndex:9998},ieStyles:{position:'absolute',top:0,left:0,zIndex:9998},effects:{fade:false,appear:false},load:function(){if(Control.Overlay.loaded)
return false;Control.Overlay.loaded=true;Control.Overlay.container=new Element('div',{id:Control.Overlay.id});$(document.body).insert(Control.Overlay.container);if(Prototype.Browser.IE){Control.Overlay.container.setStyle(Control.Overlay.ieStyles);Event.observe(window,'scroll',Control.Overlay.positionOverlay);Event.observe(window,'resize',Control.Overlay.positionOverlay);Control.Overlay.observe('beforeShow',Control.Overlay.positionOverlay);}else
Control.Overlay.container.setStyle(Control.Overlay.styles);Control.Overlay.iFrameShim=new IframeShim();Control.Overlay.iFrameShim.hide();Event.observe(window,'resize',Control.Overlay.positionIFrameShim);Control.Overlay.container.hide();return true;},unload:function(){if(!Control.Overlay.loaded)
return false;Event.stopObserving(window,'resize',Control.Overlay.positionOverlay);Control.Overlay.stopObserving('beforeShow',Control.Overlay.positionOverlay);Event.stopObserving(window,'resize',Control.Overlay.positionIFrameShim);Control.Overlay.iFrameShim.destroy();Control.Overlay.container.remove();Control.Overlay.loaded=false;return true;},show:function(opacity,fade){if(Control.Overlay.notify('beforeShow')===false)
return false;Control.Overlay.lastOpacity=opacity;Control.Overlay.positionIFrameShim();Control.Overlay.iFrameShim.show();if(fade){if(typeof(Effect)=="undefined")
throw"Control.Window requires effects.js to be loaded."
if(Control.Overlay.effects.fade)
Control.Overlay.effects.fade.cancel();Control.Overlay.effects.appear=new Effect.Appear(Control.Overlay.container,{queue:{position:'end',scope:'Control.Overlay'},afterFinish:function(){Control.Overlay.notify('afterShow');},from:0,to:Control.Overlay.lastOpacity,duration:(fade===true?0.75:fade)/2});}else{Control.Overlay.container.setStyle({opacity:opacity||1});Control.Overlay.container.show();Control.Overlay.notify('afterShow');}
return true;},hide:function(fade){if(Control.Overlay.notify('beforeHide')===false)
return false;if(Control.Overlay.effects.appear)
Control.Overlay.effects.appear.cancel();Control.Overlay.iFrameShim.hide();if(fade){Control.Overlay.effects.fade=new Effect.Fade(Control.Overlay.container,{queue:{position:'front',scope:'Control.Overlay'},afterFinish:function(){Control.Overlay.notify('afterHide');},from:Control.Overlay.lastOpacity,to:0,duration:(fade===true?0.75:fade)/2});}else{Control.Overlay.container.hide();Control.Overlay.notify('afterHide');}
return true;},positionIFrameShim:function(){if(Control.Overlay.container.visible())
Control.Overlay.iFrameShim.positionUnder(Control.Overlay.container);},positionOverlay:function(){var dimensions=document.viewport.getDimensions();Control.Overlay.container.setStyle({width:dimensions.width+'px',height:dimensions.height+'px'});}};Object.Event.extend(Control.Overlay);Control.ToolTip=Class.create(Control.Window,{initialize:function($super,container,tooltip,options){$super(tooltip,Object.extend(Object.extend(Control.ToolTip.defaultOptions,options||{}),{position:'mouse',hover:container}));}});Object.extend(Control.ToolTip,{defaultOptions:{offsetLeft:10}});Control.Modal=Class.create(Control.Window,{initialize:function($super,container,options){Control.Modal.InstanceMethods.beforeInitialize.bind(this)();$super(container,Object.extend(Control.Modal.defaultOptions,options||{}));}});Object.extend(Control.Modal,{defaultOptions:{overlayOpacity:0.5,closeOnClick:'overlay'},current:false,open:function(container,options){var modal=new Control.Modal(container,options);modal.open();return modal;},close:function(){if(Control.Modal.current)
Control.Modal.current.close();},InstanceMethods:{beforeInitialize:function(){Control.Overlay.load();this.overlayFinishedOpening=false;this.observe('beforeOpen',Control.Modal.Observers.beforeOpen.bind(this));this.observe('afterOpen',Control.Modal.Observers.afterOpen.bind(this));this.observe('afterClose',Control.Modal.Observers.afterClose.bind(this));}},Observers:{beforeOpen:function(){if(!this.overlayFinishedOpening){Control.Overlay.observeOnce('afterShow',function(){this.overlayFinishedOpening=true;this.open();}.bind(this));Control.Overlay.show(this.options.overlayOpacity,this.options.fade?this.options.fadeDuration:false);throw $break;}else
Control.Window.windows.without(this).invoke('close');},afterOpen:function(){Control.Modal.current=this;},afterClose:function(){Control.Overlay.hide(this.options.fade?this.options.fadeDuration:false);Control.Modal.current=false;this.overlayFinishedOpening=false;}}});Control.LightBox=Class.create(Control.Window,{initialize:function($super,container,options){this.allImagesLoaded=false;if(options.modal){var options=Object.extend(Control.LightBox.defaultOptions,options||{});options=Object.extend(Control.Modal.defaultOptions,options);options=Control.Modal.InstanceMethods.beforeInitialize.bind(this)(options);$super(container,options);}else
$super(container,Object.extend(Control.LightBox.defaultOptions,options||{}));this.hasRemoteContent=this.href&&!this.options.iframe;if(this.hasRemoteContent)
this.observe('onRemoteContentLoaded',Control.LightBox.Observers.onRemoteContentLoaded.bind(this));else
this.applyImageObservers();this.observe('beforeOpen',Control.LightBox.Observers.beforeOpen.bind(this));},applyImageObservers:function(){var images=this.getImages();this.numberImagesToLoad=images.length;this.numberofImagesLoaded=0;images.each(function(image){image.observe('load',function(image){++this.numberofImagesLoaded;if(this.numberImagesToLoad==this.numberofImagesLoaded){this.allImagesLoaded=true;this.onAllImagesLoaded();}}.bind(this,image));image.hide();}.bind(this));},onAllImagesLoaded:function(){this.getImages().each(function(image){this.showImage(image);}.bind(this));if(this.hasRemoteContent){if(this.options.indicator)
this.hideIndicator();this.finishOpen();}else
this.open();},getImages:function(){return this.container.select(Control.LightBox.imageSelector);},showImage:function(image){image.show();}});Object.extend(Control.LightBox,{imageSelector:'img',defaultOptions:{},Observers:{beforeOpen:function(){if(!this.hasRemoteContent&&!this.allImagesLoaded)
throw $break;},onRemoteContentLoaded:function(){this.applyImageObservers();if(!this.allImagesLoaded)
throw $break;}}});if(!("console"in window)){(function()
{window.console={log:function()
{logFormatted(arguments,"");},debug:function()
{logFormatted(arguments,"debug");},info:function()
{logFormatted(arguments,"info");},warn:function()
{logFormatted(arguments,"warning");},error:function()
{logFormatted(arguments,"error");},assert:function(truth,message)
{if(!truth)
{var args=[];for(var i=1;i<arguments.length;++i)
args.push(arguments[i]);logFormatted(args.length?args:["Assertion Failure"],"error");throw message?message:"Assertion Failure";}},dir:function(object)
{var html=[];var pairs=[];for(var name in object)
{try
{pairs.push([name,object[name]]);}
catch(exc)
{}}
pairs.sort(function(a,b){return a[0]<b[0]?-1:1;});html.push('<table>');for(var i=0;i<pairs.length;++i)
{var name=pairs[i][0],value=pairs[i][1];html.push('<tr>','<td class="propertyNameCell"><span class="propertyName">',escapeHTML(name),'</span></td>','<td><span class="propertyValue">');appendObject(value,html);html.push('</span></td></tr>');}
html.push('</table>');logRow(html,"dir");},dirxml:function(node)
{var html=[];appendNode(node,html);logRow(html,"dirxml");},group:function()
{logRow(arguments,"group",pushGroup);},groupEnd:function()
{logRow(arguments,"",popGroup);},time:function(name)
{timeMap[name]=(new Date()).getTime();},timeEnd:function(name)
{if(name in timeMap)
{var delta=(new Date()).getTime()-timeMap[name];logFormatted([name+":",delta+"ms"]);delete timeMap[name];}},count:function()
{this.warn(["count() not supported."]);},trace:function()
{this.warn(["trace() not supported."]);},profile:function()
{this.warn(["profile() not supported."]);},profileEnd:function()
{},clear:function()
{consoleBody.innerHTML="";},open:function()
{toggleConsole(true);},close:function()
{if(frameVisible)
toggleConsole();}};var consoleFrame=null;var consoleBody=null;var commandLine=null;var frameVisible=false;var messageQueue=[];var groupStack=[];var timeMap={};var clPrefix=">>> ";var isFirefox=navigator.userAgent.indexOf("Firefox")!=-1;var isIE=navigator.userAgent.indexOf("MSIE")!=-1;var isOpera=navigator.userAgent.indexOf("Opera")!=-1;var isSafari=navigator.userAgent.indexOf("AppleWebKit")!=-1;function toggleConsole(forceOpen)
{frameVisible=forceOpen||!frameVisible;if(consoleFrame){if(frameVisible){consoleFrame.style.height="200px";consoleFrame.style.visibility="visible";}else{consoleFrame.style.height="0";consoleFrame.style.visibility="hidden";}}else{waitForBody();}}
function focusCommandLine()
{toggleConsole(true);if(commandLine)
commandLine.focus();}
function waitForBody()
{if($('firebug_header')){if($('firebug_footer')){createFrame();}else{setTimeout(waitForBody,1000);}}}
function createFrame()
{if(consoleFrame)
return;window.onFirebugReady=function(doc)
{window.onFirebugReady=null;var toolbar=doc.getElementById("toolbar");toolbar.onmousedown=onSplitterMouseDown;commandLine=doc.getElementById("commandLine");addEvent(commandLine,"keydown",onCommandLineKeyDown);addEvent(doc,isIE||isSafari?"keydown":"keypress",onKeyDown);consoleBody=doc.getElementById("log");layout();flush();}
var baseURL=getFirebugURL();consoleFrame=document.createElement("iframe");consoleFrame.setAttribute("src",baseURL+"/firebug.html");consoleFrame.setAttribute("frameBorder","0");consoleFrame.style.visibility=(frameVisible?"visible":"hidden");consoleFrame.style.zIndex="2147483647";consoleFrame.style.position="fixed";consoleFrame.style.width="100%";consoleFrame.style.left="0";consoleFrame.style.bottom="0";consoleFrame.style.height="0";document.body.appendChild(consoleFrame);}
function getFirebugURL()
{return"/javascripts/firebug";}
function evalCommandLine()
{var text=commandLine.value;commandLine.value="";logRow([clPrefix,text],"command");var value;try
{value=eval(text);}
catch(exc)
{}
console.log(value);}
function layout()
{var revision_height=consoleFrame.offsetHeight==0?200:consoleFrame.offsetHeight;var toolbar=consoleBody.ownerDocument.getElementById("toolbar");var height=revision_height-(toolbar.offsetHeight+commandLine.offsetHeight);consoleBody.style.top=toolbar.offsetHeight+"px";consoleBody.style.height=height+"px";commandLine.style.top=(revision_height-commandLine.offsetHeight)+"px";}
function logRow(message,className,handler)
{if(consoleBody)
writeMessage(message,className,handler);else
{messageQueue.push([message,className,handler]);waitForBody();}}
function flush()
{var queue=messageQueue;messageQueue=[];for(var i=0;i<queue.length;++i)
writeMessage(queue[i][0],queue[i][1],queue[i][2]);}
function writeMessage(message,className,handler)
{var isScrolledToBottom=consoleBody.scrollTop+consoleBody.offsetHeight>=consoleBody.scrollHeight;if(!handler)
handler=writeRow;handler(message,className);if(isScrolledToBottom)
consoleBody.scrollTop=consoleBody.scrollHeight-consoleBody.offsetHeight;}
function appendRow(row)
{var container=groupStack.length?groupStack[groupStack.length-1]:consoleBody;container.appendChild(row);}
function writeRow(message,className)
{var row=consoleBody.ownerDocument.createElement("div");row.className="logRow"+(className?" logRow-"+className:"");row.innerHTML=message.join("");appendRow(row);}
function pushGroup(message,className)
{logFormatted(message,className);var groupRow=consoleBody.ownerDocument.createElement("div");groupRow.className="logGroup";var groupRowBox=consoleBody.ownerDocument.createElement("div");groupRowBox.className="logGroupBox";groupRow.appendChild(groupRowBox);appendRow(groupRowBox);groupStack.push(groupRowBox);}
function popGroup()
{groupStack.pop();}
function logFormatted(objects,className)
{var html=[];var format=objects[0];var objIndex=0;if(typeof(format)!="string")
{format="";objIndex=-1;}
var parts=parseFormat(format);for(var i=0;i<parts.length;++i)
{var part=parts[i];if(part&&typeof(part)=="object")
{var object=objects[++objIndex];part.appender(object,html);}
else
appendText(part,html);}
for(var i=objIndex+1;i<objects.length;++i)
{appendText(" ",html);var object=objects[i];if(typeof(object)=="string")
appendText(object,html);else
appendObject(object,html);}
logRow(html,className);}
function parseFormat(format)
{var parts=[];var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;var appenderMap={s:appendText,d:appendInteger,i:appendInteger,f:appendFloat};for(var m=reg.exec(format);m;m=reg.exec(format))
{var type=m[8]?m[8]:m[5];var appender=type in appenderMap?appenderMap[type]:appendObject;var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));parts.push({appender:appender,precision:precision});format=format.substr(m.index+m[0].length);}
parts.push(format);return parts;}
function escapeHTML(value)
{function replaceChars(ch)
{switch(ch)
{case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"'":return"&#39;";case'"':return"&quot;";}
return"?";};return String(value).replace(/[<>&"']/g,replaceChars);}
function objectToString(object)
{try
{return object+"";}
catch(exc)
{return null;}}
function appendText(object,html)
{html.push(escapeHTML(objectToString(object)));}
function appendNull(object,html)
{html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),'</span>');}
function appendString(object,html)
{html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),'&quot;</span>');}
function appendInteger(object,html)
{html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),'</span>');}
function appendFloat(object,html)
{html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),'</span>');}
function appendFunction(object,html)
{var reName=/function ?(.*?)\(/;var m=reName.exec(objectToString(object));var name=m?m[1]:"function";html.push('<span class="objectBox-function">',escapeHTML(name),'()</span>');}
function appendObject(object,html)
{try
{if(object==undefined)
appendNull("undefined",html);else if(object==null)
appendNull("null",html);else if(typeof object=="string")
appendString(object,html);else if(typeof object=="number")
appendInteger(object,html);else if(typeof object=="function")
appendFunction(object,html);else if(object.nodeType==1)
appendSelector(object,html);else if(typeof object=="object")
appendObjectFormatted(object,html);else
appendText(object,html);}
catch(exc)
{}}
function appendObjectFormatted(object,html)
{var text=objectToString(object);var reObject=/\[object (.*?)\]/;var m=reObject.exec(text);html.push('<span class="objectBox-object">',m?m[1]:text,'</span>')}
function appendSelector(object,html)
{html.push('<span class="objectBox-selector">');html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),'</span>');if(object.id)
html.push('<span class="selectorId">#',escapeHTML(object.id),'</span>');if(object.className)
html.push('<span class="selectorClass">.',escapeHTML(object.className),'</span>');html.push('</span>');}
function appendNode(node,html)
{if(node.nodeType==1)
{html.push('<div class="objectBox-element">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),'</span>');for(var i=0;i<node.attributes.length;++i)
{var attr=node.attributes[i];if(!attr.specified)
continue;html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),'</span>&quot;')}
if(node.firstChild)
{html.push('&gt;</div><div class="nodeChildren">');for(var child=node.firstChild;child;child=child.nextSibling)
appendNode(child,html);html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),'&gt;</span></div>');}
else
html.push('/&gt;</div>');}
else if(node.nodeType==3)
{html.push('<div class="nodeText">',escapeHTML(node.nodeValue),'</div>');}}
function addEvent(object,name,handler)
{if(document.all)
object.attachEvent("on"+name,handler);else
object.addEventListener(name,handler,false);}
function removeEvent(object,name,handler)
{if(document.all)
object.detachEvent("on"+name,handler);else
object.removeEventListener(name,handler,false);}
function cancelEvent(event)
{if(document.all)
event.cancelBubble=true;else
event.stopPropagation();}
function onError(msg,href,lineNo)
{var html=[];var lastSlash=href.lastIndexOf("/");var fileName=lastSlash==-1?href:href.substr(lastSlash+1);html.push('<span class="errorMessage">',msg,'</span>','<div class="objectBox-sourceLink">',fileName,' (line ',lineNo,')</div>');logRow(html,"error");};function onKeyDown(event)
{if(event.keyCode==123)
toggleConsole();else if((event.keyCode==108||event.keyCode==76)&&event.shiftKey&&(event.metaKey||event.ctrlKey))
focusCommandLine();else
return;cancelEvent(event);}
function onSplitterMouseDown(event)
{if(isSafari||isOpera)
return;addEvent(document,"mousemove",onSplitterMouseMove);addEvent(document,"mouseup",onSplitterMouseUp);for(var i=0;i<frames.length;++i)
{addEvent(frames[i].document,"mousemove",onSplitterMouseMove);addEvent(frames[i].document,"mouseup",onSplitterMouseUp);}}
function onSplitterMouseMove(event)
{var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;var clientY=event.clientY;if(win!=win.parent)
clientY+=win.frameElement?win.frameElement.offsetTop:0;var height=consoleFrame.offsetTop+consoleFrame.clientHeight;var y=height-clientY;consoleFrame.style.height=y+"px";layout();}
function onSplitterMouseUp(event)
{removeEvent(document,"mousemove",onSplitterMouseMove);removeEvent(document,"mouseup",onSplitterMouseUp);for(var i=0;i<frames.length;++i)
{removeEvent(frames[i].document,"mousemove",onSplitterMouseMove);removeEvent(frames[i].document,"mouseup",onSplitterMouseUp);}}
function onCommandLineKeyDown(event)
{if(event.keyCode==13)
evalCommandLine();else if(event.keyCode==27)
commandLine.value="";}
window.onerror=onError;addEvent(document,isIE||isSafari?"keydown":"keypress",onKeyDown);if(document.documentElement.getAttribute("debug")=="true")
toggleConsole(true);})();}
shortcut={'all_shortcuts':{},'add':function(shortcut_combination,callback,opt){var default_options={'type':'keydown','propagate':false,'disable_in_input':false,'target':document,'keycode':false}
if(!opt)opt=default_options;else{for(var dfo in default_options){if(typeof opt[dfo]=='undefined')opt[dfo]=default_options[dfo];}}
var ele=opt.target
if(typeof opt.target=='string')ele=document.getElementById(opt.target);var ths=this;shortcut_combination=shortcut_combination.toLowerCase();var func=function(e){e=e||window.event;if(opt['disable_in_input']){var element;if(e.target)element=e.target;else if(e.srcElement)element=e.srcElement;if(element.nodeType==3)element=element.parentNode;if(element.tagName=='INPUT'||element.tagName=='TEXTAREA')return;}
if(e.keyCode)code=e.keyCode;else if(e.which)code=e.which;var character=String.fromCharCode(code).toLowerCase();if(code==188)character=",";if(code==190)character=".";if((code==115)&&(character=='s'))character='';if((code==116)&&(character=='t'))character='';if((code==117)&&(character=='u'))character='';var keys=shortcut_combination.split("+");var kp=0;var shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"}
var special_keys={'esc':27,'escape':27,'tab':9,'space':32,'return':13,'enter':13,'backspace':8,'scrolllock':145,'scroll_lock':145,'scroll':145,'capslock':20,'caps_lock':20,'caps':20,'numlock':144,'num_lock':144,'num':144,'pause':19,'break':19,'insert':45,'home':36,'delete':46,'end':35,'pageup':33,'page_up':33,'pu':33,'pagedown':34,'page_down':34,'pd':34,'left':37,'up':38,'right':39,'down':40,'f1':112,'f2':113,'f3':114,'f4':115,'f5':116,'f6':117,'f7':118,'f8':119,'f9':120,'f10':121,'f11':122,'f12':123}
var modifiers={shift:{wanted:false,pressed:false},ctrl:{wanted:false,pressed:false},alt:{wanted:false,pressed:false},meta:{wanted:false,pressed:false}};if(e.ctrlKey)modifiers.ctrl.pressed=true;if(e.shiftKey)modifiers.shift.pressed=true;if(e.altKey)modifiers.alt.pressed=true;if(e.metaKey)modifiers.meta.pressed=true;for(var i=0;k=keys[i],i<keys.length;i++){if(k=='ctrl'||k=='control'){kp++;modifiers.ctrl.wanted=true;}else if(k=='shift'){kp++;modifiers.shift.wanted=true;}else if(k=='alt'){kp++;modifiers.alt.wanted=true;}else if(k=='meta'){kp++;modifiers.meta.wanted=true;}else if(k.length>1){if(special_keys[k]==code)kp++;}else if(opt['keycode']){if(opt['keycode']==code)kp++;}else{if(character==k)kp++;else{if(shift_nums[character]&&e.shiftKey){character=shift_nums[character];if(character==k)kp++;}}}}
if(kp==keys.length&&modifiers.ctrl.pressed==modifiers.ctrl.wanted&&modifiers.shift.pressed==modifiers.shift.wanted&&modifiers.alt.pressed==modifiers.alt.wanted&&modifiers.meta.pressed==modifiers.meta.wanted){callback(e);if(!opt['propagate']){e.cancelBubble=true;e.returnValue=false;if(e.stopPropagation){e.stopPropagation();e.preventDefault();}
return false;}}}
this.all_shortcuts[shortcut_combination]={'callback':func,'target':ele,'event':opt['type']};if(ele.addEventListener)ele.addEventListener(opt['type'],func,false);else if(ele.attachEvent)ele.attachEvent('on'+opt['type'],func);else ele['on'+opt['type']]=func;},'remove':function(shortcut_combination){shortcut_combination=shortcut_combination.toLowerCase();var binding=this.all_shortcuts[shortcut_combination];delete(this.all_shortcuts[shortcut_combination])
if(!binding)return;var type=binding['event'];var ele=binding['target'];var callback=binding['callback'];if(ele.detachEvent)ele.detachEvent('on'+type,callback);else if(ele.removeEventListener)ele.removeEventListener(type,callback,false);else ele['on'+type]=false;}}
var CookieJar=Class.create();CookieJar.prototype={appendString:"__",initialize:function(options){this.options={expires:3600,path:'',domain:'',secure:''};Object.extend(this.options,options||{});if(this.options.expires!=''){var date=new Date();date=new Date(date.getTime()+(this.options.expires*1000));this.options.expires='; expires='+date.toGMTString();}
if(this.options.path!=''){this.options.path='; path='+escape(this.options.path);}
if(this.options.domain!=''){this.options.domain='; domain='+escape(this.options.domain);}
if(this.options.secure=='secure'){this.options.secure='; secure';}else{this.options.secure='';}},put:function(name,value){name=this.appendString+name;cookie=this.options;var type=typeof value;switch(type){case'undefined':case'function':case'unknown':return false;case'boolean':case'string':case'number':value=String(value.toString());}
var cookie_str=name+"="+escape(Object.toJSON(value));try{document.cookie=cookie_str+cookie.expires+cookie.path+cookie.domain+cookie.secure;}catch(e){return false;}
return true;},remove:function(name){name=this.appendString+name;cookie=this.options;try{var date=new Date();date.setTime(date.getTime()-(3600*1000));var expires='; expires='+date.toGMTString();document.cookie=name+"="+expires+cookie.path+cookie.domain+cookie.secure;}catch(e){return false;}
return true;},get:function(name){name=this.appendString+name;var cookies=document.cookie.match(name+'=(.*?)(;|$)');if(cookies){return(unescape(cookies[1])).evalJSON();}else{return null;}},empty:function(){keys=this.getKeys();size=keys.size();for(i=0;i<size;i++){this.remove(keys[i]);}},getPack:function(){pack={};keys=this.getKeys();size=keys.size();for(i=0;i<size;i++){pack[keys[i]]=this.get(keys[i]);}
return pack;},getKeys:function(){keys=$A();keyRe=/[^=; ]+(?=\=)/g;str=document.cookie;CJRe=new RegExp("^"+this.appendString);while((match=keyRe.exec(str))!=undefined){if(CJRe.test(match[0].strip())){keys.push(match[0].strip().gsub("^"+this.appendString,""));}}
return keys;}};Object.extend(Number.prototype,{digit:function(digits){var s=this.toString();return'0'.times(digits-s.length)+s;}});Object.extend(Date,{DAY_IN_SEC:24*60*60,DAY_IN_MS:24*60*60*1000,HOUR_IN_MS:60*60*1000,MINUTE_IN_MS:60*1000,JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11,weekday:["일","월","화","수","목","금","토"],weekday_eng:["su","m","tu","w","t","f","s"],create:function(year,month,day,hour,min,sec,msec){d=new Date();d.setFullYear(year,month||Date.JAN,day||1);d.setHours(hour||0);d.setMinutes(min||0);d.setSeconds(sec||0);d.setMilliseconds(msec||0);return d;},parse_text:function(str){var match=str.match(/([0-9][0-9][0-9][0-9])-([0-1]?[0-9])-([0-3]?[0-9])(?:[ T]([0-2][0-9]+)(?::([0-5][0-9]+)(?::([0-5][0-9]+))?)?)?/);if(match){return Date.create(match[1],new Number(match[2])-1,match[3],match[4],match[5],match[6]);}
return null;},simple_parse:function(str){var match=str.match(/([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])(?:([0-9][0-9])([0-9][0-9])([0-9][0-9]))?/)
if(match){return Date.create(match[1],new Number(match[2])-1,match[3],match[4],match[5],match[6]);}
return null;},earliest:function(){var result=arguments[0];for(var i=1;i<arguments.length;i++){if(arguments[i]&&(result.getTime()>arguments[i].getTime())){result=arguments[i];}}
return result;},latest:function(){var result=arguments[0];for(var i=1;i<arguments.length;i++){if(arguments[i]&&(result.getTime()<arguments[i].getTime())){result=arguments[i];}}
return result;},diff_day:function(d1,d2){return Math.floor((d2.to_date().getTime()-d1.to_date().getTime())/Date.DAY_IN_MS);}});$D=Date.simple_parse;Object.extend(String.prototype,{to_date:function(){return Date.parse_text(this);},to_lunar:function(){return Lunar.parse_text(this);},byte_length:function(){var len=0;for(var n=0;n<this.length;n++){len=(this.charCodeAt(n)<2048)?len+1:len+2;}
return len;},byte_substr:function(num){var len=0,n=0;if(num<=0)return"";for(n=0;n<this.length&&len<num;n++){len=(this.charCodeAt(n)<2048)?len+1:len+2;}
if(len>num&&n>0)n--;return this.substring(0,n);},byte_str:function(num){if(this.byte_length()>num){return this.byte_substr(num-3)+" ...";}else{return this;}}});Object.extend(Date.prototype,{_date:function(ms){return new Date(this.getTime()+ms);},clone:function(){return new Date(this.getTime());},inspect:function(){return{year:this.getFullYear(),month:this.getMonth()+1,day:this.getDate(),hour:this.getHours(),minute:this.getMinutes(),second:this.getSeconds()};},equal:function(other){return this.getTime()==other.getTime();},is_leap_year:function(){var year=this.getFullYear();return(year%4==0)&&(year%100!=0||year%400==0);},next_day:function(days){d=this.clone();if(days!=0)d.setDate(d.getDate()+(days||1));return d;},prev_day:function(days){d=this.clone();if(days!=0)d.setDate(d.getDate()-(days||1));return d;},next_hour:function(hours){d=this.clone();if(hours!=0)d.setHours(d.getHours()+(hours||1));return d;},prev_hour:function(hours){d=this.clone();if(hours!=0)d.setHours(d.getHours()-(hours||1));return d;},next_minute:function(minutes){if(minutes==0)return this.clone();return this._date((minutes||1)*Date.MINUTE_IN_MS);},prev_minute:function(minutes){if(minutes==0)return this.clone();return this._date(-(minutes||1)*Date.MINUTE_IN_MS);},next_month:function(months){if(months<=0)return this.clone();if((months||1)==1){var is_dec=this.getMonth()==Date.DEC;var _month=is_dec?Date.JAN:(this.getMonth()+1);var _day=(this.getDate()>this.day_count_of_month(_month))?this.day_count_of_month(_month):this.getDate();return Date.create(this.getFullYear()+(is_dec?1:0),_month,_day,this.getHours());}
return this.next_month(months-1).next_month();},prev_month:function(months){if(months<=0)return this.clone();if((months||1)==1){var is_jan=this.getMonth()==Date.JAN;var _month=is_jan?Date.DEC:this.getMonth()-1;var _day=(this.getDate()>this.day_count_of_month(_month))?this.day_count_of_month(_month):this.getDate();return Date.create(this.getFullYear()-(is_jan?1:0),_month,_day,this.getHours());}
return this.prev_month(months-1).prev_month();},next_year:function(years){d=this.clone();if(years!=0)d.setFullYear(d.getFullYear()+(years||1));return d;},prev_year:function(years){d=this.clone();if(years!=0)d.setFullYear(d.getFullYear()-(years||1));return d;},firstday_of_month:function(){var d=this.clone();d.setDate(1);return d;},lastday_of_month:function(){return this.next_month().firstday_of_month().prev_day();},day_count_of_month:function(month){if(month==1)
return 28;else if(month==3||month==5||month==8||month==10)
return 30;else
return 31;},firstday_of_week:function(){return this.clear_time(this.prev_day(this.getDay()));},lastday_of_week:function(){return this.next_week().firstday_of_week().prev_day();},week_of_year:function(){var firstday=this.firstday_of_year(this.getFullYear());var offset_days=Math.floor((Math.floor((this-firstday)/86400000)+firstday.getDay())/7);if(firstday.getDay()<4)offset_days+=1;return offset_days;},next_week:function(){return this.next_day(7);},prev_week:function(){return this.prev_day(7);},firstday_of_year:function(year){return Date.create(year||this.getFullYear(),Date.JAN,1).clear_time();},lastday_of_year:function(year){return Date.create(year||this.getFullYear(),Date.DEC,31).clear_time();},same_year_and_month:function(date){if(date==null)return false;return this.getMonth()==date.getMonth()&&this.getFullYear()==date.getFullYear();},same_date_and_time:function(date){if(date==null)return false;return this.format("#{yy}#{mm}#{dd}#{HH}#{MM}")==date.format("#{yy}#{mm}#{dd}#{HH}#{MM}");},clear_time:function(date){var source=date||this;if(source.getHours()==0&&source.getMinutes()==0&&source.getSeconds()==0)return source;if(source._clear_time)return new Date(source._clear_time);var r=new Date(source.getFullYear(),source.getMonth(),source.getDate());source._clear_time=r.getTime();return r;},clear_minute:function(date){var target=date||this.clone();target.setMinutes(0);target.setSeconds(0);target.setMilliseconds(0);return target;},clear_half_hour:function(date){var target=date||this.clone();target.setSeconds(0);target.setMilliseconds(0);target.setMinutes(target.getMinutes()<30?0:30);return target;},last_time:function(date){var target=date||this.clone();target.setHours(23);target.setMinutes(59);target.setSeconds(59);return target;},format_date:function(){return this.format("#{yy}-#{mm}-#{dd}");},format_time:function(){return this.format("#{HH}:#{MM}");},format:function(str){if(!this.valueOf()){return"";}
var self=this;return str.replace(/#\{(.*?)\}/gi,function($l){switch($l){case'#{yy}':return self.getFullYear();case'#{y}':return(self.getFullYear()+"").substring(2,4);case'#{mm}':return(self.getMonth()+1).digit(2);case'#{m}':return self.getMonth()+1;case'#{dd}':return(self.getDate()).digit(2);case'#{d}':return self.getDate();case'#{HH}':return(self.getHours()).digit(2);case'#{H}':return self.getHours();case'#{II}':return((self.getHours()+11)%12+1).digit(2);case'#{I}':return((self.getHours()+11)%12+1);case'#{MM}':return(self.getMinutes()).digit(2);case'#{M}':return self.getMinutes();case'#{SS}':return(self.getSeconds()).digit(2);case'#{S}':return self.getSeconds();case'#{ka}':return Date.weekday[self.getDay()];case'#{p}':return(self.getHours()>=12&&self.getHours()<24)?'PM':'AM';case'#{kp}':return(self.getHours()>=12&&self.getHours()<24)?'오후':'오전';}
return $l;});},to_param:function(){with(this){var s=getFullYear().digit(4)+'-'+(getMonth()+1).digit(2)+'-'+getDate().digit(2);s+='T'+getHours().digit(2)+':'+getMinutes().digit(2)+':'+getSeconds().digit(2);}
return s;},to_date_param:function(){return this.getFullYear().digit(4)+(this.getMonth()+1).digit(2)+this.getDate().digit(2);},equal_date:function(other){if(!(other instanceof Date))return false;return this.getFullYear()==other.getFullYear()&&this.getMonth()==other.getMonth()&&this.getDate()==other.getDate();},equal_week:function(other){if(!(other instanceof Date))return false;return this.firstday_of_week().equal_date(other.firstday_of_week());},before:function(date,include_equal){if(!(date instanceof Date))return false;return(include_equal)?this.getTime()<=date.getTime():this.getTime()<date.getTime();},after:function(date,include_equal){if(!(date instanceof Date))return false;return(include_equal)?this.getTime()>=date.getTime():this.getTime()>date.getTime();},compare:function(date){var d1=this.inspect();var d2=date.inspect();if(d1.year>d2.year){return 1;}else if(d1.year<d2.year){return-1;}else{if(d1.month>d2.month){return 1;}else if(d1.month<d2.month){return-1;}else{if(d1.day>d2.day){return 1;}else if(d1.day<d2.day){return-1;}}}
return 0;},to_date:function(){return this;},succ:function(){return this.clear_time().next_day();}});Object.extend(Date.prototype,{equal_month:Date.prototype.same_year_and_month});Hash.prototype.toRailsQuery=function(model){return $H(this).inject($H(),function(mergedHash,pair){mergedHash.set(model+'['+pair.key+']',pair.value);return mergedHash;}).toQueryString();};Array.prototype.clear=function(){for(var i=0,length=this.length;i<length;i++){delete this[i];}
this.length=0;return this;};Object.extend(Array.prototype,{eql:function(other){return other&&(other instanceof Array)&&(this.inspect()==other.inspect());},subtract:function(other){if(!other)return this.clone();if(!other instanceof Array)throw"subtract method gets an Array";var results=[];for(var i=0;i<this.length;i++){var value=this[i];var matched=false;for(var t=0;t<other.length;t++){var o=other[t];if(((o instanceof Array)&&(value.toString()==o.toString()))||value==o)matched=true;}
if(!matched)results.push(value);}
return results;}});Object.extend(Ajax.InPlaceEditor.prototype,{createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement('input');fld.type='text';var size=this.options.size||this.options.cols||0;if(0<size)fld.size=size;fld.maxLength=this.options.maxLength||120;}else{fld=document.createElement('textarea');fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}
fld.name=this.options.paramName;fld.value=text;fld.className='editor_field';if(this.options.submitOnBlur)
fld.onblur=this._boundSubmitHandler;this._controls.editor=fld;if(this.options.loadTextURL)
this.loadExternalText();this._form.appendChild(this._controls.editor);},enterHover:function(){if(this.saving)return;if(this.options.hoverClassName){if(this.element.className!=""){this.element.prevClassName=this.element.className;this.element.className=this.options.hoverClassName;}else{this.element.addClassName(this.options.hoverClassName);}}else{this.element.style.border="solid 1px #d7d7d7";this.element.style.padding="1px 3px";}
if(this.options.isCate){this.element.style.position="absolute";this.element.style.width=this.element.up().up().offsetWidth-2+"px";this.element.style.zIndex="20";var folder=$(this.element.parentNode).select("img")[0];folder.style.position="relative";folder.style.zIndex="30";}
this.triggerCallback('onEnterHover');},leaveHover:function(){if(this.options.backgroundColor){this.element.style.backgroundColor=this.oldBackground;}
if(this.options.hoverClassName){this.element.removeClassName(this.options.hoverClassName);if(this.element.className=="")this.element.className=this.element.prevClassName;}else{this.element.style.border="none";this.element.style.padding="0";}
if(this.saving)return;if(this.options.isCate){this.element.style.position="static";this.element.style.width="auto";if(!this.editing){var folder=$(this.element.parentNode).select("img")[0];folder.style.position="static";folder.style.display="";}}else{this.element.style.backgroundColor=this.originalBackground;}
this.triggerCallback('onLeaveHover');},enterEditMode:function(e){if(this._saving||this._editing)return;this.editing=true;this.triggerCallback('onEnterEditMode');if(this.options.externalControl)
this.options.externalControl.hide();this.element.hide();this.createForm();this.onEnterEditMode();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL)
this.postProcessEditField();if(e)Event.stop(e);},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();if(!this.options.isCate)this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl)
this.options.externalControl.show();this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback('onLeaveEditMode');},onEnterEditMode:function(){if(this.options.isCate){this._controls.editor.style.width=this.element.up().up().offsetWidth-2+"px";var folder=$(this.element.parentNode).select("img")[0];folder.style.display="none";}},getText:function(){return(this.options.textValue)?this.options.textValue.unescapeHTML():this.element.innerHTML.unescapeHTML();},handleFormSubmission:function(e){if(this._controls.editor&&this.getText()==this._controls.editor.value){this.leaveEditMode();return false;}
if(this.options.isLink){if(this._controls.editor.value){if(this._controls.editor.value.indexOf('"')!=-1||this._controls.editor.value.indexOf("'")!=-1){calendar.notify("알맞은 형식의 URL이 아닙니다.");return false;}else if(this._controls.editor.value!='http://'){if(!this._controls.editor.value.match(/^(http:\/\/)/))this._controls.editor.value="http://"+this._controls.editor.value;}else{this._controls.editor.value=null;}}}
if(this.options.isStore){var store_byte=0;for(var i=0;i<this._controls.editor.value.length;i++)store_byte+=(this._controls.editor.value.charCodeAt(i)>128)?2:1;if(store_byte>12){calendar.notify('한글 6자 또는 영문 12자 이하로 넣어주세요.');return false;}}
if(this.options.isTodoStore){var store_byte=0;for(var i=0;i<this._controls.editor.value.length;i++)store_byte+=(this._controls.editor.value.charCodeAt(i)>128)?2:1;if(store_byte>255){calendar.notify('255자 이상 저장할 수 없습니다.');return false;}}
if(this.options.cancelOnEmpty){if(this._controls.editor.value.trim()==""){this.enterHover();calendar.notify('카테고리 이름을 넣어주세요.');return false;}}
var form=this._form;var value=$F(this._controls.editor);this.changed_value=value;this.prepareSubmission();var params=this.options.callback(form,value)||'';if(Object.isString(params))
params=params.toQueryParams();params.editorId=this.element.id;if(this.options.repeat_event==true){_options={callbackObj:this,onSubmitFunc:'onSubmit_execute',onCancelFunc:'handleFormCancellation'}
var r=new RepeatEventAlert(this.url,this.options.callback(form,value),'put',this.options.event,_options);return false;}else{var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:params,evalScripts:true,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}},onSubmit_execute:Prototype.emptyFunction});Object.extend(Ajax.InPlaceEditor,{DefaultCallbacks:{onLeaveHover:Prototype.emptyFunction}});Object.extend(RegExp.prototype,{process:function(str,callback){var result=this.exec(str);if(result){if(callback){callback(result);}
return true;}
return false;}});Object.extend(String.prototype,{multiply_color:function(multiply_by){var hex_color=this;if(hex_color.charAt(0)=='#'&&[4,7].include(hex_color.length)){if(hex_color.length==4){hex_color='#'+hex_color.charAt(1).times(2)+hex_color.charAt(2).times(2)+hex_color.charAt(3).times(2);}
var value=parseInt(hex_color.gsub('#','0x'));for(var mask=0xFF0000;mask>0;mask=mask>>8){value=(value&~mask)|(Math.ceil((value&mask)*multiply_by)&mask);value&=0xFFFFFF;}
hex_color='#'+value.toPaddedString(6,16);}else{m=hex_color.match(/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/i);if(m){m.shift();return"rgb("+m.collect(function(c){return Math.ceil(c*multiply_by);}).join(", ")+")";}}
return hex_color;},trim:function(string){if(string){return string.replace(/(^\s*)|(\s*$)/g,"");}else{return this.replace(/(^\s*)|(\s*$)/g,"");}}});if(Prototype.Browser.WebKit){Prototype.ScriptFragment='<script[^>]*>((\r\n|\r|\n|.)*?)<\/script>';}
Ajax.Updater.prototype.updateContent=function(){if(this.success()){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responseText;if(!this.options.evalScripts)response=response.stripScripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver,response);else
receiver.update(response);}
if(this.success()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10);}}};var Lunar=Class.create();Object.extend(Lunar,{create:function(year,month,day,code,solar){return new Lunar(year,month,day,code,solar);},parse_text:function(str,solar){var match=str.match(/([0-9][0-9][0-9][0-9])-([0-1]?[0-9])-([0-3]?[0-9])L?([1-9])?/);if(match){return Lunar.create(match[1],new Number(match[2]),new Number(match[3]),match[4],solar);}
return null;}});Lunar.prototype={initialize:function(year,month,day,code,solar){this.year=year;this.month=month;this.day=day;this.code=(code==9)?9:1;this.solar=solar;},inspect:function(){return{year:this.year,month:this.month,day:this.day,code:this.code,solar:this.solar};},to_param:function(){var s=this.year+"-"+new Number(this.month).digit(2)+"-"+new Number(this.day).digit(2)+"L"+this.code;return s;},format:function(str){if(!this.valueOf()){return"";}
var self=this;return str.replace(/#\{(.*?)\}/gi,function($l){switch($l){case'#{yy}':return self.year;case'#{y}':return(self.year+"").substring(2,4);case'#{mm}':return new Number(self.month).digit(2);case'#{m}':return self.month;case'#{dd}':return new Number(self.day).digit(2);case'#{c}':return self.code;}
return $l;});}};$L=Lunar.parse_text;Element.Methods.relativize=function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';if(element._originalHeight)element.style.height=element._originalHeight;if(element._originalWidth)element.style.width=element._originalWidth;return element;}
Object.extend(Draggable.prototype,{initDrag:function(event){if(typeof Draggable._dragging[this.element]!='undefined'&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if(!src||!src.tagName)return;if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}}});var HourObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;var count=(value%100==30)?false:true;while(this.include(value)){iterator(value);value+=(count)?30:70;count=!count;}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $HR=function(start,end,exclusive){return new HourObjectRange(start,end,exclusive);};var calendar=new Object();calendar.todoLimit=5;calendar.K=Prototype.K;calendar.default_category=null;calendar.setting=$H();calendar.benchmark=function(func,name){var t=new Date();console.log('#<benchmark: '+(name||'')+'>');func();console.log('#</benchmark: '+(name||'')+': '+(new Date()-t)+' >');};calendar.keepalive=function(){new Ajax.Request('/keepalive/bin/minidaum2006.cgi',{method:"get",asynchronous:true});};setInterval(calendar.keepalive,3300000);calendar.stopObserving=function(){var targets=$A(arguments);targets.include=function(object){var found=false;this.each(function(value){if(value.id==object.id&&value.handler==object.handler){found=true;throw $break;}});return found;};if(Event.observers){Event.observers=Event.observers.reject(function(observer){if(observer[0].id&&targets.include({id:observer[0].id,handler:observer[1]})){Event.stopObserving.apply(this,observer);observer=null;return true;}
return false;});}
targets.each(function(target){try{var element=$(target.id);if(element["on"+target.handler]){element["on"+target.handler]=Prototype.emptyFunction;}}catch(e){}});};var progress={job_count:0,showing:false,_show_or_hide:function(){if(this.job_count<=0&&this.showing){this.hide();this.showing=false;}
if(this.job_count>=1&&!this.showing){this.show();this.showing=true;}},show:function(){},hide:function(){},acquire:function(){this.job_count++;this._show_or_hide();},release:function(){this.job_count--;this._show_or_hide();},run:function(){this.acquire();var args=$A(arguments);var callback=args.pop();var self=args[0];setTimeout(function(){try{callback.apply(self,args);}finally{progress.release();}},10);}};calendar.print=function(){window.open("/print/partial.html","Daum","toolbar=no,menubar=no,resizable=yes");};function syncStart(method){if(!Prototype.Browser.IE){calendar.notify('아웃룩 싱크는 파이어폭스를 지원 할 수 없어요!<br />화면 하단의 [캘린더 미니]를 설치하시고 이용해 주세요.');}
try{var buffer=$("dcalBuffer");var bufferdoc=buffer.contentWindow.document;if(method=="sync"){try{bufferdoc.syncObject.SyncStart();}catch(e){bufferdoc.body.innerHTML="<OBJECT ID=\"syncObject\" CLASSID=\"CLSID:D1288736-AE21-4E22-906F-17E7CCF7A1A7\" codebase=\"http://wm.daum.net/MyD/download/calendar/DaumSync.cab#Version=1,0,0,1\" width=\"0\" height=\"0\" style=\"display:none;\"></OBJECT>";bufferdoc.syncObject.SyncStart();}}else if(method=="config"){try{bufferdoc.syncObject.SyncEnv();}catch(e){bufferdoc.body.innerHTML="<OBJECT ID=\"syncObject\" CLASSID=\"CLSID:D1288736-AE21-4E22-906F-17E7CCF7A1A7\" codebase=\"http://wm.daum.net/MyD/download/calendar/DaumSync.cab#Version=1,0,0,1\" width=\"0\" height=\"0\" style=\"display:none;\"></OBJECT>";bufferdoc.syncObject.SyncEnv();}}}catch(ignored){var buffer=$("dcalBuffer");var bufferdoc=buffer.contentWindow.document;bufferdoc.body.innerHTML="<OBJECT ID=\"syncObject\" CLASSID=\"CLSID:D1288736-AE21-4E22-906F-17E7CCF7A1A7\" codebase=\"http://wm.daum.net/MyD/download/calendar/DaumSync.cab#Version=1,0,0,1\" width=\"0\" height=\"0\" style=\"display:none;\"></OBJECT>";}}
var FastElement={bind_listener:function(e,name,observer){if(e.addEventListener){e.addEventListener(name,observer,false);}else if(e.attachEvent){e.attachEvent('on'+name,observer);}
return e;},unbind_listener:function(e,name,observer){if(name=='keypress'&&(Prototype.Browser.WebKit||element.attachEvent))name='keydown';if(e.removeEventListener){e.removeEventListener(name,observer,false);}else if(e.detachEvent){try{e.detachEvent('on'+name,observer);}catch(e){}}
return e;},hide:function(element){element.style.display='none';return element;},show:function(element){element.style.display='';return element;},setWidth:function(e,w,sizetype){e.style['width']=w+(sizetype||'px');return e;},setHeight:function(e,h,sizetype){e.style['height']=h+(sizetype||'px');return e;},setDimension:function(e,w,h,sizetype){return FastElement.setHeight(FastElement.setWidth(e,w,sizetype),h,sizetype);},setPosition:function(e,x,y,sizetype){var st=sizetype||'px';e.style['left']=x+st;e.style['top']=y+st;return e;},setColor:function(e,color){e.style['color']=color;return e;},getColor:function(e){return e.style['color'];},setBgColor:function(e,color){e.style['backgroundColor']=color;return e;},getBgColor:function(e){return e.style['backgroundColor'];},setVisible:function(e,visible){(visible?FastElement.show:FastElement.hide)(e);},up:function(element){return element.parentNode;},down:function(element){element=element.firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return element;},next:Selector.handlers.nextElementSibling,previous:Selector.handlers.previousElementSibling,childElements:function(element){if(!(element=element.firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element){var result=[element];while(element=element.nextSibling){if(element.nodeType==1)result.push(element);}
return result;}
return[];},getWidth:function(element){return FastElement.getDimensions(element).width;},getHeight:function(element){return FastElement.getDimensions(element).height;},getDimensions:function(element){var display=element.style['display'];if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},insert_html:function(element,html){var e=$FE(element);if(e.insertAdjacentHTML){e.insertAdjacentHTML('beforeEnd',html);}else{var range=e.ownerDocument.createRange();range.selectNodeContents(e);range.collapse(e);e.appendChild(range.createContextualFragment(html));}},relative_offset:function(parent,element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element&&element==parent)break;}while(element);return[valueL,valueT];},remove:function(element){if(element.parentNode)element.parentNode.removeChild(element);return element;},setOpacity:function(element,value){element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},addClassName:function(element,cname){if(element.className.indexOf(cname)<0){element.className+=' '+cname;}
return element;},removeClassName:function(element,cname){if(element.className.indexOf(cname)>=0){element.className=element.className.replace(cname,'');}
return element;}};if(Prototype.Browser.IE){FastElement.setOpacity=function(element,value){var filter=element.style.filter,style=element.style;if(value==1||value===''){style.filter=filter.replace(/alpha\([^\)]*\)/gi,'');return element;}else if(value<0.00001)value=0;style.filter=filter.replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+(value*100)+')';return element;};}else if(Prototype.Browser.Gecko){FastElement.setOpacity=function(element,value){element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
var FE=FastElement;function $FE(element){if(typeof element=='string')
element=document.getElementById(element);return element;}
calendar.memorialSet=["<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon17.gif\" width=\"14\" height=\"14\" alt=\"기타\" style=\"vertical-align:middle;margin-right:5px;\" />","<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon11.gif\" width=\"14\" height=\"14\" alt=\"생일\" style=\"vertical-align:middle;margin-right:5px;\" />","<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon12.gif\" width=\"14\" height=\"14\" alt=\"결혼기념일\" style=\"vertical-align:middle;margin-right:5px;\" />","<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon13.gif\" width=\"14\" height=\"14\" alt=\"연애시작일\" style=\"vertical-align:middle;margin-right:5px;\" />","<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon14.gif\" width=\"14\" height=\"14\" alt=\"제사\" style=\"vertical-align:middle;margin-right:5px;\" />","<img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon_office.gif\" width=\"14\" height=\"14\" alt=\"창립기념일\" style=\"vertical-align:middle;margin-right:5px;\" />"];calendar.memorialSet.push(calendar.memorialSet[0]);function login_required(){window.location.href='http://www.daum.net/Mail-bin/login.html?category=calendar&url=http://calendar.daum.net/';}
function preview_login_required(url){window.location.href='http://www.daum.net/Mail-bin/login.html?popup=1&category=calendar&url='+url;}
calendar.wOffset=50;calendar.hOffset=167;calendar.util={getWindowSize:function(){var windowWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||52;var windowHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||169;return{x:windowWidth-2,y:windowHeight-2}},setCalendarPanelSize:function(){var wsize=this.getWindowSize();calendar.width=wsize.x-calendar.wOffset;calendar.height=wsize.y-calendar.hOffset;},disableSelection:function(){var target=(arguments[0])?$(arguments[0]):document.body;target.onselectstart=function(){return false;}
target.style.MozUserSelect="none";target.style.cursor="default";},selection:function(){var target=(arguments[0])?$(arguments[0]):document.body;if(arguments[1])var enable=arguments[1];if(enable){target.style.MozUserSelect="auto";target.onselectstart=function(){return true;}}else{target.style.MozUserSelect="none";target.onselectstart=function(){return false;}}},flexInput:function(obj,buffer){var value=obj.value;var curWidth=obj.offsetWidth;buffer.style.width=curWidth+"px";buffer.innerHTML=value.replaceAll("\n","<br/>");if(buffer.offsetHeight>=300){obj.style.height="300px";obj.style.overflowY="auto";}else if(buffer.offsetHeight<65){obj.style.height="65px";obj.style.overflowY="hidden";}else{obj.style.height=buffer.offsetHeight+20+"px";obj.style.overflowY="hidden";}}}
calendar.color={default_color:$w('#62a400 #0062be #d811cb #8131de #f6469b #0eaba0 #ca9800 #f01544 #ff3c00 #666666 #00a4ed #13167c #00805e #aa3733 #6b3b49 #a85729 #ff6e00 #684c70 #18b10f #212121'),get_unused_color:function(){var used_colors=model.calendar.list().collect(function(c){return c.color});var remain_colors=this.default_color.reject(function(color){return used_colors.include(color)});return color=remain_colors.first()||this.default_color.first();}}
var PageLayout={defaultView:function(){PageLayout.mainLayout=PageLayout.mainLayout||$FE("layout_main");PageLayout.mainLayout.style.overflowY="auto";},setLayout:function(){PageLayout.mainLayout=PageLayout.mainLayout||$FE("layout_main");PageLayout.contentWrap=PageLayout.contentWrap||$FE("contentWrap");PageLayout.mainLayout.style.width="300px";PageLayout.mainLayout.style.height="300px";calendar.util.setCalendarPanelSize();var offset_width=3;var offset_height=9;PageLayout.leftWrap=PageLayout.leftWrap||$FE("leftWrap");if(PageLayout.leftWrap){PageLayout.simpleInfo=PageLayout.simpleInfo||$FE("simpleInfo");PageLayout.leftTodoArea=PageLayout.leftTodoArea||$FE("leftTodoArea");PageLayout.leftCalendarArea=PageLayout.leftCalendarArea||$FE("leftCalendarArea");PageLayout.leftCalendarList=PageLayout.leftCalendarList||$FE("left_calendars_list");var leftCalendarsHeight=calendar.height-PageLayout.simpleInfo.offsetHeight-PageLayout.leftCalendarArea.offsetHeight-45;if(PageLayout.leftTodoArea)leftCalendarsHeight-=PageLayout.leftTodoArea.offsetHeight;if(leftCalendarsHeight>90){PageLayout.leftCalendarList.style.height=leftCalendarsHeight+"px";}else{leftCalendarsHeight=90;PageLayout.leftCalendarList.style.height=leftCalendarsHeight+"px";calendar.height=PageLayout.leftWrap.offsetHeight;offset_height=-11;}}
if(calendar.preview){offset_width=1;offset_height=-6;}
PageLayout.mainLayout.style.height=(calendar.expand_height)?"auto":calendar.height+offset_height+"px";PageLayout.mainLayout.style.width=PageLayout.contentWrap.offsetWidth-offset_width+"px";PageLayout.mainLayout.on_resize?PageLayout.mainLayout.on_resize():PageLayout.defaultView();},layoutInterval:function(){var mainLayout=$FE("layout_main");var header=$FE("agenda_table_header");var table=$FE("agenda_table");var navi=$FE("contentNavigation");try{if(table.offsetHeight+70>mainLayout.offsetHeight){navi.style.width=mainLayout.offsetWidth-23+"px";header.style.width=mainLayout.offsetWidth-23+"px";table.style.width=mainLayout.offsetWidth-23+"px";}else{navi.style.width=mainLayout.offsetWidth-8+"px";header.style.width=mainLayout.offsetWidth-8+"px";table.style.width=mainLayout.offsetWidth-8+"px";}}catch(ignored){}},layoutResize_mini:function(){PageLayout.mainLayout=PageLayout.mainLayout||$FE("layout_main");PageLayout.contentWrap=PageLayout.contentWrap||$FE("contentWrap");PageLayout.mainLayout.style.width="100px";PageLayout.mainLayout.style.width=PageLayout.contentWrap.offsetWidth-4+"px";PageLayout.mainLayout.style.overflowX="hidden";PageLayout.mainLayout.style.overflowY="auto";var mainLayout=$FE("layout_main");var header=$FE("agenda_table_header");var table=$FE("agenda_table");var navi=$FE("contentNavigation");try{if(table.offsetHeight+70>mainLayout.offsetHeight){navi.style.width=mainLayout.offsetWidth-23+"px";header.style.width=mainLayout.offsetWidth-24+"px";table.style.width=mainLayout.offsetWidth-24+"px";}else{navi.style.width=mainLayout.offsetWidth-8+"px";header.style.width=mainLayout.offsetWidth-9+"px";table.style.width=mainLayout.offsetWidth-9+"px";}}catch(ignored){}},setLayout_for_preview:function(){if(!calendar.preview){PageLayout.setLayout();return;}
try{PageLayout.mainLayout=PageLayout.mainLayout||$FE("layout_main");PageLayout.contentWrap=PageLayout.contentWrap||$FE("contentWrap");PageLayout.mainLayout.style.width="300px";PageLayout.mainLayout.style.height="300px";calendar.util.setCalendarPanelSize();PageLayout.mainLayout.style.height=(calendar.expand_height)?"auto":calendar.height-6+"px";PageLayout.mainLayout.style.width=PageLayout.contentWrap.offsetWidth-1+"px";PageLayout.mainLayout.on_resize?PageLayout.mainLayout.on_resize():PageLayout.defaultView();}catch(e){setTimeout(function(){PageLayout.setLayout_for_preview();},1000)}}}
local_history=new Object();local_history.common=Class.create();local_history.common.prototype={listeners:[],current_key:"",previous_key:false,initialize:function(){this.current_key=location.hash;},run:function(){this.interval_id=setInterval(this.watch.bind(this),200);},add:function(key){if(key!=this.current_key.substring(1)){if(this.current_key!=this.previous_key){this.previous_key=this.current_key;}}
location.hash=this.current_key="#"+key;},add_listener:function(listener){if(!this.listeners.include(listener)){this.listeners.push(listener);}},remove_listener:function(listener){this.listeners=this.listeners.without(listener);},notify:function(before_key,after_key){this.listeners.each(function(l){try{l.call(null,before_key,after_key);}catch(e){this.remove_listener(l);}}.bind(this));},watch:function(){var key=location.hash;if(this.current_key!=key){this.notify(this.current_key,key);this.current_key=key;}},go:function(key){this.notify(this.current_key,"#"+key);this.add(key);},back:function(){if(this.previous_key){this.go(this.previous_key.substring(1));}else{history.back();}},destroy:function(){clearInterval(this.interval_id);}};local_history.ie=Class.create();Object.extend(local_history.ie.prototype,local_history.common.prototype);Object.extend(local_history.ie.prototype,{initialize:function(){this.id="history_iframe";this.create_iframe();this.current_key=location.hash;if(this.current_key==""){this.current_key="#";}},run:function(){this.interval_id=setInterval(this.watch.bind(this),500);},add:function(key){if(key!=this.current_key.substring(1)){if(this.current_key!=this.previous_key){this.previous_key=this.current_key;}}
location.hash=this.current_key="#"+key;var iframe=this.get_document();iframe.open();iframe.close();iframe.location.hash=window.location.hash;},watch:function(){var key=this.get_document().location.hash;if(this.current_key!=key){this.notify(this.current_key,key);this.current_key=key;location.hash=key;}},create_iframe:function(){var iframe=document.createElement("iframe");iframe.id=this.id;iframe.style.display="none";document.body.insertBefore(iframe,document.body.firstChild);with(this.get_document()){open();write("<html><body></body></html>");close();location.hash=window.location.hash;}},get_document:function(){return $(this.id).contentDocument||$(this.id).contentWindow.document;}});local_history.safari=Class.create();Object.extend(local_history.safari.prototype,local_history.common.prototype);Object.extend(local_history.safari.prototype,{initialize:function(){this.id="history_form";this.create_form();this.back=[];this.back.length=history.length;this.forward=[];this.current_key=location.hash;},add:function(key){if(!$(key)){this.create_anchor(key);}
if(key!=this.current_key.substring(1)){if(this.current_key!=this.previous_key){this.previous_key=this.current_key;}}
this.submit_form(key);this.back.push(key);this.forward.length=0;},watch:function(){var delta=history.length-this.back.length;if(delta>0){for(var i=0;i<delta;i++){this.back.push(this.forward.shift());}
this.notify(this.back[this.back.length-2],this.back[this.back.length-1]);}else if(delta<0){for(var i=0;i<Math.abs(delta);i++){this.forward.unshift(this.back.pop());}
this.notify(this.forward[0],this.back[this.back.length-1]);}},create_form:function(){var form=document.createElement("form");form.id=this.id;form.method="get";document.body.insertBefore(form,document.body.firstChild);},create_anchor:function(key){var anchor=document.createElement("anchor");anchor.id=key;anchor.style.display="none";document.body.insertBefore(anchor,document.body.firstChild);},submit_form:function(key){var form=$(this.id);form.action="#"+key;form.submit();}});local_history.opera=Class.create();Object.extend(local_history.opera.prototype,local_history.common.prototype);Object.extend(local_history.opera.prototype,{initialize:function(){opera.setOverrideHistoryNavigationMode('compatible');this.current_key=location.hash;}});var EventDrawGroupOwner=Class.create();EventDrawGroupOwner.prototype={initialize:function(event_mapper){this.event_mapper=event_mapper;this.clear();},clear:function(){this.event_groups=[];this.data_structure=[];},add_event:function(event){var cg=this.event_groups.select(function(g){return g.conflicted(event);});if(cg.size()==1){cg[0].add_event(event);}else{var bg=new EventDrawGroup(this);bg.add_events(cg.pluck('events').flatten());bg.add_event(event);this.event_groups=this.event_groups.subtract(cg);this.event_groups.push(bg);}},remove_event:function(event){var self=this;var egs=this.find_event_groups_by_event_id(event);if(!egs){console.log("warn: couldn't find event_groups for event_"+event.id);return;}
egs.each(function(eg){self.event_groups=self.event_groups.without(eg);eg.events.each(function(e){if(e.id!=event.id)self.add_event(e);});});},get_event_level:function(event){return this.find_event_group(event).event_level(event);},find_event_group:function(event){for(var i=0;i<this.event_groups.length;i++){if(this.event_groups[i].has_event(event))return this.event_groups[i];}
return null;},find_event_groups_by_event_id:function(event){return this.event_groups.select(function(eg){if(eg.has_event_by_id(event))return eg;});},arrange:function(){this.event_groups.invoke('arrange');},events:function(){return this.event_groups.pluck('events');},make_element:function(){this.event_groups.invoke('make_element');},inspect:function(){return'#<EDGO: '+this.event_groups.invoke('inspect').join(', ')+'>';}};var EventDrawGroup=Class.create();EventDrawGroup.prototype={initialize:function(owner){this.owner=owner;this.events=[];this.mapper=owner.event_mapper;this.covered_range=[0,0];this.event_tree=[];this._arranged=false;},has_event:function(event){var _r_id=event.r_id();for(var i=0;i<this.events.length;i++){if(this.events[i].r_id()==_r_id)return this.events[i];}
return null;},has_event_by_id:function(event){for(var i=0;i<this.events.length;i++){if(this.events[i].id==event.id)return this.events[i];}
return null;},add_events:function(events){var self=this;events.each(function(e){self.events.push(e);self._expand_covered_range(self.mapper(e));});this._arranged=false;},arrange:function(){if(!this._arranged){var ed=new EventDrawer(this._find_collisions());this.event_tree=ed.min_depth_tree();this._arranged=true;}},add_event:function(event){if(this.events.size()>0&&!this.conflicted(event)){console.log("warn: not a conflicting event");}else{this.events.push(event);this._expand_covered_range(this.mapper(event));this._arranged=false;}},remove_event:function(event){this.events=this.events.reject(function(e){return e.id==event.id;});this.covered_range=[0,0];var self=this;this.events.each(function(e){self._expand_covered_range(self.mapper(e));});this._arranged=false;},_find_collisions:function(){var events=this.events.sortBy(function(e){return e.r_id();});var collisions=[];for(var i=0;i<events.length-1;i++){for(var t=i+1;t<events.length;t++){if(this._conflicting(this.mapper(events[i]),this.mapper(events[t]))){collisions.push([events[i].r_id(),events[t].r_id()]);}}}
return collisions;},event_level:function(event){var level=1;var rid=event.r_id();for(var i=0;i<this.event_tree.length;i++){var floor=this.event_tree[i];for(var t=0;t<floor.length;t++){if(floor[t]==rid){level=i+1;return level;}}}
level=(this.events.size()>1)?999:1;return level;},tree_depth:function(){return[this.event_tree.size(),1].max();},_expand_covered_range:function(range){var cr=this.covered_range;var r1=(cr[0]==0)?range[0]:[cr[0],range[0]].min();var r2=(cr[1]==0)?range[1]:[cr[1],range[1]].max();this.covered_range=[r1,r2];},_conflicting:function(r1,r2){return r1[1]>r2[0]&&r1[0]<r2[1];},conflicted:function(event){var ea=this.mapper(event);var cr=this.covered_range;return this._conflicting(ea,cr);},make_element:function(){var self=this;var divs=$A();var hard_max_level=$('monthly_view').cells[0].hard_max_level;var hasError=false;this.events.each(function(event){var cells=$('monthly_view').rows[self.owner.idx].find_cells(event);if(cells.size()==0){hasError=true;return null;}
if((hard_max_level>=self.event_level(event))&&(!self.owner.event_divs.get(event.id)||event.repeat_id)){var left_on=(cells.first().date.getTime()>event.start_at.clear_time().getTime());var right_on=event.end_at.after(cells.last().date.next_day(),event.allday);var div=MonthlyMultidayEventDiv.make_element(self.owner,event,cells,left_on,right_on);if(div.deactivated)div.deactivated=false;self.owner.event_divs.set(event.id,(self.owner.event_divs.get(event.id)||[]).concat(div));divs.push(div);}
var abstract_div={abstract:true,cells:cells,event:event,owner:self.owner};cells.invoke('acquire_level',self.event_level(event),div||abstract_div);});if(hasError)divs=divs.select(function(div){return(div)?true:false;});(calendar.preview)?divs.invoke('start_listening_for_preview'):divs.invoke('start_listening');},inspect:function(){return'#<EDG: ('+this.events.pluck('id').join(',')+'), '+this.event_tree.inspect()+'>';}};var EventDrawerItemList=Class.create();EventDrawerItemList.prototype={initialize:function(items){var _pickup=function(n){var p=this;n.prev.down=n.down;if(n.down)n.down.prev=n.prev;p.right=n;n.down=p.down;p.down=null;n.prev=p;if(n.down)n.down.prev=n;};var p=this.head={value:items[0],pickup:_pickup};for(var i=1;i<items.length;i++){p.down={value:items[i],pickup:_pickup};p.down.prev=p;p=p.down;}},inspect:function(){var p=this.head;var result="<#EDIL: ";while(p){result+=p.value;if(p.right)result+=' r ';if(p.down)result+=' d ';p=p.right||p.down;}
return result+">";},to_tree:function(){var r=[];var p=this.head;while(p){var slot=[p.value];while(p.right){p=p.right;slot.push(p.value);}
r.push(slot);p=p.down;}
return r;}};var EventDrawer=Class.create();EventDrawer.prototype={initialize:function(collision_edges){var self=this;var edges=this.collision_edges=(collision_edges||[]);this.items=this._all_item_order_by_collision_point(edges);this.list=new EventDrawerItemList(this.items);},_all_item_order_by_collision_point:function(edges){var items=$H();edges.each(function(e){items.set(e[0],(items.get(e[0])||0)+1);items.set(e[1],(items.get(e[1])||0)+1);});return items.toArray().sortBy(function(i){return i.key-(i.value<<24);}).sortBy(function(i){var item_event=model.event.get(parseInt(i.key.slice(0,-4)));if(!item_event)item_event=model.special_event.get(parseInt(i.key.slice(0,-4)));return(item_event.end_at-item_event.start_at)}).reverse().collect(function(i){return i.key;});},_sort_func:function(a,b){return a<b?-1:a>b?1:0;},_sort_pair:function(pair){var a=parseInt(pair[0]);var b=parseInt(pair[1]);return(a>b)?[b,a]:[a,b];},_safe:function(a,b){if(parseInt(a)>parseInt(b)){var c=b;b=a;a=c;}
var e=this.collision_edges;for(var i=0;i<e.length;i++){if(e[i][0]==a&&e[i][1]==b)return false;}
return true;},_safe_for_line:function(last,current){var p=last;while(p){if(!this._safe(p.value,current.value))return false;p=p.prev;if(!p||!p.right)return true;}
return true;},min_depth_tree:function(){if(!this.items||this.items.length==0)return[];var list=this.list;var p=list.head;if(calendar.mv){var hard_max_level=calendar.mv.max_level||Math.floor((calendar.height-50)/(6*15))-2;var current_level=1;};while(p){var n=p;while(n=n.down){if(this._safe_for_line(p,n)){p.pickup(n);p=n;}}
if(calendar.mv&&(++current_level>hard_max_level))break;p=p.right||p.down;}
return list.to_tree();}};var ColorPicker=Class.create();ColorPicker.prototype={initialize:function(oNameLayer,pickerArea,fAction,cbAction){this.pickerArea=$(pickerArea);this.oNameLayer=(oNameLayer)?$(oNameLayer):null;this.fAction=(fAction)?this.fAction=fAction:Prototype.emptyFunction;;this.cbAction=(cbAction)?this.cbAction=cbAction:Prototype.emptyFunction;;if(this.oNameLayer)Event.observe(this.oNameLayer,"click",this.draw.bind(this));this.picker=this.pickerArea.select(".picker")[0];this.ok_btn=$("picker_ok_btn");if(this.oNameLayer){this.picker.onmouseout=function(){var currentColor=this.cssRGB2hex(this.oNameLayer.getStyle("backgroundColor"));this.colorInput.value=currentColor;this.colorThumb.style.backgroundColor=currentColor;}.bind(this);}else{this.picker.onmouseout=function(){this.colorInput.value=this.clicked_color;this.colorThumb.style.backgroundColor=this.clicked_color;}.bind(this);}
this.col_div=this.picker.select(".chromaGrade")[0];this.hue_div=this.picker.select(".hueGrade")[0];this.folder=this.pickerArea.select(".folder")[0];Event.observe(this.folder,"click",this.openPicker.bind(this));this.colorDone=this.pickerArea.select("img.enter")[0];var colorCloseBtn=this.pickerArea.select("a.close");if(colorCloseBtn.length>0){this.closer=colorCloseBtn[0];this.colorDone.onclick=this.closer.onclick=function(){this.setDefaultColor(this.colorInput.value);this.pickerArea.hide();this.cbAction(this.colorInput.value);}.bind(this);}else{this.colorDone.onclick=function(){this.cbAction(this.colorInput.value);}.bind(this);}
this.defaultColors=this.pickerArea.select('a.colors');this.defaultColors.each(function(e){Event.observe(e,"click",this.setDefaultColor.bind(this,e.getStyle("backgroundColor")));}.bind(this));this.fChromDown=this.onChromDown.bindAsEventListener(this);this.fChromMove=this.onChromMove.bindAsEventListener(this);Event.observe(this.col_div,'mousedown',this.fChromDown);Event.observe(this.col_div,'mousemove',this.fChromMove);this.fHueDown=this.onHueDown.bindAsEventListener(this);this.fHueMove=this.onHueMove.bindAsEventListener(this);this.fHueUp=this.onHueUp.bindAsEventListener(this);this.fHueClick=this.onHueClick.bindAsEventListener(this);Event.observe(this.hue_div,'mousedown',this.fHueDown);Event.observe(this.hue_div,'click',this.fHueClick);this.colorInput=this.pickerArea.select(".colorPickerInput")[0];this.colorThumb=this.pickerArea.select("div.preview")[0];this.colorInput.onkeypress=function(event){this.setDefaultColor(this.colorInput.value);if(!event)event=window.event;if(event&&(event.which||event.keyCode)==Event.KEY_RETURN){this.colorDone.onclick();}}.bind(this);this.col_width=120;this.col_height=108;this.rgb={r:0,g:0,b:0};this.hsv={h:0,s:100,v:100};this.hueChange();},draw:function(){this.pickerArea.toggle();},setDefaultColor:function(defaultColor){try{defaultColor=this.cssRGB2hex(defaultColor);}catch(e){alert("올바르지 않은 컬러값입니다.");this.colorInput.value="";return false;}
try{this.colorThumb.style.backgroundColor=defaultColor;if(this.oNameLayer)this.oNameLayer.style.backgroundColor=defaultColor;this.clicked_color=defaultColor;this.colorInput.value=defaultColor;}catch(e){}},cssRGB2hex:function(cssRGB){if(cssRGB.indexOf("rgb")!=-1){cssRGB=cssRGB.replace("rgb(","");cssRGB=cssRGB.replace(")","");cssRGB=cssRGB.split(", ");var hexCodes=new Array();for(var i=0;i<cssRGB.length;i++){hexCodes.push({decimal:cssRGB[i],hex:(parseInt(cssRGB[i],10).toString(16).length==1)?("0"+parseInt(cssRGB[i],10).toString(16)):(parseInt(cssRGB[i],10).toString(16))});}
return"#"+hexCodes[0].hex+hexCodes[1].hex+hexCodes[2].hex;}
return cssRGB;},openPicker:function(){if(this.picker.visible()){this.folder.innerHTML="더보기";this.folder.title="더보기";this.folder.className="folder";this.picker.hide();this.ok_btn.hide();}else{this.folder.innerHTML="접기";this.folder.title="접기";this.folder.className="folderClose";this.picker.show();this.ok_btn.show();}},pageCoords:function(node)
{var x=node.offsetLeft;var y=node.offsetTop;var parent=node.offsetParent;while(parent!=null)
{x+=parent.offsetLeft;y+=parent.offsetTop;parent=parent.offsetParent;}
return{x:x,y:y};},fixCoords:function(node,x,y)
{var nodePageCoords=this.pageCoords(node);x=(x-nodePageCoords.x)+document.documentElement.scrollLeft;y=(y-nodePageCoords.y)+document.documentElement.scrollTop;if(x<0)x=0;if(y<0)y=0;if(x>node.offsetWidth-2)x=node.offsetWidth-2;if(y>node.offsetHeight-2)y=node.offsetHeight-2;if(document.all){x-=2;y-=2;}else{x--;y--;}
return{x:x,y:y};},col_move:function(x,y){var s=(x/(this.col_width-2))*100;var v=(1-y/(this.col_height-2))*100;s=Math.min(Math.max(s,0),100);v=Math.min(Math.max(v,0),100);this.hsv.s=s;this.hsv.v=v;this.colorChange();},colorChange:function(){this.rgb=this.hsv2rgb(this.hsv.h,this.hsv.s,this.hsv.v);var hex=this.rgb2hex(this.rgb.r,this.rgb.g,this.rgb.b);this.colorThumb.style.backgroundColor='#'+hex;this.colorInput.value='#'+hex;},onChromDown:function(evt){var pos=this.fixCoords(this.col_div,evt.clientX,evt.clientY);this.col_move(pos.x,pos.y);var hex=this.rgb2hex(this.rgb.r,this.rgb.g,this.rgb.b);this.fAction('#'+hex);if(this.oNameLayer)this.oNameLayer.style.backgroundColor='#'+hex;this.clicked_color='#'+hex;},onChromMove:function(evt){var pos=this.fixCoords(this.col_div,evt.clientX,evt.clientY);this.col_move(pos.x,pos.y);},hue_move:function(x,y){var h=parseInt((x/(this.col_width-2))*360);this.hsv.h=Math.min(Math.max(h,0),360);this.hueChange();},hueChange:function(){var hueRgb=this.hsv2rgb(this.hsv.h,100,100);var hueHex=this.rgb2hex(hueRgb.r,hueRgb.g,hueRgb.b);this.col_div.style.backgroundColor='#'+hueHex;},onHueDown:function(){Event.observe(document,'mousemove',this.fHueMove);Event.observe(document,'mouseup',this.fHueUp);},onHueClick:function(evt){var pos=this.fixCoords(this.hue_div,evt.clientX,evt.clientY);this.hue_move(pos.x,pos.y);},onHueMove:function(evt){var pos=this.fixCoords(this.hue_div,evt.clientX,evt.clientY);this.hue_move(pos.x,pos.y);},onHueUp:function(){Event.stopObserving(document,'mousemove',this.fHueMove);Event.stopObserving(document,'mouseup',this.fHueUp);},rgbChange:function(){this.hsv=this.rgb2hsv(this.rgb.r,this.rgb.g,this.rgb.b);this.colorChange();},hex2rgb:function(str){var hexchar="0123456789ABCDEF";this.rgb.r=(this.toDec(str.substr(0,1))*16)+this.toDec(str.substr(1,1));this.rgb.g=(this.toDec(str.substr(2,1))*16)+this.toDec(str.substr(3,1));this.rgb.b=(this.toDec(str.substr(4,1))*16)+this.toDec(str.substr(5,1));return this.rgb;},toDec:function(hexchars){return hexchar.indexOf(hexchars.toUpperCase());},rgb2hex:function(r,g,b)
{r=r.toString(16);if(r.length==1)r='0'+r;g=g.toString(16);if(g.length==1)g='0'+g;b=b.toString(16);if(b.length==1)b='0'+b;return r+g+b;},hsv2rgb:function(h,s,v)
{h/=360;s/=100;v/=100;if(s==0){r=Math.floor(v*255);g=Math.floor(v*255);b=Math.floor(v*255);}else{var_h=h*6;var_i=Math.floor(var_h);var_1=v*(1-s);var_2=v*(1-s*(var_h-var_i));var_3=v*(1-s*(1-(var_h-var_i)));if(var_i==0){var_r=v;var_g=var_3;var_b=var_1}
else if(var_i==1){var_r=var_2;var_g=v;var_b=var_1}
else if(var_i==2){var_r=var_1;var_g=v;var_b=var_3}
else if(var_i==3){var_r=var_1;var_g=var_2;var_b=v}
else if(var_i==4){var_r=var_3;var_g=var_1;var_b=v}
else{var_r=v;var_g=var_1;var_b=var_2};r=Math.floor(var_r*255);g=Math.floor(var_g*255);b=Math.floor(var_b*255);}
return{r:r,g:g,b:b};},rgb2hsv:function(r,g,b){var_R=(r/255);var_G=(g/255);var_B=(b/255);var_Min=Math.min(var_R,var_G,var_B);var_Max=Math.max(var_R,var_G,var_B);del_Max=var_Max-var_Min;V=var_Max;if(del_Max==0)
{h=0;s=0;}
else
{s=del_Max/var_Max;del_R=(((var_Max-var_R)/6)+(del_Max/2))/del_Max;del_G=(((var_Max-var_G)/6)+(del_Max/2))/del_Max;del_B=(((var_Max-var_B)/6)+(del_Max/2))/del_Max;if(var_R==var_Max)h=del_B-del_G;else if(var_G==var_Max)h=(1/3)+del_R-del_B;else if(var_B==var_Max)h=(2/3)+del_G-del_R;if(h<0)h+=1;if(h>1)h-=1;}
return{h:h,s:s,v:V}}}
ColorPicker.is_rgb_color=function(str){var r=(new RegExp('^#(\\w{2})(\\w{2})(\\w{2})$')).exec(str);if(r&&r.size()==4){try{if(parseInt(r[1],16)<256&&parseInt(r[2],16)<256&&parseInt(r[3],16)<256)return true;}catch(e){return false;}}
r=(new RegExp('^#(\\w{1})(\\w{1})(\\w{1})$')).exec(str);if(r&&r.size()==4){try{if(parseInt(r[1]+r[1],16)<256&&parseInt(r[2]+r[2],16)<256&&parseInt(r[3]+r[3],16)<256)return true;}catch(e){return false;}}
return false;}
var XSelect=Class.create();XSelect.index=0;XSelect.priority=200;XSelect.prototype={refresh:function(){},initialize:function(nativeSel,_options){if(nativeSel.convert)return false;this.nativeSel=$(nativeSel);nativeSel.xselect=this;this.nativeSel.style.display="none";if(!this.nativeSel.visible)return false;this._options=Object.extend({id:"XSelect",zIndex:100,className:"xselect",width:120,text:"선택박스",priority:100,isCate:false,isMemorial:false,size:10,onchange:function(){}},_options);this.optionWidth=0;this.xSelectObj=null;this.disableArea=null;this.textArea=null;this.optionArea=null;this.optionMover=null;this.options=$A();this.curOptionIdx=-1;this.slideTimer=null;this.slideDuring=800;this.timeStep=0;XSelect.priority--;this._options.priority=XSelect.priority;if(this.nativeSel.onchange){this._options.onchange=this.nativeSel.onchange;}
if(this.nativeSel.id!=""){this.sId=this.nativeSel.id+"_xselect"+"_"+XSelect.index;;}else{this.sId=this._options.id}
this.currentIndex=XSelect.index;XSelect.index++;this.cssClass=this._options.className;try{this.initXSelect();if(this._options.isMemorial){for(var i=0,len=this.nativeSel.options.length;i<len;i++){var memorialOpt={text:calendar.memorialSet[i+1]+this.nativeSel.options[i].text,value:this.nativeSel.options[i].value}
this.addOption(memorialOpt);}}else{for(var i=0,len=this.nativeSel.options.length;i<len;i++){this.addOption(this.nativeSel.options[i]);}}
this.cleanup();nativeSel.convert=true;}catch(e){try{if(this.xSelectObj.parentNode){this.xSelectObj.parentNode.removeChild(this.xSelectObj);}}catch(ignored){}
this.nativeSel.style.display="";return;}},disableSelection:function(){var target=(arguments[0])?$(arguments[0]):document.body;target.onselectstart=function(){return false;}
target.style.MozUserSelect="none";},initXSelect:function(){this.draw();this.find_objects();this.bind_events();this.optionMover.style.display="none";Event.observe(document,'click',this.autoCloseXSelect.bindAsEventListener(this));this.onchange=this._options.onchange;},cleanup:function(){if(this.options.length>this._options.size){this.optionMover.style.height=(this._options.size*20)+"px";this.optionMover.style.overflowY="auto";}else{this.optionMover.style.height="auto";}},draw:function(){this.xSelectObj=document.createElement("div");this.xSelectObj.id=this.sId;this.xSelectObj.className=this._options.className;this.xSelectObj.style.zIndex=this._options.priority;if(this._options.width!=null){this.xSelectObj.style.width=this._options.width+"px";}
this.disableArea=document.createElement("div");this.disableArea.className="disableArea";this.disableArea.style.display="none";if(this._options.width!=null){this.disableArea.style.width=this._options.width+"px";}
this.textArea=document.createElement("div");this.textArea.className="textArea";this.textArea.innerHTML=this._options.text;this.optionArea=document.createElement("div");this.optionArea.className="optionArea";this.optionMover=document.createElement("div");this.optionMover.className="optionMover";this.xSelectObj.appendChild(this.textArea);var tmp=document.createElement("div");tmp.appendChild(this.xSelectObj);this.optionArea.appendChild(this.optionMover);this.xSelectObj.appendChild(this.optionArea);this.xSelectObj.appendChild(this.disableArea);this.nativeSel.insert({before:tmp.innerHTML});tmp=this.xSelectObj=this.textArea=this.optionArea=this.optionMover=this.disableArea=null;},disable:function(){this.nativeSel.disable();this.disableArea.style.display="";},enable:function(){this.nativeSel.enable();this.disableArea.style.display="none";},remove:function(idx){if(this.options[idx])$(this.options[idx]).remove();},remove_xselect:function(){var xselect_divs=this.nativeSel.up().select('.'+this.cssClass);if(xselect_divs.length==0)xselect_divs=this.nativeSel.up().select('.xselect');if(xselect_divs.length>0){var xselect_div=xselect_divs[0];xselect_div.remove();}
if(this.nativeSel)this.nativeSel.convert=false;},find_objects:function(){this.xSelectObj=$(this.sId);this.textArea=this.xSelectObj.select(".textArea")[0];this.optionArea=this.xSelectObj.select(".optionArea")[0];this.optionMover=this.xSelectObj.select(".optionMover")[0];this.disableArea=this.xSelectObj.select(".disableArea")[0];},bind_events:function(){this.xSelectObj.onclick=this.slideOptionMover.bind(this);(Prototype.Browser.IE)?this.xSelectObj.ondblclick=this.slideOptionMover.bind(this):0;this.disableSelection(this.textArea);this.optionMover.onmousemove=function(e){var e=e||window.event;if(e.stopPropagation){e.stopPropagation();}
e.cancelBubble=true;}
this.textArea.onmouseover=this.focus_xSelect.bindAsEventListener(this);this.textArea.onmouseout=this.focus_xSelect.bindAsEventListener(this);this.disableArea.onclick=this.disableArea.ondblclick=function(e){var e=e||window.event;if(e.stopPropagation){e.stopPropagation();}
e.cancelBubble=true;return false;}},focus_xSelect:function(e){if(this.textArea.className.indexOf("On")==-1){this.textArea.className+="On";}else{this.textArea.className=this.textArea.className.replace("On","");}},autoCloseXSelect:function(e){if(!e)var e=window.event;var clickObj=e.srcElement||e.target;if(clickObj==this.textArea||clickObj==this.xSelectObj||clickObj==this.optionMover){return;}else{if(!this.options||this.options.length<=0)return;if(this.optionMover&&this.optionMover.visible()){this.timeStep=this.recurCount=this.slideDuring/200;this.slideUp();}}},setStyle:function(styleName,styleValue){this.xSelectObj.style[styleName]=styleValue;},getOptionAreaWidth:function(xOptionIdx){if(this.options[xOptionIdx].className=="xButton")return;var tmp=document.createElement("span");tmp.style.position="absolute";tmp.style.top="-1000px";tmp.innerHTML=this.options[xOptionIdx].innerHTML;document.body.appendChild(tmp);if(this.optionWidth<tmp.offsetWidth+20)this.optionWidth=tmp.offsetWidth+20;document.body.removeChild(tmp);return this.optionWidth;},createOption:function(oOption,isButton){var xText=oOption.text;var xValue=oOption.value;oOption=$(oOption);var newIndex=this.options.length;this.options[newIndex]=document.createElement("div");this.options[newIndex].value=xValue;this.options[newIndex].text=xText;this.options[newIndex].innerHTML=xText;this.options[newIndex].selected=false;this.optionMover.appendChild(this.options[newIndex]);if(isButton){this.options[newIndex].className="xButton";this.options[newIndex].style.cursor="auto";this.options[newIndex].style.height="auto";}else{if(this._options.isCate){this.options[newIndex].className="cateItem";this.options[newIndex].style.backgroundColor=oOption.getStyle("backgroundColor");}else{this.options[newIndex].className="item";}
this.options[newIndex].onmouseover=this.options[newIndex].onmouseout=this.toggleOption.bindAsEventListener(this);this.options[newIndex].onclick=this.optionSelect.bindAsEventListener(this);}},addOption:function(oOption,isSelected,isButton){var xText=oOption.text;var xValue=oOption.value;if(!isButton)var isButton=false;this.optionMover.style.display="";this.createOption(oOption,isButton);var lastIdx=this.options.length-1;if(lastIdx==0&&this._options.text==""){this.setDefaultText(xText);}
this.getOptionAreaWidth(lastIdx);if(isButton){this.options[lastIdx].className="xButton";}
if(this._options.width){this.optionArea.style.width=this._options.width+2+"px";}else{this.optionArea.style.width=this.optionWidth+"px";}
this.setMoverTop();if(oOption.selected){this.optionSelect(null,lastIdx);}
this.optionMover.style.display="none";},optionSelect:function(e,idx){if(!e)var e=window.event;if(idx==undefined){var selOption=e.srcElement||e.target;selOption=$(selOption);this.textArea.innerHTML=selOption.innerHTML;for(var i=0,len=this.options.length;i<len;i++){if(this.options[i]==selOption){this.nativeSel.value=this.options[i].value;this.selectedIndex=i;this.options[i].selected=true;}else{this.options[i].selected=false;}}
if(selOption.className.indexOf("cate")!=-1){this.textArea.className="cateTextArea";}else{this.textArea.className="textArea";}
this.onchange();}else{this.selectedIndex=idx;for(var i=0,len=this.options.length;i<len;i++){this.options[i].selected=false;}
this.options[idx].selected=true;var selOption=$(this.options[idx]);this.nativeSel.value=this.options[idx].value;this.setDefaultText(this.options[idx].innerHTML);if(selOption.className.indexOf("cate")!=-1){this.textArea.className="cateTextArea";}else{this.textArea.className="textArea";}}
if(this.textArea.className.indexOf("cate")!=-1){this.textArea.style.backgroundColor=selOption.getStyle("backgroundColor");}else{this.textArea.style.backgroundColor="transparent";}},toggleOption:function(e){if(!e)var e=window.event;var optionItem=e.srcElement||e.target;if(!this.cssClass){if(optionItem.className.indexOf("On")==-1){optionItem.className+="On";optionItem.style.fontWeight="bold";optionItem.prevBG=optionItem.style.backgroundColor;optionItem.style.backgroundColor="#efece5";}else if(optionItem.className.indexOf("On")>0){optionItem.className=optionItem.className.replace("On","");optionItem.style.fontWeight="normal";optionItem.style.backgroundColor=optionItem.prevBG;}}else{if(optionItem.className.indexOf("On")==-1){optionItem.className+="On";}else if(optionItem.className.indexOf("On")>0){optionItem.className=optionItem.className.replace("On","");}}},setMoverTop:function(){return;var moverHeight=this.optionMover.offsetHeight+2;this.optionMover.style.top="-"+moverHeight+"px";},slideOptionMover:function(){if(this.options.length<=0)return;if(this.optionMover.style.display=="none"){this.slideDown();if((typeof MiniCalendar=="function")&&calendar.external_adder){this.optionArea.style.overflow="auto";this.optionArea.style.height="62px";if(calendar.editor)this.optionArea.style.height="82px";}}else{this.slideUp();}},slideDown:function(){this.optionMover.style.display="";return;var hOffset=this.optionMover.offsetHeight/this.timeStep;if(this.recurCount>0){this.optionMover.style.top=this.optionMover.offsetTop+hOffset+"px";this.recurCount--;}else{this.recurCount=0;this.optionMover.style.top="0px";return;}
this.slideTimer=setTimeout(this.slideDown.bind(this),this.timeStep);},slideUp:function(){if((typeof MiniCalendar=="function")&&calendar.external_adder){this.optionArea.style.overflow="";this.optionArea.style.height="";}
this.optionMover.style.display="none";return;var hOffset=this.optionMover.offsetHeight/this.timeStep;if(this.recurCount>0){this.optionMover.style.top=this.optionMover.offsetTop-hOffset+"px";this.recurCount--;}else{this.recurCount=0;this.optionMover.style.top=-1*(this.optionMover.offsetHeight+2)+"px";this.optionMover.style.display="none";return;}
this.slideTimer=setTimeout(this.slideUp.bind(this),this.timeStep);},getOptionValue:function(){return this.nativeSel.value;},onchange:function(){},getSelectObj:function(){return this.xSelectObj;},setDefaultText:function(xText){this.textArea.innerHTML=xText;},showOption:function(id){this.options[id].style.display="";},hideOption:function(id){this.options[id].style.display="none";}}
var MakeXSelect=function(target,_opts){var _xsel=null;var _options={className:"xselect",width:140,isCate:false,isMemorial:false}
Object.extend(_options,_opts||{})
if(!target){var target=document.getElementsByTagName("select");target=target[target.length-1];}
if(!target.convert){var _xsel=new XSelect(target,_options);}
return _xsel;}
var MiniCalendarCell=Class.create();MiniCalendarCell.prototype={initialize:function(parent){this.parent=parent;},set_date:function(date){this.date=date;this.innerHTML=date.getDate();var classes=[];if(date.getDay()==0)classes.push('holiday');if(!date.same_year_and_month(this.parent.metacursor.date))classes.push('other_month');if(date.equal_date(new Date()))classes.push('today');if(this.parent.selected_date&&date.equal_date(this.parent.selected_date))classes.push('selected_day');this.className=classes.join(" ");},onclick:function(event){this.parent.cursor_date=this.date.clone();this.parent.cursor.update_date(this.date);date_selector.detach();}};var MiniCalendar=Class.create();MiniCalendar.prototype={initialize:function(dom,cursor,model_usable){this.dom=$(dom);this.year_span=this.dom.select(".leftCal span.year")[0];this.month_span=this.dom.select(".leftCal span.month")[0];this.date=null;this.cursor=cursor;this.metacursor=new MetaCursor(cursor);var metacursor=this.metacursor;var self=this;this.cells=this.dom.select('td.day');this.cells.each(function(cell){Object.extend(cell,new MiniCalendarCell(self));});this.year_prev_button=this.dom.select("button.year_up")[0];this.year_next_button=this.dom.select("button.year_down")[0];this.month_prev_button=this.dom.select("button.month_up")[0];this.month_next_button=this.dom.select("button.month_down")[0];var cal_close=this.dom.select(".cal_close")[0];var direct_write=this.dom.select(".direct_write")[0];var direct_write2=this.dom.select(".direct_write")[1];var directWrite=this.dom.select("#directWrite")[0];Event.observe(this.dom,"click",function(event){if(this.dom.id=="minical")this.handler(event);}.bindAsEventListener(this));Event.observe(this.year_prev_button,"click",this.date_moved.bindAsEventListener(this,metacursor,"prev_year"));Event.observe(this.year_next_button,"click",this.date_moved.bindAsEventListener(this,metacursor,"next_year"));Event.observe(this.month_prev_button,"click",this.date_moved.bindAsEventListener(this,metacursor,"prev_month"));Event.observe(this.month_next_button,"click",this.date_moved.bindAsEventListener(this,metacursor,"next_month"));Event.observe(cal_close,"click",function(event){this.attached_dom.value="";this.detach();if(this.attached_dom.custom_cursor_update)this.attached_dom.custom_cursor_update(cursor);Event.stop(event);}.bind(this));Event.observe(direct_write,"click",function(event){this.attached_dom.value=" ";try{this.attached_dom.focus();}catch(e){}
this.detach();this.attached_dom.onfocus=function(){}
Event.stop(event);}.bind(this));Event.observe(direct_write2,"click",function(event){try{this.attached_dom.focus();}catch(e){}
this.detach();this.attached_dom.onfocus=function(){}
Event.stop(event);}.bind(this));if(directWrite){Event.observe(directWrite,"click",function(event){try{this.attached_dom.focus();this.detach();this.attached_dom.onfocus=function(){}
Event.stop(event);}catch(e){}}.bind(this));}
if(calendar.appmode||calendar.toolbar){var write_button=this.dom.select("img.write")[0];}else{var fold_button=this.dom.select("button.fold")[0];Event.observe(fold_button,"click",function(event){if(fold_button.innerHTML=="숨김"){fold_button.innerHTML="열기";fold_button.style.backgroundPosition="2px -12px";}else{fold_button.innerHTML="숨김";fold_button.style.backgroundPosition="2px 2px";}
self.dom.select(".minicalendar_table")[0].toggle();PageLayout.setLayout();});}
if(this.dom.id=='minical')this.decorator=new MiniCalendarDecorator(this,model_usable);this.cursor_updated(metacursor);metacursor.add_listener(this);this.cursor.add_listener(metacursor);if($('eventView'))GeneralTooltip.create($('eventView'),"등록된 일정이 있으면 <em>날짜를 클릭</em>하거나 <em>마우스 오버</em>시<br/>일정이 툴팁으로 간단하게 보여집니다.");},date_moved:function(event,metacursor,fn_name){eval("metacursor."+fn_name+"()");Event.stop(event);},free:function(){this.cursor.remove_listener(this.metacursor);if(this.cursor.free)this.cursor.free();},cursor_updated:function(cursor){var self=this;setTimeout(function(){if(!cursor.date.same_year_and_month(self.date)){self.year_span.innerHTML=cursor.year;self.month_span.innerHTML=new Number(cursor.month).digit(2);var first=cursor.date.firstday_of_month().clear_time();var d=first.prev_day(first.getDay());var dom=self.dom;var i=1;self.cells.each(function(cell){cell.id=dom.id+'_'+i++;cell.set_date(d);d=d.next_day();});}
self.date=cursor.date.clone();self.cells.each(function(cell){if(cell.date&&cell.date.equal_date){if(cell.date.equal_date(cursor.date)){cell.addClassName('cursor_day');}else if(cell.className.indexOf("cursor_day")!=-1){cell.removeClassName('cursor_day');}}});self._prepared=true;if(self.decorator)self.decorator.cursor_updated(cursor);},100);},handler:function(event){var e=Event.element(event);if(e.id&&e.id.indexOf("minical")!=-1&&!$('dv_container')){history_controller.go("daily_view");}},set_handler:function(handler){this.handler=handler;}};var MiniCalendarDecorator=Class.create();MiniCalendarDecorator.prototype={event_template:new Template("<div id='event_#{event_id}' class='event'>"+" <div class='event_time'><div class='tg_62a400' style='background-color:#{event_color};'></div><label class='fc_62a400' style='color:#{event_color};'>#{event_date}</label></div>"+" <div class='event_title'><span>#{event_title}</span></div>"+" <div class='event_info'>"+"  <img style='display:#{display_image};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon06.gif' width='23' height='19' alt='이미지' />"+"  <img style='display:#{display_invite};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon07.gif' width='23' height='19' alt='초대' />"+"  <img style='display:#{display_alarm};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon08.gif' width='23' height='19' alt='알림' />"+"  <img style='display:#{display_repeat};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon09.gif' width='23' height='19' alt='반복' />"+" </div>"+"</div>"),special_event_template:new Template("<div id='special_event_#{event_id}' class='event'>"+" <div class='event_time'><div class='tg_62a400' style='background-color:#{event_color};'></div><label class='fc_62a400' style='color:#{event_color};'>#{event_date}</label></div>"+" <div class='event_title'><span>#{event_title}</span></div>"+" <div class='event_info'>"+"  <img style='display:#{display_image};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon06.gif' width='23' height='19' alt='이미지' />"+"  <img style='display:#{display_invite};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon07.gif' width='23' height='19' alt='초대' />"+"  <img style='display:#{display_alarm};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon08.gif' width='23' height='19' alt='알림' />"+"  <img style='display:#{display_repeat};' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon09.gif' width='23' height='19' alt='반복' />"+" </div>"+"</div>"),initialize:function(minical,model_usable){this.minical=minical;this.model_usable=model_usable;this.metacursor=this.minical.metacursor;this.register_event_reactor();this.register_calendar_reactor();},set_title:function(){if(calendar.toolbar||calendar.calmoov||calendar.external_adder){this.toolbar_event();}else if(calendar.appmode||calendar.toolbar){if(!calendar.calmoov)this.events_for_mini();}},cursor_updated:function(cursor){this.clean();var date_time_cleared=cursor.date.clear_time();this.range=$R(date_time_cleared.firstday_of_month(),date_time_cleared.lastday_of_month(),true);this.range.start=this.range.start.prev_day(this.range.start.getDay());this.range.end=this.range.start.next_day(42);var self=this;if(!cursor.date.same_year_and_month(self.minical.date))this.set_title();if(!this.minical._prepared){setTimeout(function(){self.load_events();self.load_special_events();},1200);}else{this.load_events();this.load_special_events();}},register_event_reactor:function(){this.event_reactor=new Reactor(this.minical.dom.id);this.event_reactor.created=this.event_created.bind(this);this.event_reactor.updated=this.redraw.bind(this);this.event_reactor.destroyed=this.redraw.bind(this);actor.event.add_reactor(this.event_reactor);},register_calendar_reactor:function(){this.calendar_reactor=new Reactor(this.minical.dom.id);this.calendar_reactor.created=Prototype.emptyFunction;this.calendar_reactor.updated=this.redraw.bind(this);this.calendar_reactor.destroyed=this.redraw.bind(this);actor.calendar.add_reactor(this.calendar_reactor);},redraw:function(){this.clean();this.cursor_updated(this.metacursor);this.draw_events();this.draw_special_events();},event_created:function(event){var self=this;model.event.expand_event(event,this.range.start,this.range.end).each(function(event){self.draw_event(event);})},draw_events:function(events){if(events)return;var self=this;model.event.async_expanded_list(this.range.start,this.range.end,function(events){events.each(function(event){self.draw_event(event)});self.set_title();});},draw_event:function(event){if(!event.visible())return;var self=this;this.event_range_to_array($R(event.start_at,event.end_at,true),event.allday).each(function(date){var e=$('minical_'+(Date.diff_day(self.range.start,date)+1));e.style.backgroundColor="#e4e8f3";});},main_time_format:"#{kp} #{II}시#{MM}분",format_range:function(event,date){if(event.is_memorial())return"기념일";if(event.allday)return"하루종일";var s=(event.start_at.before(date))?"계속":event.start_at.format(this.main_time_format);if(event.end_at.after(date.next_day(1)))return s+" - "+"계속";if(event.end_at.same_date_and_time(date.next_day(1)))return s+" - "+"오후 12시00분";return s+" - "+event.end_at.format(this.main_time_format);},toolbar_event:function(){var self=this;var first=this.metacursor.date.firstday_of_month().clear_time();var d=first.prev_day(first.getDay());this.minical.cells.each(function(cell,idx){var date_model=model.event.date_model.get(d.next_day(idx).to_date_param());var events=(date_model)?date_model.values():$A();var title=[];events.each(function(event){var cal=model.calendar.get(event.calendar_id)||{visible:event.is_special()};if(cal.visible==true){title.push((event.allday)?event.get_view_title_with_time():event.get_view_title_with_time());}});cell.title=(title.length>0)?title.join("\n"):"일정이 없습니다";});},events_for_mini:function(){var self=this;this.minical.dom.onmouseout=function(event){self.mouse_dt=null;}
var first=this.metacursor.date.firstday_of_month().clear_time();var d=first.prev_day(first.getDay());this.minical.cells.each(function(cell){(cell.info instanceof Array)?cell.info.clear():cell.info=[];cell.str_info=null;});this.minical.cells.each(function(cell,idx){var date_model=model.event.date_model.get(d.next_day(idx).to_date_param());var events=(date_model)?date_model.values():$A();events.each(function(event){var cal=model.calendar.get(event.calendar_id)||{visible:event.is_special(),color:'#D92D1E'};if(cal.visible==true)cell.info.push(event);});});this.minical.cells.each(function(cell){cell.onmouseover=function(event){if(cell.str_info==null){var str="";cell.info.each(function(event,idx){if(idx>=10)str+="|more";if(idx>=10)throw $break;var field=[];field.push(event.id);field.push(event.is_special()?"S":(event.is_memorial()?"M":"E"));field.push(event.color());field.push(event.is_completed()?"T":"F");field.push(event.get_view_title_with_time_for_mini());if(idx>0)str+="||";str+=field.join("|");});cell.str_info=str;}
self.mouse_dt=cell;setTimeout(function(event){var mouse_pr_dt=cell;if(cell.str_info){if((self.mouse_dt==mouse_pr_dt)&&(!cell.str_info.blank())){document.location.href="/external/mini/event/tooltip?id="+cell.str_info;}}},200);}
cell.onmouseout=function(event){self.mouse_dt=null;document.location.href="/external/mini/event/tooltip?out=true";}});},draw_special_events:function(){this.expand_repeat(this.special_events.values()).each(function(special_event){this.draw_special_event(special_event);}.bind(this));},draw_special_event:function(special_event){var self=this;this.event_range_to_array($R(special_event.start_at,special_event.end_at,true),special_event.allday).each(function(date){var e=$('minical_'+(Date.diff_day(self.range.start,date)+1));if(special_event.holiday){e.style.color="#d92d1e";}});},load_events:function(){if(this.model_usable)this.draw_events();},load_special_events:function(){this.special_events=$H();if(this.model_usable){model.special_event.list(this.range.start,this.range.end).each(function(special_event){this.special_events.set(special_event.id,special_event);}.bind(this));this.draw_special_events();}else{new Ajax.Request('/top/special_events.js',{method:"get",asynchronous:true,parameters:{'bucket[start_on]':this.range.start.format_date(),'bucket[end_on]':this.range.end.format_date()},onSuccess:this.load_special_events_callback.bind(this),onFailure:function(transport){}});}},load_special_events_callback:function(transport){eval("var special_events = "+transport.responseText);special_events.each(function(special_event){special_event.allday=true;this.special_events.set(special_event.id,special_event);}.bind(this));this.draw_special_events();},expand_repeat:function(events){var results=$A();events.each(function(event){if(event.rdates){event.rdates.each(function(rdate){var expanded_event=Object.clone(event);expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];results.push(expanded_event);});}else{results.push(event);}});return results;},event_range_to_array:function(range,allday){if(range.start.before(this.range.start))range.start=this.range.start;if(allday)range.end=range.end.next_day();if(range.end.after(this.range.end))range.end=this.range.end;return range.toArray();},clean:function(){this.minical.cells.each(function(e){var classname=e.className;if(classname.include("other_month")){e.style.color=classname.include("holiday")?"#F2BAB5":"#999999";}else{e.style.color=classname.include("holiday")?"#d21100":"#666666";}
e.style.fontWeight=(classname.include("cursor_day"))?"bold":"normal";if(classname.include("new")){if(classname.include("other_month")){e.style.backgroundColor="#f7f7f7";}else{e.style.backgroundColor="#FFFFFF";}}else{e.style.backgroundColor="#F6F6F6";}});}};var Cursor=Class.create();Cursor.prototype={initialize:function(name,date){this.name=name||"cursor";this.listeners=[];this.update_date(date||new Date());},add_listener:function(listener){if(!this.listeners.include(listener)){this.listeners.push(listener);}},remove_listener:function(listener){this.listeners=this.listeners.without(listener);},update_date:function(new_date){var nd=new_date||this.date;this.date=nd;this.year=nd.getFullYear();this.month=nd.getMonth()+1;this.day=nd.getDate();this.hour=nd.getHours();var cursor=this;cursor.listeners.each(function(l){if(l)l.cursor_updated(cursor);});}}
Cursor.Date={next_year:function(yearly_view){if(yearly_view){history_controller.go("yearly_view:"+this.date.next_year().getFullYear());}else{return this.update_date(this.date.next_year());}},prev_year:function(yearly_view){if(yearly_view){history_controller.go("yearly_view:"+this.date.prev_year().getFullYear());}else{return this.update_date(this.date.prev_year());}},today_year:function(yearly_view){if(yearly_view){history_controller.go("yearly_view:"+new Date().getFullYear());}else{return calendar.cursor.update_date(new Date());}},next_month:function(){return this.update_date(this.date.next_month());},prev_month:function(){return this.update_date(this.date.prev_month());},next_day:function(){return this.update_date(this.date.next_day());},prev_day:function(){return this.update_date(this.date.prev_day());},next_week:function(){return this.update_date(this.date.next_week());},prev_week:function(){return this.update_date(this.date.prev_week());},today:function(){return this.update_date(new Date());}}
Object.extend(Cursor.prototype,Cursor.Date);var MetaCursor=Class.create();MetaCursor.prototype=Object.extend(new Cursor("metacursor"),{initialize:function(source){this.listeners=[];this.source=source;this.source.add_listener(this);},free:function(){this.source.remove_listener(this);},cursor_updated:function(cursor){this.update_date(cursor.date);}});var Reactor=Class.create({initialize:function(name){this.ename=name;},created:function(new_obj){},updated:function(new_obj,old_obj){},destroyed:function(deleted_obj,transfer_obj){}});var Actor=Class.create({initialize:function(model){this.model=model;this.reactors=[];this.add_reactor(model);},add_reactor:function(reactor){var dup=this.reactors.detect(function(r){return r.ename==reactor.ename;});if(dup){this.remove_reactor(dup);}
this.reactors.push(reactor);},remove_reactor:function(reactor){this.reactors=this.reactors.without(reactor);},callback:function(){var args=$A(arguments);var method=args.shift();var self=this;var removed_element=[];this.reactors.each(function(r){if($(r.ename)||r.type=="model"){try{r[method].apply(r,args);}catch(e){try{console.log("exception (reactor: "+r.ename
+"."+method+", model: "+self.model.name+")");console.log(e);}catch(e2){console.log("error in log code");}}}else{removed_element.push(r);}});removed_element.each(function(r){console.log("callback - remove reactor : "+r.ename);self.remove_reactor(r);});},created:function(new_obj){this.callback("created",new_obj);},updated:function(new_obj,old_obj){if(!old_obj)var old_obj=Object.extend($H({}),this.model.get(new_obj.id));this.callback("updated",new_obj,old_obj);},destroyed:function(deleted_obj,transfer_obj){this.callback("destroyed",deleted_obj,transfer_obj);}});var $E=function(event){if(event.extended_as_event)return event;return Object.extend(event,{extended_as_event:true,is_repeating:function(){return this.repeat_id&&this.repeat_id>0;},color:function(){if(this.is_special())return"#D92D1E";return(model.calendar.get(this.calendar_id)||{color:"#D92D1E"}).color;},calendar_name:function(){if(this.is_special())return"기념일";return(model.calendar.get(this.calendar_id)||{name:"캘린더"}).name;},is_allday:function(){return this.allday;},visible:function(){return(calendar.preview)?true:(model.calendar.get(this.calendar_id)||{visible:false}).visible;},is_special:function(){return this.calendar_id?false:true;},is_memorial:function(){if(this._is_memorial)return this._is_memorial;this._is_memorial=((model.calendar.get(this.calendar_id)||{service_type:0}).service_type==1);return this._is_memorial;},is_lunar:function(){return(this.lunar_on)?true:false;},length:function(){return 1;},writable:function(){return model.calendar.get(this.calendar_id).writable;},permission:function(){return model.calendar.get(this.calendar_id).source_permission;},is_shared:function(){return(model.calendar.status(this.calendar_id)=="SHARED"||model.calendar.status(this.calendar_id)=="PUBLISHED");},is_completed:function(){return(this.completed_at)?true:false;},is_valid:function(){var dt=this.end_at.getTime();return this.allday?(dt>=0):(dt>0);},is_multiday:function(){return this.allday||(!this.start_at.prev_hour(6).equal_date(this.end_at.prev_minute(6*60+1)));},is_monthly_multiday:function(){if(this._is_monthly_multiday)return this._is_monthly_multiday;this._is_monthly_multiday=this.allday||(!this.start_at.equal_date(new Date(this.end_at-1)));return this._is_monthly_multiday;},in_range:function(d1,d2){if(this.allday){return(d2.getTime()>this.start_at.getTime())&&(d1.getTime()<this.end_at.next_day().getTime());}else{return(d2.getTime()>this.start_at.getTime())&&(d1.getTime()<this.end_at.getTime());}},in_range_for_dw:function(d1,d2){if(this.allday)
return(d2.clear_time().getTime()>this.start_at.getTime())&&(d1.clear_time().getTime()<=this.end_at.getTime());return this.in_range(d1,d2);},move_start_at:function(new_start_at){return this.set_at(new_start_at,new Date(this.end_at-this.start_at+new_start_at.getTime()));},has_alarm:function(){return this.alarm_id&&this.alarm_id>0;},set_at:function(start_at,end_at){this.before_start_at=this.start_at;this.before_end_at=this.end_at;this.start_at=start_at.clone();this.end_at=end_at.clone();return this;},revert_set_at:function(){var _start_at=this.start_at;var _end_at=this.end_at;this.start_at=this.before_start_at;this.end_at=this.before_end_at;this.before_start_at=_start_at;this.before_end_at=_end_at;},r_id:function(){var r=Math.ceil(this.start_at.getTime()/(1000*3600*24))%10000;return this.id*10000+r;},get_elapsed_day:function(title){if(this.is_memorial()&&this.is_repeating()){var e=model.event.get(this.id);if(this.class_type==3){var elapsed_day=Date.diff_day(e.start_at.clear_time(),this.start_at.clear_time());if(elapsed_day==0)elapsed_day="시작";title=title+"("+elapsed_day+"일)";}else if(this.class_type==1){title=title+" (만"+(this.start_at.getFullYear()-(e.start_at||this.start_at).getFullYear())+"세)";}}
return title.escapeHTML();},get_memorial_class_by_classtype:function(){var classname="";if(this.is_memorial()){switch(this.class_type){case 1:classname="birth";break;case 2:classname="wedding";break;case 3:classname="love";break;case 4:classname="death";break;case 5:classname="build";break;default:classname="etc";}}
return classname;},get_view_title:function(){var title=this.title||'(제목없음)';if(title.empty())return'(제목없음)';title=this.get_elapsed_day(title);return title.escapeHTML();},get_view_title_with_time:function(){var title=this.title||'(제목없음)';if(!this.allday)title="("+this.start_at.format("#{kp}#{I}:#{MM}")+"-"+this.end_at.format("#{kp}#{I}:#{MM}")+") "+title;title=this.get_elapsed_day(title);return title.escapeHTML();},get_view_title_with_time_for_mini:function(){var title=this.title||'(제목없음)';if(title.length>12)title=title.substring(0,11)+"...";var fs=(!this.allday)?"#{kp}#{I}시#{MM}분":"하루종일";title=this.start_at.format(fs)+"|"+title.length+"|"+title;title=this.get_elapsed_day(title);return title.escapeHTML();},get_view_title_description:function(){var title=this.title||'(제목없음)';if(!this.allday)title="("+this.start_at.format("#{kp}#{I}:#{MM}")+"-"+this.end_at.format("#{kp}#{I}:#{MM}")+") "+title;title=this.get_elapsed_day(title);if(this.description)title+="\n\n"+this.description;return title.escapeHTML();},get_duration:function(){if(this.duration)return this.duration;var end_at=(this.allday)?this.end_at.clear_time():new Date(this.end_at-1).clear_time();this.duration=Date.diff_day(this.start_at.clear_time(),end_at);return this.duration;},get_range_mapper:function(){if(this.range_mapper)return this.range_mapper;var start=this.start_at.getHours()*100+((this.start_at.getMinutes()/30==0)?0:30);var end=this.end_at.getHours()*100+((this.end_at.getMinutes()/30==0)?0:30);this.range_mapper=$A($HR(start,end));return this.range_mapper;}});};var Partition={_year_q:function(key){return{year:new Number(new String(key).substring(0,4)),q:new Number(new String(key).substring(4,6))};},key:function(date){var d=date||new Date();return d.format("#{yy}#{mm}");},valid_key:function(key){if(!key||key.length!=6)return false;var year_q=this._year_q(key);return(year_q.year>=1902&&year_q.year<=2038&&year_q.q>=1&&year_q.q<=12)?true:false;},_sd:function(year,month){var sd=new Date(year,month-1);return sd.prev_day(sd.getDay());},date:function(key){if(!this.valid_key(key))return[];var year_q=this._year_q(key);var sd=this._sd(year_q.year,year_q.q);var ed=this._sd(year_q.year,year_q.q).next_day(42);return[sd,ed];},included_key_in_date:function(from,to,is_special){var keys=$A();if(is_special==true){var s_year=from.getFullYear();var e_year=to.getFullYear();return $R(s_year,e_year).toArray();}else{var s_pk=this.key(from);var e_pk=this.key(to);}
if((s_pk!=e_pk)&&this.date(this.next_key(s_pk))[0]<=from)s_pk=this.next_key(s_pk);if((s_pk!=e_pk)&&this.date(this.prev_key(e_pk))[1]>=to)e_pk=this.prev_key(e_pk);var cnt=0;while(s_pk<=e_pk){keys.push(s_pk);s_pk=this.next_key(s_pk);if(cnt++>240)break;}
return keys;},next_key:function(key){var year_q=this._year_q(key);year_q.q+=1;if(year_q.q>12){year_q.year+=1;year_q.q=1;}
return year_q.year+year_q.q.toPaddedString(2);},prev_key:function(key){var year_q=this._year_q(key);year_q.q-=1;if(year_q.q<1){year_q.year-=1;year_q.q=12;}
return year_q.year+year_q.q.toPaddedString(2);}};var DateModel=Class.create();DateModel.prototype={initialize:function(){this.models=$H();},set:function(date,dm){if(typeof date=="string"){return this.models.set(date,dm);}else{return this.models.set(date.to_date_param(),dm);}},get:function(date){if(typeof date=="string"){return this.models.get(date);}else{return this.models.get(date.to_date_param());}},set_data:function(event,from,to){var expanded_event=$E(Object.clone(event));expanded_event.start_at=from;expanded_event.end_at=to;from=from.clear_time();_to=to.clear_time();to=(!expanded_event.allday&&to.equal(_to))?_to.prev_day():_to;for(var i=from;i<=to;i=i.next_day()){var key=i.to_date_param();var dm=this.get(key);if(!dm)dm=this.models.set(key,$H());dm.set(expanded_event.r_id(),expanded_event);}},unset_data:function(event,from,to){var expanded_event=$E(Object.clone(event));expanded_event.start_at=from;expanded_event.end_at=to;for(var i=from.clear_time();i<=to.clear_time();i=i.next_day()){var dm=this.get(i.to_date_param());if(dm)dm.unset(expanded_event.r_id());}},created:function(event){var self=this;if(event.repeat_id&&event.rdates){for(var i=0;i<event.rdates.length;i++){self.set_data(event,event.rdates[i][0],event.rdates[i][1]);}}else{self.set_data(event,event.start_at,event.end_at);}},updated:Prototype.emptyFunction,destroyed:function(event){var self=this;event=model.event.get(event.id)||event;if(event.repeat_id&&event.rdates){for(var i=0;i<event.rdates.length;i++){self.unset_data(event,event.rdates[i][0],event.rdates[i][1]);}}else{var start_at=(event.before_start_at)?event.before_start_at:event.start_at;var end_at=(event.before_end_at)?event.before_end_at:event.end_at;self.unset_data(event,start_at,end_at);}}};var PartitionManager={type:"model",models:$H(),date_model:new DateModel(),add_model:function(name,special,repeat,mine){var pm=new PartitionModel(name,special,repeat,mine);return this.models.set(name,pm);},add_share_model:function(calendar_id){return this.add_model("shared_"+calendar_id,false,false,false);},shared_calendar:function(){if(calendar.partition){return model.calendar.list().select(function(cal){return calendar.inside_preview||(!cal.source_id&&(cal.publish_level=="ALL"||cal.publish_level=="FREEBUSY"));});}else{return[];}},user_model_list:function(){return(calendar.partition)?["user_event","user_revent"]:["common"];},valid_model_list:function(){if(calendar.partition){return this.shared_calendar().collect(function(cal){return"shared_"+cal.id});}else{return["common"];}},get_model:function(name){var m=this.models.get(name);if(!m)m=this.add_model(name,false,false,false);return m;},list:function(from,to,expanded){var self=this;return this.valid_model_list().collect(function(m){return self.get_model(m).list(from,to,expanded)}).flatten();},memorial_list:function(from,to,expanded){var self=this;return this.user_model_list().collect(function(m){return self.get_model(m).list(from,to,expanded)}).flatten();},async_list:function(from,to,expanded,callback){var self=this;this.valid_model_list().each(function(m){self.get_model(m).async_list(from,to,expanded,callback)});},expanded_list:function(from,to){return this.list(from,to,true);},async_expanded_list:function(from,to,callback){this.async_list(from,to,true,callback);},get:function(id,from,to){return event_bucket.get(id,from,to);},expand_events:function(events,from,to){var self=this;var results=$A();events.each(function(event){results.push(self.expand_event(event,from,to))})
return results.flatten();},expand_event:function(event,from,to){var event=this.get(event.id,from,to);if(!event.repeat_id)return[event];return(event._rdates||[]).collect(function(rdate){var expanded_event=Object.clone(event);expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];return expanded_event;});},find_relative_model:function(event){if(!calendar.partition)return this.models.get("common");var has_source_id=(model.calendar.get(event.calendar_id).source_id)?true:false;var is_repeating=$E(event).is_repeating();var model_name=null;if(!has_source_id){model_name=(!is_repeating)?"user_event":"user_revent";}else{model_name="shared_"+model.calendar.get(event.calendar_id).id;var m=this.models.get(model_name);if(!m)this.add_share_model(event.calendar_id);}
return this.models.get(model_name);},created:function(event){event_bucket.created(event);this.date_model.created(event);this.find_relative_model(event).event_created(event);},updated:function(event,old_event){old_event=(old_event)?old_event:event_bucket.get(event.id);this.date_model.destroyed(old_event);this.date_model.created(event);event_bucket.updated(event);this.models.values().invoke("event_destroyed",event);this.find_relative_model(event).event_updated(event);},destroyed:function(event){this.date_model.destroyed(event);event_bucket.destroyed(event);this.find_relative_model(event).event_destroyed(event);},calendar_created:function(calendar){if(!calendar.partition){if(calendar.source_id&&this.models.get("common"))this.models.get("common").flush();}},calendar_destroyed:function(calendar){if(!calendar.partition){return this.models.get("common").flush();}else{if(calendar.source_id){this.models.get("shared_"+calendar.id).flush();this.models.unset("shared_"+calendar.id);}else{this.models.get("user_event").flush();this.models.get("user_revent").flush();}}},flush:function(){var self=this;this.models.keys().each(function(key){self.models.get(key).flush();self.models.unset(key);});if(calendar.partition){model.event.add_model("user_event",false,false,true);model.event.add_model("user_revent",false,true,true);this.shared_calendar().each(function(share){self.add_share_model(share.id)});}else{model.event.add_model("common",false,true,true);}},preload_bucket:function(p_key){this.valid_model_list().each(function(m){m.preload_bucket(p_key)});},reload:function(){this.flush();var cur_date=Partition.date(Partition.key());this.list(cur_date[0],cur_date[1]);if(minical)minical.cursor.update_date();}};var PartitionModel=Class.create();PartitionModel.prototype={initialize:function(name,special,repeat,mine){this.name=name;this.special=special;this.repeat=repeat;this.mine=mine;this.buckets=$H();this.requests=$H();this.pre_requests=$H();if(this.name=="common")this.common=true;},rearrange_key:function(p_key){if(this.special==true){return Partition._year_q(p_key).year;}else
return p_key;},find_bucket:function(p_key){return this.buckets.get(this.rearrange_key(p_key));},find_or_create_bucket:function(p_key){var bucket=this.find_bucket(p_key);if(!bucket){this.load_from_server(p_key,false);bucket=this.find_bucket(p_key);}
if(!this.special)this.preload_bucket(p_key);return bucket;},preload_bucket:function(p_key){return;if(calendar.appmode||calendar.preview||calendar.external_adder)return;var self=this;var bucket_size=this.buckets.size();var delay=(bucket_size>1)?3000:10000;if(!Partition.valid_key(p_key))return;var pre_requests=this.pre_requests.get(p_key);this.pre_requests.set(p_key,true);if(!pre_requests){setTimeout(function(){if(!self.find_bucket(Partition.next_key(p_key)))self.load_from_server(Partition.next_key(p_key,true))},delay);setTimeout(function(){if(!self.find_bucket(Partition.prev_key(p_key)))self.load_from_server(Partition.prev_key(p_key,true))},delay+2000);}},get_request_url:function(p_key){var url=null;if(this.special){url="/caches/special_events/s."}else if(calendar.published){var calendar_id=/\d+/.exec(this.name).first();if(!calendar_id)calendar.notify("접근 가능한 캘린더가 없습니다.");if(!p_key)p_key=Partition.key();return"/caches/public_calendar/"+calendar_id+"."+p_key+".js?dummy="+new Date().getTime();}else if(calendar.preview&&calendar.partition){var calendar_id=/\d+/.exec(this.name).first();if(!calendar_id)calendar.notify("접근 가능한 캘린더가 없습니다.");if(calendar.inside_preview){var cal=model.calendar.get(calendar_id);url="/calendar/"+calendar_id+"/events/";if(cal.source_permission=="checkable"||cal.publish_level=="FREEBUSY")url+="f";return url+p_key+".js";}else{return"/preview/events.js?p_key="+p_key+"&id="+calendar_id;}}else if(this.common){url="/events/c";}else if(this.mine){url="/events/"+((this.repeat)?"r":"n");}else{var calendar_id=/\d+/.exec(this.name).first();var cal=model.calendar.get(calendar_id);url="/calendar/"+calendar_id+"/events/";if(cal.source_permission=="checkable"||(calendar.preview&&cal.publish_level=="FREEBUSY"))url+="f";}
url=url+p_key+".js";return url;},load_from_server:function(p_key,async){var self=this;if(!p_key)p_key=Partition.key();var url=this.get_request_url(p_key);new Ajax.Request(url,{method:"get",asynchronous:async,onSuccess:this.load_on_success.bind(this,async)});},insert_loaded_events:function(p_key,events){for(var i=0;i<events.length;i++){event_bucket.create($E(events[i]));model.event.date_model.created(events[i]);};var events_ids=[];for(var i=0;i<events.length;i++){events_ids.push(events[i].id);};this.buckets.set(this.rearrange_key(p_key),events_ids);},load_on_success:function(async,transport){eval("var results = "+transport.responseText);var events=null;if(this.name=="user_event"||this.name=="user_revent"){if($w("a c f").include(results.flag))events=eval(results.nevents)+eval(results.revents);if(results.flag=="n")events=eval(results.nevents);if(results.flag=="r")events=eval(results.revents);}else{events=eval(results.events).flatten();}
if(events)this.insert_loaded_events(results.p_key,events);if(async){var self=this;var request=this.requests.get(results.p_key);request.each(function(r){var callback=r[3];try{callback(self.list(r[0],r[1],r[2]));}catch(e){console.log(["callback error",e])}});this.requests.unset(results.p_key);}},list:function(from,to,expanded){var self=this;var events_ids=[];var keys=Partition.included_key_in_date(from,to,this.special);keys.each(function(k){if(self.find_or_create_bucket(k))events_ids.push(self.find_or_create_bucket(k))});var events=this.get_list_by_event_ids(events_ids,from,to,expanded,keys);var t=this.in_range_list(events,from,to,keys);return t;},async_list:function(from,to,expanded,callback){var self=this;var events_ids=$A();var keys=Partition.included_key_in_date(from,to,this.special);var async=((keys.size()==1)&&(!this.find_bucket(keys.first())))?true:false;if(async){var key=keys.first();var request=this.requests.get(key);if(request){request.push([from,to,expanded,callback]);this.requests.set(key,request);}else{this.requests.set(key,[[from,to,expanded,callback]]);this.load_from_server(key,true);}}else{callback(this.list(from,to,expanded));}},get_list_by_event_ids:function(events_ids,from,to,expanded,keys){events_ids=(keys.size()>1)?events_ids.flatten().uniq():events_ids.first();var results=[];events_ids.each(function(event_id){var event=event_bucket.get(event_id,from,to);if(expanded&&event.repeat_id){(event._rdates||[]).each(function(rdate){var expanded_event=Object.clone(event);expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];results.push(expanded_event);});}else{results.push(event);}});return results;},in_range_list:function(events,from,to){var to_for_allday=to.clear_time();var from_for_allday=from.clear_time();var in_the_range=function(f,t,allday){return(allday)?(f.before(to_for_allday,false)&&t.after(from_for_allday,true)):(f.before(to,false)&&t.after(from,false));};return events.select(function(event){if(event.repeat_id){if(event.rdates){event._rdates=event.rdates.select(function(rdate){return in_the_range(rdate[0],rdate[1],event.allday);});return event._rdates.size()>0;}else{return false;}}else{return in_the_range(event.start_at,event.end_at,event.allday);}});},_find_keys_in_range:function(from,to){var from_key=Partition.key(from);var to_key=Partition.key(to);var prev_key=Partition.prev_key(from_key);var next_key=Partition.next_key(next_key);if(Partition.date(prev_key)[1]>=from)from_key=prev_key;if(Partition.date(next_key)[0]>=to)to_key=next_key;var keys=this.buckets.keys().findAll(function(k){return(k>=from_key&&k<=to_key)});return keys;},_find_keys_in_after:function(from){var from_key=Partition.key(from);var keys=this.buckets.keys().findAll(function(k){return k>=from_key});return keys;},event_created:function(event){var self=this;var keys=(event.is_repeating())?this._find_keys_in_after(event.start_at):this._find_keys_in_range(event.start_at,event.end_at);keys.each(function(k){var events_ids=self.buckets.get(k);if(!events_ids.include(event.id)){events_ids.push(event.id);self.buckets.unset(k);self.buckets.set(k,events_ids);}})},event_updated:function(event){this.event_destroyed(event);this.event_created(event);},event_destroyed:function(event){var self=this;this.buckets.keys().each(function(k){if(self.buckets.get(k).include(event.id))self.buckets.set(k,self.buckets.get(k).without(event.id));})},flush:function(){var self=this;this.buckets.keys().each(function(k){self.buckets.get(k).each(function(id){event_bucket.destroyed({id:id})})
self.buckets.unset(k);});}};var SpecialPartitionModel=Class.create();SpecialPartitionModel.prototype=Object.extend(Object.extend({},PartitionModel.prototype),{created:function(p_key,events){var events_ids=events.collect(function(event){return event.id});this.buckets.set(this.rearrange_key(p_key),events_ids);events.each(function(event){event.allday=true;special_event_bucket.create($E(event))});},expanded_list:function(from,to){return this.list(from,to,true);},get:function(id,from,to){return special_event_bucket.get(id,from,to);},get_list_by_event_ids:function(events_ids,from,to,expanded,keys){events_ids=(keys.size()>1)?events_ids.flatten().uniq():events_ids.first();var results=[];if(!events_ids)events_ids=[];events_ids.each(function(event_id){var event=special_event_bucket.get(event_id,from,to);if(expanded&&event.repeat_id){(event._rdates||[]).each(function(rdate){var expanded_event=Object.clone(event);expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];results.push(expanded_event);});}else{results.push(event);}});return results;}});var EventBucket=Class.create();EventBucket.prototype={initialize:function(){this.events=$H();},create:function(event){if(event.repeat_id&&this.events.get(event.id)){var saved_event=this.events.get(event.id);event.rdates=this.sanitize_rdates([saved_event.rdates,event.rdates]).clone();}
this.events.set(event.id,$E(event));},created:function(event){this.events.set(event.id,$E(event));},updated:function(event){this.events.set(event.id,$E(event));},destroyed:function(event){this.events.unset(event.id);},get:function(id,from,to){var event=this.events.get(id);if(from&&to&&event&&event.rdates){event._rdates=event.rdates.select(function(rdate){return rdate[0].before(to,false)&&rdate[1].after(from,event.allday);});event._rdates=this.sanitize_rdates([event._rdates]).clone();}
return event;},sanitize_rdates:function(rdates){var hashed_rdates=$H();rdates.each(function(rdate){rdate.each(function(r){if(r)hashed_rdates.set(r[0],r)})});return hashed_rdates.values();},flush:function(){var self=this;var temp=this.events.keys();temp.each(function(key){self.events.unset(key)});}};var HashModel=Class.create();HashModel.prototype={initialize:function(name){this.entries=$H();this.name=name||"no name";this.type="model";},clear:function(){this.entries=$H();},created:function(obj){this.entries.set(obj.id,obj);},updated:function(new_obj,old_obj){this.entries.set(new_obj.id,new_obj);},destroyed:function(deleted_obj,transfer_obj){this.entries.unset(deleted_obj.id);},get:function(id){return this.entries.get(id);},list:function(options){var opts={sort_by:"display_order"};Object.extend(opts,options||{});return this.entries.values().sortBy(function(value){return value[opts.sort_by];});},flush:function(){var temp=this.entries.keys();temp.each(function(key){this.entries.unset(key);}.bind(this));}}
var CalendarModel=Class.create();CalendarModel.prototype=Object.extend(new HashModel("calendar_model"),{initialize:function(){this.entries=$H();this.share_entries=$H();this.name=name||"no name";this.type="model";},created:function(obj){this.clear_cache();model.event.calendar_created(obj);this.entries.set(obj.id,obj);if(obj.source_id)this.share_entries.set(obj.source_id,obj);},updated:function(new_obj,old_obj){this.clear_cache();this.entries.set(new_obj.id,new_obj);if(new_obj.source_id)this.share_entries.set(new_obj.source_id,new_obj);},get:function(id){var calendar=this.entries.get(id);if(!calendar)calendar=this.share_entries.get(id);return calendar;},get_default:function(){return this.list().first();},get_memorial:function(){if(this._cached_memorial)return this.get(this._cached_memorial);var memorials=this.list().find(function(c){return c.service_type==1});this._cached_memorial=memorials.id;return memorials;},destroyed:function(deleted_obj,transfer_obj){this.clear_cache();model.event.calendar_destroyed(deleted_obj);this.entries.unset(deleted_obj.id);if(deleted_obj.source_id)this.share_entries.set(deleted_obj.source_id);},update_visible:function(id){this.list().each(function(cal){var new_cal=Object.clone(cal);new_cal.visible=(id==0)?true:((new_cal.id==id)?true:false);actor.calendar.updated(new_cal);});},sort:function(calendars){var list=calendars.sortBy(function(cal){return cal.display_order});if(list.size()>1&&list.first().service_type==1){var temp=list[1];list[1]=list[0];list[0]=temp;}
return list;},list_of_mine:function(){return this.sort(this.entries.values().select(function(cal){return!cal.source_id}));},list_of_not_mine:function(){return this.sort(this.entries.values().select(function(cal){return cal.source_id}));},list:function(){if(this._list)return this._list;this._list=this.list_of_mine().concat(this.list_of_not_mine());return this._list;},get_order:function(id){return this.list().collect(function(c){return c.id}).indexOf(id);},remove_sms_alarm:function(){this.list().each(function(cal){if(cal.alarm){cal.alarm.sms=false;}});model.event.flush();},status:function(id){var calendar=this.get(id);return calendar.status;},get_status_icon:function(id){var status=this.status(id);return(status=="NORMAL")?"":status.toLowerCase();},clear_cache:function(){this._list=null;}});var TodoModel=Class.create();TodoModel.prototype=Object.extend(new HashModel("todo_model"),{initialize:function(){}});var TodoStoreModel=Class.create();TodoStoreModel.prototype=Object.extend(new HashModel("todo_store_model"),{initialize:function(){}});var LunarModel=Class.create();LunarModel.prototype=Object.extend(new HashModel("lunar_model"),{initialize:function(){},get:function(id){return this.entries.get(id);},load:function(objs){objs.each(function(obj){this.entries.set(obj.solar.format("#{yy}#{mm}#{dd}"),obj);}.bind(this));},created:Prototype.emptyFunction,updated:Prototype.emptyFunction,destroyed:Prototype.emptyFunction,list:Prototype.emptyFunction});var UserModel=Class.create();UserModel.prototype=Object.extend(new HashModel("user_model"),{initialize:function(){},find_or_create:function(event,element,userid,type){if(!userid)userid=event.userid;var user=this.get(userid);if(user){this.completed(element,user,type);}else{new Ajax.Request('/event/userinfo/'+event.id,{method:'get',evalScripts:true,parameters:{type:type},onSuccess:function(transport){eval("var user = "+transport.responseText);this.created(user);this.completed(element,user,type);}.bind(this)});}},update:function(event,element,userid,type){$(element).update("불러오는 중");this.find_or_create(event,element,userid,type);},completed:function(element,user,type){try{var content=user.daumname+'('+user.daumid+')';if(type=="updater")content=content+' - '
$(element).update(content);}catch(e){}}});var AlarmModel=Class.create();AlarmModel.prototype=Object.extend(new HashModel("alarm_model"),{initialize:function(){this.loaded=false;},load:function(parent){if(this.loaded){if(parent)parent.lazy_bind_alarms();return;}
this.loaded=true;var self=this;new Ajax.Request('/alarm/index.js',{method:'get',asynchronous:true,evalScripts:true,onSuccess:function(transport){eval("var alarms = "+transport.responseText);for(var i=0;i<alarms.length;i++)self.created(alarms[i]);if(parent)parent.lazy_bind_alarms();},onFailure:function(){self.loaded=false;}});},created:function(obj,id){(!id&&typeof(obj)=='object')?this.entries.set(obj.alarmable_id,obj):this.entries.set(id,obj);},updated:function(new_obj,old_obj){this.entries.set(new_obj.alarmable_id,new_obj);},destroyed:function(alarmable_id){this.entries.unset(alarmable_id);},find_or_create:function(popup,alarmable_id,readonly){var alarm=this.get(alarmable_id);if(alarm){this.completed(popup,alarm,readonly);}else{new Ajax.Request('/alarm/show/'+alarmable_id+'.js',{method:'get',asynchronous:true,evalScripts:true,onSuccess:function(transport){eval("var alarm = "+transport.responseText);this.created((alarm||"empty"),alarmable_id);this.completed(popup,this.get(alarmable_id),readonly);}.bind(this)});}},update:function(popup,alarmable_id,readonly){(alarmable_id)?this.find_or_create(popup,alarmable_id,readonly):this.completed(popup,'new',readonly);},completed:function(popup,alarm,readonly){try{if(typeof alarm!='string'){popup.alarm_setting(alarm);if(!readonly)popup.in_toggle_field(popup.e_sms_on_div,popup.e_sms_off_div,true);}else{if(!readonly){var default_alarm=(popup.is_memorial)?model.calendar.get_memorial().alarm:model.calendar.get(popup.e_calendarSelect.value).alarm;popup.in_toggle_field(popup.e_sms_on_div,popup.e_sms_off_div,false);}
if(readonly||(default_alarm&&popup.options.event)){popup.alarm_setting(popup.default_alarm_setting);}else{popup.alarm_setting(default_alarm||popup.default_alarm_setting);}}}catch(e){console.log(e);}}});var PopupWindow=Class.create();PopupWindow.prototype={initialize:function(url,options){this.url=url;this.isLoaded=false;this.attached=false;this.popWin=$('popup_window');this.options=Object.extend({offset_x:-500,offset_y:0,width:500},options||{});},onclick:function(){this.attach();},create:function(){this.isLoaded=true;this.popWin.innerHTML="";this.mover=new Draggable(this.popWin,{starteffect:DwmView.starteffect,endeffect:DwmView.endeffect});this.mover.drag_type="popup";if(this.options.width){this.popWin.style.width=this.options.width+"px";}
new Ajax.Request(this.url,{method:"get",onSuccess:function(transport){this.popWin.update(transport.responseText);this.set_closeBtn();this.set_position();}.bind(this),onFailure:function(transport){}});},set_closeBtn:function(){this.popWin.select("img.close").first().onclick=this.detach.bindAsEventListener(this);},set_position:function(){var pos=Position.cumulativeOffset(this);var left=pos[0]+this.options.offset_x;var top=pos[1]+this.getHeight()+this.options.offset_y-this.getScrollOffsetY();this.popWin.setStyle({left:left+'px',top:top+'px'});},attach:function(){if(this.attached)this.detach();ActivePopup.register(this);this.attached=true;this.popWin.linkedObj=this;this.create();this.popWin.show();this.observer_instance=this.observe_click.bindAsEventListener(this);Event.observe(document.body,'click',this.observer_instance);},getScrollOffsetY:function(){var _scrollOffsetY=0;var _element=this;do{_scrollOffsetY+=_element.scrollTop||0;_element=_element.parentNode;if(_element){if(_element.tagName=='BODY')break;var p=Element.getStyle(_element,'position');if(p=='relative'||p=='absolute')break;}}while(_element);return _scrollOffsetY;},observe_click:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);if(ActivePopup.modal_opened)return;var _offsetY=this.getScrollOffsetY();if(!Position.within(this.popWin,x,y)&&!Position.within(this,x,y+_offsetY)){if(this.options.has_color_picker){if(!Event.element(event).descendantOf(this.popWin)&&(!$('color_picker')||!Event.element(event).descendantOf($('color_picker'))))
this.detach();}else{if(!Event.element(event).descendantOf(this.popWin))
if(!$('date_selector')||!Event.element(event).descendantOf($('date_selector')))
if(!$('time_selector')||!Event.element(event).descendantOf($('time_selector')))
this.detach();}}},detach:function(){if(!this.attached)return;if(!calendar.appmode&&!calendar.toolbar&&!calendar.preview){if($('time_selector').visible())time_selector.detach();if($('date_selector').visible())date_selector.detach();}
this.attached=false;this.popWin.linkedObj=null;this.popWin.hide();ActivePopup.unregister(this);Event.stopObserving(document.body,"click",this.observer_instance);}};var LazyPopupWindow=Class.create();LazyPopupWindow.prototype={initialize:function(element){this.element=$(element);Event.observe(this.element,"click",this.mouseclick.bindAsEventListener(this));},mouseclick:function(event){var e=Event.element(event);var tags=e.id;var is_memorial=tags.include("_memorial_");if(e.id&&!e.popWin&&!tags.include("_special_")){var array=e.id.split("_");var event_id=(is_memorial)?array[3]:array[2];event_id=parseInt(event_id/10000);var popup=null;if(tags.include("_category")&&!is_memorial){popup=new PopupWindow("/event/popup?field=calendar&id="+event_id,{repeat_event:false,width:700,offset_x:10,has_color_picker:true});}else if(tags.include("_date")&&!is_memorial){popup=new PopupWindow("/event/popup?field=datetime&id="+event_id,{offset_x:0,width:600});}else if(tags.include("_info_image")){popup=new PopupWindow("/event/popup?field=image&id="+event_id,this.get_options(parseInt(event_id),540));}else if(tags.include("_info_alarm")){popup=new PopupWindow("/alarms?alarmable_type=event&alarmable_id="+event_id,this.get_options(parseInt(event_id),540));}else if(tags.include("_info_repeat")){popup=new PopupWindow("/repeats?event_id="+event_id,Object.extend(this.get_options(parseInt(event_id),580),{offset_x:-580}));}else if(tags.include("_info_link")){popup=new PopupWindow("/event/popup?field=link&id="+event_id,this.get_options(parseInt(event_id),540));}
if(popup){var _event=model.event.get(event_id);if((_event&&_event.writable())||tags.include("_info_alarm")){Object.extend(e,popup);e.onclick();}else{calendar.notify("일정에 대한 쓰기권한이 없습니다.");}}}},get_options:function(id,w){if(!w)var w=null;var options={};var event=model.event.get(id);if(event&&event.calendar_id){if(event.repeat_id){options={repeat_event:true,repeat_event_start_at:event.start_at.format("#{yy}-#{mm}-#{dd}"),width:w};}else{options={repeat_event:false,width:w};}}
return options;}};var CategoryPopupWindow=Class.create();CategoryPopupWindow.prototype=Object.extend(Object.extend({},PopupWindow.prototype),{template:new Template('<div id="category_manager_#{category_id}" class="manCatePop"><div class="wrap"><div class="main">\r\n'+'   <a href="javascript:;" class="close" style="margin-right:3px; background:none; float:right"><img src="http://pimg.hanmail.net/blog3/admin_design/clolorficker_close.gif" width="8" height="7" alt="닫기" /></a>'+' <ul>\r\n'+' <li><a id="add_category_event_#{category_id}" href="javascript:;">#{add_title}</a></li>\r\n'+' <li><a id="view_category_event_#{category_id}" href="javascript:;">#{view_title}</a></li>\r\n'+' <li style="#{has_hided_calendar}"><a id="view_all_category_event_#{category_id}" href="javascript:;">모든 카테고리 일정 보기</a></li>\r\n'+' <li style="#{memorial_hide}"><a id="share_category_#{category_id}" href="javascript:;">#{share_title}</a></li>\r\n'+' <li><a id="manage_category_#{category_id}" href="javascript:;">이 카테고리 관리</a></li>\r\n'+' </ul>\r\n'+'  <div class="defaultColors">'+'   <div class="defaultArea">'+'    <a style="background-color:#62a400;" class="colors"></a>'+'    <a style="background-color:#0062be;" class="colors"></a>'+'    <a style="background-color:#d811cb;" class="colors"></a>'+'    <a style="background-color:#8131de;" class="colors"></a>'+'    <a style="background-color:#f6469b; margin-right:0;" class="colors"></a>'+'    <div class="clear"></div>'+'    <a style="clear:both; background-color:#0eaba0;" class="colors"></a>'+'    <a style="background-color:#ca9800;" class="colors"></a>'+'    <a style="background-color:#f01544;" class="colors"></a>'+'    <a style="background-color:#ff3c00;" class="colors"></a>'+'    <a style="background-color:#666666; width:13px; height:13px; border:solid 1px #555555; margin-right:0;" class="colors"></a>'+'    <div class="clear"></div>'+'   </div>'+'  </div>'+'  <div class="foldingArea">'+'   <a class="folder" title="더보기">더보기</a>'+'   <div class="clear"></div>'+'  </div>'+'  <div class="picker" style="display:none;">'+'   <div class="chromaGrade"></div>'+'   <div class="hueGrade"></div>'+'  </div>'+'  <div id="picker_ok_btn" style="display:none; margin-left:7px;" class="customArea">'+'   <div class="preview"></div>'+'   <input id="category_color_#{category_id}" type="text" class="colorPickerInput" maxlength="7" />'+'  <img src="http://mimg.daum-img.net/dcal_2/01_common/btn/btn_insert_color.gif" width="28" height="16" alt="확인" class="enter" />'+'  </div>'+'</div></div></div>'),create:function(){this.popWin.innerHTML="";this.options.add_title=(this.options.service_type==1)?"기념일 추가":"일정입력하기";this.options.view_title=(this.options.service_type==1)?"기념일만 보기":"이 카테고리 일정만 보기";this.options.share_title=(this.options.status=="NORMAL")?"이 카테고리 공유하기":"이 카테고리 공유관리";this.options.memorial_hide=(this.options.service_type==1)?"display:none;":"";this.options.has_hided_calendar=(model.calendar.list().select(function(c){return!c.visible}).size()>0)?"":"display:none;";this.popWin.innerHTML=this.template.evaluate(this.options);this.set_colorpicker();this.register_link();this.set_position_colorpicker();},set_position_colorpicker:function(){var pos=Position.cumulativeOffset(this);var left=pos[0]+this.options.offset_x;var top=pos[1]+this.getHeight()+this.options.offset_y-this.getScrollOffsetY()-(this.options.service_type==1?151:170)-(this.options.has_hided_calendar.length>0?-13:6);this.popWin.setStyle({left:left+'px',top:top+'px'});},set_colorpicker:function(){var self=this;this.colorPicker=new ColorPicker(null,"category_manager_"+this.options.category_id,function(color){self.setCategoryColor(color);},function(color){self.setCategoryColor(color);self.detach();});var cal=model.calendar.get(this.options.category_id);this.colorPicker.setDefaultColor(cal.color);},register_link:function(){var c_id=this.options.category_id;var _params={default_calendar_id:c_id};var self=this;Event.observe($('add_category_event_'+c_id),"click",function(){if(self.options.service_type==1){new Ajax.Updater('layout_main','/memorials/new',{parameters:_params,asynchronous:true,evalScripts:true,method:'get'});history_controller.add("memorial_new");}else{new Ajax.Updater('layout_main','/events/new',{parameters:_params,asynchronous:true,evalScripts:true,method:'get'});history_controller.add("event_new");}
self.detach();});Event.observe($('view_category_event_'+c_id),"click",function(){new Ajax.Request('/calendar/update_category_visible',{parameters:{id:c_id},asynchronous:true,evalScripts:true,method:'put'});self.detach();});Event.observe($('share_category_'+c_id),"click",function(){_params.share_clicked=true;new Ajax.Updater('layout_main','/miscellany/calendar_setting',{parameters:_params,asynchronous:true,evalScripts:true,method:'get'});history_controller.add("calendar_setting");self.detach();});Event.observe($('manage_category_'+c_id),"click",function(){new Ajax.Updater('layout_main','/miscellany/calendar_setting',{parameters:_params,asynchronous:true,evalScripts:true,method:'get'});history_controller.add("calendar_setting");self.detach();});Event.observe($('view_all_category_event_'+c_id),"click",function(){new Ajax.Request('/calendar/update_category_visible',{parameters:{id:0},asynchronous:true,evalScripts:true,method:'put'});self.detach();});this.defaultColors=this.popWin.select('a.colors');this.defaultColors.each(function(e){e.onclick=function(){self.setCategoryColor(e.getStyle("backgroundColor"));}});},setCategoryColor:function(color){color=encodeURIComponent(color);var cparams='calendar[color]='+color;new Ajax.Request('/calendars/'+this.options.category_id,{method:"put",parameters:cparams});}});var LunarDetailPopup=Class.create();LunarDetailPopup.prototype={initialize:function(){this.attached=false;},attach:function(dom,init_value,callback,options){if(this.attached)this.detach();popupManager.load('lunar_detail_popup','/popup/lunar.html');ActivePopup.register(this);this.attached=true;this.attached_dom=$(dom);this.callback=callback;this.options=Object.extend({offset_x:-100,offset_y:0},options||{});this.popWin=$('lunar_detail_popup');if(!this.is_set_element)this.set_element();this.register_event();this.set_field(init_value);this.set_position();this.popWin.show();this.observer_instance=this.observe_click.bindAsEventListener(this);Event.observe(document.body,'mousedown',this.observer_instance);this.set_element_activate();},detach:function(){if(!this.attached)return;ActivePopup.unregister(this);this.attached=false;this.popWin.hide();if(this.options.on_detach)this.options.on_detach();if(this.options.parent&&this.options.parent.callback){this.options.parent.callback();}
Event.stopObserving(document.body,"mousedown",this.observer_instance);},set_position:function(){var pos=Position.cumulativeOffset(this.attached_dom);var left=pos[0]+this.options.offset_x;var top=pos[1]+this.attached_dom.getHeight()+this.options.offset_y;this.popWin.setStyle({left:left+'px',top:top+'px'});},observe_click:function(event){if(!this.attached)return;var x=Event.pointerX(event);var y=Event.pointerY(event);if(!Position.within(this.popWin,x,y))
if(!Event.element(event).descendantOf(this.popWin))
if(!$('date_selector')||!Event.element(event).descendantOf($('date_selector')))
this.detach();},set_field:function(value){this.lunar_btn.checked=true;var _date;if(value){var dt_value=value.date_value;_date=(value.date_format=="lunar")?dt_value.to_lunar():dt_value.to_date();}
if(!_date)_date=new Date();var _date_ins=_date.inspect();this.lunar_year.value=_date_ins.year;this.lunar_month.value=_date_ins.month;this.lunar_day.value=_date_ins.day;this.lunar_leap.checked=(_date_ins.code==9)?true:false;this.solar_date.value=_date_ins.year+"년 "+_date_ins.month+"월 "+_date_ins.day+"일";},set_element:function(){this.is_set_element=true;this.form=$('lunar_detail_popup_form');this.lunar_btn=$('lunar_radio_btn_1');this.solar_btn=$('lunar_radio_btn_2');this.lunar_year=$('lunar_detail_pop_year');this.lunar_month=$('lunar_detail_pop_month');this.lunar_day=$('lunar_detail_pop_day');this.lunar_leap=$('lunar_detail_pop_chk_leap');this.solar_date=$('lunar_detail_pop_solar');},set_element_activate:function(){if(this.solar_btn.checked){[this.lunar_year,this.lunar_month,this.lunar_day,this.lunar_leap].invoke('disable');this.solar_date.enable();this.solar_date.removeClassName("formDisable");}else{[this.lunar_year,this.lunar_month,this.lunar_day,this.lunar_leap].invoke('enable');this.solar_date.disable();this.solar_date.addClassName("formDisable");}},register_event:function(){this.solar_date.onfocus=function(){date_selector.detach();date_selector.attach(this);}
this.solar_btn.onclick=this.lunar_btn.onclick=function(){this.set_element_activate();}.bind(this);},confirm:function(){if(this.lunar_btn.checked){var l=Lunar.create(this.lunar_year.value,this.lunar_month.value,this.lunar_day.value,(this.lunar_leap.checked)?9:1);if(l&&this.callback&&this.callback.set_value_by_previous)this.callback.set_value_by_previous('lunar',l.to_param());}else{var solar_dt=DateConverter.str_to_date(this.solar_date.value);if(solar_dt){var self=this;new Ajax.Request('/miscellany/solar_to_lunar.js',{method:"get",asynchronous:false,parameters:{'solar':solar_dt.to_param()},onSuccess:function(transport){eval("var _lunar = "+transport.responseText);if(_lunar){var l=Lunar.create(_lunar.year,_lunar.month,_lunar.day,_lunar.code);self.callback.set_value_by_previous('lunar',l.to_param());};},onFailure:function(transport){}});}}
this.detach();}};lunarDetailPopup=new LunarDetailPopup();var PopupManager=Class.create();PopupManager.prototype={initialize:function(){this.popups=$H();},load:function(id,url){if(this.has_popup(id))return false;var self=this;new Ajax.Request(url,{method:'get',asynchronous:false,onSuccess:function(transport){if(!$(id))self.panel.insert({bottom:transport.responseText});self.popups.set(id,url);}});return true;},has_popup:function(id){if(!this.panel)this.panel=$('html_popups');return(this.popups.get(id))?true:false;},toggle:function(id,url){if(!this.has_popup(id))this.load(id,url);$(id).toggle();}};popupManager=new PopupManager();var ActivePopup={count:0,popups:$A(),modal_opened:false,register:function(popup){this.count++;this.popups.push(popup);},unregister:function(popup){this.count--;this.popups=this.popups.reject(function(p){return p==popup});},close_all:function(){this.popups.each(function(p){p.detach();});this.count=0;this.popups=$A();}};var DraggablePopup={start:function(){this.mover=new Draggable(this,{starteffect:DwmView.starteffect,endeffect:DwmView.endeffect});this.mover.drag_type="popup";},on_drag:function(event){Event.stop(event);}};var PopupFrame=Class.create({initialize:function(options){this.default_options=Object.extend({width:800,height:600,x:100,y:100},options||{});},setup:function(){var self=this;this.label=this.title||$(this).down(2);this.label.next(1).onclick=function(){self.hide();};this.iframe=this.iframe||$(this).down().next().down(2);this.mover=new Draggable(this);this.mover.drag_type="popup";},set_title:function(title){this.label.innerHTML=title||"제목없음";},set_dimension:function(width,height){FE.setDimension(this,new Number(width)+30,new Number(height)+100);FE.setDimension(this.iframe,width,height);},load:function(url,options){var opts=Object.clone(this.default_options);Object.extend(opts,options||{});FE.setPosition(this,opts.x,opts.y);this.set_dimension(opts.width,opts.height);this.set_title("캘린더 미리보기");if(!/^http:\/\//.test(url))url='http://'+window.location.host+url;this.iframe.src=url;this.show();}});var ScrollLayer=Class.create();ScrollLayer.prototype={effects:$A(),freeze:false,index:0,initialize:function(element,template,options){this.element=$(element);this.template=template;this.options=Object.extend({direction:'vertical',speed:1000,css:false},options||{});Event.observe(this.element,"mouseover",function(){this.freeze=true;}.bind(this));Event.observe(this.element,"mouseout",function(){this.freeze=false;}.bind(this));},run:function(){if(!this.freeze){if(this.options.direction=='vertical'){if(this.effects[this.index]){this.effects[this.index].start(this.effects[this.index].options);}else{this.effects[this.index]=new Effect.SlideUp(this.element.childNodes[this.index]);}
(this.index==this.element.childNodes.length-1)?this.index=0:this.index++;Element.show(this.element.childNodes[this.index]);}}},evaluate:function(object){var cover=document.createElement('div');cover.innerHTML=this.template.evaluate(object);if(this.options.css)cover.className=this.options.css;(this.element.childNodes.length==0)?Element.show(cover):Element.hide(cover);this.element.appendChild(cover);},start:function(){this.interval=setInterval(this.run.bind(this),this.options.speed);},stop:function(){clearInterval(this.interval);}};var HiddenUploader=Class.create();HiddenUploader.prototype={input_template:new Template("<input type='file' id='#{id}' name='file' style='vertical-align:middle;' />"),iframe_template:new Template("<iframe style=\"display:none;\" id=\"#{id}\" name=\"#{id}\" src=\"/blank.html\"></iframe>"),delbtn_template:new Template("<img id='#{id}' width='28' height='16' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_del.gif' alt='삭제' style='display:none;margin-left:10px;vertical-align:middle;cursor:pointer;' />"),initialize:function(element,form,option){this.element=$(element);this.form=$(form);this.option=Object.extend({submit_callback:false,remove_callback:false,validate:false},option||{});this.create();Event.observe(this.input,"change",this.changed.bind(this));Event.observe(this.iframe,"load",this.loaded.bind(this));},create:function(){this.element.insert({bottom:this.input_template.evaluate({id:this.element.id+"_input"})});this.element.insert({bottom:this.iframe_template.evaluate({id:this.element.id+"_iframe"})});this.element.insert({bottom:this.delbtn_template.evaluate({id:this.element.id+"_delbtn"})});this.input=$(this.element.id+"_input");this.iframe=$(this.element.id+"_iframe");this.delbtn=$(this.element.id+"_delbtn");this.delbtn.onclick=this.remove.bindAsEventListener(this);},validate:function(){if(!this.input.value){calendar.notify("업로드 할 화일을 선택해 주세요.");return false;}
if(this.option.validate&&!this.option.validate(this))return false;return true;},changed:function(){try{if(this.validate()){this.replace();this.form.submit();}}catch(e){}finally{this.restore();}},replace:function(){this.original={action:this.form.action,target:this.form.target,method:this.form.method};this.replaced={action:"/fs/upload/",method:"post",target:this.element.id+"_iframe"};Object.extend(this.form,this.replaced);},restore:function(){Object.extend(this.form,this.original);},loaded:function(){try{var doc=(this.iframe.contentDocument||this.iframe.contentWindow.document||window.frames[this.iframe.id].document);if(doc.location.href.indexOf("blank.html")==-1){var response=doc.body.innerHTML;var position=response.indexOf("::");if(position>0){if(this.option.submit_callback)this.option.submit_callback(response.substring(0,position),response.substring(position+2));this.delbtn.show();}else{calendar.notify("화일 업로드에 실패 했습니다.<br />확인 후 다시 업로드 해주십시요.");}}}catch(e){}},remove:function(){var _options={name:'event',caller:this,obj:null,message:'등록되어 있는 이미지를 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'remove_action'}
var r=new OkCancelAlert(_options);},remove_action:function(obj){if(this.option.remove_callback)this.option.remove_callback();this.delbtn.hide();}};var HiddenUploader2=Class.create();HiddenUploader2.prototype=Object.extend(Object.extend({},HiddenUploader.prototype),{initialize:function(element,form){this.element=$(element);this.form=$(form);this.create();this.replace();Event.observe(this.iframe,"load",this.loaded.bind(this));},create:function(){this.element.insert({top:this.iframe_template.evaluate({id:this.element.id+"_iframe"})});this.element.insert({top:this.input_template.evaluate({id:this.element.id+"_input"})});this.input=$(this.element.id+"_input");this.iframe=$(this.element.id+"_iframe");},replace:function(){this.original={target:this.form.target};this.replaced={target:this.element.id+"_iframe"};Object.extend(this.form,this.replaced);},loaded:function(){try{var doc=(this.iframe.contentDocument||this.iframe.contentWindow.document||window.frames[this.iframe.id].document);if(doc.location.href.indexOf("import_event")!=-1)eval(doc.body.textContent||doc.body.innerText);}catch(e){calendar.notify('가져오기에 실패했습니다.<br />잠시 후에 다시 시도해 주십시오.');}
$('statusBar').hide();}});var GeneralTooltip={create:function(parent,message,options){options=Object.extend({className:""},options||{});$j(parent).tooltip({track:true,delay:0,showURL:false,showBody:" - ",fade:250,positionLeft:true,extraClass:options.className,bodyHandler:function(){return message;}});},create_popup:function(parent,message,options){options=Object.extend({className:""},options||{});$j(parent).tooltip({track:true,delay:0,showURL:false,showBody:" - ",fade:250,positionLeft:false,extraClass:options.className,bodyHandler:function(){return message;}});}};var DateConverter={str_to_date:function(str){var match=str.match(/([0-9][0-9][0-9][0-9])(년|\-|\.)\s*([0-1]?[0-9])(월|\-|\.)\s*([0-3]?[0-9])(일?)/);if(match)return(match[1]+'-'+match[3]+'-'+match[5]).to_date();return null;},date_to_str:function(dt){if(calendar.editor){return dt.format('#{yy}.#{mm}.#{dd}');}else{return dt.format('#{yy}년 #{mm}월 #{dd}일');}},date_to_time:function(dt){return dt.format('#{HH}:#{MM}:00');},time_to_str:function(str){var match=str.match(/([0-2]?[0-9]):([0-6]?[0-9]):([0-6]?[0-9])/);if(match){var _hour=new Number(match[1]);var _min=new Number(match[2]);var _ampm=(_hour>=12&&_hour<=23)?'오후':'오전';if(_hour>12)_hour-=12;if(_hour==0)_hour=12;if(calendar.editor){var _min_str=(_min==0)?'00':_min;return _ampm+' '+_hour+':'+_min_str;}else{var _min_str=(_min==0)?' 00분':' '+_min+'분';return _ampm+' '+_hour+'시'+_min_str;}}
return null;},str_to_time:function(str){var match=str.match(/(오전|오후)\s*([0-1]?[0-9])(시\s*|\:\s*)([0-6]?[0-9])?분?/);if(match){var _hour=new Number(match[2]);if(match[1]=='오후'&&_hour!=12)_hour+=12;if(match[1]=='오전'&&_hour==12)_hour-=12;var _time=((_hour<10)?'0'+_hour:_hour);var _mins=(match[4]?((match[4].length>1)?match[4]:'0'+match[4]):'00');_time+=':'+_mins+':00';return _time;}
return null;},str_time_to_json:function(str){var match=str.match(/(오전|오후)\s*([0-1]?[0-9])(시\s*|\:\s*)([0-6]?[0-9])?분?/);if(match){var _time={ampm:(match[1]=='오전'?'am':'pm'),hour:new Number(match[2]),min:(match[4]?new Number(match[4]):0)};return _time;}
return null;},diff_time_to_str:function(d1,d2,allday){var _str="";if(allday){var _diff_days=Date.diff_day(d1.clear_time(),d2.clear_time())+1;if(_diff_days<0)_diff_days=0;_str='<strong>'+_diff_days+'</strong>일';}else{var diff_hour=(d2-d1)/(1000*60*60);var diff_min=(d2-d1)/(1000*60);if(diff_min<=0){_str='<strong>0</strong>분';}else{if(diff_hour>=24*365){_str='<strong>'+Math.floor(diff_hour/(24*365))+'</strong>년';if(diff_hour%(24*365)!=0)_str+='+';}else if(diff_hour>=24){_str='<strong>'+Math.floor(diff_hour/24)+'</strong>일';if(diff_hour%24!=0)_str+='+';}else if(diff_hour>=1){_str='<strong>'+Math.floor(diff_hour)+'</strong>시간';if(diff_hour%1!=0)_str+='+';}else{_str='<strong>'+Math.floor(diff_min)+'</strong>분';}}}
return'총 '+_str;},diff_time_to_str_cal:function(d1,d2){var _str="";var _diff_days=Date.diff_day(d1.clear_time(),d2.clear_time());return _diff_days;}};DateInputField=Class.create();DateInputField.prototype={template:new Template(' <fieldset id="#{uid}_solar_area" class="memorial_sub" style="display:none;margin:0;">'
+'  <input id="#{uid}_solar" class="date" type="text" size="30" \/>'
+' <\/fieldset>'
+' <fieldset id="#{uid}_lunar_area" class="memorial_sub" style="display:none;margin:0;">'
+'  <select id="#{uid}_lunar_year"></select>'
+'  <select id="#{uid}_lunar_month"></select>'
+'  <select id="#{uid}_lunar_day"></select>'
+'  <input id="#{uid}_chk_leap" class="check" type="checkbox" \/><label for="#{uid}_chk_leap"> 윤달<\/label>'
+' <\/fieldset>'
+' <fieldset class="memorial_sub" style="margin:0 10px;">'
+'  <input id="#{uid}_chk_lunar" class="check" type="checkbox" \/><label for="#{uid}_chk_lunar"> 음력<\/label>'
+'  <img id="#{uid}_lunar_introduce" src="http://mimg.daum-img.net/dcal_2/08_add/icon22_v2.gif" width="12" height="12" alt="" class="about_lunar" \/>'
+'  <a id="#{uid}_lunar_more_btn" class="lunar_detail">자세히<\/a>'
+' <\/fieldset>'),initialize:function(draw_area,solar_element,lunar_element,date_format_element){this.draw_area=$(draw_area);this.solar_el=$(solar_element);this.lunar_el=$(lunar_element);this.date_format_el=$(date_format_element);this.uid='date_input_'+Math.floor(Math.random()*100);this.draw();var self=this;$(this.uid+'_lunar_more_btn').onclick=function(){lunarDetailPopup.attach(this,self.export_value(),self);}
this.bind_tooltip(this.uid);},draw:function(){var uid=this.uid;this.draw_area.insert({top:this.template.evaluate({uid:uid})});this.solar_area=$(uid+'_solar_area');this.lunar_area=$(uid+'_lunar_area');this.solar_date=$(uid+'_solar');this.lunar_selector={year:$(uid+'_lunar_year'),month:$(uid+'_lunar_month'),day:$(uid+'_lunar_day')};this.chk_lunar=$(uid+'_chk_lunar');this.make_lunar_selector();this.chk_lunar.onclick=function(){this.show_input_area()}.bind(this);var solar_date=this.solar_date;solar_date.has_date_selector=true;solar_date.onfocus=function(){date_selector.detach();date_selector.attach(solar_date);}
solar_date.data_changed=function(){};solar_date.onchange=function(){solar_date.data_changed();};solar_date.custom_cursor_update=function(){solar_date.data_changed();};Event.observe(this.solar_date,'keypress',function(event){event=event||window.event;var key=event.which||event.keyCode;if(key==Event.KEY_RETURN){date_selector.detach();Event.stop(event);}});this.show_input_area(this.date_format_el.value);this.set_value_by_element(this.date_format_el.value);},addOption:function(el,value,text){var opt=document.createElement('OPTION');opt.value=value;opt.text=text;el.options.add(opt);},make_lunar_selector:function(){for(var i=1902;i<=2037;i++)this.addOption(this.lunar_selector.year,i,i);for(var i=1;i<=12;i++)this.addOption(this.lunar_selector.month,i,i);for(var i=1;i<=30;i++)this.addOption(this.lunar_selector.day,i,i);},show_input_area:function(init_value){if(init_value)this.chk_lunar.checked=(init_value=="lunar")?true:false;this.is_solar=(this.chk_lunar.checked)?false:true;var cur_dt=null;if(this.is_solar){this.date_format_el.value="solar";cur_dt=this.get_lunar_value().inspect();this.solar_area.show();this.lunar_area.hide();}else{this.date_format_el.value="lunar";cur_dt=this.get_solar_value();this.solar_area.hide();this.lunar_area.show();}
if(!init_value)this.set_value(cur_dt);if(this.is_lunar_callback)this.is_lunar_callback.call(null,this.is_solar);},get_solar_value:function(){var solar_dt=DateConverter.str_to_date(this.solar_date.value);return(solar_dt)?solar_dt.inspect():null;},get_lunar_value:function(){return Lunar.create(this.lunar_selector.year.value,this.lunar_selector.month.value,this.lunar_selector.day.value,($(this.uid+"_chk_leap").checked)?9:1);},set_value:function(dt){if(!dt)return;this.solar_date.value=dt.year+"년 "+dt.month+"월 "+dt.day+"일";this.lunar_selector.year.value=dt.year;this.lunar_selector.month.value=dt.month;this.lunar_selector.day.value=dt.day;$(this.uid+"_chk_leap").checked=(dt.code==9)?true:false;},set_value_by_element:function(date_format){var dt=(date_format=='lunar')?this.lunar_el.value.to_lunar():this.solar_el.value.to_date();if(dt)this.set_value(dt.inspect());},set_value_by_previous:function(date_format,date_value){this.show_input_area(date_format);var date_obj=(date_format=="lunar")?date_value.to_lunar():date_value.to_date();if(date_obj)this.set_value(date_obj.inspect());},clean_up:function(){this.show_input_area('solar');this.set_value((new Date()).inspect());},export_value:function(){var date_value="";var date_obj=(this.is_solar)?DateConverter.str_to_date(this.solar_date.value):this.get_lunar_value();return{date_format:(this.is_solar)?'solar':'lunar',date_value:(date_obj)?date_obj.to_param():null};},before_submit:function(){if(this.is_solar){if(!this.solar_date.value){calendar.notify("날짜를 입력해주세요.");try{this.solar_date.focus();}catch(e){}
return false;}
var solar_date=DateConverter.str_to_date(this.solar_date.value);if(!solar_date){calendar.notify("날짜 포맷이 잘못되었습니다. 다시 입력해주세요.");try{this.solar_date.focus();}catch(e){}
return false;}
this.solar_el.value=Date.parse_text(solar_date.format_date()+' 00:00:00').to_param();this.lunar_el.value="";}else{this.lunar_el.value=this.get_lunar_value().to_param();this.solar_el.value="";if(this.lunar_el.value.split('-')[1]=="12")new MessageAlert({message:'<span class="icon_caution"></span><em>내년 이후에 돌아오는 기념일</em>을 입력하셨으므로<br />올해 기념일 현황에는 보이지 않습니다.',onConfirmFunc:Prototype.emptyFunction},{width:256});}
return true;},bind_tooltip:function(uid){GeneralTooltip.create($(uid+'_lunar_introduce'),"날짜를 선택하고 음력을 체크하면<br \/><b>양력날짜를 음력으로 변경<\/b>하여<br \/>저장합니다.");}};var CalCookie=new CookieJar({expires:2592000,path:'/'});Object.extend(CalCookie,{set_hashed_cookie:function(cookie_name,hash_name,value){var hashed_cookie=$H(this.get(cookie_name));hashed_cookie.set(hash_name,value);this.put(cookie_name,hashed_cookie);},get_hashed_cookie:function(cookie_name,hash_name){var hashed_cookie=$H(this.get(cookie_name));return hashed_cookie.get(hash_name);}});var ShareSetting=Class.create();ShareSetting.prototype={template:new Template('<div id="#{uid}_share_panel_disabled" class="share_disabled_wrap">'
+'<ul class="dShareList"><li><a href="javascript:;" title="자세히" class="share_detail_setting_d">자세히</a>'
+'  <input type="radio" disabled="true" /> <label>모든 사람에게 공개</label> '
+'  <img height="12" width="12" alt="모든 사람에게 공개" src="http://mimg.daum-img.net/dcal_2/08_add/icon22_v2.gif" id="allShareIcon_"/>'
+' </li><li><input type="radio" disabled="true" /> <label>내 친구에게만 공유</label></li>'
+'</ul></div>'
+'<div id="#{uid}_share_panel_enabled" class="share_enabled_wrap">'
+'<ul class="shareList">'
+' <li>'
+'  <a title="자세히" id="#{uid}_share_detail_setting" class="share_detail_setting">자세히</a>'
+'  <input type="radio" id="#{uid}_share_all" name="calendar[publish_level]" value="ALL"/> <label for="#{uid}_share_all">모든 사람에게 공개</label>'
+'  <img height="12" width="12" alt="모든 사람에게 공개" src="http://mimg.daum-img.net/dcal_2/08_add/icon22_v2.gif" id="allShareIcon_#{uid}"/>'
+' </li>'
+' <li><input type="radio" id="#{uid}_share_friend" name="calendar[publish_level]" value="FRIEND" /> <label for="#{uid}_share_friend">내 친구에게만 공유</label></li>'
+'</ul>'
+'<hr class="all_detail"/>'
+'<p class="all_detail">'
+' 일정을 공개하면  카페/블로그 등 HTML 홈페이지에 내 일정을 표시할 수 있으며, 검색과 공개캘린더 페이지를 통해서도 많은 분들이 함께 활용할 수 있습니다.<br />'
+' <em>(단,특정 시간대에 약속이 있는지의 여부만 공개하실 분은 아래에 체크하세요.)</em>'
+'</p>'
+'<div class="all_share all_detail">'
+' <input type="hidden" value="0" name="meta[freebusy]" />'
+' <input type="checkbox" id="#{uid}_freebusy" name="meta[freebusy]" value="1" /><label for="#{uid}_freebusy" style="margin:0 5px 0;">약속표시만 공개</label><strong>(검색노출 안됨)</strong>'
+'</div>'
+'<hr class="all_detail friend" />'
+'<div class="friend_share all_detail friend">'
+' <strong class="share_info">내 친구에게 메일을 보내면서 특별한 공유 권한을 줄 수도 있습니다.</strong>'
+' <input id="#{uid}_email_to" type="hidden" value="" name="share[mailto]"/>'
+' <input id="#{uid}_share_permission" type="hidden" value="" name="share[permission]"/>'
+' <ul class="mc_list" id="#{uid}_mc_list"></ul>'
+' <div class="mc_bottom" id="#{uid}_mc_bottom"><a href="javascript:;" title="자주연락하는지인숨기기" id="#{uid}_mc_btn">자주연락하는지인숨기기</a></div>'
+' <ul class="email_message">'
+'  <li><label class="title">이메일 : </label> <div id="#{uid}_email_panel" class="email" ></div></li>'
+'  <li><label class="title">남길말 : </label> <input id="#{uid}_message" class="flexable" style="float:left;width:550px;" type="text" value="" name="share[message]"/> </li>'
+' </ul><div class="clear"></div>'
+'</div>'
+'<div class="share_panel_bottom all_detail friend">'
+' <input type="checkbox" id="#{uid}_cc_mail" name="calendar[share_mail_bcc]" value="0" checked><input type="hidden" name="calendar[share_mail_bcc]" value="1"><label for="#{uid}_cc_mail" style="margin:0 5px 0; color:#888; line-height:inherit;">함께 공유하는 친구들의 메일주소를 알려주기</label>'
+' <span id="#{uid}_resend_mail_panel"><input type="checkbox" id="#{uid}_resend_mail" name="meta[resend_mail]" value="1" class="resend_mail" checked><input type="hidden" name="meta[resend_mail]" value="0"><label for="#{uid}_resend_mail" style="margin:0 5px 0;" class="resend_mail">공유 변경 소식을 메일로 다시 알려주기</label></span>'
+'</div>'
+'</div><div class="clear"></div>'),initialize:function(share_flag,panel,owner){this.share_flag=share_flag;this.panel=$(panel);this.owner=owner||"mine";ShareSetting.uid=(ShareSetting.uid||0)+1;this.uid="SharePanel_"+ShareSetting.uid;this.panel.update(this.template.evaluate({uid:this.uid}));this.buddyController=new buddyController.Share(this.uid+"_email_panel",this.uid+"_email_to",this.uid+"_share_permission",this.uid+"_mc_list");this.bind_elements_and_events();},bind_elements_and_events:function(){var self=this;var uid=this.uid;this._panel_enable=$(self.uid+"_share_panel_enabled");this._panel_disable=$(self.uid+"_share_panel_disabled");this._el_all=this._panel_enable.select(".all");this._el_all_detail=this._panel_enable.select(".all_detail");this._el_friend=this._panel_enable.select(".friend");this._btn_share_all=$(uid+'_share_all');this._btn_share_friend=$(uid+'_share_friend');this._btn_detail=$(uid+'_share_detail_setting');this._chk_freebusy=$(uid+'_freebusy');this._resend_mail_panel=$(uid+'_resend_mail_panel');this.share_flag.onclick=function(event){var btn=this;if(this.checked){var event=event||window.event;if(event)calendar.notify("모든 사람에게 공개할때는<br /><b>개인정보</b>에 각별히 유의해주세요!");self._btn_share_all.checked=true;self.show_panel("all");}else{if(!btn.clicked&&self.prev_shared){var _options={message:'체크를 해제하고 확인을 누르시면 친구와의 공유가 끊깁니다.<br>계속 <strong>진행</strong>하시겠습니까?',onSubmitFunc:function(){btn.clicked=true;},onCancelFunc:function(){btn.checked=true;btn.onclick();}}
var r=new OkCancelAlert(_options);}
self.show_panel("none");}};this.share_flag.onclick();this._btn_share_all.onclick=this.bind_shareall.bindAsEventListener(this,false);this._btn_detail.onclick=this.bind_shareall.bindAsEventListener(this,true);this._btn_share_friend.onclick=function(){if(self.prev_shared&&!this.clicked&&self.prev_publish_level!="FRIEND"){var _options={message:'공유방법을 변경하시면 <em>공개캘린더</em>에서 추가하신 분들의<br />캘린더에서 해당 일정이 모두 삭제됩니다.<br />단, 메일주소를 입력하고 공유하던 친구들은 변함없습니다.',text_align:'text-align:left;',onSubmitFunc:function(){self.show_panel("friend");self._btn_share_friend.clicked=true;},onCancelFunc:function(){self._btn_share_all.checked=true;}}
var r=new OkCancelAlert(_options);}else{self.show_panel("friend");}}
this._chk_freebusy.onclick=function(){self._btn_share_all.value=(this.checked)?"FREEBUSY":"ALL"};this._resend_mail_panel.hide();GeneralTooltip.create($("allShareIcon_"+uid),"야구 일정, 토익 시험스케줄 등<br /><em>유용한 일정을 다른 사람들</em>에게 <br />공개해 보세요. <em>(개인정보유의)</em>");},bind_shareall:function(detail){var self=this;var _options={message:'전체공개로 공유방법을 변경하려고 합니다.<br />단, 기존에 공유중인 분들의 <em>메일주소는 함께 포함</em>됩니다.<br />물론 <em>자세히</em> 버튼을 클릭하고 삭제할 수 있습니다.',text_align:'text-align:left;',onSubmitFunc:function(){self._btn_share_all.clicked=true;if(!detail){self.show_panel("all");}else{self._btn_share_all.checked=true;(self._btn_detail.opened)?self.show_panel("all"):self.show_panel("all_detail");}},onCancelFunc:function(){self._btn_share_friend.checked=true;}}
if(self.prev_shared&&!self._btn_share_all.clicked&&self.prev_publish_level=="FRIEND"){var r=new OkCancelAlert(_options);}else{_options.onSubmitFunc();}},show_panel:function(type){this.type=type;if(type=="none"){this._panel_enable.hide();this._panel_disable.show();}else{this._panel_enable.show();this._panel_disable.hide();this._el_all.invoke('hide');this._el_all_detail.invoke('hide');this._el_friend.invoke('hide');this._btn_detail.addClassName("share_detail_setting");this._btn_detail.removeClassName("share_simple_setting");this._btn_detail.title="자세히";this._btn_detail.opened=false;if(type=="all"){this.buddyController.rearrange_publish_level(type);this._el_all.invoke('show');}else if(type=="all_detail"){this.buddyController.rearrange_publish_level("all");this._el_all.invoke('show');this._el_all_detail.invoke('show');this._btn_detail.addClassName("share_simple_setting");this._btn_detail.removeClassName("share_detail_setting");this._btn_detail.title="간단히";this._btn_detail.opened=true;}else if(type=="friend"){this.buddyController.rearrange_publish_level(type);this._el_friend.invoke('show');try{this.buddyController.e_id.focus();}catch(e){}}}},exportBuddy:function(allow_my_email){if(this.type=="friend"&&this.buddyController.entries.size()==0&&this.buddyController.e_id.value==""){calendar.notify("공유중인 친구가 없습니다.");this.share_flag.checked=false;return true;};return this.buddyController.exportBuddy(allow_my_email);},enableShare:function(toggle){this.share_flag.checked=toggle;this.share_flag.onclick();if(toggle)this._resend_mail_panel.show();},onEdit:function(cal_id,shares){var panel="none";var calendar=model.calendar.get(cal_id);var shared=(calendar.publish_level=="FRIEND")||(calendar.publish_level=="FREEBUSY")||(calendar.publish_level=="ALL");this.prev_publish_level=calendar.publish_level;this.prev_shared=shared;this.enableShare(shared);if(calendar.publish_level=="FRIEND"){this._btn_share_friend.checked=true;panel="friend";}else if(calendar.publish_level=="FREEBUSY"||calendar.publish_level=="ALL"){this._btn_share_all.checked=true;if(calendar.publish_level=="FREEBUSY"){this._chk_freebusy.checked=true;this._chk_freebusy.onclick();panel="all_detail";}else{panel=(shares.size()>0)?"all_detail":"all";}}
$(this.uid+"_cc_mail").checked=!calendar.share_mail_bcc;if(shares.size()>0||this._chk_freebusy.checked==true){if(shares.size()>0)$(this.uid+"_message").value=shares[0].message;if(calendar.publish_level=="FREEBUSY"||calendar.publish_level=="ALL")this._btn_detail.onclick();}
if(calendar.source_id){this.enableShare(true);this._btn_share_friend.checked=true;panel="friend";[this.share_flag,this._btn_share_all,this._btn_share_friend,this._chk_freebusy,$(this.uid+"_cc_mail"),$(this.uid+"_resend_mail")].invoke('disable');this._btn_detail.onclick=Prototype.emptyFunction;}
this.buddyController.input_buddy_list_by_shares(shares,this.owner);this.show_panel(panel);}}
var AlarmTemplate={template:new Template('<input id="alarm_#{type}" class="alarm_#{type} check" type="checkbox"/><label class="alarm" for="alarm_#{type}">#{name}</label>'),template_has_id:new Template('<input id="alarm_#{type}_#{random_id}" name="alarm[#{type}]" class="alarm_#{type} check" type="checkbox" #{checked}  value="1" /><label class="alarm" for="alarm_#{type}_#{random_id}">#{name}</label><input type="hidden" value="0" name="alarm[#{type}]" />'),sms_template:new Template('<input id="alarm_#{type}" class="alarm_#{type} check" onclick="AlarmTemplate.sms_alert(this);" type="checkbox"/><label class="alarm" for="alarm_#{type}">#{name}</label>'),sms_template_has_id:new Template('<input id="alarm_#{type}_#{random_id}" onclick="AlarmTemplate.sms_alert(this);" name="alarm[#{type}]" class="alarm_#{type} check" type="checkbox" #{checked}  value="1" /><label class="alarm" for="alarm_#{type}_#{random_id}">#{name}</label><input type="hidden" value="0" name="alarm[#{type}]" />'),make_alarm:function(panel_id,has_id,values,is_hanmailpopup){this.panel=$(panel_id);var html="";var self=this;var random_id=Math.floor(Math.random()*10000);if(is_hanmailpopup){var alarm_type=new Array(['sms','휴대폰'],['hanmail','한메일'],['program','캘린더 미니']);}else{var alarm_type=new Array(['sms','휴대폰'],['hanmail','한메일'],['program','캘린더 미니'],['touch','메신저'],['gadget','가젯']);}
var template=(has_id)?this.template_has_id:this.template;var sms_template=(has_id)?this.sms_template_has_id:this.sms_template;alarm_type.each(function(alarm){var checked=(values)?eval('values.'+alarm[0]):false;if(alarm[0]=='sms'){html+=sms_template.evaluate({type:alarm[0],name:alarm[1],checked:(checked)?"checked":"",random_id:random_id});}else{html+=template.evaluate({type:alarm[0],name:alarm[1],checked:(checked)?"checked":"",random_id:random_id});}})
this.panel.update(html);},sms_alert:function(check_box){if(!calendar.setting["use_sms"]){check_box.checked=false;var confirm=new SmsAlert({message:'내 일정을 문자메시지로 받아보기 위해서는<br />휴대폰 인증을 받아야 합니다.<br />지금 인증 페이지로 <strong>이동</strong>하시겠습니까?'});}}};var EmailAddrLinker=Class.create();EmailAddrLinker.prototype={initialize:function(el,email){var el=$(el);GeneralTooltip.create(el,"주소록에 추가하기");el.onclick=function(){hanmail.OpenWindowWithoutReturn('http://calendar.daum.net/hanmail/mail/CalendarAddAddrbook.daum?email='+email,'addr_pop',0,0,'no','no','no',600,550);}}};var CategoryTable=Class.create();CategoryTable.prototype={initialize:function(table,uid){this.ename=table;this.table=$(table);this.shared_count=0;this.uid=uid;},build:function(){var self=this;actor.calendar.add_reactor(this);model.calendar.list().each(function(entry){self.created(entry);});},get_content:function(obj){return Object.extend({uid:this.uid+obj.id,calendar_name:obj.name,calendar_color:(obj.visible)?obj.color:'#AAA',class_name:"category "+model.calendar.get_status_icon(obj.id),share_type:(obj.status=="NORMAL")?"공유하기":"<span style='color:#FB8102;'>공유관리</span>",share_icon:model.calendar.get_status_icon(obj.id),calendar_publish_level:this.publish_type(obj)},obj);},created:function(obj){var publish_level=this.publish_type(obj);var calendar=this.get_content(obj)
if(obj.source_id){if(this.shared_count++==0)this.shared_tr.show();this.shared_count_span.update(this.shared_count);this.shared_area.insert({before:this.template.evaluate(calendar)});}else{this.my_area.insert({before:this.template.evaluate(calendar)});}
if(this.bind_event)this.bind_event(obj);this.after_created(obj);},updated:function(obj,old_obj){var o_name=$(this.uid+obj.id+'_name');if(obj.name!=old_obj.name)o_name.innerHTML=obj.name.byte_str(18);o_name.style.backgroundColor=(obj.visible?obj.color:'#AAA');o_name.className="category "+model.calendar.get_status_icon(obj.id);this.after_updated(obj,old_obj);},destroyed:function(obj){if(obj.source_id){if(this.shared_count--==1)this.shared_tr.hide();this.shared_count_span.update(this.shared_count);}
$(this.uid+obj.id).remove();this.after_destroyed(obj);},after_created:Prototype.emptyFunction,after_updated:Prototype.emptyFunction,after_destroyed:Prototype.emptyFunction,bind_event:function(obj){this.bind_inplaceeditor(obj);$(this.uid+obj.id+'_name').className="category "+model.calendar.get_status_icon(obj.id);},bind_inplaceeditor:function(obj){makeInPlaceEditor($(this.uid+obj.id+'_name'),'calendar[name]','/calendars/'+obj.id,{highlightcolor:obj.color,hoverClassName:"cateEditable",highlightendcolor:obj.color});},publish_type:function(obj){if(obj.publish_level=="ALL"||(obj.source_id&&obj.source_publish_level=="ALL"))return"전체공개";if(obj.publish_level=="FREEBUSY"||(obj.source_id&&obj.source_publish_level=="FREEBUSY"))return"약속표시";return"비공개";},set_element:function(my_area,shared_area,shared_tr,shared_count_span){this.my_area=my_area;this.shared_area=shared_area;this.shared_tr=shared_tr;this.shared_count_span=shared_count_span;}};var CalendarRow=Class.create();CalendarRow.prototype={initialize:function(parent,obj){this.parent=parent;this.model=obj;this.movable=(model.calendar.list()[0].id==obj.id)?false:true;},reorder_request:function(before,after,failure_func){var self=this;new Ajax.Request('/calendars/'+before.model.id+'/order/'+after.model.id,{method:"put",onFailure:function(){self.place_in_order(after,before);}});new Effect.Highlight(this);new Effect.Highlight(this.next());},place_in_order:function(before,after){this.parentNode.insertBefore(before,after);},make_in_order:function(before,after){var self=$(this);if(before.movable&&after.movable){this.place_in_order(before,after);this.reorder_request(before,after);}},moveUp:function(){this.parent.remove_all_detail();this.make_in_order(this,this.previous());},moveDown:function(){this.parent.remove_all_detail();this.make_in_order(this.next(),this);}};var loading={delay:10,count:0,set_element:function(){this.element=$('loading_box');},show:function(){if(!this.element)this.set_element();if(this.element)this.element.show();},hide:function(){if(!this.element)this.set_element();if(this.element)this.element.hide();},draw:function(fn){this.count++;var self=this;this.show();setTimeout(function(){try{fn.call();if(self.count>0&&--self.count==0)self.hide();}catch(e){self.element.hide();self.count=0;}},this.delay);}};function hnd_leftFolding(oImg){if(oImg.src.indexOf("bnt_f01.gif")!=-1){oImg.src=oImg.src.replace("bnt_f01.gif","bnt_f02.gif");$FE("leftDivider").className="leftOn";$FE('leftWrap').style.display="none";}else{oImg.src=oImg.src.replace("bnt_f02.gif","bnt_f01.gif");$FE("leftDivider").className="leftOff";$FE('leftWrap').style.display="";}
$("statusBar").hide();PageLayout.setLayout();};var todayScheduleControl={ename:'simpleInfo',event_count:0,todo_count:0,invitation_count:0,unread_invitation_count:0,unread_share_count:0,bind_element:function(today_element,_today_element,share_element,_share_element,invitation_element,_invitation_element){this.today_element=$(today_element);this._today_element=$(_today_element);this.share_element=$(share_element);this._share_element=$(_share_element);this.invitation_element=$(invitation_element);this._invitation_element=$(_invitation_element);},start:function(todo_count){this.todo_count=todo_count;this.register_event_reactor();this.register_todo_reactor();this.register_calendar_reactor();this.today_event_calculate();},register_event_reactor:function(){this.event_reactor=new Reactor(this.ename);this.event_reactor.created=this.today_event_calculate.bind(this);this.event_reactor.updated=this.today_event_calculate.bind(this);this.event_reactor.destroyed=this.today_event_calculate.bind(this);actor.event.add_reactor(this.event_reactor);},register_todo_reactor:function(){this.todo_reactor=new Reactor(this.ename);this.todo_reactor.created=this.todo_created.bind(this);this.todo_reactor.updated=this.todo_updated.bind(this);this.todo_reactor.destroyed=this.todo_destroyed.bind(this);actor.todo.add_reactor(this.todo_reactor);},register_calendar_reactor:function(){this.calendar_reactor=new Reactor(this.ename);this.calendar_reactor.created=Prototype.emptyFunction;this.calendar_reactor.updated=this.today_event_calculate.bind(this);this.calendar_reactor.destroyed=this.today_event_calculate.bind(this);actor.calendar.add_reactor(this.calendar_reactor);},todo_created:function(todo){if(todo.parent_id!=0)return;today_date=new Date().clear_time();if(todo.duedate_on&&today_date.before(todo.duedate_on,true))this.todo_count++;this.display();},todo_updated:function(todo,old_todo){if(todo.parent_id!=0)return;today_date=new Date().clear_time();var todo_is_today_schedule=false;var old_todo_is_today_schedule=false;if(!todo.completed_at&&today_date.before(todo.duedate_on,true)){todo_is_today_schedule=true;}
if(!old_todo.completed_at&&today_date.before(old_todo.duedate_on,true)){old_todo_is_today_schedule=true;}
if(old_todo_is_today_schedule&&!todo_is_today_schedule)this.todo_count--;if(!old_todo_is_today_schedule&&todo_is_today_schedule)this.todo_count++;this.display();},todo_destroyed:function(todo){if(todo.parent_id!=0)return;if(!todo.completed_at&&todo.duedate_on&&today_date.before(todo.duedate_on,true))this.todo_count--;this.display();},today_event_calculate:function(){today_date=new Date().clear_time();range=$R(today_date,today_date.next_day(),true);this.event_count=0;var self=this;this.add_events(model.special_event.list(range.start,range.end));model.event.async_expanded_list(range.start,range.end,function(events){self.add_events(events);});},add_events:function(events){var events=events.select(function(event){if(!event.completed_at){return event.is_special()||event.visible()}});this.event_count=(this.event_count)+events.size();this.display();},display:function(){count=this.event_count+this.todo_count;if(count<0)count=0;this.today_element.innerHTML=count;this._today_element.className=count!=0?"active":"";},invitation_update:function(unread_count,total_count){this.unread_invitation_count=unread_count;this.invitation_count=total_count;this.invitation_display();},share_update:function(unread_count){this.unread_shares_count=unread_count;this.share_display();},invitation_display:function(){this.invitation_element.innerHTML=this.unread_invitation_count;this._invitation_element.className=this.unread_invitation_count!=0?"active":"";},share_display:function(){this.share_element.innerHTML=this.unread_shares_count;this._share_element.className=this.unread_shares_count!=0?"active":"";}};var GNBController=Class.create();GNBController.prototype={entries:['일정','할일','기념일'],template:new Template("<li id='gnbMenu#{index}' class='tabOff'>#{entry}</li>"),initialize:function(element,use_leftwrap){this.element=$(element);this.draw();if(use_leftwrap==true)Event.observe(this.element,"click",this.handler.bindAsEventListener(this));},draw:function(){this.clean();this.entries.each(function(entry,index){this.element.insert({bottom:this.template.evaluate({index:index,entry:entry})});}.bind(this));this.menus=$$('#'+this.element.id+' li');},handler:function(event){var e=this.find(Event.element(event));this.handle_style(e);this.handle_location(e);},handle_style:function(e){this.menus.each(function(menu){menu.className=(menu.id==e.id)?"tabOn":"tabOff";});},handle_location:function(e){switch(e.id){case"gnbMenu0":history_controller.go(calendar.default_view);break;case"gnbMenu1":history_controller.go("todo_view");break;case"gnbMenu2":history_controller.go("memorial_view");break;}},find:function(e){if(e.tagName=="LI")return e;return this.find(e.parentNode);},memorial_on:function(){this.entries=this.entries.without("기념일");this.entries.push("기념일");this.element.className="memorial_on";this.draw();},memorial_off:function(){this.entries=this.entries.without("기념일");this.element.className="memorial_off";this.draw();},clean:function(){this.element.innerHTML="";}};var weatherController={weathers:$A(),weather_template:new Template("<a href='http://weather.media.daum.net/?pageId=102&metro=#{href}' target='_weather' class='weather #{href}'>#{title}</a><a href='http://weather.media.daum.net/?pageId=102&metro=#{href}' target='_weather'><span class='temperature'>#{temperature}</span><span class='celsius'>℃</span><img src='http://mimg.daum-img.net/dcal_2/09_add/#{imghref}' width='22' height='21' alt='날씨' /></a>"),init:function(el){this.el=el;this.layer=new ScrollLayer(this.el,this.weather_template,{speed:10000});},setWeather:function(w){w.temperature=Math.round(parseFloat(w.temperature));w.imghref=parseInt(w.imghref);if(w.imghref>=1&&w.imghref<=3){w.imghref='i_sun_v2.gif';}else if((w.imghref>=4&&w.imghref<=6)||w.imghref==39||w.imghref==40){w.imghref='i_clouds.gif';}else if(w.imghref>=7&&w.imghref<=17){w.imghref='i_rain.gif';}else if(w.imghref>=18&&w.imghref<=38){w.imghref='i_snow.gif';}
this.weathers.push(w);},setArea:function(area){this.layer.stop();if(area=="전국"){$(this.el).update("");this.layer.effects=$A();this.layer.index=0;var self=this;this.weathers.each(function(w){self.layer.evaluate(w);});this.layer.start();}else{var selected_area=this.weathers.find(function(w){return w.title==area});if(!selected_area)selected_area=this.weathers.find(function(w){return w.title=='서울/경기'});if(!selected_area)return;$(this.el).update(this.weather_template.evaluate(selected_area));}}};var SearchDetailControl=Class.create();SearchDetailControl.prototype={template_search_keyword:new Template("<input id='search_keyword' type='text' name='search[keyword]' class='textbox' style='width:450px;' />"
+"<input type='image' src='http://mimg.daum-img.net/hanmail_2/icon/btn_search.gif' alt='검색' style='vertical-align:middle;' />"),template_search_event:new Template("<select id='search_calendar_id' name='search[calendar_id]' style='margin-right:3px;'></select>"
+"<div class='to_from'>에서</div>"
+"<select id='meta_search_field' name='meta[search_field]' style='margin-left:8px;margin-right:3px;'><option value='title'>제목</option><option value='description'>내용</option><option value='title_description'>제목/내용</option></select>"
+"<div class='to_from'>으로</div>"
+"<input id='search_keyword' type='text' size='v10' name='search[keyword]' class='textbox' style='width:144px;margin-left:8px;' />"
+"<input type='image' src='http://mimg.daum-img.net/hanmail_2/icon/btn_search.gif' alt='검색' style='vertical-align:middle;' />"),template_search_todo:new Template("<input id='search_keyword' type='text' name='search[keyword]' class='textbox' style='width:450px;' />"
+"<input type='image' src='http://mimg.daum-img.net/hanmail_2/icon/btn_search.gif' alt='검색' style='vertical-align:middle;' />"),template_search_recommend:new Template("<div style='margin:16px 0 17px 0;'><select id='meta_search_field' name='search[search_field]' style='margin-left:8px;margin-right:3px;'><option value='title'>카테고리 제목</option><option value='description'>카테고리 내용</option><option value='title_description'>카테고리 제목/내용</option></select>"
+"<div class='to_from'>으로</div>"
+"<input id='search_keyword' type='text' name='search[keyword]' class='textbox' style='width:250px;margin-left:8px;' />"
+"<input type='image' src='http://mimg.daum-img.net/hanmail_2/icon/btn_search.gif' alt='검색' style='vertical-align:middle;' /></div>"),initialize:function(){this.searchDetailBtn=$('btnDetailSearch');this.searchFormDiv=$('detail_search_div');this.searchForm=$('detail_search_form');this.searchBtn=$('search_date_btn');this.ddSearchKeyword=$('detail_search_keyword_dd');this.searchNotice=this.searchFormDiv.select('.noti')[0];this.searchDetailKeyword=this.searchFormDiv.select('#detail_search_keyword_text')[0];this.searchTypeAll=this.searchFormDiv.select('#search_all')[0];this.searchTypeEvent=this.searchFormDiv.select('#search_event')[0];this.searchTypeTodo=this.searchFormDiv.select('#search_todo')[0];this.searchTypeRecommend=this.searchFormDiv.select('#search_recommend')[0];this.searchStartOn=this.searchFormDiv.select('#search_start_on')[0];this.searchEndOn=this.searchFormDiv.select('#search_end_on')[0];this.register_event();},register_event:function(){this.searchDetailBtn.onclick=this.searchform_open.bind(this);this.searchBtn.onclick=function(){this.searchForm.search_field.value='date';this.searchForm.onsubmit();}.bind(this);this.searchTypeAll.onclick=this.search_all_click.bindAsEventListener(this);this.searchTypeEvent.onclick=this.search_event_click.bindAsEventListener(this);this.searchTypeTodo.onclick=this.search_todo_click.bindAsEventListener(this);this.searchTypeRecommend.onclick=this.search_recommend_click.bindAsEventListener(this);this.searchStartOn.onfocus=this.searchEndOn.onfocus=function(){date_selector.detach();date_selector.attach(this);}},search_all_click:function(){this.ddSearchKeyword.update(this.template_search_keyword.evaluate({}));this.searchForm.search_type.value="all";this.searchForm.search_field.value="title_description";try{this.searchFormDiv.select('#search_keyword').last().focus();}catch(e){}
this.search_recommend_or_not();},search_event_click:function(){this.ddSearchKeyword.update(this.template_search_event.evaluate({}));this.searchForm.search_type.value="event";this.searchForm.search_field.value="title";this.search_recommend_or_not();new CalendarSelector("search_calendar_id",{has_all_category:true});var meta_search_field=$('meta_search_field');meta_search_field.onchange=function(s){this.searchForm.search_field.value=s.options[s.selectedIndex].value;}.bind(this,meta_search_field);MakeXSelect($FE("meta_search_field"),{width:90});try{this.searchFormDiv.select('#search_keyword').last().focus();}catch(e){}},search_todo_click:function(){this.searchForm.search_type.value="todo";this.searchForm.search_field.value="title_description";this.ddSearchKeyword.update(this.template_search_todo.evaluate({}));try{this.searchFormDiv.select('#search_keyword').last().focus();}catch(e){}
this.search_recommend_or_not();},search_recommend_click:function(){this.ddSearchKeyword.update(this.template_search_recommend.evaluate({}));this.searchForm.search_type.value="recommend";this.searchForm.search_field.value="title";var meta_search_field=$('meta_search_field');meta_search_field.onchange=function(s){this.searchForm.search_field.value=s.options[s.selectedIndex].value;}.bind(this,meta_search_field);MakeXSelect($FE("meta_search_field"),{width:130});this.searchFormDiv.select('#detail_search_keyword_text')[0].hide();this.search_recommend_or_not(true);},search_recommend_or_not:function(recommend){if(recommend){this.searchNotice.update("웹사이트에 공개된 캘린더를 모두 검색합니다.");this.searchDetailKeyword.hide();}else{this.searchNotice.update("반복일정으로 등록된 경우 검색을 하더라도 한번만 표시됩니다.");this.searchDetailKeyword.show();}},validate_search_form:function(){if(this.searchForm.search_field.value=='date'){var searchStartOn=$('search_start_on');var searchEndOn=$('search_end_on');searchStartOn.value=((_dt=DateConverter.str_to_date(searchStartOn.value)))?_dt.format_date():'';searchEndOn.value=((_dt=DateConverter.str_to_date(searchEndOn.value)))?_dt.format_date():'';}else{if($F('search_keyword').trim()==""){calendar.notify("검색하려는 스케줄을 입력하고 검색버튼을 눌러주세요.");return false;}
if($F('search_keyword').trim().length<2){calendar.notify("검색어를 두 글자 이상 입력해 주세요!");return false;}}
return true;},searchform_open:function(){this.searchDetailBtn.className="view";if(this.popup_opened){this.searchform_close();return;}
this.popup_opened=true;ActivePopup.register(this);var pos=Position.cumulativeOffset(this.searchDetailBtn);var left=pos[0]+this.searchDetailBtn.getWidth()-609;var top=pos[1]+this.searchDetailBtn.getHeight()-2;this.searchFormDiv.setStyle({left:left+'px',top:top+'px'});this.searchFormDiv.show();if(this.searchTypeAll.checked)this.search_all_click();else if(this.searchTypeEvent.checked)this.search_event_click();else if(this.searchTypeTodo.checked)this.search_todo_click();else if(this.searchTypeRecommend.checked)this.search_recommend_click();this.searchform_observe=this.searchform_click.bindAsEventListener(this);Event.observe(document,'click',this.searchform_observe);},searchform_click:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);if(!Position.within(this.searchDetailBtn,x,y)&&!Position.within(this.searchFormDiv,x,y)){if(!Event.element(event).descendantOf(this.searchFormDiv))
if(!$('date_selector')||!Event.element(event).descendantOf($('date_selector')))
this.searchform_close();}},searchform_close:function(){this.searchDetailBtn.className="";if(this.popup_opened){this.searchFormDiv.hide();Event.stopObserving(document,'click',this.searchform_observe);}
ActivePopup.unregister(this);this.popup_opened=false;},detach:function(){this.searchform_close();}};var CalendarOutgoing=Class.create();CalendarOutgoing.prototype={initialize:function(element){this.ename=$(element);this.e_title=this.ename.select('.get_length');this.e_view_width=this.ename.select('#view_width')[0];this.e_view_height=this.ename.select('#view_height')[0];this.e_source_body=this.ename.select('#source_body')[0];this.e_view_types=this.ename.select('[name=view_type]');this.regist_events();},regist_events:function(){this.e_title.each(function(element){Event.observe(element,'keydown',this.calculate_text_size.bind(this,element));Event.observe(element,'keyup',this.calculate_text_size.bind(this,element));}.bind(this));},modify_publish_level:function(id,checkbox_clicked){var cal=model.calendar.get(id);if(cal.source_id&&!checkbox_clicked){calendar.notify("공개/공유받은 카테고리는<br />권한설정을 하실 수 없습니다.");}else if(!checkbox_clicked||$('calendars_outgoing_list_'+id+'_level').innerHTML=="비공개"){var _options={doRequest:true,requestUrl:'/calendars/'+cal.id,calendar:cal,width:400,checkbox_clicked:checkbox_clicked}
new CategoryPublishAlert({},_options);}},calculate_text_size:function(element){var str=element.value;if(!element.span)element.span=element.next('span',0);var length_view=element.span;var total_length=str.length+$A(str).select(function(s){return escape(s).length>4}).length;length_view.update(total_length);if(total_length<=78){length_view.addClassName("normal");length_view.removeClassName("alert");return true;}else if(total_length>78){length_view.addClassName("alert");length_view.removeClassName("normal");return false;}},default_size:function(){this.e_view_width.value="800";this.e_view_height.value="600";},checked_calendars:function(){return this.ename.select('[type=checkbox]').select(function(e){return e.checked==true;});},checked_calendar_ids:function(checked_calendars){return(checked_calendars||this.checked_calendars()).collect(function(cb){return cb.value;}).join(",");},validate_options:function(encode){var overflowed=false;var top_title=this.e_title[0].value;var bottom_title=this.e_title[1].value;this.e_title.each(function(e){if(!this.calculate_text_size(e)){calendar.notify("제목의 글자수를 78 byte 이하로 입력해 주세요.");overflowed=true;return;}}.bind(this));if(overflowed)return false;var view_width=this.e_view_width.value;var view_height=this.e_view_height.value;var view_type=this.e_view_types.select(function(e){return e.checked==true;})[0].value;var checked_calendars=this.checked_calendars();if(checked_calendars.size()<=0){calendar.notify("먼저 내보낼 카테고리를 선택하세요.<br />하나 이상 선택한 후 다시 시도해 주세요!");return false;}
return{width:view_width,height:view_height,default_view:view_type,top_title:(encode)?encodeURIComponent(top_title):top_title,bottom_title:(encode)?encodeURIComponent(bottom_title):bottom_title,ids:this.checked_calendar_ids(checked_calendars)};},make_iframe:function(){if(opts=this.validate_options(true)){var src=new Template('http://calendar.daum.net/preview/calendars/#{ids}?size=#{width}x#{height}&view=#{default_view}&top_title=#{top_title}&bottom_title=#{bottom_title}').evaluate(opts);var contents=new Template('<iframe src="#{src}" width="#{width}" height="#{height}" frameborder="0"></iframe>').evaluate(Object.extend(opts,{src:src}));this.e_source_body.value=contents;}},preview_calendar:function(){var options=this.validate_options(false);if(options){options.title=options.top_title;calendar.preview_calendar(this.checked_calendar_ids(),options);}},source_copy:function(){var source=this.e_source_body.value;var browserName=navigator.appName;if(browserName.search("Explorer")>0){window.clipboardData.setData('text',source);calendar.notify("클립보드에 URL이 저장되었습니다.<br />Ctrl + V로 붙여넣기 하세요");}else{calendar.notify('브라우저가 클립보드 복사기능을 지원하지 않습니다.<br />직접 소스를 복사해주세요.');}},back:function(){history_controller.go("import_export");return false;}};var smsVerification={phone_number_set:function(){window.open("http://front.mobile.daum.net/mobile/MyPage");},send_verification_code:function(){var url="/preference/sms_send_authkey";new Ajax.Request(url,{method:'put',onSuccess:function(transport){if(transport.responseText=="sent"){calendar.notify("휴대폰으로 인증번호가 전송되었습니다.<br />입력 후 <strong>인증하기</strong>를 클릭하세요!<br />인증요청은 하루 5건까지 가능합니다.");$("auth_box").show();}else if(transport.responseText=="phone number error"){calendar.notify("등록된 휴대폰이 없습니다.<br />회원정보 수정에서 휴대폰 번호를 등록해 주세요.");}else if(transport.responseText=="700 LIMIT REACHED"){calendar.notify("하루 최대 5건까지만 인증요청을 할 수 있습니다.<br />내일 다시 시도해주세요!");}else{calendar.notify("인증번호 전송에 실패하였습니다.<br />"+transport.responseText);}},onFailure:function(transport){calendar.notify("인증번호 전송에 실패하였습니다.");}});},finish_setup:function(){var code=new String($F('meta_verification_code')).trim();code=code.replace(/[^\d]/g,'');if(code.length==0){calendar.notify("우선 인증번호를 입력해야 합니다.<br /><strong>인증번호 받기</strong>를 클릭하고 휴대폰에 전송된<br />인증번호를 입력한 뒤 인증해주세요!");return;}
if(code.length!=5){calendar.notify("인증번호가 맞지 않습니다.<br />정확히 입력 후 다시 시도해 보세요.");return;}
var url="/preference/sms_authorize";new Ajax.Request(url,{method:'put',parameters:{verification_code:code},onSuccess:function(transport){if(transport.responseText=="authorized true"){calendar.notify("휴대폰 설정이 완료되었습니다.<br />이제 문자메시지로 쉽게 일정을 받아보세요!");calendar.setting["use_sms"]=true;$('sms_auth_recieve_img').hide();$('sms_destroy_img').show();$('auth_box').hide();$('sms_verify_help').update('현재 휴대폰 인증이 완료된 상태입니다.');}else{calendar.notify("인증번호가 맞지 않습니다.<br />정확히 입력 후 다시 시도해 보세요.");}},onFailure:function(transport){calendar.notify("인증번호가 맞지 않습니다.<br />정확히 입력 후 다시 시도해 보세요.");}});},destroy:function(){var r=new OkCancelAlert({message:"인증취소를 하시면 다시 휴대폰 인증을 받기 전까지<br />일정을 문자로 받을 수 없습니다. 취소하시겠습니까?",caller:this,onSubmitFunc:'sms_destroy_confirm'});},sms_destroy_confirm:function(){new Ajax.Request("/preference/sms_destroy",{method:'put',onSuccess:function(transport){calendar.setting["use_sms"]=false;model.calendar.remove_sms_alarm();$('sms_auth_recieve_img').show();$('sms_destroy_img').hide();$('sms_verify_help').update('현재 휴대폰 인증을 받지 않은 상태입니다.');},onFailure:function(transport){calendar.notify("인증취소 요청이 실패하였습니다.");}});}};var CalculatorForm=Class.create();CalculatorForm.prototype={initialize:function(element){this.popWin=$(element);this.set_elements();this.set_field();this.register_event();},set_elements:function(){this.todayDate1=this.popWin.select('#today1').first();this.todayDate2=this.popWin.select('#today2').first();this.todayDate3=this.popWin.select('#today3').first();this.todayDate_lunar=this.popWin.select('#today_lunar').first();this.todayDate_mense=this.popWin.select('#today_mense').first();this.btnToday1=this.popWin.select('#btn_today1').first();this.btnToday2=this.popWin.select('#btn_today2').first();this.btnToday3=this.popWin.select('#btn_today3').first();this.btnLunar=this.popWin.select('#btn_lunar').first();this.btnMense=this.popWin.select('#btn_mense').first();this.outToday1=this.popWin.select('#out_today1').first();this.outToday2=this.popWin.select('#out_today2').first();this.outToday3=this.popWin.select('#out_today3').first();this.outLunar=this.popWin.select('#out_lunar').first();this.outMense=this.popWin.select('#out_mense').first();this.inputDay=this.popWin.select('#input_day').first();this.inputEvent=this.popWin.select('#input_event').first();this.inputLunar=this.popWin.select('#input_lunar').first();this.inputMense=this.popWin.select('#input_mense').first();this.lunarSelect=this.popWin.select('#select_solar_to_lunar').first();this.lunarLeap=this.popWin.select('#lunar_leap').first();this.menseSelect=this.popWin.select('#select_mense_day').first();this.close_btn=this.popWin.select('.close');this.output_elements=this.popWin.select('.output_text');MakeXSelect($FE('select_solar_to_lunar'),{width:90});MakeXSelect($FE('select_mense_day'),{width:60});this.popWin.select('.xselect').last().select('.optionMover').first().style.height="60px";},set_field:function(){this.todayDate1.value=this.todayDate2.value=this.todayDate3.value=this.todayDate_lunar.value=this.todayDate_mense.value=DateConverter.date_to_str(new Date());},register_event:function(){this.todayDate1.onclick=this.todayDate2.onclick=this.todayDate3.onclick=this.todayDate_lunar.onclick=this.todayDate_mense.onclick=function(){date_selector.detach();date_selector.attach(this);}
this.observer_post=this.calculate_past.bindAsEventListener(this);this.observer_duration=this.calculate_duration.bindAsEventListener(this);this.observer_future=this.calculate_future.bindAsEventListener(this);this.observer_input=this.input_event.bindAsEventListener(this,"event");this.observer_lunar=this.calculate_lunar.bindAsEventListener(this);this.observer_input_lunar=this.input_event.bindAsEventListener(this,"lunar");this.observer_mense=this.calculate_mense.bindAsEventListener(this);this.observer_input_mense=this.input_event.bindAsEventListener(this,"mense");this.observer_close=this.detach.bindAsEventListener(this);Event.observe(this.btnToday1,'click',this.observer_post);Event.observe(this.btnToday2,'click',this.observer_duration);Event.observe(this.btnToday3,'click',this.observer_future);Event.observe(this.inputEvent,'click',this.observer_input);Event.observe(this.btnLunar,'click',this.observer_lunar);Event.observe(this.inputLunar,'click',this.observer_input_lunar);Event.observe(this.btnMense,'click',this.observer_mense);Event.observe(this.inputMense,'click',this.observer_input_mense);Event.observe(this.inputDay,'keypress',this.observer_duration);this.close_btn.each(function(element){Event.observe(element,'click',this.observer_close);}.bind(this));this.mover=new Draggable(this.popWin);this.mover.drag_type="popup";},detach:function(){date_selector.detach();this.popWin.hide();this.reset();},reset:function(){this.set_field();this.output_elements.invoke('clear');this.inputDay.value="";MakeXSelect($FE('select_solar_to_lunar'),{isCate:false});MakeXSelect($FE('select_mense_day'),{isCate:false});},calculate_past:function(){var todayDate=new Date();var selectDate=DateConverter.str_to_date(this.todayDate1.value);if(!todayDate||!selectDate)return;var startAt=Date.parse_text(selectDate.format_date());var endAt=Date.parse_text(todayDate.format_date());this.outToday1.value=DateConverter.diff_time_to_str_cal(startAt,endAt,true);},calculate_duration:function(){var selectDate=DateConverter.str_to_date(this.todayDate2.value);var duringDay=this.inputDay.value;if(!duringDay||!selectDate)return;var afterDate=selectDate.next_day(Number(duringDay));this.outToday2.value=DateConverter.date_to_str(afterDate);},calculate_future:function(){var todayDate=new Date();var selectDate=DateConverter.str_to_date(this.todayDate3.value);if(!todayDate||!selectDate)return;var startAt=Date.parse_text(todayDate.format_date());var endAt=Date.parse_text(selectDate.format_date());this.outToday3.value=DateConverter.diff_time_to_str_cal(startAt,endAt,true);},input_event:function(event,type){var get_date=null;if(type=="event"){get_date=this.outToday2.value;}else if(type=="lunar"){get_date=this.outLunar.value;}else if(type=="mense"){get_date=this.outMense.value;}
if(get_date){var winsize=calendar.util.getWindowSize();default_start_at=DateConverter.str_to_date(get_date);if(default_start_at.getMinutes()<30){default_start_at.setMinutes(30);}else{default_start_at=default_start_at.next_hour().clear_minute();}
var options={startAt:default_start_at,endAt:default_start_at.next_hour(),offset_x:winsize.x/2-100,offset_y:winsize.y/2-100,allday:true};EventPopup.attach(null,options);this.detach();}},calculate_lunar:function(){if(this.lunarSelect.value==1){var solar_dt=DateConverter.str_to_date(this.todayDate_lunar.value);if(solar_dt){var self=this;new Ajax.Request('/miscellany/solar_to_lunar.js',{method:"get",asynchronous:false,parameters:{'solar':solar_dt.to_param()},onSuccess:function(transport){eval("var _lunar = "+transport.responseText);if(_lunar){var selectedDate=new Date(_lunar.year,_lunar.month-1,_lunar.day);self.outLunar.value=DateConverter.date_to_str(selectedDate);};},onFailure:function(transport){}});}}else if(this.lunarSelect.value==2){var lunar_dt=DateConverter.str_to_date(this.todayDate_lunar.value);if(lunar_dt){var self=this;var _params="lunar[year]="+lunar_dt.getFullYear();_params+="&lunar[month]="+(lunar_dt.getMonth()+1);_params+="&lunar[day]="+lunar_dt.getDate();_params+="&lunar[code]="+((this.lunarLeap.checked)?9:1);new Ajax.Request('/miscellany/lunar_to_solar.js',{method:"get",asynchronous:false,parameters:_params,onSuccess:function(transport){eval("var _solar = "+transport.responseText);if(_solar){var selectedDate=new Date(_solar);self.outLunar.value=DateConverter.date_to_str(selectedDate);};},onFailure:function(transport){}});}}},calculate_mense:function(){var mense_dt=DateConverter.str_to_date(this.todayDate_mense.value);if(mense_dt){mense_dt.setDate(mense_dt.getDate()+(this.menseSelect.value-14));this.outMense.value=DateConverter.date_to_str(mense_dt);}}};var safe_excute=function(fn,readonly){try{fn.call();}catch(e){setTimeout(function(){fn.call()},500);}};var tiara=function(url){window.setTimeout('try { __pageTracker.__trackPageview("/'+url+'"); } catch(e) {}',1);};var CategoryTableListExt={template:new Template("<tr id='#{uid}'>"
+" <td class='during order' nowrap><div id='up_down_navigation_#{id}'></div></td>"
+" <td id='#{uid}_icon' class='cateText'><div id='#{uid}_name' class='category #{share_icon}' style='background-color:#{color};'>#{calendar_name}</div></td>"
+" <td class='edit' nowrap style='text-align: left;'><a id='calendar_share_btn_#{id}' style='margin-left: 20px;'>#{share_type}</a></td>"
+" <td class='edit' nowrap><a id='calendar_modify_btn_#{id}'>수정</a></td>"
+" <td class='delete' nowrap><a id='calendar_delete_btn_#{id}'>삭제/이동/복사</a></td>"
+"</tr>"),after_created:function(obj){this.created_count=(this.created_count||0)+1;var self=this;var new_tr=$(this.uid+obj.id);new_tr.onmouseover=function(e){this.onmouseover=null;self.lazy_bind_event(obj);Object.extend(new_tr,new CalendarRow(self,obj));};if(obj.service_type==1){$(this.uid+obj.id+"_name").addClassName("memorial");this.replace_memorial_share_button(obj.id);}
if(model.calendar.list().size()<=this.created_count)this.replace_all_navigation();},lazy_bind_event:function(obj){makeInPlaceEditor(this.uid+obj.id+"_name",'calendar[name]','/calendars/'+obj.id,{highlightcolor:obj.color,hoverClassName:"cateEditable",maxLength:20,highlightendcolor:obj.color});$('calendar_share_btn_'+obj.id).onclick=this.toggle.bindAsEventListener(this,obj.id,"share");$('calendar_modify_btn_'+obj.id).onclick=this.toggle.bindAsEventListener(this,obj.id);$$('calendar_modify_btn_'+obj.id+" a.settingEditCancel").onclick=this.toggle.bindAsEventListener(this,obj.id);$('calendar_delete_btn_'+obj.id).onclick=this.destroy.bindAsEventListener(this,obj.id);},bind_event:Prototype.emptyFunction,replace_memorial_share_button:function(id){var memorial_cate_share=$('calendar_share_btn_'+id);memorial_cate_share.innerHTML='공유하기<img height="12" width="12" src="http://mimg.daum-img.net/dcal_2/08_add/icon22_v2.gif" alt="" style="vertical-align:middle;"/>'
GeneralTooltip.create(memorial_cate_share,"기념일은 <b>사람들과 공유할 수 없어요.<\/b>");},replace_navigation:function(obj){var e=$('up_down_navigation_'+obj.id);var up=true,down=true;if(e){var calendars=(obj.source_id)?model.calendar.list().select(function(c){return c.source_id}):model.calendar.list().select(function(c){return!c.source_id});if(model.calendar.list()[0].id==obj.id){e.innerHTML='기본 카테고리';}else{if(obj.source_id&&calendars.size()==1){up=down=false;}else if(calendars.size()==2){if(!obj.source_id||obj.id==calendars[0].id)up=false;if(!obj.source_id||obj.id==calendars[calendars.size()-1].id)down=false;}else if(calendars.size()>2){var _index=(obj.source_id)?0:1;if(obj.id==calendars[_index].id)up=false;if(obj.id==calendars[calendars.size()-1].id)down=false;}
var html="&nbsp;"
if(up){html="<a onclick=\"$('"+this.uid+obj.id+"').moveUp(); return false;\" style=\"margin-left:3px;\"><img src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/blt_f07.gif\" width=\"10\" height=\"12\" alt=\"up\" /></a> ";}
if(down){html+="<a onclick=\"$('"+this.uid+obj.id+"').moveDown(); return false;\"><img src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/blt_f06.gif\" width=\"10\" height=\"12\" alt=\"down\" /></a> ";}
e.innerHTML=html;}}},replace_all_navigation:function(){var self=this;model.calendar.list().each(function(obj){self.replace_navigation(obj);});},updated:function(obj,old_obj){this.remove_detail(obj.id);var name_div=$(this.uid+obj.id+"_name");if(obj.name!=old_obj.name)name_div.innerHTML=obj.name.escapeHTML();if(obj.display_order!=old_obj.display_order)this.replace_all_navigation();if(obj.color!=old_obj.color)name_div.style.backgroundColor=obj.color;if(obj.status!=old_obj.status){name_div.className="category "+model.calendar.get_status_icon(obj.id);$('calendar_share_btn_'+obj.id).update((obj.status=="NORMAL")?"공유하기":"<span style='color:#FB8102;'>공유관리</span>");}},destroyed:function(obj){if(obj.source_id){this.shared_count--;if(this.shared_count==0)this.shared_tr.hide();this.shared_count_span.update(this.shared_count);}
var trs=[$(this.uid+obj.id)];if($(this.uid+obj.id+'_detail'))trs.push($(this.uid+obj.id+'_detail'));trs.invoke('remove');this.replace_all_navigation();},destroy:function(event,calendar_id){var obj=model.calendar.get(calendar_id);var _options={requestUrl:'/calendars/'+obj.id+'.js',doRequest:true,callbackObj:this,calendar:obj,onSubmitFunc:'destroy_process',width:470,isMemorial:(obj.service_type==1)?true:false,isShared:(obj.status!="NORMAL")?true:false,isDefault:(model.calendar.list()[0].id==obj.id)}
new CategoryDestroyAlert({},_options);},destroy_process:function(merge_calendar_id,calendar){if(calendar.service_type==1)return;var trs=[$(this.uid+calendar.id)];if($(this.uid+calendar.id+'_detail'))trs.push($(this.uid+calendar.id+'_detail'));trs.invoke('hide');},reorder:function(obj_id,up_or_down){new Ajax.Request('/calendars/'+obj_id+'/order/'+target_id,{method:"put",onFailure:function(transport){}});},editable:function(e,calendar_id){var self=this;e.loaded=true;new Ajax.Request('/calendars/'+calendar_id+'/edit',{method:"get",asynchronous:false,onSuccess:function(transport){$(self.uid+calendar_id).insert({after:transport.responseText});},onFailure:function(transport){}});},toggle:function(event,calendar_id,type){var calendar=model.calendar.get(calendar_id);if(calendar.service_type==1&&type=="share")return;var e=$('setting_category_table_'+calendar.id);(e.opened==true)?this.toggle_close(e,calendar.id):this.toggle_open(e,calendar,type);},toggle_open:function(e,calendar,type){e.opened=true;(!e.loaded)?this.editable(e,calendar.id):$(this.uid+calendar.id+'_detail').show();var share_el=$(this.uid+calendar.id+'_detail_share').down(0);var modify_el=$(this.uid+calendar.id+'_detail_modify');if(type=="share"){modify_el.hide();share_el.show();$('share_'+calendar.id+'_'+calendar.status.toLowerCase()).show();}else{modify_el.show();share_el.hide();}},toggle_close:function(e,calendar_id){e.opened=false;$(this.uid+calendar_id+'_detail').hide();},remove_detail:function(calendar_id){if($(this.uid+calendar_id+'_detail'))$(this.uid+calendar_id+'_detail').remove();$(this.uid+calendar_id).opened=false;$(this.uid+calendar_id).loaded=false;},remove_all_detail:function(){$$('#setting_category_table .detail').invoke('remove');}};var CategoryTableImportExportExt={template:new Template("<tr id=\"#{uid}\">"
+" <td class=\"cateText\">"
+"  <div id=\"#{uid}_name\" class=\"category\" style=\"background-color:#{color};\">#{name}</div>"
+" </td>"
+" <td class=\"exportTo right\" nowrap=\"nowrap\">"
+"  <a id='#{uid}_link' href=\"javascript:;\">iCal로 내보내기</a>"
+"  &nbsp;<span style='color:#bbb;'> | </span>&nbsp;<a id='#{uid}_private_key' href='javascript:;'>URL재설정</a>"
+" </td>"
+"</tr>"),exports:function(){this.table.select('.calendar_chk').each(function(e){if(e.checked)this.export_ical(e.value);});},export_ical:function(id){new Ajax.Request('/sync/export_event',{method:"get",parameters:{calendar_id:id,download:true}});},after_created:function(obj){var self=this;$(this.uid+obj.id+"_link").onclick=function(){var calendar=model.calendar.get(obj.id);if(!calendar.private_key){new Ajax.Request('/calendar/get_private_key/'+obj.id,{method:'get',asynchronous:false,onSuccess:function(transport){calendar.private_key=transport.responseText;}});}
var private_key=calendar.private_key;var r=new ICalExportAlert({'id':obj.id,private_key:private_key,width:470,url:'http://calendar.daum.net/publish/calendar/'+obj.id+'/'+private_key+'.ics'});};$(this.uid+obj.id+"_private_key").onclick=function(){var r=new OkCancelAlert({message:'URL을 재설정하시겠습니까?<br /> 재설정하면 기존의 URL로는 해당 캘린더에 접근할 수 없게됩니다.',onSubmitFunc:function(){new Ajax.Request("/calendar/reset_private_key/"+obj.id);}});};}};var CategoryTableOutgoingExt={template:new Template("<tr id=\"#{uid}\" class=\"entry\">\r\n"+" <td class=\"cate_text\">\r\n"+"  <input type=\"checkbox\" id=\"#{uid}_chk\" name=\"calendar_list\" value=\"#{cal_id}\" onclick=\"calendarOutgoing.modify_publish_level(#{id}, true)\" />\r\n"+"  <div id=\"#{uid}_name\" style=\"background-color:#{calendar_color};\" class=\"#{class_name}\"  title=\"#{calendar_name}\">#{calendar_name}</div>\r\n"+" </td>\r\n"+" <td id=\"#{uid}_level\" class=\"state\">#{calendar_publish_level}</td>\r\n"+" <td class=\"edit\"><a href=\"#\" title=\"공개수정\" onclick=\"calendarOutgoing.modify_publish_level(#{id}, false);return false;\">공개수정</a></td>\r\n"+"</tr>"),get_content:function(obj){return Object.extend({cal_id:(obj.source_id)?obj.source_id:obj.id,uid:this.uid+obj.id,calendar_name:obj.name,calendar_color:(obj.visible)?obj.color:'#AAA',class_name:"category "+model.calendar.get_status_icon(obj.id),share_type:(obj.status=="NORMAL")?"공유하기":"<span style='color:#FB8102;'>공유관리</span>",share_icon:model.calendar.get_status_icon(obj.id),calendar_publish_level:this.publish_type(obj)},obj);},after_updated:function(obj,old_obj){$(this.uid+obj.id+'_level').innerHTML=this.publish_type(obj);},build:function(){var self=this;actor.calendar.add_reactor(this);model.calendar.list().each(function(c){if(c.service_type!=1){if(!c.source_id||(c.source_id&&(c.source_publish_level=="ALL"||c.source_publish_level=="FREEBUSY"))){self.created(c);}}});},bind_inplaceeditor:Prototype.emptyFunction};var TimeSelectorExt={selector_clicked:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);var without_cal=!Position.within(this,x,y);var at_dom=this.attached_dom;var within_element=at_dom&&Position.within(at_dom,x,y);if(without_cal&&!within_element)
if(!Event.element(event).descendantOf(this))
this.detach();},attach:function(dom,parameter){this.attached_dom=$(dom);this.show();var pos=Position.cumulativeOffset(dom);var left=pos[0]-50;var top=pos[1]+dom.getHeight();this.setStyle({left:left+'px',top:top+'px'});this.default_setting();if(!parameter){ActivePopup.register(this);this.attach_observe=this.selector_clicked.bindAsEventListener(this);Event.observe(document,'click',this.attach_observe);}else{try{$('confirm_button').focus();}catch(e){}}},default_setting:function(){var t=DateConverter.str_time_to_json(this.attached_dom.value)
if(t){this.set_ampm(t.ampm);this.time_hhmm.selectedIndex=0;this.time_hhmm.value=t.hour+":"+t.min;}else{this.attached_dom.value='';}},toggle_ampm:function(){(this.time_ampm.className=="select_am")?this.set_ampm("pm"):this.set_ampm("am");},set_ampm:function(value){if(value=="am"){this.time_ampm.className="select_am";this.time_ampm.innerHTML="오전";}else{this.time_ampm.className="select_pm";this.time_ampm.innerHTML="오후";}
this.time_ampm.ampm=value;},onConfirm:function(){if(this.time_hhmm.selectedIndex==0){this.attached_dom.hideTimeSelector=true;try{this.attached_dom.focus();}catch(e){}
this.detach();return;}
var hour=this.time_hhmm.value.split(':')[0];var min=this.time_hhmm.value.split(':')[1];if(min.length==1)min="0"+min;if(calendar.editor){var time=this.time_ampm.innerHTML+' '+hour+':'+min;}else{var time=this.time_ampm.innerHTML+' '+hour+'시 '+min+'분';}
this.attached_dom.value=time;if(this.attached_dom.custom_update)
this.attached_dom.custom_update();this.detach();},time_selector_changed:function(el){if(el.selectedIndex==0){this.attached_dom.hideTimeSelector=true;try{this.attached_dom.focus();}catch(e){}
this.detach();}},detach:function(){this.hide();ActivePopup.unregister(this);Event.stopObserving(document,'click',this.attach_observe);}};var leftCalendarsListExt={shared_count:0,get_template:function(calendar){var html=[];html.push("<div id='left_calendars_list_");html.push(calendar.id);html.push("' class='entry'><div class='checker'><input id='left_calendars_list_");html.push(calendar.id);html.push("_chk' type='checkbox' name='cate' ");html.push(calendar.checked);html.push(" /></div><div id='left_calendars_list_");html.push(calendar.id);html.push("_icon' class='calendars'><div id='left_calendars_list_");html.push(calendar.id);html.push("_div' class='colorwrap' style='background-color:");html.push(calendar.calendar_color);html.push(";'><div class='wrap'><img id='left_calendars_list_");html.push(calendar.id);html.push("_popup' src='http://mimg.daum-img.net/dcal_2/08_add/top_down_btn.gif' width='12' height='9' alt='' class='manCate' /><div id='left_calendars_list_");html.push(calendar.id);html.push("_name' class='category ");html.push(calendar.share_icon);html.push("'>");html.push(calendar.calendar_name);html.push("</div></div></div></div></div>");return html.join("");},created:function(obj,is_sorted){var e=$('left_calendars_list_last');var self=this;if(obj.source_id){this.shared_count++;if(this.shared_count==1)$('left_calendars_list_shared').show();e=$('left_calendars_list_shared_last');$('left_calendars_list_shared_count').update(this.shared_count);}
var calendar=Object.extend({calendar_name:obj.name.escapeHTML().byte_str(18),calendar_color:(obj.visible)?obj.color:'#AAA',share_icon:model.calendar.get_status_icon(obj.id),checked:(obj.visible)?"checked":""},obj);e.insert({before:this.get_template(calendar)});var entry=$('left_calendars_list_'+obj.id);entry.calendar_id=obj.id;entry.display_order=obj.display_order;entry.onmouseover=function(e){this.onmouseover=null;self.lazy_bind_event(obj);};if(obj.service_type==1)$('left_calendars_list_'+obj.id+'_name').addClassName("memorial");if(is_sorted!=true)this.sort();},lazy_bind_event:function(obj){makeInPlaceEditor('left_calendars_list_'+obj.id+'_name','calendar[name]','/calendars/'+obj.id,{hoverClassName:"cateEditable",isCate:true,maxLength:20,textValue:obj.name,cancelOnEmpty:true,onLeaveEditMode:this.leaveEdit,calendar_id:obj.id});var _options={category_id:obj.id,service_type:obj.service_type,status:obj.status,repeat_event:false,offset_x:15,has_color_picker:true};Object.extend($('left_calendars_list_'+obj.id+'_popup'),new CategoryPopupWindow(null,_options));Event.observe($('left_calendars_list_'+obj.id+'_chk'),'click',this.setVisible.bind(this,obj));},leaveEdit:function(obj){if(obj.options.calendar_id)$('left_calendars_list_'+obj.options.calendar_id+'_popup').show();},setVisible:function(obj){var _visible=$('left_calendars_list_'+obj.id+'_chk').checked;var _params='calendar[visible]='+_visible;new Ajax.Request('/calendars/'+obj.id,{method:"put",parameters:_params});},updated:function(obj,old_obj){var entry=$('left_calendars_list_'+obj.id);if(entry.onmouseover)entry.onmouseover();var list_div=$('left_calendars_list_'+obj.id+'_icon');list_div.display_order=obj.display_order;list_div.className="calendars "+model.calendar.get_status_icon(obj.id);var calendar_color=(obj.visible?obj.color:'#AAA');var title_el=$('left_calendars_list_'+obj.id+'_name');title_el.innerHTML=obj.name.byte_str(18);title_el.title=obj.name.byte_str(18);title_el.className="category "+model.calendar.get_status_icon(obj.id);entry.display_order=obj.display_order;$('left_calendars_list_'+obj.id+'_div').style.backgroundColor=calendar_color;$('left_calendars_list_'+obj.id+'_chk').checked=(obj.visible?true:false);$('left_calendars_list_'+obj.id+'_popup').options.status=obj.status;if(obj.service_type==1)title_el.addClassName("memorial");this.sort();},destroyed:function(obj){if(obj.source_id){this.shared_count--;if(this.shared_count==0)$('left_calendars_list_shared').hide();$('left_calendars_list_shared_count').update(this.shared_count);}
$('left_calendars_list_'+obj.id).remove();},destroy:function(obj_id){var tr=$('left_calendars_list_'+obj_id);tr.hide();new Ajax.Request('/calendars/'+obj_id+'.js',{method:"delete",onFailure:function(transport){tr.show();}});},sort:function(){var entries=this.select(".entry");if(entries.length>1){do{var swapped=false;for(var i=0;i<entries.length-1;i++){if(model.calendar.get_order(entries[i].calendar_id)>model.calendar.get_order(entries[i+1].calendar_id)){entries[i].parentNode.insertBefore(entries[i+1],entries[i]);if(Prototype.Browser.IE){entries[i].down().down().checked=model.calendar.get(entries[i].calendar_id).visible;entries[i+1].down().down().checked=model.calendar.get(entries[i+1].calendar_id).visible;}
var t=entries[i+1];entries[i+1]=entries[i];entries[i]=t;swapped=true;}}}while(swapped);}}};var todoDraggableDivExt={start:function(){this.start_listening();this.onDragging=false;Event.observe(this,"mouseout",this.hide_div.bindAsEventListener(this));Event.observe(this,"click",this.clicked_div.bindAsEventListener(this));this.container=$('left_todo_livegrid');return this;},show_div:function(){this.show();this.mouse_observer_instance=this.mouse_move.bindAsEventListener(this);Event.observe(document.body,'mousemove',this.mouse_observer_instance);},mouse_move:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);if(!Position.within(this,x,y)){this.hide_div();}},clicked_div:function(event){if(!this.isMoved){history_listener("#","#todo_view");history_controller.add("todo_view");}
this.hide_div();},hide_div:function(event){if(!this.onDragging){this.hide();if(this.mouse_observer_instance)Event.stopObserving(document.body,'mousemove',this.mouse_observer_instance);}},start_listening:function(){this.draggable=new Draggable(this);Object.extend(this.draggable,this.move_draggable);return this;},move_draggable:{drag_type:'todo_to_event_move',on_start:function(event){this.element.isMoved=true;this.element.onDragging=true;},on_drag:function(event){},on_end:function(event){Event.stop(event);this.element.onDragging=false;var e=this.element;var el_pos=[Position.cumulativeOffset(this.element)[0]+80,Event.pointerY(event)];e.hide_div();var allday=true;var cell=null;var start_at=null;if(e.view_type=='monthly'){var pos=calendar.mv.event_adder.get_matrix_by_event(event);if(!pos)return;start_at=calendar.mv.get_date_by_offset(pos);}else if(e.view_type=='daily'){var grid=$('daily_grid');if(grid.inside_area(event)){var pos=grid.position_in_view(el_pos);cell=grid.get_cell_of_position(pos[0],pos[1]);start_at=cell.date;allday=false;}else if(Position.within($('daily_allday'),el_pos[0],el_pos[1])){start_at=grid.date;}else{return;}}else{var view=$('wv_container');if(view.header_row.inside_area(event)){var pos=view.header_row.position_in_view(el_pos);cell=view.header_row.get_cell_of_position(pos[0]);start_at=cell.date;}else if(view.drag_area.inside_area(event)){var pos=view.drag_area.position_in_view(el_pos);cell=view.drag_area.get_cell_of_position(pos[0],pos[1]);start_at=cell.date;allday=false;}else{return;}}
var params={todo_id:e.todo.id,start_at:start_at.to_param(),allday:(allday)?'1':'0',view_type:e.view_type}
new Ajax.Request('/event/todo_to_event',{method:'put',parameters:params,onFailure:function(transport){eval("var r = "+transport.responseText);calenar.notify(r[0][1]);}});}},deactivate:function(){if(this.draggable)this.draggable.destroy();this.remove();return true;}};var DateSelectorExt={document_click:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);var without_cal=!Position.within(this.dom,x,y);var at_dom=this.attached_dom;var clicked_dom=null;var _offsetY=this.getScrollOffsetY();if(this.options&&this.options.clicked_dom){clicked_dom=$(this.options.clicked_dom);var within_element=(at_dom&&Position.within(at_dom,x,y+_offsetY))||(clicked_dom&&Position.within(clicked_dom,x,y+_offsetY));}else{var within_element=at_dom&&Position.within(at_dom,x,y+_offsetY);}
var within_cal=Position.within(this.dom,x,y);if(!within_cal&&!within_element)this.detach();},attach:function(dom,options){this.observer_instance=this.document_click.bindAsEventListener(this);Event.observe(document.body,'mousedown',this.observer_instance);var selector=$('date_selector');this.attached_dom=$(dom);this.options=Object.extend({clicked_dom:null,date_remove_button:false},options||{});if(this.options.date_remove_button){selector.select('.todo_bottom')[0].show();if($('directWrite')){$('directWrite').hide();}else{selector.select('.schedule_bottom')[0].hide();}
selector.select('.bottom')[0].hide();}else{selector.select('.todo_bottom')[0].hide();if($('directWrite')){$('directWrite').show();}else{selector.select('.schedule_bottom')[0].show();}
selector.select('.bottom')[0].hide();}
this.attached_dom.cursor_updated=function(cursor){$(dom).value=DateConverter.date_to_str(cursor.date);if($(dom).custom_cursor_update)$(dom).custom_cursor_update(cursor);};var to_date=DateConverter.str_to_date($F(dom));if(to_date){date_selector.cursor.update_date(to_date);this.selected_date=to_date;selector.select('.day').each(function(d){if(d.date.equal_date(to_date)){d.addClassName('selected_day');throw $break;}}.bind(this));}else{dom.value='';date_selector.cursor.today();}
selector.show();ActivePopup.register(this);this.cursor.add_listener(this.attached_dom);var pos=Position.cumulativeOffset(dom);var left=(calendar.external_adder)?pos[0]+70:pos[0];var top=pos[1]+dom.getHeight()-this.getScrollOffsetY();$('date_selector').setStyle({left:left+'px',top:top+'px'});this.attached=true;},detach:function(){if(!this.attached)return;try{if(this.observer_instance)Event.stopObserving(document.body,"mousedown",this.observer_instance);}catch(e){}
this.cursor.remove_listener(this.attached_dom);var selector=$('date_selector');selector.hide();selector.select('.selected_day').each(function(e){e.removeClassName('selected_day');});this.attached=false;ActivePopup.unregister(this);},getScrollOffsetY:function(){var _scrollOffsetY=0;_element=this.attached_dom;if(!_element)return 0;try{do{_scrollOffsetY+=_element.scrollTop||0;_element=_element.parentNode;if(_element){if(_element.tagName=='BODY')break;var p=Element.getStyle(_element,'position');if(p=='relative'||p=='absolute')break;}}while(_element);}catch(e){return 0;}
return _scrollOffsetY;}};var DetailEventEditor=Class.create();DetailEventEditor.prototype={initialize:function(form,event,repeat_json,previous_setting,type){this.form=form;this.event=event;this.type=type;this.previous_setting=previous_setting;this.set_elements();this.set_repeat_selector(repeat_json);this.bind_event_observe();this.set_default_value();this.buddyList=new buddyController.Invite();this.form.getElements().each(function(e){if(!e.has_date_selector)Event.observe(e,'focus',function(){if(date_selector)date_selector.detach();});});this.make_hidden_uploader();},set_elements:function(){this.event_edit_form=this.form;this.startAt=this.form.select('#event_start_at').first();this.startAtDate=this.form.select('#meta_start_at_date').first();this.startAtTime=this.form.select('#meta_start_at_time').first();this.endAt=this.form.select('#event_end_at').first();this.endAtDate=this.form.select('#meta_end_at_date').first();this.endAtTime=this.form.select('#meta_end_at_time').first();this.oneday=this.form.select('#oneday').first();this.eventAllday=this.form.select('#event_allday').first();this.repeatBtn=this.form.select('#repeat_button').first();this.repeatIcon=this.form.select('#repeat_icon').first();this.calendar_select=this.form.select('#event_calendar_id').first();this.event_title=this.form.select('#event_title').first();this.link_url=this.form.select('#event_url').first();this.go_to_link=this.form.select('#go_to_link').first();this.edit_title=$('newEventPanel').select('.event_title').first();if(this.type=="edit"){this.beforeStartAtDate=this.form.select('#meta_before_start_at_date').first();this.beforeEndAtDate=this.form.select('#meta_before_end_at_date').first();this.isDateChanged=this.form.select('#meta_is_date_changed').first();this.event_completed_at=this.form.select('#completed_at').first();this.duplicate_event=this.form.select('#duplicate_event').first();}
Object.extend($('make_new_category_btn'),AddCategory.prototype);new CalendarSelector("event_calendar_id",{use_source_id:true});GeneralTooltip.create($('friendNotiIcon'),"이곳에 <b>체크를 해지<\/b>하면<br \/><b>초대장을 각각 따로 발송<\/b>합니다.<br />즉, 초대메일 내에서 다른 친구들의<br />이메일 주소가 공개되지 않습니다.");if(this.type=="new")GeneralTooltip.create($('shareInfoNotiIcon'),"<em>환경설정>카테고리 공유<\/em>를 통해 <br \/>친구와 일정을 공유하거나,<br \/><em>환경설정>가져오기/내보내기<\/em>에서<br \/>카페/블로그로 공유할 수 있어요!");},set_default_value:function(){this.startAtDate.has_date_selector=true;this.endAtDate.has_date_selector=true;if(this.type=="edit"){this.calendar_select.value=this.event.calendar_id;this.calendar_select.xselect.optionSelect(null,this.calendar_select.selectedIndex);if(model.calendar.status(this.event.calendar_id)=="SHARED"||model.calendar.status(this.event.calendar_id)=="PUBLISHED"){this.form.select('tr.writer').first().show();}else{this.form.select('tr.writer').first().hide();}};if(this.previous_setting){this.startAtDate.value=this.previous_setting.startAtDate;this.startAtTime.value=this.previous_setting.startAtTime;this.endAtDate.value=this.previous_setting.endAtDate;this.endAtTime.value=this.previous_setting.endAtTime;if(this.type=="edit"){this.beforeStartAtDate.value=this.previous_setting.beforeStartAtDate;this.beforeEndAtDate.value=this.previous_setting.beforeEndAtDate;}
this.edit_title.value=(this.previous_setting.title||"").sub("\"","\\\"");this.link_url.value=this.previous_setting.url||"http://";var alarm_delta_sec=this.form.select('.alarm_delta_sec').last();alarm_delta_sec.value=this.previous_setting.alarm_delta_sec;this.form.select('.alarm_sms').last().checked=this.previous_setting.alarm_sms=="true";this.form.select('.alarm_hanmail').last().checked=this.previous_setting.alarm_hanmail=="true";this.form.select('.alarm_program').last().checked=this.previous_setting.alarm_program=="true";this.form.select('.alarm_touch').last().checked=this.previous_setting.alarm_touch=="true";this.form.select('.alarm_gadget').last().checked=this.previous_setting.alarm_gadget=="true";alarm_delta_sec.xselect.optionSelect(null,alarm_delta_sec.selectedIndex);this.oneday.checked=this.previous_setting.allday=="true"?true:false;this.oneday.onclick();this.calendar_select.value=this.previous_setting.calendar_id;this.calendar_select.xselect.optionSelect(null,this.calendar_select.selectedIndex);}else{if(this.type=="edit"&&this.edit_title.value=="")this.edit_title.value='(제목없음)';};},make_hidden_uploader:function(){var image_preview=$('event_attach_preview');var hiddenUploader=new HiddenUploader("event_attach_panel","event_form",{submit_callback:function(fhandle,filename){$('event_attach').value="/fs/download/?fhandle="+fhandle;image_preview.src="/fs/download/?fhandle="+fhandle;var icon=$('event_attach_icon');icon.src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon06_on.gif";icon.alt="이미지 있음";image_preview.setStyle({cursor:'pointer'});$j('img.attach_preview').fancyzoom();},remove_callback:function(){$('event_attach').value="";$('event_attach_panel_input').value="";image_preview.src="http://mimg.daum-img.net/dcal_2/07_etc/img_ex.gif";var icon=$('event_attach_icon');icon.src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon06_off.gif";icon.alt="이미지 없음";image_preview.setStyle({cursor:null});},validate:function(uploader){if(!uploader.input.value.match(new RegExp("gif|jpg|jpeg|bmp|png","ig"))){calendar.notify("이미지 포맷의 화일만 업로드가 가능합니다.");return false;}
return true;}});if(this.type=="edit"){if(this.event.attach){hiddenUploader.delbtn.show();$('event_attach').value=this.event.attach;image_preview.src="http://calendar.daum.net"+this.event.attach;var icon=$('event_attach_icon');icon.src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon06_on.gif";icon.alt="이미지 있음";image_preview.setStyle({cursor:'pointer'});$('event_attach_wrap').show();}else{$j('img.attach_preview').fancyzoom();}}},bind_event_observe:function(){var self=this;this.startAtTime.onchange=function(){var endIndex=self.startAtTime.selectedIndex+2;if(endIndex>=endAtTime.length)self.endIndex=self.endAtTime.length-1;self.endAtTime.selectedIndex=self.endIndex;};this.oneday.onclick=function(){if(self.type=="new"){var _startDate=DateConverter.str_to_date(self.startAtDate.value);var _endDate=DateConverter.str_to_date(self.endAtDate.value);var _startTime=DateConverter.str_to_time(self.startAtTime.value);var _endTime=DateConverter.str_to_time(self.endAtTime.value);if(_startDate&&_endDate){var _startAt=Date.parse_text(_startDate.format_date()+' '+_startTime);var _endAt=Date.parse_text(_endDate.format_date()+' '+_endTime);}}
if(this.checked){self.startAtTime.disable();self.endAtTime.disable();self.startAtTime.addClassName('formDisable');self.endAtTime.addClassName('formDisable');self.eventAllday.value='1';if(self.type=="new"&&_startAt&&_endAt&&_startAt.next_hour().same_date_and_time(_endAt))self.endAtDate.value=self.startAtDate.value;}else{self.startAtTime.enable();self.endAtTime.enable();self.startAtTime.removeClassName('formDisable');self.endAtTime.removeClassName('formDisable');self.eventAllday.value='0';if(self.type=="new"&&_startAt&&_endAt&&_startAt.next_hour().same_date_and_time(_endAt.next_day()))self.endAtDate.value=DateConverter.date_to_str(_endAt.next_day());}
self.calculate_duration();};this.go_to_link.onclick=function(){var url=self.link_url.value.trim();(url=="http://")?window.open(""):window.open(url);};this.startAtDate.onfocus=this.endAtDate.onfocus=function(){date_selector.detach();date_selector.attach(this);}
this.startAtTime.onfocus=this.endAtTime.onfocus=function(){time_selector.detach();if(!this.hideTimeSelector)time_selector.attach(this);this.hideTimeSelector=false;}
this.startAtDate.custom_cursor_update=function(){var _startDate=DateConverter.str_to_date(self.startAtDate.value);var _endDate=DateConverter.str_to_date(self.endAtDate.value);if(_startDate&&_endDate){var _startAt=Date.parse_text(_startDate.format_date()+' 00:00:00').to_param();var _endAt=Date.parse_text(_endDate.format_date()+' 00:00:00').to_param();}
if(_startDate.after(_endDate))self.endAtDate.value=self.startAtDate.value;self.calculate_duration();};this.endAtDate.custom_cursor_update=function(){var _startDate=DateConverter.str_to_date(self.startAtDate.value);var _endDate=DateConverter.str_to_date(self.endAtDate.value);if(_startDate&&_endDate){var _startAt=Date.parse_text(_startDate.format_date()+' 00:00:00').to_param();var _endAt=Date.parse_text(_endDate.format_date()+' 00:00:00').to_param();}
if(_startDate.after(_endDate))self.startAtDate.value=self.endAtDate.value;self.calculate_duration();};if(this.type=="new"){this.startAtTime.custom_update=function(){self.auto_set_end_time();};this.calendar_select.xselect.onchange=function(){self.default_alarm_setting();};}else{this.startAtTime.custom_update=function(){self.calculate_duration();};this.duplicate_event.onclick=function(){var obj=self.event;var _options={requestUrl:'/event/duplicate_event/'+obj.id,doRequest:true,event:obj,isDefault:(model.calendar.list()[0].id==obj.calendar_id)};new EventDuplicateAlert({},_options);}}
this.endAtTime.custom_update=function(){self.calculate_duration();};Event.observe(this.startAtDate,'blur',function(){self.calculate_duration();});Event.observe(this.endAtDate,'blur',function(){self.calculate_duration();});Event.observe(this.startAtTime,'blur',function(){self.calculate_duration();});Event.observe(this.endAtTime,'blur',function(){self.calculate_duration();});Event.observe(this.startAtDate,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.endAtDate,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.startAtTime,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.endAtTime,'keypress',this.close_selector.bindAsEventListener(null));},set_repeat_selector:function(repeat_json){var rs_option={repeatBtn:this.repeatBtn,repeatIcon:this.repeatIcon};this.repeatSelector=new RepeatSelector('repeat_box','repeat','meta_start_at_date',repeat_json,rs_option);},toggle_completed:function(){this.event_completed_at.value=(this.event.completed_at)?null:today.to_param();this.event_edit_form.onsubmit();},calculate_duration:function(){var _startDate=DateConverter.str_to_date(this.startAtDate.value);var _endDate=DateConverter.str_to_date(this.endAtDate.value);var _startTime=DateConverter.str_to_time(this.startAtTime.value);var _endTime=DateConverter.str_to_time(this.endAtTime.value);if(!_startDate||!_endDate)return;var _startAt=Date.parse_text(_startDate.format_date()+' '+_startTime);var _endAt=Date.parse_text(_endDate.format_date()+' '+_endTime);$('term').innerHTML=DateConverter.diff_time_to_str(_startAt,_endAt,this.oneday.checked);},auto_set_end_time:function(){if(this.startAtDate.value==this.endAtDate.value){var _startDate=DateConverter.str_to_date(this.startAtDate.value);var _startTime=DateConverter.str_to_time(this.startAtTime.value);var _startAt=Date.parse_text(_startDate.format_date()+' '+_startTime);var _endAt=_startAt.next_hour();this.endAtDate.value=DateConverter.date_to_str(_endAt);this.endAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(_endAt));}
this.calculate_duration();},close_selector:function(event){event=event||window.event;var key=event.which||event.keyCode;if(key==Event.KEY_RETURN){date_selector.detach();time_selector.detach();Event.stop(event);}},default_alarm_setting:function(){if((_alarm=model.calendar.get(this.calendar_select.value).alarm)){this.form.select('.alarm_delta_sec').last().value=_alarm.delta_sec;this.form.select('.alarm_sms').last().checked=_alarm.sms;this.form.select('.alarm_hanmail').last().checked=_alarm.hanmail;this.form.select('.alarm_program').last().checked=_alarm.program;this.form.select('.alarm_touch').last().checked=_alarm.touch;this.form.select('.alarm_gadget').last().checked=_alarm.gadget;}else{this.form.select('.alarm_delta_sec').last().value=600;this.form.select('.alarm_sms').last().checked=false;this.form.select('.alarm_hanmail').last().checked=false;this.form.select('.alarm_program').last().checked=false;this.form.select('.alarm_touch').last().checked=false;this.form.select('.alarm_gadget').last().checked=false;}}};var SubmitCheck=Class.create();SubmitCheck.prototype={initialize:function(dee,previous_setting,event_url){this.parent=dee;this.previous_setting=previous_setting;this.event_url=event_url;this.submit_clicked=false;},validate_date_and_time_check:function(type,e,value){if(value)return true;if(type=='date'){calendar.notify('날짜 입력이 잘못되었습니다. 키보드로 직접입력을 할 때는 "2008년 12월 2일" 같은 형식으로 입력해주세요.');this.attach_date_selector(e);}else{calendar.notify('시간 입력이 잘못되었습니다. 키보드로 직접입력을 할 때는 "오후 8시 32분" 같은 형식으로 입력해주세요.');this.attach_time_selector(e);}
return false;},attach_date_selector:function(e){date_selector.detach();date_selector.attach(e);},attach_time_selector:function(e){time_selector.detach();time_selector.attach(e);},validate_event_form:function(){var _startDate=DateConverter.str_to_date(this.parent.startAtDate.value);var _endDate=DateConverter.str_to_date(this.parent.endAtDate.value);var _startTime=DateConverter.str_to_time(this.parent.startAtTime.value);var _endTime=DateConverter.str_to_time(this.parent.endAtTime.value);if(this.parent.type=="edit"){var _beforeStartDate=DateConverter.str_to_date(this.parent.beforeStartAtDate.value);var _beforeEndDate=DateConverter.str_to_date(this.parent.beforeEndAtDate.value);}
if(!this.validate_date_and_time_check('date',this.parent.startAtDate,_startDate))return false;if(!this.validate_date_and_time_check('date',this.parent.endAtDate,_endDate))return false;if(this.parent.eventAllday.value!="1"){if(!this.validate_date_and_time_check('time',this.parent.startAtTime,_startTime))return false;if(!this.validate_date_and_time_check('time',this.parent.endAtTime,_endTime))return false;}
var _startAt=this.parent.startAt.value=Date.parse_text(_startDate.format_date()+' '+_startTime).to_param();var _endAt=this.parent.endAt.value=Date.parse_text(_endDate.format_date()+' '+_endTime).to_param();if(this.parent.eventAllday.value=="1"){if(_startDate.after(_endDate)){calendar.notify("일정의 종료시간은 항상 시작시간보다 늦어야 해요!");date_selector.detach();date_selector.attach(this.parent.endAtDate);return false;}}else{if(_startAt>=_endAt){calendar.notify("일정의 종료시간은 항상 시작시간보다 늦어야 해요!");date_selector.detach();date_selector.attach(this.parent.endAtDate);return false;}}
this.parent.link_url.value=this.parent.link_url.value.trim();if(this.parent.link_url.value){if(this.parent.link_url.value.indexOf('"')!=-1||this.parent.link_url.value.indexOf("'")!=-1){calendar.notify("알맞은 형식의 URL이 아닙니다.");return false;}else if(this.parent.link_url.value!='http://'){if(!this.parent.link_url.value.match(/^(http:\/\/)/))this.parent.link_url.value="http://"+this.parent.link_url.value;}else{this.parent.link_url.value="";}}
if(!this.parent.repeatSelector.on_submit())return false;this.parent.event_title.value=this.parent.event_title.value.trim();if(this.parent.buddyList.e_id.value.length>0)this.parent.buddyList.add_mail();if(!this.parent.buddyList.set_mail_field())return false;c=model.calendar.get(this.parent.calendar_select.value);if(!c.writable){calendar.notify("저장하려는 카테고리에 대한 쓰기권한이 없습니다.<br />다른 카테고리를 선택하고 다시 시도해 주십시오.");return false;}
if(c&&!c.visible)calendar.notify("지금 이 카테고리는 <strong>숨김상태</strong>입니다.<br />따라서 저장후에도 이 카테고리를<br />켜기전에는 화면에 보이지 않아요.");if(this.parent.type=="new"){if(this.parent.event_title.value==""){_options={name:'event',caller:this,obj:null,message:'일정 제목을 입력하지 않으셨네요! <br><strong>(제목없음)</strong>이라는 일정으로 등록할까요?',onSubmitFunc:'non_title_process'}
var r=new OkCancelAlert(_options);return false;}else{this.non_title_process();}}else{this.parent.isDateChanged.value=(_startDate.equal(_beforeStartDate)&&_endDate.equal(_beforeEndDate))?"false":"true";if(this.parent.event.repeat){var before_start_at=(this.previous_setting)?DateConverter.str_to_date(this.previous_setting.startAtDate):DateConverter.str_to_date(this.parent.event.start_at.format('#{yy}년 #{mm}월 #{dd일}'));var _options={repeat_event_start_at:before_start_at,callbackObj:this,onSubmitFunc:'after_submit'};var r=new RepeatEventAlert(this.event_url,Form.serialize($('event_form')),'put',model.event.get(this.parent.event.id),_options);return false;};$('edit_events_submit_btn').disable();return true;}},non_title_process:function(caller,obj){c=model.calendar.get(this.parent.calendar_select.value);if(c&&!c.visible){calendar.notify("지금 이 카테고리는 <strong>숨김상태</strong>입니다.<br />따라서 저장후에도 이 카테고리를<br />켜기전에는 화면에 보이지 않아요.");}
if(!this.submit_clicked)$('event_form').onsubmit();this.submit_clicked=true;},after_submit:function(){history_controller.back();},destroy_event:function(){if(this.parent.event.repeat){var before_start_at=this.previous_setting?DateConverter.str_to_date(this.previous_setting.startAtDate):DateConverter.str_to_date(this.parent.event.start_at.format('#{yy}년 #{mm}월 #{dd일}'));var _options={repeat_event_start_at:this.parent.before_start_at,callbackObj:this,onSubmitFunc:'after_destroy'};var r=new RepeatEventAlert(this.event_url,null,'delete',model.event.get(this.parent.event.id),_options);}else{_options={name:'event',caller:this,obj:model.event.get(this.parent.event.id),message:'일정을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'destroy_process'}
var r=new OkCancelAlert(_options);}},after_destroy:function(){history_controller.back();},destroy_process:function(obj){new Ajax.Request(this.event_url,{method:"delete"});history_controller.back();},onSubmit:function(form){var calendar_id=form.select("#event_calendar_id").first().value;var url="/calendars/"+calendar_id+this.event_url;var _method=(this.parent.type=="edit")?'put':'post';new Ajax.Request(url,{asynchronous:true,evalScripts:true,method:_method,parameters:Form.serialize(form),onComplete:this.onComplete()});return false;},onComplete:function(){if(this.parent.type=="new"&&document.location.search&&document.location.search.indexOf("default_view")!=-1){calendar.notify("일정이 저장되었습니다. 터치의 경우 새로고침을 하시면 추가된 일정을 확인할 수 있습니다");}else{calendar.history_back(history_controller.previous_key,"monthly_view");}}};var DetailMemorialEditor=Class.create(DetailEventEditor,{initialize:function(form,event,repeat_json,previous_setting,type){this.form=form;this.event=event;this.type=type;this.previous_setting=previous_setting;this.dateInputField=new DateInputField('date_input_box','event_start_at','meta_lunar_str','meta_date_format');this.set_elements();this.set_repeat_selector(repeat_json);this.bind_event_observe();this.set_default_value();this.buddyList=new buddyController.Invite();this.form.getElements().each(function(e){if(!e.has_date_selector)Event.observe(e,'focus',function(){date_selector.detach();});});this.make_hidden_uploader();var self=this;if(type=="new")setTimeout(function(){self.default_setting();},50);},set_elements:function(){this.event_edit_form=this.form;this.startAt=this.form.select('#event_start_at').first();this.repeatBtn=this.form.select('#repeat_button').first();this.repeatIcon=this.form.select('#repeat_icon').first();this.classType=this.form.select('#event_class_type').first();this.event_completed_at=this.form.select('#completed_at').first();this.event_title=this.form.select('#event_title').first();this.link_url=this.form.select('#event_url').first();this.go_to_link=this.form.select('#go_to_link').first();this.edit_title=$('newEventPanel').select('.event_title')[0];if(this.type=="new"){this.repeatSettingTrue=$('repeat_setting_true');this.repeatSettingFalse=$('repeat_setting_false');}
var self=this;var _options={className:"xselect memorial",width:150,priority:100,isMemorial:true,onchange:function(event){if(this.getOptionValue()==3){if(self.dateInputField.is_solar)self.repeatSelector.set_repeat_info({freq:"DAILY",interval:100});}else{self.repeatSelector.set_repeat_info({freq:"YEARLY",interval:1});}}}
this.classType_xselect=new XSelect(this.classType,_options);GeneralTooltip.create($('friendNotiIcon'),"이곳에 <b>체크를 해지<\/b>하면<br \/><b>초대장을 각각 따로 발송<\/b>합니다.<br />즉, 초대메일 내에서 다른 친구들의<br />이메일 주소가 공개되지 않습니다.");},set_repeat_selector:function(repeat_json){var rs_option={referer:'memorial',date_input:this.dateInputField,repeatBtn:this.repeatBtn,repeatIcon:this.repeatIcon};this.repeatSelector=new RepeatSelector('repeat_box','repeat',this.dateInputField.solar_date,repeat_json,rs_option);},bind_event_observe:function(){var self=this;this.dateInputField.is_lunar_callback=function(is_solar){self.repeatSelector.lunar_selected_callback(is_solar);};},set_default_value:function(){if(this.previous_setting){if(this.type=="edit"){var alarm_delta_sec=this.event_edit_form.select('.alarm_delta_sec').last();alarm_delta_sec.value=this.previous_setting.alarm_delta_sec;this.event_edit_form.select('.alarm_sms').last().checked=this.previous_setting.alarm_sms=="true";this.event_edit_form.select('.alarm_hanmail').last().checked=this.previous_setting.alarm_hanmail=="true";this.event_edit_form.select('.alarm_program').last().checked=this.previous_setting.alarm_program=="true";this.event_edit_form.select('.alarm_touch').last().checked=this.previous_setting.alarm_touch=="true";this.event_edit_form.select('.alarm_gadget').last().checked=this.previous_setting.alarm_gadget=="true";alarm_delta_sec.xselect.optionSelect(null,alarm_delta_sec.selectedIndex);}else{this.dateInputField.set_value_by_previous(this.previous_setting.date_format,this.previous_setting.date_value);}
this.edit_title.value=(this.previous_setting.title||"").sub("\"","\\\"");this.classType.value=this.previous_setting.class_type;this.classType_xselect.optionSelect(null,this.classType.selectedIndex);}else{if(this.type=="edit"){if(this.edit_title.value=="")this.edit_title.value='(제목없음)';this.classType_xselect.optionSelect(null,this.classType.selectedIndex);}else{this.dateInputField.set_value_by_previous('solar',new Date().to_param());}}},default_setting:function(){var alarm_sec=this.form.select('.alarm_delta_sec').last();var is_setted=false;var self=this;model.calendar.entries.each(function(c){if(c.value.service_type==1&&c.value.alarm){var default_alarm=c.value.alarm;alarm_sec.value=default_alarm.delta_sec;alarm_sec.xselect.optionSelect(null,alarm_sec.selectedIndex);self.form.select('.alarm_sms').last().checked=default_alarm.sms;self.form.select('.alarm_hanmail').last().checked=default_alarm.hanmail;self.form.select('.alarm_program').last().checked=default_alarm.program;self.form.select('.alarm_touch').last().checked=default_alarm.touch;self.form.select('.alarm_gadget').last().checked=default_alarm.gadget;is_setted=true;}});if(!is_setted){alarm_sec.value=604800;alarm_sec.xselect.optionSelect(null,alarm_sec.selectedIndex);this.form.select('.alarm_sms').last().checked=false;this.form.select('.alarm_hanmail').last().checked=true;this.form.select('.alarm_program').last().checked=false;this.form.select('.alarm_touch').last().checked=false;this.form.select('.alarm_gadget').last().checked=false;}}});var MemorialSubmitCheck=Class.create(SubmitCheck,{destroy_event:function(){_options={name:'event',caller:this,obj:model.event.get(this.parent.event.id),message:'기념일을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'destroy_process'}
var r=new OkCancelAlert(_options);},before_submit:function(){if(!this.parent.dateInputField.before_submit())return false;this.parent.link_url.value=this.parent.link_url.value.trim();if(this.parent.link_url.value){if(this.parent.link_url.value.indexOf('"')!=-1||this.parent.link_url.value.indexOf("'")!=-1){calendar.notify("알맞은 형식의 URL이 아닙니다.");return false;}else if(this.parent.link_url.value!='http://'){if(!this.parent.link_url.value.match(/^(http:\/\/)/))this.parent.link_url.value="http://"+this.parent.link_url.value;}else{this.parent.link_url.value="";}}
if(!this.parent.repeatSelector.on_submit())return false;if(this.parent.buddyList.e_id.value.length>0)this.parent.buddyList.add_mail();if(!this.parent.buddyList.set_mail_field())return false;this.parent.event_title.value=this.parent.event_title.value.trim();if(this.parent.type=="new"){if(this.parent.event_title.value==""){_options={name:'event',caller:this,obj:null,message:'일정 제목을 입력하지 않으셨네요! <br><strong>(제목없음)</strong>이라는 일정으로 등록할까요?',onSubmitFunc:'non_title_process'}
var r=new OkCancelAlert(_options);return false;}else{this.non_title_process();}}else{$('edit_memorials_submit_btn').disable();return true;}},non_title_process:function(caller,obj){if(!this.submit_clicked)$('event_form').onsubmit();this.submit_clicked=true;},onComplete:function(){if(this.parent.type=="new"&&document.location.search&&document.location.search.indexOf("default_view")!=-1){calendar.notify("일정이 저장되었습니다.");}else{calendar.history_back(history_controller.previous_key,"memorial_view");}},after_destroy:function(){calendar.history_back(history_controller.previous_key,"memorial_view");},destroy_process:function(obj){new Ajax.Request(this.event_url,{method:"delete"});calendar.history_back(history_controller.previous_key,"memorial_view");},back:function(){calendar.history_back(history_controller.previous_key,"memorial_view");}});var mcList=Class.create();Object.extend(mcList,{mc_data:{},mc_called:false});mcList.prototype={mc_template:new Template('<li class="item #{mc_type} #{mc_direct}" title="#{mc_email}">#{mc_name}</li>'),initialize:function(parent,buddyController){this.mc_share_setting(parent,buddyController);this.mc_ajax(parent,buddyController);},mc_share_setting:function(parent,buddyController){this.parent=parent;this.share_uid=this.parent.id.slice(0,-8);this.buddyController=buddyController;},mc_ajax:function(parent,buddyController){var self=this;if(mcList.mc_called){this.mc_init();return;};new Ajax.Request("/mc/list.js",{method:"get",asynchronous:true,onSuccess:function(transport){mcList.mc_data=(eval(transport.responseText.replace("/*","[").replace("*/","]"))).first();mcList.mc_called=true;self.mc_init();},onFailure:function(transport){}});},mc_init:function(){this.mc_bind();this.mc_over_event();this.mc_setting_event();GeneralTooltip.create($(this.share_uid+"_mc_help"),"최근에 <em>한메일로 자주 연락</em>했던<br />친구 목록을 자동으로 보여려요.");},refreshMyMcList:function(){this.parent.innerHTML="";this.mc_ajax(this.parent,this.buddyController);},mc_setting_event:function(){var self=this;var mc_setting=$(this.share_uid+"_mc_setting");mc_setting.onclick=function(){var url=encodeURIComponent("http://"+location.hostname+"/refresh_mclist.html");window.open("http://moca.daum.net/mc/mymc/viewMyMcPopup.daum?url="+url,"mcSetting","width=705,height=715,toolbar=no,resizable=no,scrollbars=no");};},mc_click_event:function(emails){var self=this;this.parent.select('li.item').last().onclick=function(){buddyController.input_buddy_list(emails,self.buddyController);};},mc_over_event:function(){for(var i=0;i<this.parent.select('li.item').length;i++){this.parent.select('li.item')[i].onmouseover=function(){this.addClassName("over");};this.parent.select('li.item')[i].onmouseout=function(){this.removeClassName("over");};}},mc_bind:function(){var mc_list=this.parent;var mc_bottom=$(this.share_uid+"_mc_bottom");var mc_btn=$(this.share_uid+"_mc_btn");mc_btn.onclick=function(){mc_list.toggle();mc_list.style.display=="none"?mc_bottom.addClassName("view"):mc_bottom.removeClassName("view");};mc_list.insert('<li class="title">자주 연락하는 지인 : </li>');if(mcList.mc_data!=null){for(var i=0;i<(mcList.mc_data.userMcList.length+mcList.mc_data.autoMcList.length);i++){var mc=mcList.mc_data.userMcList[i];var direct=true;if(i>=mcList.mc_data.userMcList.length){mc=mcList.mc_data.autoMcList[i-mcList.mc_data.userMcList.length];direct=false;}
var title="";var email="";var emails=new Array();if(mc.isGroup){for(var j=0;j<mc.emailList.length;j++){title+="&quot;"+mc.emailList[j].name+"&quot;&lt;"+mc.emailList[j].email+"&gt;";email=mc.emailList[j].email.split("@");emails.push({"addr":email[0],"domain":email[1]});}}else{title="&quot;"+mc.alias+"&quot; &lt;"+mc.info+"&gt;";email=mc.info.split("@");emails=[{"addr":email[0],"domain":email[1]}];}
mc_list.insert({bottom:this.mc_template.evaluate({mc_type:mc.type,mc_direct:direct?"direct":"",mc_name:mc.alias,mc_email:title})});this.mc_click_event(emails);}}
if(mc_list.select('li.item').length==0){mc_list.insert('<li class="nothing">최근에 연락한 지인이 없으시네요. 이곳은 한메일과 연동됩니다!</li>');}
mc_list.insert('<li class="edit_help"><div><a href="javascript:;" id="'+this.share_uid+'_mc_setting" class="edit">수정</a><a href="javascript:;" id="'+this.share_uid+'_mc_help" class="help">도움말</a><div></li>');mc_list.insert('<li class="clear"></li>');}};var buddyController={uid:0,set_controller:function(controller){this.controller=controller;},set_latest_controller:function(controller){this.latest_controller=controller;},input_buddy_list:function(email,target){var controller=this.controller||this.latest_controller;if(target=="latest"){controller=this.latest_controller;}else if(typeof(target)=='object'){controller=target;}
if(controller){try{(typeof(email)=="string")?controller.input_buddy_list([email]):controller.input_buddy_list(email);}catch(e){console.log(e)}}},load_suggest:function(){if(!this.suggest_loaded){new Ajax.Request('/hanmail/mail/GetAddrListFromNote.daum?suggestType=new_01&encType=utf-8',{method:'get',onSuccess:function(transport){var r=transport.responseText.gsub(/\n/,"");eval(r);this.suggest_loaded=true;}.bind(this)});}}}
buddyController.Base=Class.create({MAX_BUDDY_COUNT:30,domains:$w('hanmail.net gmail.com naver.com paran.com empal.com nate.com 직접입력'),initialize:function(parent){buddyController.set_latest_controller(this);buddyController.load_suggest();this.uid=buddyController.uid++;this.parent=$(parent);this.seq=0;this.auto_seq=0;this.entries=[];this.parent.insert({bottom:this.insert_template.evaluate({insert_uid:this.get_insert_uid()})});this.register_field();this.register_form_event();},register_field:function(){var insert_uid=this.get_insert_uid();this.e_id=$(insert_uid+"_id");this.e_domain=$(insert_uid+"_domain");this.e_custom_domain=$(insert_uid+"_custom_domain");this.e_email_list=this.parent.select('table.email_list').last();},register_form_event:function(){this.register_domain_event();var self=this;var insert_uid=this.get_insert_uid();$(insert_uid+'_add').onclick=function(){var buddy_id=self.e_id.value;var buddy_domain=self.e_domain.value;if(buddy_domain=="직접입력")buddy_domain=self.e_custom_domain.value;if(buddy_id.strip().empty()||buddy_domain.strip().empty()){calendar.notify("이메일을 입력해 주세요.");return;}
var permission=(self.type=="share")?self.e_permission.value:null;self.add_buddy_field(buddy_id,buddy_domain,permission);}
$(insert_uid+'_find').onclick=this.find_address_book.bindAsEventListener(this);this.e_id.onkeypress=this.e_custom_domain.onkeypress=function(event){if(!event)event=window.event;if((event.which||event.keyCode)==Event.KEY_RETURN){Event.stop(event);}}
sData.getSuggestUse='Y';initPortableSuggest(insert_uid+'_id');},register_domain_event:function(){var self=this;var el=$(this.get_insert_uid()+"_domain");this.domains.each(function(domain){var opt=document.createElement('OPTION');opt.value=domain;opt.text=domain;el.options.add(opt);})
el.onchange=function(){if(el.options[el.selectedIndex].value=='직접입력'){self.e_custom_domain.show();try{self.e_custom_domain.focus();}catch(e){}}else{self.e_custom_domain.hide();}}
el.xselect=new XSelect(el,{className:"xselect",width:100,priority:50,isCate:false});},get_full_email:function(id,domain){return new String(id).concat("@").concat(domain);},init_input_field:function(){this.e_id.value="";this.e_custom_domain.value="";this.e_domain.value=this.domains.first();this.e_domain.xselect.optionSelect(null,this.e_domain.selectedIndex);this.e_domain.xselect.onchange();},add_buddy_field:function(id,domain,owner){var self=this;if(this.seq>=this.MAX_BUDDY_COUNT){calendar.notify(this.MAX_BUDDY_COUNT+"개 이상 추가하실 수 없습니다.");return false;}
if(this.entries.find(function(e){return e.email==self.get_full_email(id,domain)})){calendar.notify("이미 추가되어 있는 이메일입니다.");return false;}
this.seq++;this.auto_seq++;this.e_email_list.insert({bottom:this.list_template.evaluate({list_uid:this.get_list_uid(),buddy_id:id,buddy_domain:domain})});$(this.get_list_uid()+'_del').onclick=this.remove_buddy_field.bindAsEventListener(this,this.auto_seq);this.init_input_field();this.entries.push({seq:this.auto_seq,email:this.get_full_email(id,domain)});return true;},remove_buddy_field:function(event,seq){if(this.seq>0)this.seq--;this.entries=this.entries.reject(function(s){return s.seq==seq});$(this.get_list_uid(seq)+"_set").remove();},find_address_book:function(){buddyController.set_controller(this);hanmail.OpenWindowWithoutReturn('/hanmail/mail/CalendarGetAddrbook.daum?uri=%2Fhanmail%2Fmail%2FCalendarGetAddrbook.daum%3Fpopup%3D1%26type%3Daddr','addr_pop',0,0,'no','no','no',600,550);},get_insert_uid:function(){return"buddy_input_"+this.uid;},get_list_uid:function(seq){return"buddy_list_"+this.uid+"_"+(seq||this.auto_seq);},input_buddy:function(id,domain){this.add_buddy_field(id,domain);},input_buddy_list:function(emails){var self=this;$A(emails).each(function(email){self.add_buddy_field(email.addr,email.domain)})},sanitize:function(){if(this.e_id.value!="")this.add_mail();},add_mail:function(){$(this.get_insert_uid()+'_add').onclick();},destroy_mail:function(){this.e_id.value="";}});buddyController.Invite=Class.create(buddyController.Base,{type:'invite',insert_template:new Template("<fieldset class='buddySetDefault'>"
+"<div class='xs_panel' style='margin-right:5px;'>\r\n"
+"<input class='buddyId' type='text' size='30' id='#{insert_uid}_id' name='meta[buddyId]' style='width:150px;height:17px;line-height:17px;margin:0;vertical-align:middle;' autocomplete='off'/> @ "
+"<input class='textbox' type='text' size='30' id='#{insert_uid}_custom_domain' name='meta[buddyDomain]' style='width:100px;display:none;height:17px;line-height:17px;vertical-align:middle;' /> "
+"</div><div class='xs_panel' style='margin-right:10px;'>\r\n"
+"<select class='buddy_domain' id='#{insert_uid}_domain' name='meta[buddyDomain]'></select> "
+"</div><div class='xs_panel' style='margin-top:1px;height:18px;overflow:hidden;'>\r\n"
+"<a href='javascript:;'><img id='#{insert_uid}_add' class='button' width='28' height='16' alt='추가' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_add2.gif'/></a> "
+"<img id='#{insert_uid}_find' class='button' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_address.gif' width='90' height='16' alt='주소록에서 찾기' class='button' />"
+"</div><div class='clear'></div>\r\n"
+"</fieldset>"
+"<table class='email_list' cellspacing='0' cellpadding='0'>"
+"</table>"),list_template:new Template("<tr id='#{list_uid}_set' class='buddySet'>"
+" <td id='#{list_uid}_id' class='buddyId email'>#{buddy_id}@#{buddy_domain}</td>"
+" <td class='del'><span id='#{list_uid}_del'>삭제</span></td>"
+"</tr>"),initialize:function($super,parent,mailto,mailbcc,share_email){$super(parent||'addBuddyList');this.form_email_to=$("invitation_mailto"||mailto);this.form_email_bcc=$("invitation_mailbcc"||mailbcc);this.form_share_email=$("meta_share_email_addr"||share_email);},set_mail_field:function(){if(this.form_share_email.checked){this.form_email_to.value=this.export_data();this.form_email_bcc.value="";}else{this.form_email_to.value="";this.form_email_bcc.value=this.export_data();}
return true;},export_data:function(){return this.entries.collect(function(e){return e.email}).join(",");}});buddyController.Share=Class.create(buddyController.Base,{type:'share',insert_template:new Template("<fieldset class='buddySetDefault'>"
+"<div class='xs_panel' style='margin-right:5px;'>\r\n"
+"<input type='text' id='#{insert_uid}_id' style='width:70px;height:17px;line-height:17px;margin:0;vertical-align:middle;' autocomplete='off'/>"
+"</div><span style='padding:5px 5px 0 0; color:#aaa; float:left;'>@</span><div class='xs_panel' style='margin-right:10px;'>\r\n"
+"<input class='textbox' type='text' size='30' id='#{insert_uid}_custom_domain' style='width:100px;display:none;height:17px;line-height:17px;vertical-align:middle;' /> "
+"</div><div class='xs_panel' style='margin-right:10px;'>\r\n"
+"<select id='#{insert_uid}_domain'></select>"
+"</div>"
+"<strong style='float:left; padding:5px 10px 0 0; line-height:12px;'>권한 <img id='#{insert_uid}_permission_icon' src='http://mimg.daum-img.net/dcal_2/08_add/icon22_v2.gif' width='12' height='12' alt='?' style='vertical-align:middle;' />:</strong>"
+"<div class='xs_panel' style='margin-right:10px;'>\r\n"
+"<select class='share_permission' id='#{insert_uid}_permission'>\r\n"
+"  <option value='FREEBUSY'>약속표시</option>"
+"  <option value='READABLE' selected>일정보기</option>"
+"  <option value='WRITABLE'>등록/삭제</option>"
+"  <option value='ADMIN'>관리자</option>"
+"</select>\r\n"
+"</div><div class='xs_panel' style='margin-left:5px;margin-top:1px;height:20px;overflow:hidden;'>\r\n"
+"<a href='javascript:;' id='#{insert_uid}_add'><img class='button' width='28' height='16' alt='추가' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_add2.gif'/></a> "
+"<img id='#{insert_uid}_find' class='button' width='67' height='16' alt='주소록찾기' src='http://mimg.daum-img.net/dcal_2/08_add/address_btn.gif' class='button' />"
+"</div><div class='clear'></div>\r\n"
+"</fieldset>"
+"<table class='email_list' cellspacing='0' cellpadding='0'>"
+"</table>"),list_template:new Template("<tr id='#{list_uid}_set' class='buddySet'>"
+" <td id='#{list_uid}_id' class='buddyId email'>#{buddy_id}@#{buddy_domain}</td>"
+" <td class='auth'><span style='float:left;'>권한 :</span>"
+"  <select class='share_permission' id='#{list_uid}_permission'>"
+"   <option value='FREEBUSY'>약속표시</option>"
+"   <option value='READABLE'>일정보기</option>"
+"   <option value='WRITABLE'>등록/삭제</option>"
+"   <option value='ADMIN'>관리자</option>"
+" </select>"
+" </td>"
+" <td class='del'><span id='#{list_uid}_del'>삭제</span></td>"
+"</tr>"),initialize:function($super,parent,form_email,form_permission,mc_list){$super(parent);this.form_email=$(form_email);this.form_permission=$(form_permission);this.mc_list=new mcList($(mc_list),this);},register_field:function($super){$super();this.e_permission=$(this.get_insert_uid()+"_permission");},register_form_event:function($super){$super();var nativeSel=this.parent.select('.share_permission').last();var _options={className:"xselect",width:90,priority:50,isCate:false}
nativeSel.xselect=new XSelect(nativeSel,_options);var icon=$(this.get_insert_uid()+"_permission_icon");var desc="<strong>약속표시</strong> : 일정을 '약속있음'으로만 표시하고 세부정보는 숨김<br />";desc+="<strong>일정보기</strong> : 일정을 단순히 확인할 수만 있는 권한<br />";desc+="<strong>등록/삭제</strong> : 일정의 확인뿐 아니라 등록/수정/삭제까지 가능<br />";desc+="<strong>관리자</strong> : 일정공유 및 공유자 추가/권한변경까지 가능";GeneralTooltip.create(icon,desc);},add_buddy_field:function($super,id,domain,permission,owner){var ret=$super(id,domain,owner);if(!permission)permission="READABLE";if(ret){var sel=$(this.get_list_uid()+"_permission");sel.value=permission;sel.xselect=new XSelect(sel,{className:"xselect",width:90,priority:50,isCate:false});sel.xselect.optionSelect(null,sel.selectedIndex);}},input_buddy_list_by_shares:function(shares,owner){var mails=shares.collect(function(e){return e.email}).join(",");var perms=shares.collect(function(e){return e.permission}).join(",");this.prev_shares=$H({mails:mails,permissions:perms});var self=this;shares.each(function(s){var mail=s.email.split("@");self.add_buddy_field(mail[0],mail[1],s.permission,owner);});},export_data:function(){var self=this;var mails=this.entries.collect(function(e){return e.email}).join(",");var perms=this.entries.collect(function(e){return $(self.get_list_uid(e.seq)+"_permission").value}).join(",");return $H({mails:mails,permissions:perms});},exportBuddy:function(allow_my_email){this.sanitize();if(!allow_my_email){if(this.entries.find(function(e){return(e.email==calendar.user+"@hanmail.net"||e.email==calendar.user+"@daum.net")})){calendar.notify("자신의 카테고리를 자신에게 공유할 수 없습니다.");return false;}}
var data=this.export_data();this.form_email.value=data.get("mails");this.form_permission.value=data.get("permissions");if(this.prev_shares&&data.inspect()==this.prev_shares.inspect())$(this.parent.id.sub('_email_panel','_resend_mail')).checked=false;return true;},change_publish_level:function(type,el){(type=="all")?el.xselect.hideOption(0):el.xselect.showOption(0);if(type=="all"&&el.value=="FREEBUSY"){el.value="READABLE";el.xselect.optionSelect(null,el.selectedIndex);}},rearrange_publish_level:function(type){var self=this;this.change_publish_level(type,this.e_permission);this.entries.each(function(e){self.change_publish_level(type,$(self.get_list_uid(e.seq)+"_permission"))});}});var StarSelector=Class.create();StarSelector.prototype={img_template:new Template("<img src='#{off_img}' class='star_selector'/>"),initialize:function(element,options){var selector=this;this.element=$(element);var options=this.options=Object.extend({max:5,value:3,on_img:'http://mimg.daum-img.net/dcal_2/01_common/icon/icon_star1.gif',off_img:'http://mimg.daum-img.net/dcal_2/01_common/icon/icon_star2.gif',onupdate:function(){}},options||{});this.value=options.value||3;$(this.element).update(this.img_template.evaluate(options).times(options.max));this.stars=$(element).childElements();this.stars.each(function(star,idx){star.id=$(element).id+"_s"+idx;star.value=idx+1;Event.observe(star,'click',selector.update_values.bindAsEventListener(selector));});this.onupdate=this.options.onupdate;this.update_images();},update_values:function(event){var value=Event.element(event).value;this.before_value=this.value;this.value=value;this.update_images();if(this.onupdate)this.onupdate(value);},update_images:function(){var images={1:this.options.on_img,0:this.options.off_img};var value=this.value;this.stars.each(function(star,idx){star.src=images[idx<value?1:0];});},rollback:function(){this.value=this.before_value;this.update_images();}};var PrioritySelector=Class.create();PrioritySelector.prototype=Object.extend(Object.extend({},StarSelector.prototype),{initialize:function(element,input,options){this.selector=new StarSelector(element,Object.extend({value:$F(input),onupdate:function(value){$(input).value=value;}},options||{}));},default_setting:function(value){this.selector.value=value;this.selector.update_images();}});var CalendarSelector=Class.create();CalendarSelector.prototype={initialize:function(element,options){this.count=0;this.options=Object.extend({has_all_category:false,show_memorial:false,use_source_id:false,used_on_setting:false,disabled_calendars:$A(),display:"WRITABLE"},options||{});this.element=$(element);this.ename=this.element.id||this.options.ename;this.makeXSelect();this.add_calendar_list();this.add_reactor();},add_calendar_list:function(){var self=this;var display=this.options.display;if(this.options.has_all_category)this.created({id:'all',name:'모든 카테고리',color:'#056493',readable:true});model.calendar.list().each(function(entry){if(self.options.disabled_calendars.include(entry.id))return;if(!self.options.show_memorial&&entry.service_type==1)return;if(display!="ALL"){if(display=="MINE"&&entry.source_id)return;if(display=="READABLE"&&!entry.readable)return;if(display=="WRITABLE"&&!entry.writable)return;}
self.created(entry);});},add_reactor:function(){this.calendar_reactor=new Reactor(this.ename);this.calendar_reactor.created=this.created.bind(this);this.calendar_reactor.updated=this.updated.bind(this);this.calendar_reactor.destroyed=this.destroyed.bind(this);actor.calendar.add_reactor(this.calendar_reactor);},getXSelect:function(){return this.xselect||this.element;},makeXSelect:function(){this.xselect=new XSelect(this.element,{className:"xselect",width:130,isCate:true});},get_calendar_id:function(obj){return(this.options.use_source_id&&obj.source_id)?obj.source_id:obj.id;},created:function(obj){if(this.options.display=="ALL"||(this.options.display=="MINE"&&!obj.source_id)||(this.options.display=="WRITABLE"&&obj.writable)||(this.options.display=="READABLE"&&obj.readable)){this.count++;var opt=document.createElement('OPTION');opt.value=this.get_calendar_id(obj);opt.text=obj.name.escapeHTML();opt.style.backgroundColor=obj.color;opt.style.color="#ffffff";this.element.options.add(opt);if(obj.display_order==0)this.selectedIndex=this.length-1;if(this.xselect&&this.element.convert)this.xselect.addOption(opt);}},updated:function(obj,old_obj){if(this.options.used_on_setting){var calendar=$$('#setting_category_table #calendar_name_'+obj.id).first();if(calendar){if(obj.name!=old_obj.name)calendar.innerHTML=obj.name;if(obj.color!=old_obj.color)calendar.setStyle({backgroundColor:obj.color});}}
var option=this.find(this.get_calendar_id(obj));if(option){if(obj.name!=old_obj.name){option.text=obj.name;if(this.xselect)option.innerHTML=option.text;}
if(obj.color!=old_obj.color)option.style.backgroundColor=obj.color;}},destroyed:function(obj){this.count--;var idx=this.find_index(this.get_calendar_id(obj));if(this.xselect)this.xselect.remove(idx);},find:function(id){return this.getXSelect().options.find(function(opt){return opt.value==id});},find_index:function(id){var selectIterator=this.getXSelect();var maxlen=selectIterator.options.length;for(var i=0;i<maxlen;i++){if(selectIterator.options[i].value==id)return i;}
return null;},remove:function(){this.xselect.remove_xselect();}};var TodoStoreSelector=Class.create();TodoStoreSelector.prototype={xselect_option:{className:"xselect",width:100,isCate:true},initialize:function(element,ename){this.element=$(element);this.ename=this.element.id||ename;this.created({id:null,name:"할 일"});this.makeXSelect();model.todo_store.list().each(function(entry){this.created(entry);}.bind(this));this.todo_store_reactor=new Reactor(this.ename);this.todo_store_reactor.created=this.created.bind(this);this.todo_store_reactor.updated=this.updated.bind(this);this.todo_store_reactor.destroyed=this.destroyed.bind(this);actor.todo_store.add_reactor(this.todo_store_reactor);},getXSelect:function(){return this.xselect||this.element;},makeXSelect:function(){this.xselect=new XSelect(this.element,this.xselect_option);},created:function(obj){var opt=document.createElement('OPTION');opt.value=obj.id;opt.text=this.get_option_value(obj.id,obj.name);opt.style.backgroundColor="#FFFFFF";this.element.options.add(opt);if(this.xselect&&this.element.convert)this.xselect.addOption(opt);},updated:function(obj,old_obj){var option=this.find(obj.id);if(option){if(obj.name!=old_obj.name){option.text=this.get_option_value(obj.id,obj.name);if(this.xselect)option.innerHTML=option.text;}
if(obj.color!=old_obj.color)option.style.backgroundColor=obj.color;}},get_option_value:function(id,name){return name;},destroyed:function(obj){var idx=this.find_index(obj.id);if(this.xselect)this.xselect.remove(idx);},find:function(id){return this.getXSelect().options.find(function(opt){return opt.value==id});},find_index:function(id){var selectIterator=this.getXSelect();var maxlen=selectIterator.options.length;for(var i=0;i<maxlen;i++){if(selectIterator.options[i].value==id){return i;}}
return null;},remove:function(){this.xselect.remove_xselect();}};var MoveTodoStoreSelector=Class.create();MoveTodoStoreSelector.prototype=Object.extend(Object.extend({},TodoStoreSelector.prototype),{xselect_option:{className:"xselect",width:160,isCate:true},initialize:function(element,ename){this.element=$(element);this.ename=this.element.id||ename;this.created({id:-1,name:'선택한 할일 이동'});this.created({id:null,name:"할일로 이동"});this.makeXSelect();model.todo_store.list().each(function(entry){this.created(entry);}.bind(this));this.todo_store_reactor=new Reactor(this.ename);this.todo_store_reactor.created=this.created.bind(this);this.todo_store_reactor.updated=this.updated.bind(this);this.todo_store_reactor.destroyed=this.destroyed.bind(this);actor.todo_store.add_reactor(this.todo_store_reactor);},get_option_value:function(id,name){return(id>0)?name.escapeHTML()+"(으)로 이동":name.escapeHTML();},hide_current_store:function(id){if(id){model.todo_store.list().each(function(store,idx){(store.id==id)?this.xselect.hideOption(idx+2):this.xselect.showOption(idx+2);}.bind(this));this.xselect.showOption(1);}else{model.todo_store.list().each(function(store,idx){this.xselect.showOption(idx+2);}.bind(this));this.xselect.hideOption(1);}}});var DDaySelector=Class.create();DDaySelector.prototype=Object.extend(Object.extend({},PopupWindow.prototype),{template:new Template('<div class="ddaySelectorPop"><div class="wrap"><div class="main">\r\n'+' <ul>\r\n'+'  <li id="dday_list_none">\r\n'+'   <a id="dday_selector_none" href="javascript:;" class="manCate_link"> 없음 </a>\r\n'+'  </li>\r\n'+' </ul>'+'</div></div></div>'),create:function(){this.popWin.innerHTML="";this.popWin.innerHTML=this.template.evaluate(this.options);this.register_link();this.set_position();},register_link:function(){var todo_id=this.options.todo_id;var first_el=$('dday_list_none')
Event.observe(first_el,"click",this.setDuedateOn.bind(this,-1,todo_id));for(idx=10;idx>0;idx--){var template='<li id="dday_list_'+idx+'"><a id="dday_selector_'+idx+'" href="javascript:;" class="manCate_link"> D-day <b>'+idx+'<\/b></a></li>\r\n';first_el.insert({after:template});Event.observe($('dday_selector_'+idx),"click",this.setDuedateOn.bind(this,idx,todo_id));}
var template='<li id="dday_list_0"><a id="dday_selector_0" href="javascript:;" class="manCate_link"> 오늘 </a></li>\r\n';first_el.insert({after:template});Event.observe($('dday_selector_0'),"click",this.setDuedateOn.bind(this,idx,todo_id));},setDuedateOn:function(dday,todo_id){var duedate_on,now_dt;if(dday==-1){duedate_on=null;}else{now_dt=new Date();duedate_on=now_dt.next_day(dday).to_param();}
new Ajax.Request('/todos/'+todo_id,{method:"put",parameters:'todo[duedate_on]='+duedate_on,onFailure:function(transport){eval("var r = "+transport.responseText);calendar.notify(r[0][1]);}});this.detach();}});var TodoSelector=Class.create();TodoSelector.prototype=Object.extend(Object.extend({},PopupWindow.prototype),{initialize:function(url,options){this.url=url;this.isLoaded=false;this.attached=false;this.popWin=$('leftTodoTypeList');this.options=Object.extend({offset_x:-108,offset_y:10},options||{});},create:function(){this.set_position();var self=this;var links=this.popWin.getElementsByTagName('a');if(links.length==3){links[0].onclick=function(){self.left_todo_view(1);}
links[1].onclick=function(){self.left_todo_view(2);}
links[2].onclick=function(){self.left_todo_view(3);}}},left_todo_view:function(num){if(leftTodoList)leftTodoList.sort_view(num);this.detach();}});var AgendaViewFilterSelector=Class.create();AgendaViewFilterSelector.prototype=Object.extend(Object.extend({},PopupWindow.prototype),{initialize:function(view){this.isLoaded=false;this.attached=false;this.view=view;this.popWin=$('agendaViewPlanAllMore');this.options={offset_x:-100,offset_y:10};},create:function(){this.set_position();var self=this;var links=this.popWin.getElementsByTagName('a');if(links.length==5){links[0].onclick=function(){self.apply_filter(0);}
links[1].onclick=function(){self.apply_filter(4);}
links[2].onclick=function(){self.apply_filter(8);}
links[3].onclick=function(){self.apply_filter(1);}
links[4].onclick=function(){self.apply_filter(16);}}else if(calendar.preview){links[0].onclick=function(){self.apply_filter(0);}
links[1].onclick=function(){self.apply_filter(1);}
links[2].onclick=function(){self.apply_filter(16);}}},apply_filter:function(num){this.view.filter(num);this.detach();}});var MemorialSelector=Class.create();MemorialSelector.prototype=Object.extend(Object.extend({},PopupWindow.prototype),{template:new Template('<div class="memorialSelectorPop"><div class="wrap"><div class="main">\r\n'+' <ul id="memorial_selector">\r\n'+' </ul>'+'</div></div></div>'),arrClassType:[[1,"생일"],[2,"결혼기념일"],[3,"연애시작일"],[4,"제사"],[5,"창립기념일"],[0,"기타"]],create:function(){this.popWin.innerHTML="";this.popWin.innerHTML=this.template.evaluate(this.options);this.register_link();this.set_position();},register_link:function(){var todo_id=this.options.todo_id;var first_el=$('memorial_selector');var self=this;this.arrClassType.each(function(mtype){var template='<li id="memorial_list_'+mtype[0]+'"><a id="memorial_selector_'+mtype[0]+'" href="javascript:;" class="manCate_link">'+calendar.memorialSet[mtype[0]]+' <b>'+mtype[1]+'<\/b></a></li>\r\n';first_el.insert({bottom:template});Event.observe($('memorial_list_'+mtype[0]),"click",self.setMemorialClass.bind(self,mtype[0]));});},setMemorialClass:function(mtype){if(this.options.event.class_type!=mtype){var memorial=model.calendar.get_memorial();var url='/calendars/'+(memorial||{id:0}).id+'/memorials/'+this.options.event.id;new Ajax.Request(url,{method:"put",parameters:'event[class_type]='+mtype});}
this.detach();}});var makeUpdatable=function(element,value,requestURL){new StarSelector(element,{value:value,onupdate:function(value){var selector=this;new Ajax.Request(requestURL,{method:'put',parameters:'todo[priority]='+value,onFailure:function(transport){selector.rollback();eval("var r = "+transport.responseText);calendar.notify(r[0][1]);}});}});};var makeInPlaceEditor=function(element,field,url,options,ajaxOptions){ajaxOptions=Object.extend({method:'put'},ajaxOptions||{});options=Object.extend({editableClassName:null,isCate:false,isLink:false,isStore:false,isTodoStore:false,okButton:false,cancelLink:false,submitOnBlur:(Prototype.Browser.WebKit)?false:true,paramName:field,cancelOnEmpty:false,evalScripts:true,savingText:'저장하고 있어요!',clickToEditText:$(element)?$(element).innerHTML:'클릭하면 수정할 수 있어요!',size:30,highlightcolor:'transparent',highlightEndColor:'transparent',callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){if(this.options.textValue&&this.changed_value){this.options.textValue=this.changed_value;}},onFailure:function(transport){},ajaxOptions:ajaxOptions},options||{});return new Ajax.InPlaceEditor(element,url,options);};var AddCategory=Class.create();AddCategory.prototype={initialize:Prototype.emptyFunction,onclick:function(){if(!this.opened){this.opened=true;color_auto_select();$('add_category_table').show();addCategoryControl.initialize_form();}else{this.opened=false;$('add_category_table').hide();}
if(this.after_clicked)this.after_clicked();},created:function(){this.opened=false;$('add_category_table').hide();if(this.after_created)this.after_created();}}
var EventPopup={activePopup:null,registerPopup:function(popup){this.activePopup=popup;},attached:function(){return(this.activePopup)?true:false;},attach:function(event,options){if(this.activePopup)this.activePopup.detach();if(calendar.preview){if(!this.preview)this.preview=new this.Preview();if(event)this.preview.attach(options);}else if(event){if(event.writable()&&calendar.setting["use_detail_view"]){var _url=(event.is_memorial())?'/memorials/'+event.id+'/edit':'/events/'+event.id+'/edit';_url="/calendars/"+event.calendar_id+_url;new Ajax.Updater('layout_main',_url,{asynchronous:true,evalScripts:true,method:'get'});return;}
if(event.is_memorial()){if(!this.edit_memorial)EventPopup.edit_memorial=new this.EditMemorial();this.edit_memorial.attach(options);}else{if(event.writable()){if(!this.edit_event)this.edit_event=new this.EditEvent();this.edit_event.attach(options);}else{if(!this.readonly)this.readonly=new this.Readonly();this.readonly.attach(options);}}}else{if(!this.create_event)this.create_event=new this.CreateEvent();this.create_event.attach(options);}},detach:function(){if(this.activePopup)this.activePopup.detach();this.activePopup=null;$$('.optionMover')[0].style.display="none";}};EventPopup.Base=Class.create({default_alarm_setting:{delta_sec:600,hanmail:false,program:false,touch:false,gadget:false,sms:false},default_options:{method:'post',position:'absolute',offset_x:-100,offset_y:0},initialize:function(){this.method='post';this.attached=false;this.is_memorial=false;},attach:function(options){if(!calendar.dom_loaded)return;var self=this;ActivePopup.close_all();ActivePopup.register(self);EventPopup.registerPopup(self);self.attached=true;self.options=Object.extend($H(self.default_options).clone(),options||{});self.set_position();self.popWin.show();setTimeout(function(){if(!self.already_set_elements)self.set_elements();self.register_event();self.set_field();if(self.e_submit_button.enable)self.e_submit_button.enable();self.observer_instance=self.observe_click.bindAsEventListener(self);Event.observe(document.body,'mousedown',self.observer_instance);try{self.popWin.select('.pop_event_title').first().focus();}catch(e){}
if(Prototype.Browser.IE)self.popWin.select('.pop_event_title').first().value=self.popWin.select('.pop_event_title').first().value;},50);},detach:function(){if(!this.attached)return;this.popWin.hide();this.attached=false;EventPopup.activePopup=null;ActivePopup.unregister(this);this.unregister_event();if(this.options.on_detach)this.options.on_detach();if(this.options.parent&&this.options.parent.callback)this.options.parent.callback();if(this.createEvent)time_selector.detach();date_selector.detach();Event.stopObserving(document.body,"mousedown",this.observer_instance);},set_elements:function(){this.already_set_elements=true;this.e_startAt=this.popWin.select('.pop_event_start_at').first();this.e_startAtDate=this.popWin.select('.pop_meta_start_at_date').first();this.e_beforeStartAtDate=this.popWin.select('.pop_meta_before_start_at_date').first();this.e_title=this.popWin.select('.pop_event_title').first();this.e_isDateChanged=this.popWin.select('.pop_meta_is_date_changed').first();this.e_link_url=this.popWin.select('.pop_event_url').first();this.e_completed_at=this.popWin.select('.pop_completed_at').first();this.e_submit_button=this.popWin.select('.submit_button').first();this.e_alarm_delta_sec=this.popWin.select('.alarm_delta_sec').first();this.e_alarm_hanmail=this.popWin.select('.alarm_hanmail').first();this.e_alarm_program=this.popWin.select('.alarm_program').first();this.e_alarm_touch=this.popWin.select('.alarm_touch').first();this.e_alarm_gadget=this.popWin.select('.alarm_gadget').first();this.e_alarm_sms=this.popWin.select('.alarm_sms').first();this.e_link_on_div=this.popWin.select('.link_on').first();this.e_link_off_div=this.popWin.select('.link_off').first();this.e_link_fold_div=this.popWin.select('.fold_link').first();this.e_sms_on_div=this.popWin.select('.sms_on').first();this.e_sms_off_div=this.popWin.select('.sms_off').first();this.e_sms_off_desc_img=this.popWin.select('.sms_off_desc').first();if(this.options.event){this.e_completed_btn=this.popWin.select('.pop_btn_completed').first();this.e_not_completed_btn=this.popWin.select('.pop_btn_not_completed').first();this.e_owner=this.popWin.select('.owner').last();this.e_update_comment=this.popWin.select('.update_comment').first();this.e_updater=this.popWin.select('.updater').first();this.e_updated_at=this.popWin.select('.updated_at').first();}
if(!this.is_memorial){this.e_startAtTime=this.popWin.select('.pop_meta_start_at_time').first();this.e_endAt=this.popWin.select('.pop_event_end_at').first();this.e_endAtDate=this.popWin.select('.pop_meta_end_at_date').first();this.e_endAtTime=this.popWin.select('.pop_meta_end_at_time').first();this.e_beforeEndAtDate=this.popWin.select('.pop_meta_before_end_at_date').first();this.e_oneday=this.popWin.select('.pop_oneday').first();this.e_eventAllday=this.popWin.select('.pop_event_allday').first();this.e_term=this.popWin.select('.pop_term').first();this.e_calendarSelect=this.popWin.select('.pop_event_calendar_selector').first();}},register_event:function(){this.e_oneday.onclick=this.oneday_event.bindAsEventListener(this);if(!this.options.event&&this.options.allday){this.e_oneday.checked=true;this.e_oneday.onclick();}
this.e_startAtDate.onfocus=this.e_endAtDate.onfocus=function(){date_selector.detach();date_selector.attach(this);}
this.e_startAtTime.onfocus=this.e_endAtTime.onfocus=function(){time_selector.detach();if(!this.hideTimeSelector)time_selector.attach(this);this.hideTimeSelector=false;}
var self=this;this.e_startAtDate.custom_cursor_update=function(){self.custom_cursor_updated(self.e_endAtDate,self.e_startAtDate);}
this.e_endAtDate.custom_cursor_update=function(){self.custom_cursor_updated(self.e_startAtDate,self.e_endAtDate);}
this.e_startAtTime.custom_update=function(){self.auto_set_end_time();};this.e_endAtTime.custom_update=function(){self.calculate_duration();};this.observe_startAtDate=this.calculate_duration.bindAsEventListener(this);this.observe_endAtDate=this.calculate_duration.bindAsEventListener(this);this.observe_startAtTime=this.auto_set_end_time.bindAsEventListener(this);this.observe_endAtTime=this.calculate_duration.bindAsEventListener(this);this.observe_return_submit=this.observe_return_submit_function.bindAsEventListener(this);Event.observe(this.e_startAtDate,'blur',this.observe_startAtDate);Event.observe(this.e_endAtDate,'blur',this.observe_endAtDate);Event.observe(this.e_startAtTime,'blur',this.observe_startAtTime);Event.observe(this.e_endAtTime,'blur',this.observe_endAtTime);Event.observe(this.e_title,'keypress',this.observe_return_submit);Event.observe(this.e_link_url,'keypress',this.observe_return_submit);Event.observe(this.e_startAtDate,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.e_endAtDate,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.e_startAtTime,'keypress',this.close_selector.bindAsEventListener(null));Event.observe(this.e_endAtTime,'keypress',this.close_selector.bindAsEventListener(null));var _option_count=this.e_calendarSelect.length;for(var idx=0;idx<_option_count;idx++)this.e_calendarSelect.remove(0);if(this.calendar_selector)this.calendar_selector.remove();this.calendar_selector=new CalendarSelector(this.e_calendarSelect,{ename:"event_calendar_id",use_source_id:true});this.calendar_selector.xselect.onchange=function(){};},custom_cursor_updated:function(from,to){var _startDate=DateConverter.str_to_date(this.e_startAtDate.value);var _endDate=DateConverter.str_to_date(this.e_endAtDate.value);if(_startDate&&_endDate){var _startAt=Date.parse_text(_startDate.format_date()+' 00:00:00').to_param();var _endAt=Date.parse_text(_endDate.format_date()+' 00:00:00').to_param();}
if(_startDate.after(_endDate))from.value=to.value;this.calculate_duration();},close_selector:function(event){if(!event)event=window.event;var key=event.which||event.keyCode;if(key==Event.KEY_RETURN){date_selector.detach();time_selector.detach();Event.stop(event);}},oneday_event:function(){var _startDate=DateConverter.str_to_date(this.e_startAtDate.value);var _endDate=DateConverter.str_to_date(this.e_endAtDate.value);var _startTime=DateConverter.str_to_time(this.e_startAtTime.value);var _endTime=DateConverter.str_to_time(this.e_endAtTime.value);if(_startDate&&_endDate){var _startAt=Date.parse_text(_startDate.format_date()+' '+_startTime);var _endAt=Date.parse_text(_endDate.format_date()+' '+_endTime);}
if(this.e_oneday.checked){this.e_startAtTime.disable();this.e_endAtTime.disable();this.e_startAtTime.addClassName("formDisable");this.e_endAtTime.addClassName("formDisable");this.e_eventAllday.value='1';if(this.createEvent&&this.options.allday!=false){if(time_selector)time_selector.detach();}
if(_startAt&&_endAt&&_startAt.next_hour().same_date_and_time(_endAt)){this.e_endAtDate.value=this.e_startAtDate.value;}}else{this.e_startAtTime.enable();this.e_endAtTime.enable();this.e_startAtTime.removeClassName("formDisable");this.e_endAtTime.removeClassName("formDisable");this.e_eventAllday.value='0';if(this.createEvent&&this.options.allday!=false){time_selector.attach(this.e_startAtTime,this.createEvent);}
if(_startAt&&_endAt&&_startAt.next_hour().same_date_and_time(_endAt.next_day())){this.e_endAtDate.value=DateConverter.date_to_str(_endAt.next_day());}}
this.calculate_duration();},set_field:function(){if(this.options.event){this.e_startAtDate.value=DateConverter.date_to_str(this.options.event.start_at);this.e_beforeStartAtDate.value=this.e_startAtDate.value;this.e_title.value=(this.options.event.title=="")?"(제목없음)":this.options.event.title;this.e_link_url.value=(this.options.event.url)?this.options.event.url:'http://';if(this.options.event.url||calendar.setting['use_event_url']){this.e_link_fold_div.hide();this.in_toggle_field(this.e_link_on_div,this.e_link_off_div,true);}else{this.e_link_fold_div.show();this.in_toggle_field(this.e_link_on_div,this.e_link_off_div,false);}
var is_alarm_clicked=CalCookie.get_hashed_cookie('preference','alarm_click');if(is_alarm_clicked=="1")this.e_sms_off_desc_img.hide();if(this.options.event.completed_at){this.e_completed_btn.hide();this.e_not_completed_btn.show();}else{this.e_completed_btn.show();this.e_not_completed_btn.hide();}
this.e_completed_at.value=this.options.event.completed_at?this.options.event.completed_at:"";}else{if(this.options.startAt){this.e_startAtDate.value=DateConverter.date_to_str(this.options.startAt);this.e_beforeStartAtDate.value=this.e_startAtDate.value;this.e_startAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(this.options.startAt));};if(this.options.endAt){this.e_endAtDate.value=DateConverter.date_to_str(this.options.endAt);this.e_beforeEndAtDate.value=this.e_endAtDate.value;this.e_endAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(this.options.endAt));};if(this.options.category_id){var c=model.calendar.get(this.options.category_id);if(!c.visible)c=model.calendar.list().select(function(c){return(c.visible&&c.service_type!=1&&c.writable);}).first();if(calendar.default_category){this.e_calendarSelect.value=calendar.default_category;}else if(c&&c.service_type!=1){this.e_calendarSelect.value=c.source_id||c.id;}
this.e_calendarSelect.xselect.optionSelect(null,this.e_calendarSelect.selectedIndex);};this.e_oneday.checked=(this.options.allday==true)?true:false;this.e_oneday.onclick();this.e_title.value="";this.e_link_url.value="http://";var is_alarm_clicked=CalCookie.get_hashed_cookie('preference','alarm_click');if(is_alarm_clicked=="1")this.e_sms_off_desc_img.hide();if(calendar.setting['use_event_url']){$('eventlinkNotiIcon_').hide();this.e_link_fold_div.hide();this.in_toggle_field(this.e_link_on_div,this.e_link_off_div,true);}else{$('eventlinkNotiIcon_').show();this.e_link_fold_div.show();this.in_toggle_field(this.e_link_on_div,this.e_link_off_div,false);}}
var alarmable_id=(this.options.event)?this.options.event.id:null;model.alarm.update(this,alarmable_id,false);this.calculate_duration();},set_position:function(){var left=this.options.offset_x;var top=this.options.offset_y;this.popWin.setStyle({left:left+'px',top:top+'px'});},unregister_event:function(){Event.stopObserving(this.e_startAtDate,'blur',this.observe_startAtDate);Event.stopObserving(this.e_title,'keypress',this.observe_return_submit);if(this.calendar_selector)this.calendar_selector.remove();if(!this.is_memorial){actor.calendar.remove_reactor(this.e_calendarSelect);Event.stopObserving(this.e_endAtDate,'blur',this.observe_endAtDate);Event.stopObserving(this.e_startAtTime,'blur',this.observe_startAtTime);Event.stopObserving(this.e_endAtTime,'blur',this.observe_endAtTime);}},observe_click:function(event){if(!this.attached)return;event=event||window.event;var x=Event.pointerX(event);var y=Event.pointerY(event);if(ActivePopup.modal_opened)return;var _element=Event.element(event);if(!_element||!_element.tagName)return;if(!Position.within(this.popWin,x,y))
if(!_element.descendantOf(this.popWin))
if(!$('date_selector')||!_element.descendantOf($('date_selector')))
if(!$('time_selector')||!_element.descendantOf($('time_selector')))
if(!$('modal_container')||!_element.descendantOf($('modal_container')))
this.detach();},alarm_setting:function(alarm){if(!alarm)alarm=this.default_alarm_setting;var selectIterator=this.e_alarm_delta_sec.xselect;if(selectIterator){var maxlen=selectIterator.options.length;for(var i=0;i<maxlen;i++){if(selectIterator.options[i].value==alarm.delta_sec){this.e_alarm_delta_sec.xselect.optionSelect(null,i);break;};}
this.e_alarm_hanmail.checked=alarm.hanmail;this.e_alarm_program.checked=alarm.program;this.e_alarm_touch.checked=alarm.touch;this.e_alarm_gadget.checked=alarm.gadget;this.e_alarm_sms.checked=alarm.sms;}},in_toggle_field:function(on_div,off_div,display){if(display){on_div.style.display='';off_div.style.display='none';}else{on_div.style.display='none';off_div.style.display='';}},toggle_field:function(type,display){if(type=="link"){if(display=="show"){this.e_link_url.value=this.e_link_url.value;}
this.in_toggle_field(this.e_link_on_div,this.e_link_off_div,(display=="show"));}else if(type=="sms"){if(display=="show")CalCookie.set_hashed_cookie('preference','alarm_click','1');this.in_toggle_field(this.e_sms_on_div,this.e_sms_off_div,(display=="show"));}},duplicate_event:function(){var obj=this.options.event;var _options={requestUrl:'/event/duplicate_event/'+obj.id,doRequest:true,event:obj,width:250,isDefault:(model.calendar.get_default().id==obj.calendar_id)}
new EventDuplicateAlert({},_options);},observe_return_submit_function:function(event){if(!event)event=window.event;var key=event.which||event.keyCode;if(Prototype.Browser.IE&&(key==Event.KEY_RETURN)){Event.stop(event);this.form.onsubmit();}},auto_set_end_time:function(){if(this.e_startAtDate.value==this.e_endAtDate.value){var _startDate=DateConverter.str_to_date(this.e_startAtDate.value);var _startTime=DateConverter.str_to_time(this.e_startAtTime.value);var _startAt=Date.parse_text(_startDate.format_date()+' '+_startTime);var _endAt=_startAt.next_hour();this.e_endAtDate.value=DateConverter.date_to_str(_endAt);this.e_endAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(_endAt));}
this.calculate_duration();},go_to_link:function(){var url=this.e_link_url.value.trim();(url=="http://")?window.open(""):window.open(url);},calculate_duration:function(){if(this.is_memorial)return;var startDate=DateConverter.str_to_date(this.e_startAtDate.value);var endDate=DateConverter.str_to_date(this.e_endAtDate.value);var startTime=DateConverter.str_to_time(this.e_startAtTime.value);var endTime=DateConverter.str_to_time(this.e_endAtTime.value);if(!startDate||!endDate)return;var startAt=Date.parse_text(startDate.format_date()+' '+startTime);var endAt=Date.parse_text(endDate.format_date()+' '+endTime);this.e_term.innerHTML=DateConverter.diff_time_to_str(startAt,endAt,this.e_oneday.checked);},before_submit:function(){var url=(this.is_memorial)?'/memorials/'+this.options.event.id:'/events/'+this.options.event.id;var calendar_id=(this.options.event)?this.options.event.calendar_id:model.calendar.get_default().id;url="/calendars/"+calendar_id+url;var lv_event=this.options.event;if(!this.is_memorial&&lv_event.calendar_id&&lv_event.repeat_id){_options={callbackObj:this,onCancelFunc:'detach'};var r=new RepeatEventAlert(url,Form.serialize(this.form),'put',lv_event,_options);}else{new Ajax.Request(url,{asynchronous:true,evalScripts:true,method:'put',parameters:Form.serialize(this.form)});}},destroy:function(){if(!this.is_memorial&&this.options.event.is_repeating()){_url='/calendars/'+this.options.event.calendar_id+'/events/'+this.options.event.id;var _options={callbackObj:this,onSubmitFunc:'after_destroy'};var r=new RepeatEventAlert(_url,null,'delete',this.options.event,_options);}else{var service_type_name=(this.is_memorial)?'기념일':'일정';_options={name:'event',caller:this,obj:this.options.event,message:service_type_name+'을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'destroy_process'}
var r=new OkCancelAlert(_options);}},after_destroy:function(){this.detach();},destroy_process:function(obj){var url=(this.is_memorial)?'/memorials/'+obj.id:'/events/'+obj.id;url='/calendars/'+obj.calendar_id+url;new Ajax.Request(url,{method:"delete"});this.detach();},validate_date_and_time_check:function(type,e,value){if(value)return true;if(type=='date'){calendar.notify('날짜 입력이 잘못되었습니다. 키보드로 직접입력을 할 때는 "2008년 12월 2일" 같은 형식으로 입력해주세요.');this.attach_date_selector(e);}else{calendar.notify('시간 입력이 잘못되었습니다. 키보드로 직접입력을 할 때는 "오후 8시 32분" 같은 형식으로 입력해주세요.');this.attach_time_selector(e);}
return false;},attach_date_selector:function(e){date_selector.detach();date_selector.attach(e);},attach_time_selector:function(e){time_selector.detach();time_selector.attach(e);},toggle_complete:function(){this.e_completed_at.value=(this.options.event.completed_at)?"":today.to_param();this.form.onsubmit();},validate_form:function(){this.e_link_url.value=this.e_link_url.value.trim();if(this.e_link_url.value){if(this.e_link_url.value.indexOf('"')!=-1||this.e_link_url.value.indexOf("'")!=-1){calendar.notify("알맞은 형식의 URL이 아닙니다.");return false;}else if(this.e_link_url.value!='http://'){if(!this.e_link_url.value.match(/^(http:\/\/)/))this.e_link_url.value="http://"+this.e_link_url.value;}else{this.e_link_url.value="";}}
if(this.is_memorial){var startDate=DateConverter.str_to_date(this.e_startAtDate.value);var beforeStartDate=DateConverter.str_to_date(this.e_beforeStartAtDate.value);if(!this.validate_date_and_time_check('date',this.e_startAtDate,startDate))return false;this.e_startAt.value=Date.parse_text(startDate.format_date()+' 00:00:00').to_param();this.e_isDateChanged.value=(startDate.equal(beforeStartDate))?"false":"true";}else{var parsed=QuickAdd.parse(this.e_title.value,DateConverter.str_to_date(this.e_startAtDate.value));if(parsed&&parsed.start_at&&parsed.end_at){this.e_startAt.value=parsed.start_at.format("#{yy}-#{mm}-#{dd} #{HH}:#{MM}");this.e_endAt.value=parsed.end_at.format("#{yy}-#{mm}-#{dd} #{HH}:#{MM}");this.e_eventAllday.value=(parsed.allday?1:0);this.e_title.value=parsed.title;return true;}
var startDate=DateConverter.str_to_date(this.e_startAtDate.value);var endDate=DateConverter.str_to_date(this.e_endAtDate.value);var startTime=DateConverter.str_to_time(this.e_startAtTime.value);var endTime=DateConverter.str_to_time(this.e_endAtTime.value);var beforeStartDate=DateConverter.str_to_date(this.e_beforeStartAtDate.value);var beforeEndDate=DateConverter.str_to_date(this.e_beforeEndAtDate.value);if(!this.validate_date_and_time_check('date',this.e_startAtDate,startDate))return false;if(!this.validate_date_and_time_check('date',this.e_endAtDate,endDate))return false;if(this.e_eventAllday.value!="1"){if(!this.validate_date_and_time_check('time',this.e_startAtTime,startTime))return false;if(!this.validate_date_and_time_check('time',this.e_endAtTime,endTime))return false;}
var startAt_date=this.e_startAt.value=Date.parse_text(startDate.format_date()+' '+startTime).to_param();var endAt_date=this.e_endAt.value=Date.parse_text(endDate.format_date()+' '+endTime).to_param();if(this.e_eventAllday.value=="1"){if(startDate.after(endDate)){calendar.notify("일정의 종료시간은 항상 시작시간보다 늦어야 해요!");date_selector.detach();date_selector.attach(this.e_endAtDate);return false;}}else{if(startAt_date>=endAt_date){calendar.notify("일정의 종료시간은 항상 시작시간보다 늦어야 해요!");date_selector.detach();date_selector.attach(this.e_endAtDate);return false;}}
c=model.calendar.get(this.e_calendarSelect.value);calendar.default_category=this.e_calendarSelect.value;if(!c){calendar.notify("저장할 카테고리를 선택해주세요!");return false;}
if(!c.writable){calendar.notify("저장하려는 카테고리에 대한 쓰기권한이 없습니다.<br />다른 카테고리를 선택하고 다시 시도해 주십시오.");return false;}
if(c&&!c.visible){calendar.notify("지금 이 카테고리는 <strong>숨김상태</strong>입니다.<br />따라서 저장후에도 이 카테고리를<br />켜기전에는 화면에 보이지 않아요.");}
this.e_title.value=this.e_title.value.trim();this.e_isDateChanged.value=(startDate.equal(beforeStartDate)&&endDate.equal(beforeEndDate))?"false":"true";}
if(this.e_submit_button.disable)this.e_submit_button.disable();return true;},detail_view:function(url){var _params={};Object.extend(_params,{'previous_setting[startAtDate]':this.e_startAtDate.value,'previous_setting[beforeStartAtDate]':this.e_beforeStartAtDate.value,'previous_setting[title]':this.e_title.value,'previous_setting[url]':this.e_link_url.value,'previous_setting[alarm_delta_sec]':this.e_alarm_delta_sec.value,'previous_setting[alarm_hanmail]':this.e_alarm_hanmail.checked,'previous_setting[alarm_program]':this.e_alarm_program.checked,'previous_setting[alarm_touch]':this.e_alarm_touch.checked,'previous_setting[alarm_gadget]':this.e_alarm_gadget.checked,'previous_setting[alarm_sms]':this.e_alarm_sms.checked});if(this.is_memorial){Object.extend(_params,{'previous_setting[class_type]':this.e_classTypeSelect.value});}else{Object.extend(_params,{'previous_setting[startAtTime]':this.e_startAtTime.value,'previous_setting[endAtDate]':this.e_endAtDate.value,'previous_setting[endAtTime]':this.e_endAtTime.value,'previous_setting[beforeEndAtDate]':this.e_beforeEndAtDate.value,'previous_setting[allday]':this.e_oneday.checked,'previous_setting[calendar_id]':this.e_calendarSelect.value});}
new Ajax.Updater('layout_main',url,{parameters:_params,asynchronous:true,evalScripts:true,method:'get'});this.detach();}});EventPopup.CreateEvent=Class.create(EventPopup.Base,{initialize:function($super){$super();this.popWin=$('new_event_popup');this.createEvent=true;},set_elements:function($super){$super();this.form=this.popWin.select('#new_event_popup_form').first();if($('textAuto'))GeneralTooltip.create_popup($('textAuto'),"제목에 <em>오후5시부터 7시까지 데이트</em>라고 쓰고 저장해 보세요!<br/>그 시간에 일정이 <em>자동으로 저장</em>됩니다.");if($('eventlinkNotiIcon_'))GeneralTooltip.create($('eventlinkNotiIcon_'),"<em>환경설정</em>을 통해 <em>링크입력상자</em>를<br/> 항상 열어둘 수 있습니다.");if($('alarmNotiIcon_'))GeneralTooltip.create($('alarmNotiIcon_'),"<em>환경설정-카테고리 수정</em>을 통해 <em>기본 알림</em>을<br/> 항상 선택해둘 수 있습니다.",{className:"test"});},detail_view:function($super){$super("/events/new.html");history_controller.add("event_new");}});EventPopup.EditEvent=Class.create(EventPopup.Base,{initialize:function($super){$super();this.method='put';this.popWin=$('edit_event_popup');},set_elements:function($super){$super();this.form=this.popWin.select('#edit_event_popup_form').first();},set_field:function($super){$super();this.e_endAtDate.value=DateConverter.date_to_str(this.options.event.end_at);this.e_beforeEndAtDate.value=this.e_endAtDate.value;this.e_startAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(this.options.event.start_at));this.e_endAtTime.value=DateConverter.time_to_str(DateConverter.date_to_time(this.options.event.end_at));this.e_oneday.checked=(this.options.event.allday)?true:false;this.e_oneday.onclick();this.e_calendarSelect.value=this.options.event.calendar_id;if(this.calendar_selector&&this.calendar_selector.xselect){this.calendar_selector.xselect.optionSelect(null,this.e_calendarSelect.selectedIndex);}
model.user.update(this.options.event,this.e_owner,this.options.event.userid,"owner");this.e_updated_at.update(this.options.event.updated_at.format("#{yy}년 #{mm}월 #{dd}일 #{kp} #{II}시 #{MM}분"));this.e_update_comment.update("최종 수정 : ");if(this.options.event.updated_at.equal(this.options.event.created_at)){this.e_update_comment.update("만든 시간 : ");this.e_updater.update("");}else{model.user.update(this.options.event,this.e_updater,this.options.event.updater_id,"updater");}},detail_view:function($super){var event=this.options.event;$super("/calendars/"+event.calendar_id+"/events/"+event.id+"/edit");history_controller.add("event_edit:"+event.id);}});EventPopup.EditMemorial=Class.create(EventPopup.Base,{initialize:function($super){$super();this.method='put';this.is_memorial=true;this.popWin=$('edit_memorial_popup');},register_event:function(){this.observe_return_submit=this.observe_return_submit_function.bindAsEventListener(this);this.e_startAtDate.onfocus=function(){date_selector.detach();date_selector.attach(this);}
Event.observe(this.e_title,'keypress',this.observe_return_submit);Event.observe(this.e_startAtDate,'keypress',this.close_selector.bindAsEventListener(null));if(this.memorial_selector)this.memorial_selector.remove_xselect();this.memorial_selector=new XSelect(this.e_classTypeSelect,{id:"memorial",className:"xselect memorial",width:140,isMemorial:true});},set_field:function($super){$super();this.e_classTypeSelect.value=this.options.event.class_type;if(this.memorial_selector)
this.memorial_selector.optionSelect(null,this.e_classTypeSelect.selectedIndex);if(this.options.event.is_lunar()){this.e_date_format.value="solar_to_lunar";var _lunar_str="(음력 시작일:"+this.options.event.lunar_on.format("#{yy}-#{mm}-#{dd}")+")";this.e_lunardateDisplay.update(_lunar_str);}else{this.e_date_format.value="solar";this.e_lunardateDisplay.update(" ");}},set_elements:function($super){$super();this.e_classTypeSelect=this.popWin.select('.pop_event_class_type_selector').first();this.form=this.popWin.select('#edit_memorial_popup_form').first();this.e_lunardateDisplay=this.popWin.select('.pop_meta_lunardate_display').first();this.e_date_format=this.popWin.select('.pop_meta_date_format').first();},unregister_event:function($super){$super();if(this.memorial_selector)this.memorial_selector.remove_xselect();},detail_view:function($super){var event=this.options.event;$super("/calendars/"+event.calendar_id+"/memorials/"+event.id+"/edit");history_controller.add("memorial_edit:"+event.id);}});EventPopup.Readonly=Class.create(EventPopup.Base,{template:new Template("<input disabled class='date' type='text' size='30' value='#{start_date}'/> <input disabled class='time' type='text' size='30' value='#{start_time}' /> - "
+"<input disabled class='date' type='text' size='30' value='#{end_date}' /> <input disabled class='time' type='text' size='30' value='#{end_time}' /> "
+"<strong class='pop_term'>#{diff_time}</strong>"),initialize:function($super){$super();popupManager.load('view_event_popup','/popup/readonly_event_popup.html');this.popWin=$('view_event_popup');},attach:function(options){this.options=Object.extend($H(this.default_options).clone(),options||{});if(this.attached)this.detach();ActivePopup.close_all();ActivePopup.register(this);EventPopup.registerPopup(this);this.attached=true;if(!this.already_set_elements)this.set_elements();if(this.already_set_elements)this.set_field();this.set_position();this.popWin.show();this.observer_instance=this.observe_click.bindAsEventListener(this);Event.observe(document.body,'mousedown',this.observer_instance);},set_elements:function(){var self=this;var el_name=$w("alarm_delta_sec alarm_hanmail alarm_program alarm_touch alarm_gadget alarm_sms");var count=0;if(!this.already_set_elements){self.timer=setInterval(function(){count++;el_name.each(function(el){eval("self.e_"+el+" = self.popWin.select('."+el+"').first()")});if(self.e_alarm_sms||count>100){self.already_set_elements=true;clearInterval(self.timer);self.set_field();}},10);}},set_field:function(){var event=this.options.event;var timeinfo={start_date:DateConverter.date_to_str(event.start_at),start_time:DateConverter.time_to_str(DateConverter.date_to_time(event.start_at)),end_date:DateConverter.date_to_str(event.end_at),end_time:DateConverter.time_to_str(DateConverter.date_to_time(event.end_at)),diff_time:DateConverter.diff_time_to_str(event.start_at,event.end_at,event.allday)}
$('readonly_popup_date_field').update(this.template.evaluate(timeinfo));$('readonly_popup_title').update((event.title=="")?"(제목없음)":event.title.escapeHTML());$('readonly_popup_title').title=(event.title=="")?"(제목없음)":event.title.escapeHTML();var desc=(event.description||"내용이 없습니다.").escapeHTML().replaceAll("\n","<br />");$('readonly_popup_description').update(desc);$('readonly_popup_description_expand').update(desc);event.description?$('readonly_popup_desc').show():$('readonly_popup_desc').hide();if(!event.url||event.url.trim()==""||event.url=="http://")event.url="";$('readonly_popup_url').value=event.url.escapeHTML();$('readonly_popup_link_go').onclick=function(){if(event.url)window.open(event.url.escapeHTML());};var calendar=model.calendar.get(event.calendar_id);$('readonly_popup_category').update(calendar.name);$('readonly_popup_category').style.backgroundColor=calendar.color||'#AAA';model.user.update(event,$('readonly_popup_owner'),event.userid,"owner");$('readonly_popup_updated_at').update(event.updated_at.format("#{yy}년 #{mm}월 #{dd}일 #{kp} #{II}시 #{MM}분"));$('readonly_popup_update_comment').update("최종 수정 : ");if(event.updated_at.equal(event.created_at)){$('readonly_popup_update_comment').update("만든 시간 : ");$('readonly_popup_updater').update('');}else{model.user.update(event,$('readonly_popup_updater'),event.updater_id,"updater");}
event.attach?$('readonly_popup_image').show():$('readonly_popup_image').hide();$('readonly_popup_image').onclick=function(){var url="/miscellany/view_image?image="+encodeURIComponent(event.attach);window.open(url,'image_view','width=10, height=10');};model.alarm.update(this,event.id,true);},register_event:Prototype.emptyFunction,unregister_event:Prototype.emptyFunction,on_submit:function(form){var event=this.options.event;var url="/alarms"
var alarm=model.alarm.get(event.id);if(alarm&&typeof alarm!='string')url=url+"/"+alarm.id;url=url+"?alarmable_type=event&alarmable_id="+event.id;var method=(alarm&&typeof alarm!='string')?'put':'post';new Ajax.Request(url,{method:method,parameters:Form.serialize(form)});this.detach();return;}});EventPopup.Preview=Class.create(EventPopup.Base,{template:new Template("<input disabled class='date' type='text' size='30' value='#{start_date}'/> <input disabled class='time' type='text' size='30' value='#{start_time}' /> - "
+"<input disabled class='date' type='text' size='30' value='#{end_date}' /> <input disabled class='time' type='text' size='30' value='#{end_time}' /> "
+"<strong class='pop_term'>#{diff_time}</strong>"),initialize:function($super){$super();popupManager.load('preview_event_popup','/popup/preview_event_popup.html');this.popWin=$('preview_event_popup');},attach:function(options){this.options=Object.extend($H(this.default_options).clone(),options||{});if(this.attached)this.detach();ActivePopup.close_all();ActivePopup.register(this);EventPopup.registerPopup(this);this.attached=true;this.set_field();this.set_position();this.popWin.show();this.observer_instance=this.observe_click.bindAsEventListener(this);Event.observe(document.body,'mousedown',this.observer_instance);},detach:function(){if(!this.attached)return;this.attached=false;EventPopup.activePopup=null;ActivePopup.unregister(this);this.unregister_event();this.popWin.hide();if(this.options.on_detach)this.options.on_detach();if(this.options.parent&&this.options.parent.callback)this.options.parent.callback();Event.stopObserving(document.body,"mousedown",this.observer_instance);},set_field:function(){var event=this.options.event;var timeinfo={start_date:DateConverter.date_to_str(event.start_at),start_time:DateConverter.time_to_str(DateConverter.date_to_time(event.start_at)),end_date:DateConverter.date_to_str(event.end_at),end_time:DateConverter.time_to_str(DateConverter.date_to_time(event.end_at)),diff_time:DateConverter.diff_time_to_str(event.start_at,event.end_at,event.allday)}
$('preview_popup_date_field').update(this.template.evaluate(timeinfo));$('preview_popup_title').update((event.title=="")?"(제목없음)":event.title.escapeHTML());$('preview_popup_title').title=(event.title=="")?"(제목없음)":event.title.escapeHTML();var desc=(event.description||"내용이 없습니다.").escapeHTML().replaceAll("\n","<br />");$('preview_popup_description').update(desc);$('preview_popup_description_expand').update(desc);if(!event.url||event.url.trim()==""||event.url=="http://")event.url="";$('preview_popup_url').value=event.url.escapeHTML();$('preview_popup_link_go').onclick=function(){if(event.url)window.open(event.url.escapeHTML());};event.attach?$('preview_popup_image').show():$('preview_popup_image').hide();event.description?$('preview_popup_desc').show():$('preview_popup_desc').hide();event.url?$('preview_popup_linkon').show():$('preview_popup_linkon').hide();$('preview_popup_image').onclick=function(){var url="/miscellany/view_image?image="+encodeURIComponent(event.attach);window.open(url,'image_view','width=10, height=10');};},register_event:Prototype.emptyFunction,unregister_event:Prototype.emptyFunction,select_category:function(){var escaped_url=escape("http://calendar.daum.net/external/select_category?event_id="+this.options.event.id);window.open('http://www.daum.net/Mail-bin/login.html?daumauth=1&url='+escaped_url+'&category=calendar&popup=1','select','width=545, height=300, status=no, resizable=no');},on_submit:function(form){this.detach();return;}});var re_range1=new RegExp('(.+)부터(.+까지.+)');var re_range2=new RegExp('(.+)에서(.+까지.+)');var re_range3=new RegExp('(.+)부터(.+동안.+)');var re_range4=new RegExp('(.+)에서(.+동안.+)');var re_year=new RegExp('(\\d{4})년');var re_month=new RegExp('(\\d{1,2})월');var re_day=new RegExp('(\\d{1,2})일');var re_year_unit=new RegExp('(작년|올해|내년)');var re_month_unit=new RegExp('(지난|이번|다음)달');var re_week_unit=new RegExp('(지난|이번|다음)주');var re_day_unit=new RegExp('(어제|오늘|내일|모레|글피)');var re_weekday=new RegExp('(월|화|수|목|금|토|일)요일');var re_ap=new RegExp('(오전|am|Am|AM|오후|pm|Pm|PM|아침|저녁|새벽)');var re_ap_with_hour=new RegExp('(오전|pm|Am|AM|오후|pm|Pm|PM|아침|저녁|새벽)(\\d{1,2})시');var re_hour=new RegExp('(\\d{1,2})시');var re_minute=new RegExp('(\\d{1,2})분');var re_time1=new RegExp('(\\d{1,2}):(\\d{2})');var re_time2=new RegExp('(정오|자정)');var re_year_period=new RegExp('(\\d{1,2})년');var re_one_to_half_day_period=new RegExp('하루|이틀|열흘|보름');var re_month_period=new RegExp('(\\d{1,2})(개월|달)');var re_week_period=new RegExp('(\\d{1,2})(주|주일)');var re_day_period=new RegExp('(\\d{1,3}|이|삼|사|오|육|칠|팔|구|십)일');var re_hour_period=new RegExp('(\\d{1,3})시간');var re_minute_period=new RegExp('(\\d{1,3})분');var mapping_days={"하루":1,"이일":2,"이틀":2,"삼일":3,"사일":4,"오일":5,"육일":6,"칠일":7,"팔일":8,"구일":9,"십일":10,"열흘":10,"보름":15};var QuickAdd={is_setup:false,parse:function(str,cursor){if(!str||str.length==0)return null;this.str=this.revise(str);this.cursor=cursor||(new Date()).clear_time();if(re_range1.process(this.str,this.setup_datetime_datetime.bind(this))||re_range2.process(this.str,this.setup_datetime_datetime.bind(this))){}else if(re_range3.process(this.str,this.setup_datetime_period.bind(this))||re_range4.process(this.str,this.setup_datetime_period.bind(this))){}else{this.setup();}
this.event={start_at:false,end_at:false,allday:true,title:str};if(this.from.cursor&&this.to.cursor){if(this.from.cursor.after(this.to.cursor))return this.event;this.event.start_at=this.from.cursor;this.event.end_at=this.to.cursor;if(this.event.start_at.format("#{HH}#{MM}")!=0000)this.event.allday=false;if(this.event.end_at.format("#{HH}#{MM}")!=0000)this.event.allday=false;if(!this.is_setup){this.event.title=this.from.summary;this.event.title=this.to.summary;}
if(this.from.summary.length>0){this.event.title=this.from.summary;}else if(this.is_setup){this.event.title="";}
if(this.to.summary.length>0)this.event.title=this.to.summary;this.event.title=this.event.title.replace(/(\d{4})[\/|\.|\-]+(\d{1,2})[\/|\.|\-]+(\d{1,2})/g,'');this.event.title=this.event.title.replace(/(\d{1,2})[\/|\.|\-]+(\d{1,2})/g,'');if(this.event.allday)this.event.end_at=this.event.end_at.prev_day(1);}
this.event.title=this.event.title.trim();return this.event;},setup_datetime_datetime:function(result){try{this.from=new Morphemes(result[1],this.cursor);this.to=new InheritanceMorphemes(result[2],this.from.cursor.clone());}catch(e){this.from=false;this.to=false;}},setup_datetime_period:function(result){try{this.from=new Morphemes(result[1],this.cursor);this.to=new PeriodMorphemes(result[2],this.from.cursor.clone());}catch(e){this.from=false;this.to=false;}},setup:function(){this.from=new Morphemes(this.str,this.cursor);this.to={summary:""};this.is_setup=true;if(this.from.cursor){if(this.from.has_time){this.to.cursor=this.from.cursor.next_hour(1);}else if(this.from.cursor.format("#{HH}#{MM}")=="0000"){this.to.cursor=this.from.cursor.next_day(1);}else{this.to.cursor=this.from.cursor.next_hour(1);}}else{this.from.cursor=false;this.to.cursor=false;}},revise:function(str){str=str.replace(/\s{1,}-\s{1,}/,'-');str=str.replace(/\s{1,}~\s{1,}/,'~');str=str.replace(/([^\d\s\:]+)(\d+)/g,'$1 $2');str=str.replace(/(부터)([^\s]+)/g,'$1 $2');str=str.replace(/(에서)([^\s]+)/g,'$1 $2');str=str.replace(/(까지)([^\s]+)/g,'$1 $2');str=str.replace(/(동안)([^\s]+)/g,'$1 $2');str=str.replace(/(작년|올해|내년)([^\s]+)/g,'$1 $2');str=str.replace(/(지난|이번|다음)달([^\s]+)/g,'$1달 $2');str=str.replace(/(지난|이번|다음)주([^\s]+)/g,'$1주 $2');str=str.replace(/(월|화|수|목|금|토|일)요일([^\s]+)/g,'$1요일 $2');str=str.replace(/(어제|오늘|내일|모레|글피)([^\s]+)/g,'$1 $2');str=str.replace(/(\d{1,2})일([^\s]+)/g,'$1일 $2');str=str.replace(/(오전|오후|아침|저녁|새벽)([^\s]+)/g,'$1 $2');str=str.replace(/(정오|자정)([^\s]+)/g,'$1 $2');str=str.replace(/([^\s]+)(오전|오후|아침|저녁|새벽)/g,'$1 $2');str=str.replace(/([^\s]+)(am|Am|AM)/g,'$1 $2');str=str.replace(/([^\s]+)(pm|Pm|PM)/g,'$1 $2');str=str.replace(/(\d{1,2}시)([^간|\s]+)/g,'$1 $2');str=str.replace(/(\d{1,2}분)([^\s]+)/g,'$1 $2');str=str.replace(/(\d{1,2}):(\d{2})([^\d{1}|\s]+)/g,'$1:$2 $3');str=str.replace(/([^\s]+)(작년|올해|내년)/g,'$1 $2');str=str.replace(/([^\s]+)(지난|이번|다음)달/g,'$1 $2달');str=str.replace(/([^\s]+)(지난|이번|다음)주/g,'$1 $2주');str=str.replace(/([^\s]+)(정오|자정)/g,'$1 $2');str=str.replace(/([^\s]+)(월|화|수|목|금|토|일)요일/g,'$1 $2요일');str=str.replace(/([^\s]+)(어제|오늘|내일|모레|글피)/g,'$1 $2');str=str.replace(/(까지|동안)$/g,'$1 ');str=str.replace(/\s{1,}(부터|에서|까지|동안)/g,'$1');str=str.replace(/(\d{4})[\/|\.|\-]+(\d{1,2})[\/|\.|\-]+(\d{1,2})/g,'$1년 $2월 $3일');str=str.replace(/(\d{1,2})[\/|\.|\-]+(\d{1,2})/g,'$1월 $2일');return str;}};var Morphemes=Class.create();Morphemes.prototype={idx:0,initialize:function(str,cursor){this.morphemes=str.trim().split(" ");this.cursor=cursor||(new Date()).clear_time();this.current_date=(new Date()).clear_time();this.is_date_period=false;var is_date=this.parse_date();var is_time=this.parse_time();if(is_date||is_time){this.parse_summary();}else{this.cursor=false;this.summary="";}},parse_date:function(){var m=this.morphemes[this.idx++];if(re_year.process(m,this.year_callback.bind(this))||re_year_unit.process(m,this.year_unit_callback.bind(this))){return this.month();}else if(re_month.process(m,this.month_callback.bind(this))||re_month_unit.process(m,this.month_unit_callback.bind(this))){return this.day();}else if(re_week_unit.process(m,this.week_unit_callback.bind(this))){return this.weekday();}else if(re_day.process(m,this.day_callback.bind(this))||re_day_unit.process(m,this.day_unit_callback.bind(this))){return true;}else if(re_weekday.process(m,this.weekday_callback.bind(this))){return true;}
this.idx--;return false;},year_callback:function(result){this.cursor.setFullYear(result[1]);},year_unit_callback:function(result){if(result[1]=="올해"){this.cursor.setFullYear(this.current_date.getFullYear());}else if(result[1]=="작년"){this.cursor.setFullYear(this.current_date.getFullYear()-1);}else if(result[1]=="내년"){this.cursor.setFullYear(this.current_date.getFullYear()+1);}},month:function(){if(re_month.process(this.morphemes[this.idx++],this.month_callback.bind(this))){return this.day();}
return false;},month_callback:function(result){this.cursor.setMonth(result[1]-1);},month_unit_callback:function(result){if(result[1]=="이번"){this.cursor.setMonth(this.current_date.getMonth());}else if(result[1]=="지난"){this.cursor.setMonth(this.current_date.getMonth()-1);}else if(result[1]=="다음"){this.cursor.setMonth(this.current_date.getMonth()+1);}},week_unit_callback:function(result){if(result[1]=="이번"){this.cursor=this.current_date.firstday_of_week();}else if(result[1]=="지난"){this.cursor=this.current_date.firstday_of_week().prev_week();}else if(result[1]=="다음"){this.cursor=this.current_date.firstday_of_week().next_week();}},weekday:function(){return re_weekday.process(this.morphemes[this.idx++],this.weekday_callback.bind(this));},weekday_callback:function(result){this.cursor=this.cursor.firstday_of_week();if(result[1]=="월"){this.cursor=this.cursor.next_day(1);}else if(result[1]=="화"){this.cursor=this.cursor.next_day(2);}else if(result[1]=="수"){this.cursor=this.cursor.next_day(3);}else if(result[1]=="목"){this.cursor=this.cursor.next_day(4);}else if(result[1]=="금"){this.cursor=this.cursor.next_day(5);}else if(result[1]=="토"){this.cursor=this.cursor.next_day(6);}},day:function(){return re_day.process(this.morphemes[this.idx++],this.day_callback.bind(this));},day_callback:function(result){if(0>=parseInt(result[1])||32<=parseInt(result[1])){this.cursor=false;}else{this.cursor.setDate(result[1]);}},day_unit_callback:function(result){if(result[1]=="오늘"){this.cursor=(new Date()).clear_time();}else if(result[1]=="어제"){this.cursor=(new Date()).clear_time().prev_day(1);}else if(result[1]=="내일"){this.cursor=(new Date()).clear_time().next_day(1);}else if(result[1]=="모레"){this.cursor=(new Date()).clear_time().next_day(2);}else if(result[1]=="글피"){this.cursor=(new Date()).clear_time().next_day(3);}},parse_time:function(){var m=this.morphemes[this.idx++];if(re_time1.process(m,this.time1_callback.bind(this))){return true;}else if(re_time2.process(m,this.time2_callback.bind(this))){return true;}else if(re_ap_with_hour.process(m,this.ap_with_hour_callback.bind(this))){return true;}else if(re_ap.process(m,this.ap_callback.bind(this))){return this.hour();}else if(re_hour.process(m,this.hour_callback.bind(this))){return true;}
this.idx--;return false;},time1_callback:function(result){this.cursor.setHours(result[1]);this.cursor.setMinutes(result[2]);},time2_callback:function(result){if(result[1]=="정오"){this.cursor.setHours(12);this.cursor.setMinutes(0);}else if(result[1]=="자정"){this.cursor.setHours(24);this.cursor.setMinutes(0);}},ap_with_hour_callback:function(result){this.ap_callback(["",result[1]]);this.hour_callback(["",result[2]]);},ap_callback:function(result){if(result[1]=="오후"||result[1]=="저녁"||result[1]=="pm"||result[1]=="PM"||result[1]=="Pm"){this.is_pm=true;}else if(result[1]=="오전"||result[1]=="아침"||result[1]=="새벽"||result[1]=="am"||result[1]=="AM"||result[1]=="Am"){this.is_am=true;}},hour:function(){if(re_hour.process(this.morphemes[this.idx++],this.hour_callback.bind(this))){return true;}
this.idx-=2;return false;},hour_callback:function(result){if(result[1]=="0"||this.is_am&&result[1]=="12"){this.cursor.setHours(0);}else{this.cursor.setHours(parseInt(result[1])+((this.is_pm&&(parseInt(result[1])!=12))?12:0));}
this.has_time=true;if(re_minute.process(this.morphemes[this.idx++],this.minute_callback.bind(this))==false)this.idx--;},minute_callback:function(result){this.cursor.setMinutes(result[1]);},parse_summary:function(){this.summary="";this.morphemes.each(function(morpheme,index){if(index>=this.idx)this.summary+=morpheme+" ";}.bind(this));this.summary=this.summary.trim();if(this.summary.length==0)this.summary="";}};var InheritanceMorphemes=Class.create();InheritanceMorphemes.prototype=Object.extend(Object.extend({},Morphemes.prototype),{initialize:function(str,cursor){this.morphemes=str.trim().split(" ");this.parent_cursor=cursor;this.cursor=this.parent_cursor.clone();this.current_date=(new Date()).clear_time();var is_date=this.parse_date();var is_time=this.parse_time();if(is_date||is_time){if(!is_time)this.cursor=this.cursor.next_day(1).clear_time();this.parse_summary();}else{this.cursor=false;this.summary="";}},hour_callback:function(result){this.cursor.setHours(parseInt(result[1])+(this.is_pm?12:0));if(this.is_am&&this.parent_cursor.equal_date(this.cursor)&&this.parent_cursor.getHours()>this.cursor.getHours()){this.cursor=this.cursor.next_day(1);}else if(this.is_pm&&this.parent_cursor.equal_date(this.cursor)&&this.parent_cursor.getHours()>this.cursor.getHours()){this.cursor=this.cursor.next_day(1);}else if(!this.is_pm&&this.parent_cursor.equal_date(this.cursor)&&this.parent_cursor.getHours()>this.cursor.getHours()){this.cursor=this.cursor.next_hour(12);if(this.parent_cursor.getHours()>this.cursor.getHours()){this.cursor=this.cursor.next_hour(12);}}
if(re_minute.process(this.morphemes[this.idx++],this.minute_callback.bind(this))==false){this.cursor.setMinutes(0);this.idx--;}}});var PeriodMorphemes=Class.create();PeriodMorphemes.prototype=Object.extend(Object.extend({},Morphemes.prototype),{parse_date:function(){while(this.idx<this.morphemes.length){var m=this.morphemes[this.idx];if(re_day_period.process(m,this.day_period_callback.bind(this))||re_one_to_half_day_period.process(m,this.day_period_callback.bind(this))||re_week_period.process(m,this.week_period_callback.bind(this))||re_month_period.process(m,this.month_period_callback.bind(this))||re_year_period.process(m,this.year_period_callback.bind(this))){this.idx++;this.is_date_period=true;}else{break;}}
return this.is_date_period;},year_period_callback:function(result){this.cursor=this.cursor.next_year(parseInt(result[1]));},month_period_callback:function(result){this.cursor=this.cursor.next_month(parseInt(result[1]));},week_period_callback:function(result){this.cursor=this.cursor.next_day(7*parseInt(result[1]));},day_period_callback:function(result){if(!parseInt(result[1]))result[1]=mapping_days[result[0]];this.cursor=this.cursor.next_day(parseInt(result[1]));},parse_time:function(){var m=this.morphemes[this.idx++];if(re_hour_period.process(m,this.hour_period_callback.bind(this))){return true;}else if(re_minute_period.process(m,this.minute_period_callback.bind(this))){return true;}
this.idx--;return false;},hour_period_callback:function(result){this.cursor=this.cursor.next_hour(parseInt(result[1]));if(re_minute_period.process(this.morphemes[this.idx++],this.minute_period_callback.bind(this))==false)this.idx--;},minute_period_callback:function(result){this.cursor=this.cursor.next_minute(parseInt(result[1]));}});var AlertController=Class.create();AlertController.prototype={initialize:function(html_options,alert_options){this.alert_options=Object.extend({width:330},alert_options||{});this.html_options=Object.extend({message:'경고 !!'},html_options||{});this.cursor_status=0;this.create();},get_contents:function(){return this.template.evaluate(this.html_options);},create:function(){this.m=new Control.Modal(this.get_contents(),{afterOpen:this.after_open.bind(this),afterClose:this.after_close.bind(this),closeOnClick:false,width:this.alert_options.width||330});this.m.open();ActivePopup.modal_opened=true;},observe_key:function(event){if(!event)event=window.event;try{var code=event.charCode?event.charCode:event.keyCode;switch(code){case 32:this.event_btns[(this.cursor_status%this.event_btns.length)].onclick(event);break;case 37:if(this.cursor_status>=1)this.cursor_status-=1;this.event_btns[this.cursor_status].focus();break;case 39:if(this.cursor_status<this.event_btns.length-1)this.cursor_status+=1;this.event_btns[this.cursor_status].focus();break;}}catch(e){console.log(e);}},set_elements:function(){var self=this;this.ok_btn=this.m.container.select('.ok_btn')[0];this.cancel_btn=this.m.container.select('.cancel_btn')[0];this.x_btns=[];['.x_btn','.cancel_btn'].each(function(s){var x_btn=self.m.container.select(s);if(x_btn.length>0)self.x_btns.push(x_btn[0]);});this.event_btns=[this.ok_btn];if(this.x_btns.length==2)this.event_btns.push(this.x_btns[1]);try{this.event_btns[0].focus();}catch(e){}},after_open:function(){this.set_elements();this.common_after_open();this.sub_after_open();},after_close:function(){ActivePopup.modal_opened=false;this.common_after_close();this.sub_after_close();},common_after_open:function(){var self=this;this.observer_instance=this.observe_key.bindAsEventListener(this);Event.observe(document.body,"keypress",this.observer_instance);if(this.ok_btn)this.ok_btn.onclick=this.on_submit.bindAsEventListener(this);this.x_btns.each(function(btn){btn.onclick=self.on_cancel.bindAsEventListener(self);})},common_after_close:Prototype.emptyFunction,sub_after_open:Prototype.emptyFunction,sub_after_close:Prototype.emptyFunction,after_submit:Prototype.emptyFunction,after_cancel:Prototype.emptyFunction,on_submit:function(event){try{if(!event)event=window.event;Event.stop(event);Event.stopObserving(document.body,"keypress",self.observer_instance);this.m.close();}catch(e){console.log(e);}
this.after_submit(event);if(this.html_options.onSubmitFunc){if(typeof(this.html_options.onSubmitFunc)=="function"){this.html_options.onSubmitFunc();}else{var func=this.html_options.onSubmitFunc;if(this.html_options.caller[func])this.html_options.caller[func].call(this.html_options.caller,this.html_options.obj);}}
this.m.destroy();},on_cancel:function(event){try{if(!event)event=window.event;if(event)Event.stop(event);Event.stopObserving(document.body,"keypress",self.observer_instance);this.m.close();}catch(e){console.log(e);}
this.after_cancel(event);if(this.html_options.onCancelFunc){if(typeof(this.html_options.onCancelFunc)=="function"){this.html_options.onCancelFunc();}else{var func=this.html_options.onCancelFunc;if(this.html_options.caller[func])this.html_options.caller[func].call(this.html_options.caller,this.html_options.obj);}}
this.m.destroy();}}
var SmsAlert=Class.create();SmsAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalAlert" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>알림창</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   #{message}'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="delete_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="delete_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),after_submit:function(){history_controller.go("calendar_setting");var arrPopup=[$('new_event_popup'),$('edit_event_popup'),$('edit_memorial_popup'),$('view_event_popup')];arrPopup.each(function(popup){if(popup)popup.hide();});}});var MessageAlert=Class.create();MessageAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalAlert" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>알림창</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent alert">'
+'  <div class="message">'
+'   #{message}'
+'  </div>'
+'  <div class="buttonArea">'
+'    <a href="javascript:;" class="ok_btn"><img src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif\" width=\"28\" height=\"16\" alt=\"확인\" /></a> '
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),after_submit:function(event){var option=this.html_options;if(event)Event.stop(event);if(typeof(option.onConfirmFunc)=="function"){option.onConfirmFunc();}else{var func=option.onConfirmFunc();option.caller[func].call(option.caller,option.obj);}}});var TodoStoreDestroyAlert=Class.create();TodoStoreDestroyAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="todo_store_destroy_confirm" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>보관함 삭제</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   <h4 style="text-align:left;">삭제 시 보관함 내 모든 <strong>할일</strong>이 사라집니다.</h4>'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="todo_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="todo_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),after_submit:function(event){var store_id=this.alert_options.store_id;new Ajax.Request('/todo_stores/'+store_id,{method:'delete'});}});var CategoryDestroyAlert=Class.create();CategoryDestroyAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalDestroyCategory" class="lpop black">'
+'<div class="top_line"></div>'
+'<div class="top"></div>'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>알림창</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   <h4 style="color:#555555;font-size:11px;margin-bottom:0;line-height:16px;background-position:left top;">#{message}</h4>'
+'  </div>'
+'  <div class="selectbox" style="padding-left:25px;padding-bottom:8px;">'
+'    <div class="delete_category_wrap" style="width:300px;"><input id="category_destroy_#{id}" name="repeat_choice" type="radio" class="category_destroy repeat_modify_oneday check" checked style="margin-right:7px;" /><label for="category_destroy_#{id}"><strong style=\"color:#555;\">#{disconnect}</strong> #{destroy_comment}</label></div>'
+'   <div class="move_category_wrap"><div class="xs_panel" style="clear:both;margin-top:7px;"><input id="category_move_#{id}" name="repeat_choice" type="radio" class="category_move repeat_modify_all check" style="margin-right:7px;" /><label for="category_move_#{id}"><strong style=\"color:#555;\">#{disconnect}</strong> #{move_comment}</label></div>'
+'   <div class="xs_panel" style="margin:2px 0 0 #{xselect_style};"><select id="category_move_confirm_select_box" class="category_select_box"></select></div><div class="clear"></div></div>'
+'   <div class="copy_category_wrap"><div class="xs_panel" style="clear:both;margin-top:5px;"><input id="category_copy_#{id}" name="repeat_choice" type="radio" class="category_copy repeat_modify_all check" style="margin-right:7px;" /><label for="category_copy_#{id}"><strong style=\"color:#555;\">#{remain}</strong> #{copy_comment}</label></div>'
+'   <div class="xs_panel" style="margin:2px 0 0 10px;"><select id="category_copy_confirm_select_box" class="category_select_box"></select></div><div class="clear"></div></div>'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="repeat_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인" /></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="repeat_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소" /></a>'
+'  </div>'
+' </div>'
+'<div class="bottom"></div>'
+'<div class="bottom_line"></div>'
+'</div>'),get_contents:function(){var message="<b>"+this.alert_options.calendar.name+"</b> 카테고리를 삭제하거나 다른 곳으로 이동할 수 있습니다.<br />단, 카테고리를 삭제하시면 일정이 <em>완전히 삭제</em>됩니다.";var remain="";var disconnect="";var xselect_style="10px";var destroy_comment=(this.alert_options.isMemorial)?"기념일 초기화":"카테고리 삭제";var move_comment=(this.alert_options.isMemorial)?"기념일 이동":"카테고리 이동";var copy_comment=(this.alert_options.isMemorial)?"기념일 복사":"카테고리 복사";if(this.alert_options.isMemorial)message="<em>음력 기념일을 이동/복사할 경우 양력</em>으로 바뀐 채 제공됩니다.<br />따라서 다른 카테고리로 복사/이동 시 불편할 수 있습니다.";if(this.alert_options.isDefault)message="기본카테고리는 복사만 가능할 뿐 <em>삭제/이동은 할 수 없습니다.</em><br />만일 이 카테고리를 삭제하고 싶다면, 이것을 기본카테고리에서 제외하세요<br />즉, 다른 카테고리를 하나 만들고, 그것을 기본 카테고리로 지정하면 되겠죠?";if(this.alert_options.isShared&&!this.alert_options.isMemorial&&!this.alert_options.isDefault){message="<b>"+this.alert_options.calendar.name+"</b> 카테고리는 <em>친구와 공유중인 카테고리</em>입니다.<br />이것이 내가 직접 만들고 친구에게 공유 해 준 카테고리라면,<br />삭제/이동 시 <em>공유가 끊기고, 친구 캘린더에서 자동 삭제 됩니다.</em>";remain="공유 유지하고";disconnect="공유 끊고";xselect_style="32px";}
var _options={message:message,remain:remain,disconnect:disconnect,xselect_style:xselect_style,destroy_comment:destroy_comment,move_comment:move_comment,copy_comment:copy_comment,id:this.alert_options.calendar.id}
this.html_options=Object.extend(this.html_options,_options||{});return this.template.evaluate(this.html_options);},sub_after_open:function(){this.move_selBox=this.m.container.select('.category_select_box')[0];this.copy_selBox=this.m.container.select('.category_select_box')[1];this.delete_wrap=this.m.container.select('.delete_category_wrap')[0];this.move_wrap=this.m.container.select('.move_category_wrap')[0];this.copy_wrap=this.m.container.select('.copy_category_wrap')[0];this.cs_copy=new CalendarSelector(this.copy_selBox,{ename:"category_copy_confirm_select_box",disabled_calendars:[this.alert_options.calendar.id]});this.cs_move=new CalendarSelector(this.move_selBox,{ename:"category_move_confirm_select_box",disabled_calendars:[this.alert_options.calendar.id]});this.selBoxs=$A();this.selBoxs[0]=this.cs_move.getXSelect();this.selBoxs[1]=this.cs_copy.getXSelect();if(this.alert_options.isDefault){this.delete_wrap.hide();this.move_wrap.hide();if(this.cs_copy.count==0||this.cs_move.count==0){this.ok_btn.onclick=this.on_cancel.bindAsEventListener(this);this.m.container.select('div.selectbox')[0].setStyle({backgroundColor:'#FFF'});this.copy_wrap.hide();this.cancel_btn.hide();return;}}
this.radio1=this.m.container.select('.category_destroy')[0];this.radio2=this.m.container.select('.category_move')[0];this.radio3=this.m.container.select('.category_copy')[0];this.selectBoxActivate();this.radio1.onclick=this.selectBoxActivate.bind(this);this.radio2.onclick=this.selectBoxActivate.bind(this);this.radio3.onclick=this.selectBoxActivate.bind(this);this.observer_instance=this.observe_xselect_click.bindAsEventListener(this);Event.observe(this.m.container,'click',this.observer_instance);},observe_xselect_click:function(e){if(!e)var e=window.event;var clickObj=e.srcElement||e.target;if(clickObj==this.selBoxs[0].textArea||clickObj==this.selBoxs[0].xSelectObj||clickObj==this.selBoxs[0].optionMover){if(clickObj==this.selBoxs[0].textArea&&!this.selBoxs[1].xSelectObj.visible()){this.selBoxs[1].xSelectObj.show();return;}
this.selBoxs[1].xSelectObj.hide();}else{this.selBoxs[1].xSelectObj.show();}},selectBoxActivate:function(){if(this.radio2.checked){this.selBoxs[0].enable();this.selBoxs[1].disable();}else if(this.radio3.checked){this.selBoxs[0].disable();this.selBoxs[1].enable();}else{this.selBoxs[0].disable();this.selBoxs[1].disable();}},on_submit:function(event){if(this.alert_options.isDefault&&!this.radio3.checked){calendar.notify("복사할 카테고리를 선택해주세요.");return false;}
try{if(!event)event=window.event;Event.stop(event);Event.stopObserving(document.body,"keypress",self.observer_instance);this.m.close();}catch(e){console.log(e);}
this.after_submit(event);if(this.html_options.onSubmitFunc){if(typeof(this.html_options.onSubmitFunc)=="function"){this.html_options.onSubmitFunc();}else{var func=this.html_options.onSubmitFunc;if(this.html_options.caller[func])this.html_options.caller[func].call(this.html_options.caller,this.html_options.obj);}}
this.m.destroy();},after_submit:function(event){var eventMove="0";var selectCategory=null;if(this.radio2.checked){eventMove="1";selectCategory=this.move_selBox.value;}else if(this.radio3.checked){eventMove="2";selectCategory=this.copy_selBox.value;}
if(this.alert_options.doRequest){var _params={'meta_info[move_event]':eventMove,'meta_info[move_category_id]':selectCategory,'meta_info[share_type]':this.alert_options.isShared}
new Ajax.Request(this.alert_options.requestUrl,{method:'delete',parameters:_params,onSuccess:function(){if(this.alert_options.onSubmitFunc&&eventMove!="2")this.alert_options.callbackObj[this.alert_options.onSubmitFunc].call(this.alert_options.callbackObj,selectCategory,this.alert_options.calendar);calendar.notify("카테고리가 정상적으로<br />삭제/이동/복사됐습니다.");}.bind(this),onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);}});}},after_cancel:function(event){if(this.alert_options.onCancelFunc)this.alert_options.callbackObj[this.alert_options.onCancelFunc].call(this.alert_options.callbackObj);},after_close:function(){ActivePopup.modal_opened=false;Event.stopObserving(this.m.container,'click',this.observer_instance);this.common_after_close();this.sub_after_close();if(this.cs_copy)actor.calendar.remove_reactor(this.cs_copy.calendar_reactor);if(this.cs_move)actor.calendar.remove_reactor(this.cs_move.calendar_reactor);}});var CategoryPublishAlert=Class.create();CategoryPublishAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalPublishCategory" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>알림창</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   <h4 style="color:#555555;font-size:11px;margin-bottom:0;line-height:16px;background-position:left top;">#{message}</h4>'
+'  </div>'
+'  <div class="selectbox" style="padding-left:25px;padding-bottom:8px;">'
+'    <div class="all_category_wrap" style="padding:2px 0;"><input id="category_all" name="publish_choice" type="radio" value="ALL" class="category_all check" style="margin-right:7px;" /><label for="category_all">전체공개</label></div>'
+'    <div class="freebusy_category_wrap" style="padding:2px 0;"><input id="category_freebusy" name="publish_choice" type="radio" value="FREEBUSY" class="category_freebusy check" style="margin-right:7px;" /><label for="category_freebusy">약속표시(약속이 있는지의 여부만 공개)</label></div>'
+'    <div class="none_category_wrap" style="padding:2px 0;"><input id="category_none" name="publish_choice" type="radio" value="NONE" class="category_none check" style="margin-right:7px;" /><label for="category_none">비공개</label></div>'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="repeat_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인" /></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="repeat_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소" /></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),get_contents:function(){var message="HTML로 내보내기는 <b style=\"color:#f7701b;font-weight:normal;\">전체공개</b> 혹은 <b style=\"color:#f7701b;font-weight:normal;\">약속표시</b>가 공개된 카테고리만<br />내보낼 수 있습니다. (전체공개는 검색에도 노출 됩니다)<br >이 카테고리의 공개설정을 변경하시겠습니까?";this.html_options=Object.extend(this.html_options,{message:message});return this.template.evaluate(this.html_options);},sub_after_open:function(){var calendar_publish_level=this.alert_options.calendar.publish_level;this.m.container.select("[type=radio]").each(function(e){if(calendar_publish_level){e.checked=(e.value==calendar_publish_level||(calendar_publish_level=="FRIEND"&&e.value=="NONE"))?true:false;}else if(e.value=="NONE"){e.checked=true;}});},after_submit:function(event){var publish_choice=this.m.container.select("[type=radio]").select(function(e){return e.checked;}).first();if(this.alert_options.doRequest){var _params={'calendar[publish_level]':publish_choice.value,'share[enable]':1,'meta[recommend_change]':true}
var self=this;new Ajax.Request(this.alert_options.requestUrl,{method:'put',parameters:_params,onSuccess:function(transport){var check_box=$('calendars_outgoing_list_'+self.alert_options.calendar.id+'_chk');check_box.checked=(publish_choice.value!='NONE')?true:false;}});}},after_close:function(){ActivePopup.modal_opened=false;if(this.alert_options.checkbox_clicked){var check_box=$('calendars_outgoing_list_'+this.alert_options.calendar.id+'_chk');check_box.checked=false;}}});var OkCancelAlert=Class.create();OkCancelAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalAlert" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>알림창</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message" style="#{text_align}">'
+'   #{message}'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="delete_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="delete_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>')});var EventDuplicateAlert=Class.create();EventDuplicateAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalEventDuplicateAlert" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>일정복사</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   <h4 style="color:#555;">내 캘린더에 <em>일정을 복사</em>합니다.</h4>'
+'  </div>'
+'  <div class="selectbox" style="padding:10px;margin:0 0 5px 0;">'
+'   <div class="copy_category_wrap"><div class="xs_panel" style="clear:both;margin-top:1px;"><label class="category">카테고리 | </label></div>'
+'   <div class="xs_panel" style="margin-left:10px;"><select id="category_copy_confirm_select_box" class="category_select_box"></select></div><div class="clear"></div></div>'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="delete_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="delete_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),sub_after_open:function(){this.copy_selBox=this.m.container.select('.category_select_box')[0];this.cs_copy=new CalendarSelector(this.copy_selBox,{ename:"category_copy_confirm_select_box",disabled_calendars:[this.alert_options.event.calendar_id]});this.selBox=this.cs_copy.getXSelect();if(this.cs_copy.count==0)this.on_cancel();},after_submit:function(event){var selectCategory=this.copy_selBox.value;if(this.alert_options.doRequest){var _params={'meta_info[target_category_id]':selectCategory}
var c=model.calendar.get(selectCategory);if(!c.writable){calendar.notify("저장하려는 카테고리에 대한 쓰기권한이 없습니다.<br />다른 카테고리를 선택하고 다시 시도해 주십시오.");return false;}
new Ajax.Request(this.alert_options.requestUrl,{method:'get',parameters:_params,onSuccess:function(){calendar.notify("일정이 정상적으로 복사됐습니다.");},onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);}});}},after_close:function(){ActivePopup.modal_opened=false;this.common_after_close();this.sub_after_close();actor.calendar.remove_reactor(this.cs_copy.calendar_reactor);}});var ICalExportAlert=Class.create();ICalExportAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalICalExportConfirm" class="lpop" style="width:620px;">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>iCal로 내보내기</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message" style="background:transparent url(http://mimg.daum-img.net/dcal_2/01_common/btn/blt_mt02.gif) no-repeat scroll left center; padding:10px 5px; text-align:left;">'
+'   아래 URL 사용해서 내일정을 다른 캘린더에서 이용하거나 직접 ics파일로 내보내기를 할 수도 있습니다.'
+'  </div>'
+'  <div class="selectbox" style="margin:0px; padding-left:15px;padding-bottom:8px;">'
+'    <div>'
+'    <input type="text" class="ical_export_url" name="url" value="#{url}" size="70" readonly="true" style="background-color:#e8e8e8; border:1px solid #d7d7d7" />'
+'     <a href="javascript:;" class="ical_export_url_copy"><img width="51" height="16" src="http://mimg.daum-img.net/dcal_2/08_add/url_copy_btn.gif" alt="URL복사" style="vertical-align:middle;"/></a>'
+'    <a href="/sync/export_event?calendar=#{id}&download=true"><img width="47" height="16" src="http://mimg.daum-img.net/dcal_2/08_add/ics_save_btn.gif" alt="ics저장" style="vertical-align:middle;"/></a>'
+'   </div>'
+'   <div class="xs_panel" style="clear:both;margin-top:10px;"></div>'
+'  </div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="repeat_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),sub_after_open:function(){this.copy_btn=this.m.container.select('.ical_export_url_copy')[0];this.copy_btn=this.m.container.select('.ical_export_url_copy')[0];this.copy_btn.onclick=this.onCopyClicked.bindAsEventListener(this);try{this.copy_btn.focus();}catch(e){}},onCopyClicked:function(){var url=this.html_options.url;if(!url)return;var browserName=navigator.appName;if(browserName.search("Explorer")>0){window.clipboardData.setData('text',url);calendar.notify("클립보드에 URL이 저장되었습니다.<br />Ctrl + V로 붙여넣기 하세요");}else{calendar.notify('브라우저가 클립보드 복사기능을 지원하지 않습니다.<br />직접 URL을 복사해주세요.');}}});var RepeatEventAlert=Class.create();RepeatEventAlert.prototype=Object.extend(Object.extend({},AlertController.prototype),{template:new Template('<div id="dcalEditTodo" class="lpop">'
+' <div class="header"><div class="wrap">'
+'  <h1>'
+'   <label>#{title} #{action}</label>'
+'   <a href="javascript:;" class="x_btn lpopClose"><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" width="11" height="11" alt="닫기" class="close" /></a>'
+'  </h1>'
+' </div></div>'
+' <div class="popContent">'
+'  <div class="message">'
+'   <h4>#{action}하시려는 일정은 <strong>반복되는 일정</strong>입니다.</h4>'
+'   <span class="desc">아래 옵션 중에 <strong>선택</strong>을 해주세요.</span>'
+'  </div>'
+'  <div class="selectbox"><ul class="div_options"></ul></div>'
+'  <div class="buttonArea">'
+'   <a href="javascript:;" class="ok_btn"><img class="repeat_modal_ok" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_ok.gif" alt="확인"/></a>'
+'   <a href="javascript:;" class="cancel_btn"><img class="repeat_modal_cancel" width="28" height="16" src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif" alt="취소"/></a>'
+'  </div>'
+' </div>'
+' <div class="footer"><div class="wrap"><div class="back"></div></div></div>'
+'</div>'),modify_template_type1:new Template(' <li><input id="repeat_modify_oneday" name="repeat_choice" type="radio" class="repeat_modify_oneday check" checked /><label for="repeat_modify_oneday">지금 선택한 일정만 수정합니다.</label></li>'
+'<li><input id="repeat_modify_after" name="repeat_choice" type="radio" class="repeat_modify_after check" /><label for="repeat_modify_after">앞으로 반복될 일정까지 모두 수정합니다.</label></li>'
+'<li style="margin-bottom:0;"><input id="repeat_modify_all" name="repeat_choice" type="radio" class="repeat_modify_all check" /><label for="repeat_modify_all">모든 반복일정을 수정합니다.</label></li>'),modify_template_type2:new Template(' <li><input id="repeat_modify_oneday" name="repeat_choice" type="radio" class="repeat_modify_oneday check" checked /><label for="repeat_modify_oneday">지금 선택한 일정만 수정합니다.</label></li>'
+'<li style="margin-bottom:0;"><input id="repeat_modify_all" name="repeat_choice" type="radio" class="repeat_modify_all check" /><label for="repeat_modify_all">모든 반복일정을 수정합니다.</label></li>'),delete_template_type1:new Template(' <li><input id="repeat_modify_oneday" name="repeat_choice" type="radio" class="repeat_modify_oneday check" checked /><label for="repeat_modify_oneday">지금 선택한 일정만 삭제합니다.</label></li>'
+'<li><input id="repeat_modify_after" name="repeat_choice" type="radio" class="repeat_modify_after check" /><label for="repeat_modify_after">앞으로 반복될 일정까지 모두 삭제합니다.</label></li>'
+'<li style="margin-bottom:0;"><input id="repeat_modify_all" name="repeat_choice" type="radio" class="repeat_modify_all check" /><label for="repeat_modify_all">모든 반복일정을 삭제합니다.</label></li>'),delete_template_type2:new Template(' <li><input id="repeat_modify_oneday" name="repeat_choice" type="radio" class="repeat_modify_oneday check" checked /><label for="repeat_modify_oneday">지금 선택한 일정만 삭제합니다.</label></li>'
+'<li style="margin-bottom:0;"><input id="repeat_modify_all" name="repeat_choice" type="radio" class="repeat_modify_all check" /><label for="repeat_modify_all">모든 반복일정을 삭제합니다.</label></li>'),initialize:function(requestUrl,params,method,event,options){this.requestUrl=requestUrl;this.params=params;this.method=method||'put';this.event=event;this.options=Object.extend({repeat_event_start_at:null,start_at:null},options||{});if(this.options.repeat_event_start_at)this.options.start_at=this.options.repeat_event_start_at;this.start_at=(this.options.start_at)?this.options.start_at:this.event.start_at;this.is_first_rdates=(model.event.get(this.event.id).start_at.compare(this.start_at)==0)?true:false;this.alert_options={};this.html_options={};this.cursor_status=0;this.create();},get_contents:function(){var template_options={title:'반복일정',action:(this.method!='delete')?'수정':'삭제'}
return this.template.evaluate(template_options);},sub_after_open:function(){var template_options={title:'반복일정',action:(this.method!='delete')?'수정':'삭제'}
if(this.method!='delete'){option_html=(this.is_first_rdates)?this.modify_template_type2.evaluate(template_options):this.modify_template_type1.evaluate(template_options);}else{option_html=(this.is_first_rdates)?this.delete_template_type2.evaluate(template_options):this.delete_template_type1.evaluate(template_options);}
var div_options=this.m.container.select('.div_options')[0];div_options.insert({bottom:option_html});},on_submit:function(event){var _modify_type="all";var oneday_btn=this.m.container.select('.repeat_modify_oneday');var after_btn=this.m.container.select('.repeat_modify_after');if(oneday_btn&&oneday_btn[0]&&oneday_btn[0].checked)_modify_type="oneday";if(after_btn&&after_btn[0]&&after_btn[0].checked)_modify_type="after";var _url=this.requestUrl;_url+=(_url.indexOf('?')>-1)?"&":"?";_url+="meta_event[modify_type]="+_modify_type+"&meta_event[start_at]="+this.start_at.to_param();var self=this;new Ajax.Request(_url,{method:this.method,parameters:this.params,onFailure:function(t){calendar.notify("읽기 전용 일정입니다.");if(self.options.callbackObj&&self.options.callbackObj.rollback_event_move)self.options.callbackObj.rollback_event_move();}});if(this.options.onSubmitFunc){this.options.callbackObj[this.options.onSubmitFunc].call(this.options.callbackObj,this.event);}
Event.stopObserving(document.body,"keypress",this.observer_instance);this.m.close();this.m.destroy();},on_cancel:function(event){try{if(this.options.onCancelFunc){this.options.callbackObj[this.options.onCancelFunc].call(this.options.callbackObj,this.event);}}catch(e){console.log(['error on calling cancel callback',e]);}
Event.stopObserving(document.body,"keypress",this.observer_instance);this.m.close();this.m.destroy();}});var LiveGrid=Class.create();LiveGrid.prototype={page:0,status:1,active:false,initialize:function(element,callback,options){try{this.element=$(element);this.callback=callback;this.options=Object.extend({size:10,height:400,tankup:true,activate:true},options||{});if(this.options.activate){this.enable();}else{this.active=false;}}catch(e){}},onScroll:function(event){if(this.status==1&&(this.element.scrollTop>((this.element.scrollHeight-this.element.offsetHeight)*0.8))){if(this.scrollTop&&this.scrollTop<=this.element.scrollTop){this.status=0;this.fetch();}}
this.scrollTop=this.element.scrollTop;},fetch:function(){console.log("fetch");this.status=this.callback(this.page,this.options.size)>0?1:2;this.page++;},tankup:function(){if(this.element.scrollHeight<=this.element.offsetHeight){this.status=0;this.fetch();if(this.status==1){this.tankup();}}},enable:function(){if(this.element){this.element.style.overflowX="hidden";this.element.style.overflowY="auto";this.element.style.height=this.options.height+"px";this.activate();}},disable:function(){if(this.element){this.element.style.overflow="hidden";this.element.style.height="auto";this.deactivate();}},activate:function(){if(this.element&&this.active==false){this.observer=Event.observe(this.element,"scroll",this.onScroll.bindAsEventListener(this));this.active=true;}},deactivate:function(){if(this.element&&this.active==true){Event.stopObserving(this.element,"scroll",this.observer);this.active=false;}},reset:function(){this.page=0;this.status=1;(this.options.tankup)?this.tankup():this.fetch();}};var RepeatSelector=Class.create();RepeatSelector.prototype={template:new Template(' <div id="repeatSetWrap">'
+'  <h2>'
+'   <input id="#{uid}_repeat_setting" type="checkbox" value="false" class="check" /><label id="#{uid}_repeat_setting_text" for="repeat_setting" class="form" style="margin-right:0px;">반복설정</label>'
+'   <label id="#{uid}_description" style="font-size:11px; color:#888;">(반복설정을 하지 않았습니다.)</label>'
+'  </h2>'
+'  <div id="#{uid}_freq_fieldset" class="component">'
+'   <dl>'
+'   <dt><label class="title">반복주기</label></dt>'
+'   <dd>'
+'    <ul class="cycle">'
+'    <li class="day"><a id="#{uid}_freq_daily">매일</a></li>'
+'    <li class="week"><a id="#{uid}_freq_weekly">매주</a></li>'
+'    <li class="month"><a id="#{uid}_freq_monthly">매월</a></li>'
+'    <li class="year"><a id="#{uid}_freq_yearly">매년</a></li>'
+'    <li style="font-size:11px; color:#888; padding-top:3px;" >|</li>'
+'    <li class="normal_day"><a id="#{uid}_autoset_weekday">평일마다</a></li>'
+'    <li class="week_end_day"><a id="#{uid}_autoset_weekend">주말마다</a></li>'
+'    <li class="hund_day"><a id="#{uid}_autoset_100d">100일마다</a></li><li class="clear"></li>'
+'    </ul>'
+'   </dd><dd class="clear"></dd>'
+'   </dl>'
+'  </div>'
+'  <div id="#{uid}_detail_fieldset" class="component">'
+'   <dl>'
+'   <dt><label class="title" style="line-height:16px;height:16px;margin-top:0;">상세설정</label></dt>'
+'   <dd id="#{uid}_extend_info">'
+'   </dd><dd class="clear"></dd>'
+'   </dl>'
+'  </div>'
+'  <div id="#{uid}_exdate_fieldset" class="component" style="border-bottom:0 none;margin-bottom:0;">'
+'   <dl>'
+'   <dt><label class="title" style="line-height:16px;height:16px;margin-top:0;">반복종료일</label></dt>'
+'   <dd>'
+'    <input id="#{uid}_until_on" class="date" type="text" size="30" />'
+'    <input id="#{uid}_until_chk" type="checkbox" name="pieloop" class="check" checked />'
+'    <label class="check" for="#{uid}_until_chk">무한반복</label>'
+'   </dd><dd class="clear"></dd>'
+'   </dl>'
+'  </div>'
+'  <div id="#{uid}_detailbtn_fieldset" class="buttons">'
+'   <a id="#{uid}_detailbtn_fieldset_btn" href="javascript:;" class="detail">상세설정하기</a>'
+'  </div>'
+' </div>'),daily_template:new Template('  매 <input id="#{uid}_interval" type="text" size="5" value="1" class="textbox" style="width:30px;" />일 마다 반복합니다.'),weekly_template:new Template(' 매 <input id="#{uid}_interval" type="text" size="5" value="1" class="textbox" style="width:30px;" /> 주 마다 아래 요일에 반복합니다.'
+' <ul id="#{uid}_weekday_panel" class="checker"></ul>'),monthly_template:new Template(' <ul class="detail">'
+' <li>매 <input id="#{uid}_interval" type="text" size="5" value="1" class="textbox" style="width:30px;" /> 개월 마다</li>'
+' <li><input id="#{uid}_week_based" name="#{uid}_radio" class="radio" type="radio" /><label for="#{uid}_week_based">선택한 주, 선택한 요일에 반복합니다.</label></li>'
+' <li id="#{uid}_week_based_panel">'
+'  <ul id="#{uid}_weekno_panel" class="checker dual">'
+'  <li><input id="#{uid}_week_1" class="check" type="checkbox" />첫번째</li>'
+'  <li><input id="#{uid}_week_2" class="check" type="checkbox" />두번째</li>'
+'  <li><input id="#{uid}_week_3" class="check" type="checkbox" />세번째</li>'
+'  <li><input id="#{uid}_week_4" class="check" type="checkbox" />네번째</li>'
+'  <li><input id="#{uid}_week_5" class="check" type="checkbox" />마지막</li><li class="clear"></li>'
+'  </ul>'
+'  <ul id="#{uid}_weekday_panel" class="checker week" style="margin-left:20px;margin-top:0;"></ul>'
+' </li>'
+' <li>'
+'  <input id="#{uid}_day_based" name="#{uid}_radio" class="radio" type="radio" /><label for="#{uid}_day_based">이 날짜에 반복합니다.</label>'
+' </li>'
+' <li id="#{uid}_day_based_panel" style="border-bottom:0 none;margin-bottom:0;padding-bottom:0;">'
+'  <ul id="#{uid}_day_panel" class="checker" style="margin-bottom:0;padding-bottom:0;"></ul>'
+' </li>'
+' </ul>'),yearly_template:new Template(' <ul class="detail">'
+' <li>매 <input id="#{uid}_interval" type="text" size="5" value="1" class="textbox" style="width:30px;" /> 년 마다 아래에 선택한 달과</li>'
+' <li id="#{uid}_month_panel" style="padding-left:20px;"></li>'
+' <li><input id="#{uid}_week_based" name="#{uid}_radio" class="radio" type="radio" /><label for="#{uid}_week_based">선택한 주, 선택한 요일에 반복합니다.</label></li>'
+' <li id="#{uid}_week_based_panel">'
+'  <ul id="#{uid}_weekno_panel" class="checker dual">'
+'  <li><input id="#{uid}_week_1" class="check" type="checkbox" /><label for="#{uid}_week_1">첫번째</label></li>'
+'  <li><input id="#{uid}_week_2" class="check" type="checkbox" /><label for="#{uid}_week_2">두번째</label></li>'
+'  <li><input id="#{uid}_week_3" class="check" type="checkbox" /><label for="#{uid}_week_3">세번째</label></li>'
+'  <li><input id="#{uid}_week_4" class="check" type="checkbox" /><label for="#{uid}_week_4">네번째</label></li>'
+'  <li><input id="#{uid}_week_5" class="check" type="checkbox" /><label for="#{uid}_week_5">마지막</label></li><li class="clear"></li>'
+'  </ul>'
+'  <ul id="#{uid}_weekday_panel" class="checker week" style="margin-left:20px;margin-top:0;"></ul>'
+' </li>'
+' <li><input id="#{uid}_day_based" name="#{uid}_radio" class="radio" type="radio" /><label for="#{uid}_day_based">선택한 달, 선택한 날짜에 반복합니다.</label></li>'
+' <li id="#{uid}_day_based_panel" style="border-bottom:0 none;margin-bottom:0;padding-bottom:0;">'
+'  <ul id="#{uid}_day_panel" class="checker" style="margin-left:20px;margin-bottom:0;padding-bottom:0;"></div>'
+' </li>'
+' </ul>'),week_expand_template:new Template('  <li class="week"><input id="#{uid}_week_mo" class="check" type="checkbox" /><label for="#{uid}_week_mo">월</label></li>'
+'  <li class="week"><input id="#{uid}_week_tu" class="check" type="checkbox" /><label for="#{uid}_week_tu">화</label></li>'
+'  <li class="week"><input id="#{uid}_week_we" class="check" type="checkbox" /><label for="#{uid}_week_we">수</label></li>'
+'  <li class="week"><input id="#{uid}_week_th" class="check" type="checkbox" /><label for="#{uid}_week_th">목</label></li>'
+'  <li class="week"><input id="#{uid}_week_fr" class="check" type="checkbox" /><label for="#{uid}_week_fr">금</label></li>'
+'  <li class="week"><input id="#{uid}_week_sa" class="check" type="checkbox" /><label for="#{uid}_week_sa">토</label></li>'
+'  <li class="week"><input id="#{uid}_week_su" class="check" type="checkbox" /><label for="#{uid}_week_su">일</label></li><li class="clear"></li>'),initialize:function(draw_area,input_prefix,start_date_id,cur_repeat_info,options){this.draw_area=$(draw_area);this.input_prefix=input_prefix||"repeat";this.start_date_id=$(start_date_id);this.cur_repeat_info=cur_repeat_info;this.options=Object.extend({isLunar:false,isRepeat:false,freq:'DAILY',interval:1,byday:null,bymonth:null,until:null},options||{});this.uid='repeat_select_'+Math.floor(Math.random()*100);this.is_repeat=false;this.selected_freq=null;this.selected_detail=null;if(this.start_date_id){this.start_date_id.data_changed=function(){self.set_default_value();self.display_description();}}
this.draw();if(this.cur_repeat_info)this.set_repeat_info();var self=this;},toggle_fieldset:function(){var is_solar=true;if((this.options.date_input&&!this.options.date_input.is_solar)||this.options.isLunar)is_solar=false;var command=(is_solar)?'show':'hide';[this.el_freq_fieldset,this.el_detail_fieldset,this.el_detailbtn_fieldset].invoke(command);},set_repeat_info:function(repeat_info){var uid=this.uid;var rrule=repeat_info||this.cur_repeat_info;this.el_repeat_setting.checked=true;this.el_repeat_setting.onclick();if(rrule.freq=="DAILY"){if(!repeat_info&&(rrule.interval||1)==100){this.el_autoset_100d.onclick();}else{this.el_freq_daily.onclick();}}else if(rrule.freq=="WEEKLY"){this.el_freq_weekly.onclick();if(rrule.byday){var weekday_el=$(uid+'_weekday_panel').select('.check');weekday_el.each(function(el){el.checked=false;})
if(typeof rrule.byday=='string'){var weeks_value={"MO":0,"TU":1,"WE":2,"TH":3,"FR":4,"SA":5,"SU":6};rrule.byday.split(',').each(function(byday){weekday_el[weeks_value[byday]].checked=true;})}else{rrule.byday.each(function(byday){if(!byday.wday){var weeks_value={"MO":0,"TU":1,"WE":2,"TH":3,"FR":4,"SA":5,"SU":6};weekday_el[weeks_value[byday]].checked=true;}else{weekday_el[(byday.wday+6)%7].checked=true;}})}
if(!repeat_info&&(rrule.interval||1)==1){if(weekday_el[0].checked&&weekday_el[1].checked&&weekday_el[2].checked&&weekday_el[3].checked&&weekday_el[4].checked&&!weekday_el[5].checked&&!weekday_el[6].checked)this.el_autoset_weekday.onclick();if(!weekday_el[0].checked&&!weekday_el[1].checked&&!weekday_el[2].checked&&!weekday_el[3].checked&&!weekday_el[4].checked&&weekday_el[5].checked&&weekday_el[6].checked)this.el_autoset_weekend.onclick();}}}else if(rrule.freq=="MONTHLY"||rrule.freq=="YEARLY"){(rrule.freq=="MONTHLY")?this.el_freq_monthly.onclick():this.el_freq_yearly.onclick();if(rrule.byday){$(uid+'_week_based').checked=true;$(uid+'_week_based').onclick();var checkbox_of_weekno=$(uid+'_weekno_panel').select('.check');var checkbox_of_weekday=$(uid+'_weekday_panel').select('.check');checkbox_of_weekno.each(function(el){el.checked=false;})
checkbox_of_weekday.each(function(el){el.checked=false;})
rrule.byday.each(function(byday){if(typeof byday!='string'){var ordwk=byday.ordwk;if(ordwk==-1)ordwk=5;checkbox_of_weekno[ordwk-1].checked=true;checkbox_of_weekday[(byday.wday+6)%7].checked=true;}})}
if(rrule.bymonthday){var day_el=$(uid+'_day_panel').select('.check');day_el.each(function(el){el.checked=false;})
rrule.bymonthday.each(function(day){day_el[((day==-1)?31:day-1)].checked=true;})}
if(rrule.freq=="YEARLY"&&rrule.bymonth){var month_el=$(uid+'_month_panel').select('.check');month_el.each(function(el){el.checked=false;})
rrule.bymonth.each(function(month){month_el[month-1].checked=true;})}}
var interval_el=$(uid+'_interval');if(interval_el)interval_el.value=rrule.interval||1;if(rrule.until&&rrule.until.getFullYear()!=2038){var until_chk=$(uid+'_until_chk');until_chk.checked=false;until_chk.onclick();$(uid+'_until_on').value=DateConverter.date_to_str(rrule.until);date_selector.detach();}
this.toggle_fieldset();this.display_description();this.el_detailbtn_fieldset_btn.className="simple";},draw:function(){var uid=this.uid;var main_contents=this.template.evaluate({uid:uid});this.draw_area.insert({top:main_contents});this.register_main_element();this.register_event();},draw_expand:function(freq){var cur_freq=freq||this.selected_freq;var template=eval("this."+cur_freq+"_template");if(!template){this.el_extend_info.update("");this.display_description();return;}
this.el_extend_info.update(template.evaluate({uid:this.uid}));switch(cur_freq){case'yearly':$(this.uid+"_month_panel").update(this.generate_month_form());case'monthly':$(this.uid+"_day_panel").update(this.generate_day_form());case'weekly':$(this.uid+'_weekday_panel').update(this.week_expand_template.evaluate({uid:this.uid}));break;}
this.register_event_of_expanded();if(cur_freq=='monthly'||cur_freq=='yearly'){$(this.uid+'_day_based').checked=true;$(this.uid+'_day_based').onclick();}
this.set_default_value();this.toggle_fieldset();},register_main_element:function(){var uid=this.uid;this.el_repeat_setting=$(uid+"_repeat_setting");this.el_repeat_setting_text=$(uid+"_repeat_setting_text");this.el_description=$(uid+"_description");this.el_freq_fieldset=$(uid+"_freq_fieldset");this.el_detail_fieldset=$(uid+"_detail_fieldset");this.el_exdate_fieldset=$(uid+"_exdate_fieldset");this.el_detailbtn_fieldset=$(uid+"_detailbtn_fieldset");this.el_detailbtn_fieldset_btn=$(uid+"_detailbtn_fieldset_btn");this.el_extend_info=$(uid+"_extend_info");this.el_freq_daily=$(uid+"_freq_daily");this.el_freq_weekly=$(uid+"_freq_weekly");this.el_freq_monthly=$(uid+"_freq_monthly");this.el_freq_yearly=$(uid+"_freq_yearly");this.el_autoset_weekday=$(uid+"_autoset_weekday");this.el_autoset_weekend=$(uid+"_autoset_weekend");this.el_autoset_100d=$(uid+"_autoset_100d");this.el_freqs=[this.el_freq_daily,this.el_freq_weekly,this.el_freq_monthly,this.el_freq_yearly,this.el_autoset_weekday,this.el_autoset_weekend,this.el_autoset_100d];},on_freq_selected:function(freq){this.clear_day_buttons();this.selected_detail=null;this.selected_freq=freq;this.draw_expand();this.el_detail_fieldset.hide();this.el_detailbtn_fieldset_btn.className="detail";},clear_day_buttons:function(){this.el_freqs.each(function(el){el.className="";})},register_event:function(){var uid=this.uid;var self=this;if(this.options.repeatBtn){this.options.repeatBtn.onclick=function(){if(!self.show_repeatBtn){self.draw_area.show();self.show_repeatBtn=true;if(!self.is_repeat)self.el_repeat_setting_text.onclick();}else{self.draw_area.hide();self.show_repeatBtn=false;}}}
this.el_repeat_setting_text.onclick=function(){self.el_repeat_setting.checked=!self.el_repeat_setting.checked;self.el_repeat_setting.onclick();}
this.el_repeat_setting.onclick=function(){var fieldsets=[self.el_freq_fieldset,self.el_detail_fieldset,self.el_exdate_fieldset,self.el_detailbtn_fieldset];if(this.checked){self.is_repeat=true;fieldsets.invoke('show');self.toggle_fieldset();self.el_detail_fieldset.hide();(self.options.referer=='memorial'||self.options.isLunar)?self.el_freq_yearly.onclick():self.el_freq_weekly.onclick();if(self.options.repeatIcon)self.options.repeatIcon.src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon09.gif";}else{self.is_repeat=false;fieldsets.invoke('hide');self.display_description();if(self.options.repeatIcon)self.options.repeatIcon.src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon10.gif";}}
this.el_repeat_setting.onclick();this.el_detailbtn_fieldset_btn.onclick=function(){self.el_detail_fieldset.toggle();this.className=(self.el_detail_fieldset.style.display!="none")?"simple":"detail";}
this.el_freq_daily.onclick=function(){self.on_freq_selected('daily');this.className="on";}
this.el_freq_weekly.onclick=function(){self.on_freq_selected('weekly');this.className="on";}
this.el_freq_monthly.onclick=function(){self.on_freq_selected('monthly');this.className="on";}
this.el_freq_yearly.onclick=function(){self.on_freq_selected('yearly');this.className="on";}
this.el_autoset_weekday.onclick=function(){self.set_repeat_info({freq:'WEEKLY',interval:1,byday:'MO,WE,TU,TH,FR'});self.display_description('(평일마다)');this.className="on";}
this.el_autoset_weekend.onclick=function(){self.set_repeat_info({freq:'WEEKLY',interval:1,byday:'SA,SU'});self.display_description('(주말마다)');this.className="on";}
this.el_autoset_100d.onclick=function(){self.set_repeat_info({freq:'DAILY',interval:100});this.className="on";}
var until_on=$(uid+'_until_on');until_on.has_date_selector=true;until_on.onfocus=function(){date_selector.detach();date_selector.attach(until_on);}
Event.observe(until_on,'keypress',function(event){if(!event)event=window.event;var key=event.which||event.keyCode;if(key==Event.KEY_RETURN){date_selector.detach();Event.stop(event);}});var until_chk=$(uid+'_until_chk');until_chk.onclick=function(){if(this.checked){until_on.disable();until_on.addClassName("formDisable");}else{until_on.enable();try{until_on.onfocus();}catch(e){}
until_on.removeClassName("formDisable");}}
until_chk.onclick();},register_event_of_expanded:function(){var uid=this.uid;var self=this;var interval_el=$(uid+'_interval');if(interval_el)interval_el.onchange=function(){self.display_description();}
if(this.selected_freq=='weekly'){$(uid+'_weekday_panel').select('.check').each(function(el){el.onclick=function(){self.display_description();}})}else if(this.selected_freq=='monthly'||this.selected_freq=='yearly'){var event_panel=[$(uid+'_weekno_panel'),$(uid+'_weekday_panel'),$(uid+'_day_panel')];if(this.selected_freq=='yearly')event_panel.push($(uid+'_month_panel'));event_panel.each(function(panel){panel.select('.check').each(function(el){el.enable();el.onclick=function(){self.display_description();}});});$(uid+'_week_based').onclick=function(){self.selected_detail='week_select';$(uid+'_week_based_panel').show();$(uid+'_day_based_panel').hide();self.set_default_value();};$(uid+'_day_based').onclick=function(){self.selected_detail='day_select';$(uid+'_week_based_panel').hide();$(uid+'_day_based_panel').show();self.set_default_value();};}},set_default_value:function(){var start_at=null;if(this.start_date_id)start_at=DateConverter.str_to_date(this.start_date_id.value);if(!start_at&&this.options.start_at_of_event)start_at=this.options.start_at_of_event;if(!start_at)start_at=new Date();var weekseq_of_month=Math.floor((start_at-start_at.firstday_of_month())/86400000/7);var wday=start_at.getDay();var month=start_at.getMonth()+1;var day=start_at.getDate();if(this.selected_freq=='weekly'){var weekday_el=$(this.uid+'_weekday_panel').select('.check');weekday_el.each(function(el){el.checked=false});weekday_el[(wday+6)%7].checked=true;}else if(this.selected_freq=='monthly'||this.selected_freq=='yearly'){var weekno_el=$(this.uid+'_weekno_panel').select('.check');var weekday_el=$(this.uid+'_weekday_panel').select('.check');var day_el=$(this.uid+'_day_panel').select('.check');[weekno_el,weekday_el,day_el].each(function(elements){elements.each(function(el){el.checked=false})});weekno_el[weekseq_of_month].checked=true;weekday_el[(wday+6)%7].checked=true;day_el[day-1].checked=true;if(this.selected_freq=='yearly'){var month_el=$(this.uid+'_month_panel').select('.check');month_el.each(function(el){el.checked=false});month_el[month-1].checked=true;}}
this.display_description();},display_description:function(description){var _desc="(반복설정을 하지 않았습니다.)";if(description){this.el_description.update(description);return;}
if(!this.is_repeat){this.el_description.update(_desc);return;}
var interval=1;var interval_el=$(this.uid+'_interval');if(interval_el){var _interval=new Number(interval_el.value);interval=isNaN(_interval)?1:_interval;}
switch(this.selected_freq){case'daily':_desc=(interval==1)?"매일 ":interval+"일마다 ";break;case'weekly':_desc=(interval==1)?"매주 ":interval+"주마다 ";_desc+=this.get_selected_name_of_week_panel();break;case'monthly':_desc=(interval==1)?"매월 ":interval+"개월마다 ";_desc+=(this.selected_detail=="week_select")?this.get_selected_name_of_week_panel():this.get_selected_name_of_day_panel();break;case'yearly':_desc=(interval==1)?"매년 ":interval+"년마다 ";_desc+=this.get_selected_name_of_month_panel()+" ";_desc+=(this.selected_detail=="week_select")?this.get_selected_name_of_week_panel():this.get_selected_name_of_day_panel();break;}
this.el_description.update(_desc);},get_selected_name_of_week_panel:function(){var weekno_name="",weekday_name="";var weekno_value={'1':"첫번째",'2':"두번째",'3':"세번째",'4':"네번째",'-1':"마지막"};var weekday_value={'MO':"월요일",'TU':"화요일",'WE':"수요일",'TH':"목요일",'FR':"금요일",'SA':"토요일",'SU':"일요일"};var week_value=this.get_selected_value_of_week_panel();week_value[0].each(function(weekno,cnt){weekno_name+=((cnt>0)?", ":"")+weekno_value[weekno];})
week_value[1].each(function(weekday,cnt){weekday_name+=((cnt>0)?", ":"")+weekday_value[weekday];})
return weekno_name+" "+weekday_name;},get_selected_name_of_month_panel:function(){var month_name="";var month_value=this.get_selected_value_of_month_panel();month_value.each(function(month,cnt){month_name+=((cnt>0)?", ":"")+month+"월";})
return month_name;},get_selected_name_of_day_panel:function(){var day_name="";var day_value=this.get_selected_value_of_day_panel();day_value.each(function(day,cnt){day_name+=((cnt>0)?", ":"")+((day==-1)?"말":day)+"일";})
return day_name;},get_selected_value_of_month_panel:function(){var month=[];var month_panel=$(this.uid+'_month_panel');if(month_panel){var month_el=month_panel.select('.check');month_el.each(function(w,idx){if(w.checked)month.push(idx+1);});}
return month;},get_selected_value_of_week_panel:function(){var weekno=[],weekday=[];var weekno_panel=$(this.uid+'_weekno_panel');if(weekno_panel){var weekno_el=weekno_panel.select('.check');var weekno_value=[1,2,3,4,-1];weekno_el.each(function(w,idx){if(w.checked)weekno.push(weekno_value[idx]);});}
var weekday_panel=$(this.uid+'_weekday_panel');if(weekday_panel){var weekday_el=weekday_panel.select('.check');var weekday_value=["MO","TU","WE","TH","FR","SA","SU"];weekday_el.each(function(w,idx){if(w.checked)weekday.push(weekday_value[idx]);});}
return[weekno,weekday];},get_selected_value_of_day_panel:function(){var day=[];var day_panel=$(this.uid+'_day_panel');if(day_panel){var day_el=day_panel.select('.check');day_el.each(function(w,idx){if(w.checked){day.push((idx==31)?-1:idx+1);}});}
return day;},get_selected_interval:function(){var interval=1;var interval_el=$(this.uid+'_interval');if(interval_el){var _interval=new Number(interval_el.value);interval=isNaN(_interval)?1:_interval;}
return interval;},make_rrule:function(){var rrule=$H();if(!this.is_repeat||!this.selected_freq)return rrule;rrule.set('freq',this.selected_freq.toUpperCase());rrule.set('interval',this.get_selected_interval());if(this.selected_freq=="weekly"){var week_value=this.get_selected_value_of_week_panel();var byday_rule="",byday_cnt=0;week_value[1].each(function(week){byday_rule+=((byday_cnt++>0)?",":"")+week;});if(byday_rule!="")rrule.set('byday',byday_rule);var weeks_name=["SU","MO","TU","WE","TH","FR","SA"];var start_at=null;if(this.start_date_id)start_at=DateConverter.str_to_date(this.start_date_id.value);if(!start_at)start_at=new Date();if(byday_rule==weeks_name[start_at.getDay()])rrule.set('byday',null);}else if(this.selected_freq=="monthly"||this.selected_freq=="yearly"){var month_rule="",day_rule="",byday_rule="",byday_cnt=0;if(this.selected_freq=="yearly"){var month_value=this.get_selected_value_of_month_panel();month_value.each(function(month,cnt){month_rule+=((cnt>0)?",":"")+month;});if(month_rule!="")rrule.set('bymonth',month_rule);}
if(this.selected_detail=="week_select"){var week_value=this.get_selected_value_of_week_panel();week_value[0].each(function(weekno){week_value[1].each(function(week){byday_rule+=((byday_cnt++>0)?",":"")+weekno+week;});});if(byday_rule!="")rrule.set('byday',byday_rule);}else{var day_value=this.get_selected_value_of_day_panel();day_value.each(function(day,cnt){day_rule+=((cnt>0)?",":"")+day;});if(day_rule!="")rrule.set('bymonthday',day_rule);var start_at=null;if(this.start_date_id)start_at=DateConverter.str_to_date(this.start_date_id.value);if(!start_at)start_at=new Date();var month=start_at.getMonth()+1;var day=start_at.getDate();if(this.selected_freq=="monthly"&&day_rule==""+day)rrule.set('bymonthday',null);if(this.selected_freq=="yearly"&&month_rule==""+month&&day_rule==""+day){rrule.set('bymonth',null);rrule.set('bymonthday',null);}}}
return rrule;},on_submit:function(){if(!this.is_repeat)return true;var month_value=this.get_selected_value_of_month_panel();var week_value=this.get_selected_value_of_week_panel();var day_value=this.get_selected_value_of_day_panel();if(this.selected_freq=="weekly"){if(week_value[1].size()==0){calendar.notify('반복설정에서 <strong>반복할 요일</strong>을 선택해주세요.');return false;}}else if(this.selected_freq=="monthly"||this.selected_freq=="yearly"){if(this.selected_freq=="yearly"&&month_value.size()==0){calendar.notify('반복설정에서 <strong>반복할 월</strong>을 선택해주세요.');return false;}
if(this.selected_detail=="week_select"){if(week_value[0].size()==0||week_value[1].size()==0){calendar.notify('반복설정에서 <strong>반복할 주, 요일</strong>을 선택해주세요.');return false;}}else{if(day_value.size()==0){calendar.notify('반복설정에서 <strong>반복할 날짜</strong>를 선택해주세요.');return false;}}}
if(!$(this.uid+'_until_chk').checked){var until_element=$(this.uid+'_until_on');var until=DateConverter.str_to_date(until_element.value);if(!until){calendar.notify('반복종료일 입력이 잘못되었습니다. 키보드로 직접입력을 할 때는 "2007년 9월 18일" 같은 형식으로 입력해주세요.');date_selector.detach();date_selector.attach(until_element);return false;}
if(this.start_date_id){var _startDate=DateConverter.str_to_date($(this.start_date_id).value);if(until&&_startDate.after(until,true)){calendar.notify('반복종료일은 일정의 시작보다 늦어야 해요!');date_selector.detach();date_selector.attach(until_element);return false;}}}
this.on_submit_process();return true;},on_submit_process:function(){var prefix=this.input_prefix;var hashed_rrule=this.make_rrule();if(hashed_rrule.get('freq')){var rrule="";hashed_rrule.each(function(r){if(r.value&&r.value!="")rrule+=((rrule=="")?"":";")+(new String(r.key).toUpperCase())+"="+r.value;});if(!$(this.uid+'_until_chk').checked){var until=DateConverter.str_to_date($(this.uid+'_until_on').value);if(until)rrule+=";UNTIL="+until.format("#{yy}#{mm}#{dd}T#{HH}#{MM}#{SS}Z");}
$(prefix+'_setting').value="true";$(prefix+'_rrule').value=rrule;}else{$(prefix+'_setting').value="false";}},lunar_selected_callback:function(is_solar){this.toggle_fieldset();this.set_repeat_info({freq:"YEARLY",interval:1});(is_solar)?this.el_detailbtn_fieldset.show():this.el_detailbtn_fieldset.hide();},generate_month_form:function(){var uid=this.uid;var contents="<ul class='checker'>";$R(1,12).each(function(i){contents+="<li><input id='"+uid+"_months_"+i+"' class='check' type='checkbox' /><label for='"+uid+"_months_"+i+"'>"+i+"월</label></li>";if(i%6==0&&i>0)contents+="<li class=\"clear\"></li>";})
contents+="<li class=\"clear\"></li></ul>";return contents;},generate_day_form:function(){var uid=this.uid;var contents="";$R(1,31).each(function(i){contents+="<li><input id='"+uid+"_days_"+i+"' class='check' type='checkbox' /><label for='"+uid+"_days_"+i+"'>"+i+"일</label></li>";if(i%6==0&&i>0)contents+="<li class=\"clear\"></li>";})
contents+="<li><input id='"+uid+"_days_32' class='check' type='checkbox' /><label for='"+uid+"_days_32'>말일</label></li><li class='clear'></li>";return contents;}};var LayoutGenerator={VALID_LAYOUT:$w("monthly weekly daily yearly agenda"),t_navigation:function(){if(this.__t_navigation)return this.__t_navigation;var html=[]
html.push("<div id='contentNavigation'>");html.push("<dl id='naviDay'>");html.push("<dd class='prev'><button class='prev_btn'><span>이전</span></button></dd>");html.push("<dt>2009</dt>");html.push("<dd class='next'><button class='next_btn'><span>다음</span></button></dd>");html.push("<dd class='today'><button class='today_btn'><span>오늘</span></button></dd>");html.push("</dl>");html.push("<a href='javascript:calendar.print();' class='print'>인쇄</a>");html.push("<ul id='modeTab'>");html.push("<li id='modeMenu0'><span>일</span></li>");html.push("<li id='modeMenu1'><span>주</span></li>");html.push("<li id='modeMenu2'><span>월</span></li>");html.push("<li id='modeMenu3'><span>년</span></li>");html.push("<li id='modeMenu4'><span>전체</span></li>");html.push("</ul>");html.push("</div>");this.__t_navigation=html.join("");return this.__t_navigation;},t_monthly:function(){if(this.__t_monthly)return this.__t_monthly;var html=[];html.push("<div id='main_container' style='overflow-y: visible; height: 703px;'>");html.push("<div id='mv_container'>");html.push("<table id='monthly_header' cellspacing='0' cellpadding='0'>");html.push("<tr class='header'>");html.push("<td class='holiday' nowrap><label>일요일</label></td>");html.push("<td nowrap><label>월요일</label></td>");html.push("<td nowrap><label>화요일</label></td>");html.push("<td nowrap><label>수요일</label></td>");html.push("<td nowrap><label>목요일</label></td>");html.push("<td nowrap><label>금요일</label></td>");html.push("<td class='saturday' nowrap><label>토요일</label></td>");html.push("</tr>");html.push("</table>");html.push("<div id='mv_event_container' class='mv_event_container'>");html.push("<div id='mv_row_container_0' style='top: 0%;  height: 17%;' class='mv_row_container'></div>");html.push("<div id='mv_row_container_1' style='top: 17%; height: 17%;' class='mv_row_container'></div>");html.push("<div id='mv_row_container_2' style='top: 34%; height: 16%;' class='mv_row_container'></div>");html.push("<div id='mv_row_container_3' style='top: 50%; height: 17%;' class='mv_row_container'></div>");html.push("<div id='mv_row_container_4' style='top: 67%; height: 17%;' class='mv_row_container'></div>");html.push("<div id='mv_row_container_5' style='top: 84%; height: 16%;' class='mv_row_container'></div>");html.push("</div>");html.push("<div id='mv_draggable_container' style='position:absolute;top:0;left:0;height:0px;'></div>");html.push("<div id='monthly_more' class='lpop' style='position:absolute; background-color:transparent; z-index:500; top:80px;left:10px;display:none;'>");html.push("<div class='header'><div class='wrap'>");html.push("<h1><label id='monthly_more_date'></label><a href='javascript:;' id='monthly_more_close' class='btnClose'>닫기</a></h1>");html.push("</div></div><div id='monthly_more_content' class='popContent more'></div>");html.push("<div class='footer'><div class='wrap'><div class='back'></div></div></div>");html.push("</div>");html.push("</div>");html.push("</div>");this.__t_monthly=html.join("");return this.__t_monthly;},t_weekly:function(){if(this.__t_weekly)return this.__t_weekly;var html=[];html.push("<div id='wv_container'>");html.push("<div id='weekly_header'>");html.push("<div id='weekly_allday_events_owner'></div>");html.push("<table id='weekly_header_table' class='weekly_header' cellspacing='0' cellpadding='0'>");html.push("<tr class='header'>");html.push("<th class='time' nowrap>&nbsp;</th>");html.push("<th class='day holiday'>(일)</th>");html.push("<th class='day'>(월)</th>");html.push("<th class='day'>(화)</th>");html.push("<th class='day'>(수)</th>");html.push("<th class='day'>(목)</th>");html.push("<th class='day'>(금)</th>");html.push("<th class='day saturday'>(토)</th>");html.push("</tr>");html.push("<tr class='row'>");html.push("<th class='time' nowrap>종일일정</th>");html.push("<td class='day holiday' nowrap>&nbsp;</td>");html.push("<td class='day' nowrap>&nbsp;</td>");html.push("<td class='day' nowrap>&nbsp;</td>");html.push("<td class='day' nowrap>&nbsp;</td>");html.push("<td class='day' nowrap>&nbsp;</td>");html.push("<td class='day' nowrap>&nbsp;</td>");html.push("<td class='day saturday' nowrap>&nbsp;</td>");html.push("</tr>");html.push("</table>");html.push("</div>");html.push("<div id='weekly_grid' style='height: 600px;'>");html.push("<div id='weekly_events_owner'></div>");html.push("<table id='weekly_grid_table' class='weeklyGrid' cellspacing='0' cellpadding='0'>");for(var i=6;i<=29;i++){var pm=(12<=i&&i<=23)?true:false;html.push("<tr class='row ");pm?html.push("pm "):html.push("am ");(i==23)?html.push('afternoon'):html.push('morning');html.push("'>");html.push("<td class='time' nowrap>");pm?html.push("오후 "):html.push("오전 ");html.push((i-1)%12+1);html.push("시</td>");html.push("<td class='day holiday'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("<td class='day saturday'><div class='cell'><div class='top'></div><div class='bottom'></div></div></td>");html.push("</tr>");}
html.push("</table>");html.push("</div>");html.push("</div>");this.__t_weekly=html.join("");return this.__t_weekly;},t_daily:function(){if(this.__t_daily)return this.__t_daily;var html=[];html.push("<div id='dv_container'>");html.push("<div id='daily_header' class='dailyHeader'>");html.push("<span class='desc'></span> <span class='whatday'></span> <span class='lunarday'></span>");html.push("</div>");html.push("<table id='daily_allday' cellspacing='0' cellpadding='0'>");html.push("<tr><td class='time' nowrap>종일일정</td><td id='daily_allday_events_owner' class='owner'></td></tr>");html.push("</table>");html.push("<div id='daily_grid'><div id='daily_cells'>");for(var i=6;i<=29;i++){var pm=(12<=i&&i<=23)?true:false;html.push("<div class='row ");pm?html.push("pm "):html.push("am ");(i==23)?html.push('afternoon'):html.push('morning');html.push("'>");html.push("<div class='time'>");pm?html.push("오후 "):html.push("오전 ");html.push((i-1)%12+1);html.push("시</div>");html.push("<div class='cell'><div class='top_cell'></div><div class='bottom_cell'></div></div></div>");}
html.push("</div><div id='daily_events_owner'></div></div></div>");this.__t_daily=html.join("");return this.__t_daily;},t_agenda:function(){if(this.__t_agenda)return this.__t_agenda;var html=[];html.push("<div id='temp' class='blockQuote'>");html.push("<table id='agenda_table_header' class='dcalTable' cellspacing='0' cellpadding='0'><thead>");html.push("<tr class='header'>");html.push("<th class='completed' nowrap><div class='left'><a id='agendaCompleteSort' onclick='calendar.av.order_by_complete(this);' class='down'>완료</a></div></th>");html.push("<th class='during' nowrap>");html.push("<div><a id='agendaTimeSort' onclick='calendar.av.order_by_time(this);' class='down'>기간</a></div");html.push("</th>");html.push("<th class='flexable'><a id='agendaTitleSort' onclick='calendar.av.order_by_title(this);' class='down'>제목</a></th>");html.push("<th class='info end' nowrap>");html.push("<div class='right'><a id='popAgendaInfo' class='fold'>정보</a></div>");html.push("</th>");html.push("</tr>");html.push("</thead>");html.push("</table>");html.push("<div id='agenda_view_livegrid' class='livegrid'>");html.push("<table id='agenda_table' class='dcalTable' cellspacing='0' cellpadding='0'>");html.push("<tbody id='agenda_view_list'>");html.push("</tbody>");html.push("</table>");html.push("</div>");html.push("<div id='agenda_view_message' style='text-align:center; margin-top:10px;'></div>");html.push("<div class='buttonArea' style='margin-top:9px;padding:0;border:none;'>");html.push("<div class='rbutton'>");html.push("<a onclick='calendar.av.expand_all();' class='open'>모두 열기</a> | <a onclick='calendar.av.collapse_all();' class='close'>모두 닫기</a>");html.push("</div>");html.push("<a onclick=\"calendar.av.render('prev_this_year');\"><img id='prev_this_year_btn' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_prev.gif' width='76' height='24' alt='올해지난일정' /></a>");html.push("<a onclick=\"calendar.av.render('prev');\"><img src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_prev3.gif' width='75' height='24' alt='이전 3일' /></a>");html.push("<a onclick=\"calendar.av.render('next');\"><img src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_next3.gif' width='75' height='24' alt='다음 3일' /></a>");html.push("<a onclick=\"calendar.av.render('next_this_year');\"><img id='next_this_year_btn' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_next.gif' width='76' height='24' alt='올해남은일정' /></a>");html.push("<div class='clear'></div>");html.push("</div>");html.push("</div>");this.__t_agenda=html.join("");return this.__t_agenda;},t_yearly:function(){if(this.__t_yearly)return this.__t_yearly;return this.__t_yearly;},launch:function(view){if(this.VALID_LAYOUT.include(view)){this.draw_template(view);this.setup(view);}else{history_controller.go(view);}},get_template:function(view){return eval("this.t_"+view).call();},draw_template:function(view){$('layout_main').update([this.t_navigation(),"<div id='calendar_panel'>",this.get_template(view),"</div>"].join("\n"));},setup:function(view){PageLayout.setLayout();gnb_controller.handle_style({id:"gnbMenu0"});Object.extend($FE('contentNavigation'),new ContentNavigation());if($('contentNavigation'))$('contentNavigation').set_view(view);if(view=="monthly"){var mv=new MvManager('mv_event_container');calendar.mv=mv;mv.start();if(calendar.tiara)tiara('monthly_view');}else if(view=="weekly"){Object.extend($FE('weekly_allday_events_owner'),new WeeklyAlldayEventsOwner());Object.extend($FE('weekly_events_owner'),new WeeklyEventsOwner());Object.extend($('wv_container'),new WeeklyView());$FE('layout_main').on_resize=function(){this.style.overflowY="hidden";var wg=$FE('weekly_grid');if(wg){wg.target_height=calendar.height-116;wg.style.height=wg.target_height+"px";if(!Prototype.Browser.IE)$FE("weekly_grid_table").style.width=$FE("weekly_header").offsetWidth+"px";var wv=$FE('wv_container');if(wv&&wv.on_resize)wv.on_resize();}else{console.log('[WARN] $FE("weekly_grid") is not available yet');}};safe_excute(function(){$FE('wv_container').start()});safe_excute(function(){$FE('layout_main').on_resize()});if(calendar.tiara)tiara('weekly_view');}else if(view=="daily"){Object.extend($FE('daily_allday_events_owner'),new DailyAlldayEventsOwner());Object.extend($FE('daily_events_owner'),new DailyEventsOwner());Object.extend($('daily_grid'),new DailyGrid());$FE('layout_main').on_resize=function(start){this.style.overflowY="hidden";var dg=$FE('daily_grid');if(dg&&dg.on_resize&&!start){dg.target_height=calendar.height-115;dg.style.height=dg.target_height+"px";dg.on_resize();}};safe_excute(function(){$FE('daily_grid').start()});safe_excute(function(){$FE('layout_main').on_resize(true)});if(calendar.tiara)tiara('daily_view');}else if(view=="agenda"){calendar.av=new AgendaView('agenda_view_list',3,'agenda_view_livegrid');Object.extend($('popAgendaInfo'),new AgendaViewFilterSelector(calendar.av));if(!calendar.preview)new LazyPopupWindow("agenda_view_list");$FE('layout_main').on_resize=function(){this.style.overflowY="auto";calendar.av.area_resize();};safe_excute(function(){$FE('layout_main').on_resize()});if(calendar.tiara)tiara('agenda_view');}},temp:Prototype.emptyFunction};var EventView=Class.create();EventView.prototype={cursor:false,range:false,headers:$A(),header_template:new Template(" <tr id=\"#{header_id}\" class=\"agenda_header\"><th class=\"date_all\" colspan=\"4\">\r\n"+"  <div class=\"agenda_date_all\">\r\n"+"   <label>#{header_date}</label>\r\n"+"  </div>\r\n"+" </th></tr>\r\n"),header_rear_template:new Template(" <tr id=\"#{header_id}_rear\" style='background:none; height:0px; line-height:0px;'></tr>\r\n"),special_event_main_template:new Template("  <tr id=\"#{event_id}_main\" class=\"agenda_main\">\r\n"+"   <td class='done_event' nowrap><span><img id=\"#{event_id}_info_special_completed\" src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon24.gif\" width=\"15\" height=\"17\" alt=\"완료\" /></span></td>\r\n"+"   <td class=\"during\" nowrap style=\"text-align:left;\"><div id=\"#{event_id}_category\" title=\"#{category_name}\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top #{event_color};\"></div><div style=\"height:18px; line-height:18px;\"><label id=\"#{event_id}_date\" class=\"fc_62a400\" style=\"color:#{event_color};\">#{event_date}</label></div><div class=\"clear\"></div></td>\r\n"+"   <td class=\"flexable\"><div style=\"float:left; padding:0px 16px 0px 10px;\"><span id=\"#{event_id}_title\">#{event_title}</span></div></td>\r\n"+"   <td class=\"info\" nowrap>\r\n<div class=\"wrapper\">"+"    <img id=\"#{event_id}_info_special\" src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon18.gif\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"특별일정\" />\r\n"+"   </div></td>\r\n"+"  </tr>\r\n"),memorial_date_template:new Template(" <form id='#{event_id}_date_edit_form'>\r\n"+"  <input id='#{event_id}_date_edit_field' type='text' class='editor_date_field' />\r\n"+" </form>"),header_id_format:"agenda_#{yy}-#{mm}-#{dd}",header_date_format:"#{yy}년 #{m}월 #{d}일 (#{ka})",main_time_format:"#{kp} #{II}시#{MM}분",date_format:"#{yy}-#{mm}-#{dd}",memorial_date_format:"#{yy}년 #{mm}월 #{dd}일",info_link_url:["http://mimg.daum-img.net/dcal_2/01_common/icon/icon10_on.gif","http://mimg.daum-img.net/dcal_2/01_common/icon/icon10_off.gif"],info_image_url:["http://mimg.daum-img.net/dcal_2/01_common/icon/icon06_on.gif","http://mimg.daum-img.net/dcal_2/01_common/icon/icon06_off.gif"],info_repeat_url:["http://mimg.daum-img.net/dcal_2/01_common/icon/icon07_on.gif","http://mimg.daum-img.net/dcal_2/01_common/icon/icon07_off.gif"],info_alarm_url:["http://mimg.daum-img.net/dcal_2/01_common/icon/icon09_on.gif","http://mimg.daum-img.net/dcal_2/01_common/icon/icon09_off.gif"],cursor_step:1,livegrid_height:350,initialize:function(ename,cursor_step,grid){this.ename=ename;this.parent=$(this.ename);this.cursor_step=cursor_step||1;var grid_opt={element:grid,options:{size:3,height:this.livegrid_height,header_table:"agenda_table_header",grid_table:"agenda_table"}}
this.livegrid=new LiveGrid(grid,this.fetch.bind(this),grid_opt.options);this.render('curr');this.register_event_reactor();this.register_calendar_reactor();this.date_observer_instance=$A;if(grid_opt.options.header_table&&grid_opt.options.grid_table)this.init_resizer_set(grid_opt);},init_resizer_set:function(grid){this.grid_div=$(grid.element);this.header_table=$(grid.options.header_table);this.grid_table=$(grid.options.grid_table);this.onresize_timer=null;this.grid_resizer_timer=null;this.area_resize();Event.observe(window,"resize",this.on_resize.bind(this));window.viewResizer=this.area_resize.bind(this);},on_resize:function(){window.clearTimeout(this.onresize_timer);this.onresize_timer=window.setTimeout(this.area_resize.bind(this),500);},area_resize:function(){window.clearTimeout(this.grid_resizer_timer);if(this.header_table){this.grid_div.style.width="100%";this.header_table.style.width="100%";this.grid_table.style.width="100%";this.grid_resizer_timer=window.setTimeout(function(){if(Prototype.Browser.IE){var headerWidth=this.header_table.offsetWidth;this.grid_div.style.width=headerWidth+"px";if(this.grid_table)this.grid_table.style.width=headerWidth+"px";}else{this.grid_table.style.width=this.header_table.offsetWidth+"px";this.header_table.style.width=this.header_table.offsetWidth+"px";}}.bind(this),500);}},agenda_sub_toggle:function(folder,sub){Element.toggle(sub);},render:function(func){window.scrollTo(0,0);this.sort={selected:"time",complete:{direction:"asc"},time:{direction:"asc"},title:{direction:"asc"},class_type:{direction:"asc"}};this.flag={image:false,alarm:false,repeat:false,link:false};this.func=func;var self=this;self[self.func].call(self);self.draw();},set_cursor_date:function(){var nav=$('contentNavigation');if(nav&&nav.set_current_text)nav.set_current_text(this.cursor.format("#{yy}년 #{m}월 #{d}일"));},register_event_reactor:function(){this.event_reactor=new Reactor(this.ename);this.event_reactor.created=this.event_created.bind(this);this.event_reactor.updated=this.event_updated.bind(this);this.event_reactor.destroyed=this.event_destroyed.bind(this);actor.event.add_reactor(this.event_reactor);},register_calendar_reactor:function(){this.calendar_reactor=new Reactor(this.ename);this.calendar_reactor.created=this.calendar_created.bind(this);this.calendar_reactor.updated=this.calendar_updated.bind(this);this.calendar_reactor.destroyed=this.calendar_destroyed.bind(this);actor.calendar.add_reactor(this.calendar_reactor);},draw:function(){this.cleanup();this.pre_draw();if(this.cursor_step>1)this.draw_headers();(this.livegrid.active)?this.livegrid.reset():this.draw_events();this.post_draw();this.reset_grid_height();if(!calendar.preview)model.alarm.load(this);},pre_draw:function(){this.area_resize();},draw_headers:function(){this.headers.clear();if(this.sort.selected=="time"&&this.header_mandatory){this.range_to_array(this.range,this.sort.time.direction).each(function(date){this.draw_header(date);}.bind(this));}},draw_header:function(date,element){if(!this.headers.include(date.format(this.date_format))){var contents={header_id:date.format(this.header_id_format),header_date:date.format(this.header_date_format)};if(element){$(element).insert({before:this.header_template.evaluate(contents)});$(element).insert({before:this.header_rear_template.evaluate(contents)});}else{this.parent.insert({bottom:this.header_template.evaluate(contents)});this.parent.insert({bottom:this.header_rear_template.evaluate(contents)});}
this.headers.push(date.format(this.date_format));}
return $(date.format(this.header_id_format)+"_rear");},append_headers:function(event){if(this.sort.selected=="title"||this.header_mandatory)return;if(this.cursor_step==1)return;$R(event.start_at,event.end_at,true).toArray().reject(function(date){return this.headers.include(date.format(this.date_format))||date.before(this.range.start)||date.after(this.range.end);}.bind(this)).each(function(not_exist){this.headers.each(function(exist){exist=Date.parse_text(exist);if((this.sort.time.direction=="asc"&&not_exist.before(exist))||(this.sort.time.direction=="desc"&&not_exist.after(exist))){this.draw_header(not_exist,exist.format(this.header_id_format));throw $break;}}.bind(this));if(!this.headers.include(not_exist.format(this.date_format))){this.draw_header(not_exist);}
this.headers=this.headers.sortBy(function(value){return value;});if(this.sort.time.direction=="desc")this.headers.reverse(this.headers);}.bind(this));},fetch:function(page,size){return this.draw_events();},draw_events:function(events,previous_element){var models=events||(model.event.list(this.range.start,this.range.end)).concat(model.special_event.list(this.range.start,this.range.end));var self=this;models=this.expand_repeat(models);if(this.sort.selected=="time"){models=models.sortBy(function(event){return event.start_at;});}else if(this.sort.selected=="complete"){models=models.sortBy(function(event){return event.completed_at;});}else{models=models.sortBy(function(event){return event.title;});}
if(this.sort[this.sort.selected].direction=="desc"){models.reverse(models);}
if(this.livegrid.active&&!events){models=models.findAll(function(model,index){if(index>=(this.livegrid.page+1)*this.livegrid.options.size){throw $break;}
return index>=this.livegrid.page*this.livegrid.options.size;}.bind(this));}
models.each(function(event){self.draw_event(event,null,previous_element);});$j('img.attach_preview').fancyzoom();return models.size();},get_class_type_name:function(class_type,is_lunar){switch(class_type){case 1:type_name="생일";break;case 2:type_name="결혼기념일";break;case 3:type_name="연애시작일";break;case 4:type_name="제사";break;case 5:type_name="창립기념일";break;case 0:type_name="기타";break;default:type_name="기타";}
var str=calendar.memorialSet[class_type]+type_name
if(is_lunar)str+="<span class=\"lunar_mark\">(<label class=\"type\">음력</label>)</span>"
return str;},draw_event:function(event,service_type,previous_element){var self=this;var cal=model.calendar.get(event.calendar_id)||{visible:event.is_special(),color:'#D92D1E'};if(!calendar.preview){if(service_type==1){if(event.is_memorial()==false)return;}else{if(cal.visible==false)return;}}
if(this.flag.image||this.flag.alarm||this.flag.repeat||this.flag.link){if(this.flag.image&&!event.attach)return;if(this.flag.alarm&&!model.alarm.get(event.id))return;if(this.flag.repeat&&!event.repeat_id)return;if(this.flag.link&&!event.url)return;}
var _alarm=model.alarm.get(event.id);this.event_range_to_array($R(event.start_at,event.end_at,true),event.allday).each(function(date){var _dday=Date.diff_day(new Date(),event.start_at)+1;var contents=Object.extend({category_name:event.calendar_name(),event_original_id:event.id,event_id:date.format(self.header_id_format+"_"+event.r_id()),event_title_info:(event.is_memorial())?"<div style='float:left;display:inline;margin-right:5px;'>"+self.get_class_type_name(event.class_type,event.is_lunar())+"</div> ":"",event_title:(event.title&&event.title.length>0)?event.title.escapeHTML():"(제목없음)",event_elapse_time:"",event_color:cal.color,event_date:(self.sort.selected=="title")?self.format_range(event,date).replaceAll(" ",""):self.format_range(event,date),event_date_format:event.is_lunar()?"<span class='lunar_mark'>(<label>"+event.lunar_on.format("#{mm}/#{dd}")+"</label>)</span>":"",event_description:(event.description||"(내용을 입력해 주세요)").escapeHTML().gsub('\n',"<BR>"),event_attach:(event.attach&&event.attach.length>0)?event.attach:"http://mimg.daum-img.net/dcal_2/07_etc/img_ex.gif",event_attach_url:(event.attach&&event.attach.length>0)?"/miscellany/view_image?image="+encodeURIComponent(event.attach):"http://mimg.daum-img.net/dcal_2/07_etc/img_ex.gif",event_class_type:self.get_class_type_name(event.class_type,event.is_lunar()),event_dday:(_dday<0)?'날짜 지났음':('D-'+Math.abs(_dday)+'일'),event_url:event.url?event.url:'http://',event_link_go:event.url?event.url:'',start_at_param:event.start_at.to_param(),event_is_repeating:(event.is_repeating())?true:false,info_image_src:(event.attach&&event.attach.length>0)?self.info_image_url[0]:self.info_image_url[1],info_alarm_src:(_alarm&&typeof(_alarm)!='string')?self.info_alarm_url[0]:self.info_alarm_url[1],info_repeat_src:event.repeat_id?self.info_repeat_url[0]:self.info_repeat_url[1],info_link_src:event.url?self.info_link_url[0]:self.info_link_url[1],edit_view:event.is_memorial()?"memorial_edit:"+event.id:"event_edit:"+event.id,event_title_decoration:event.completed_at?'text-decoration:line-through;':'',event_link_to:event.url?"<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' width='13' height='8' title='"+event.url.gsub(/\"|\'/,'')+" 으로 이동하기' class='link_to_url' onclick='calendar.link_to_url(event, \""+escape(event.url)+"\");' style='margin:3px;' />":"",event_completed_img:event.completed_at?'<img src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon23.gif" width="15" height="17" alt="완료" />':'<img src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon24.gif" width="15" height="17" alt="완료" />'},event);if(!event.calendar_id){contents.event_id=date.format(self.header_id_format+"_special_"+event.id);contents.event_color=(event.holiday)?"red":"#2AAA5B";}
if(event.is_memorial()){contents.origin_start_at=(event._start_at||event.start_at).format(self.memorial_date_format);contents.event_id=date.format(self.header_id_format+"_memorial_"+event.r_id());if(event.is_repeating()){if(event.class_type==3){var elapsed_day=Date.diff_day((event._start_at||event.start_at).clear_time(),event.start_at.clear_time());if(elapsed_day==0)elapsed_day="시작";contents.event_elapse_time=" ("+elapsed_day+"일)";}else if(event.class_type==1){contents.event_elapse_time="<span class='age'>(만"+(event.start_at.getFullYear()-(event._start_at||event.start_at).getFullYear())+"세)</span>";}}}
if(self.sort.selected=="time"||(service_type==1)){if(self.cursor_step==1){if(event.calendar_id){if(previous_element){if(previous_element.id==self.ename){previous_element.insert({top:self.get_template_contents(contents,"all")});}else{previous_element.insert({after:self.get_template_contents(contents,"all")});}}else{self.parent.insert({bottom:self.get_template_contents(contents,"all")});}}else{self.parent.insert({bottom:self.get_template_contents(contents,"special")});}}else{if(event.calendar_id){if(previous_element&&previous_element.id==self.ename){previous_element.insert({top:self.get_template_contents(contents,"all")});}else{self.draw_header(date).insert({before:self.get_template_contents(contents,"all")});}}else{self.draw_header(date).insert({before:self.get_template_contents(contents,"special")});}}}else{contents.event_date=date.format("#{mm}/#{dd} ")+contents.event_date;if(event.calendar_id){if(previous_element){if(previous_element.id==self.ename){previous_element.insert({top:self.get_template_contents(contents,"all")});}else{previous_element.insert({after:self.get_template_contents(contents,"all")});}}else{self.parent.insert({bottom:self.get_template_contents(contents,"all")});}}else{self.parent.insert({before:self.get_template_contents(contents,"special")});}}
self.bind_ElementEvents(contents,event,service_type);});},bind_ElementEvents:function(contents,event,service_type){var self=this;$(contents.event_id+"_main").onmouseover=function(e){this.onmouseover=null;if(event.calendar_id){if(!calendar.preview&&event.writable()){var options={};if(!event.is_memorial()&&event.repeat_id&&(service_type!=1)){options={event:event,repeat_event:true};}
else{options={event:event,repeat_event:false};}
self.bind_InPlaceEditor(contents,event,options);self.bind_DateSelector(contents,event);self.bind_MemorialSelector(contents,event);self.bind_PopupWindow(contents,event,options);var event_del_btn=$(contents.event_id+"_delete_btn");if(event_del_btn){event_del_btn.onclick=function(){self.event_destroy(contents);}}
event_del_btn=null;}
else{$(contents.event_id+"_delete_btn").hide();$(contents.event_id+"_detail_btn").hide();}}
else{if(self.isTouch!=true){GeneralTooltip.create($(contents.event_id+'_info_special'),"이 일정은 운영자가 올린 일정이며<br />수정할 수 없습니다.",{className:'tooltip'});GeneralTooltip.create($(contents.event_id+'_info_special_completed'),"이 일정은 운영자가 올린 일정이며<br />완료할 수 없습니다.",{className:'tooltip'});}}
if(!calendar.preview&&event.writable())
self.register_field_event(contents);}},get_template_contents:function(contents,type){if(type=="all"){var ret=new Array();ret.push("<tr id=\"",contents.event_id,"_main\" class=\"agenda_main\">");ret.push("<td class='done_event' nowrap><span class='event_",contents.event_id,"_completed' style='cursor:pointer;'>",contents.event_completed_img,"</span></td>");ret.push("<td class=\"during\" nowrap style=\"text-align:left;\"><div style=\"margin-right:5px;\">");ret.push("<div id=\"",contents.event_id,"_category\" title=\"",contents.category_name,"\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top ",contents.event_color,";\"></div>");ret.push("<div id=\"",contents.event_id,"_date\" class=\"contenter\" style=\"color:",contents.event_color,";margin-left:2px;\" title=\"",contents.event_date,"\">",contents.event_date,"</div></div></td>");ret.push("<td class=\"flexable\" valign=\"middle\"><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;width:95%;height:auto;line-height:16px;\">");ret.push("<div style=\"display:inline;\">",contents.event_title_info,"<span id=\"",contents.event_id,"_title\" class=\"agenda_title\" style=\"",contents.event_title_decoration," float:left;\" >",contents.event_title,"</span>");ret.push("<a href=\"javascript:;\" onclick=\"calendar.av.agenda_sub_toggle(this, '",contents.event_id,"_sub');\" title=\"자세히 보기\" class=\"folder_open\">자세히 보기</a>",contents.event_link_to,"</div></div></td>");ret.push("<td class=\"info\" nowrap><img id=\"",contents.event_id,"_info_link\" src=\"",contents.info_link_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"링크설정을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_image\" src=\"",contents.info_image_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"이미지를 첨부/변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_alarm\" class=\"alarm\" src=\"",contents.info_alarm_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"알림을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_repeat\" src=\"",contents.info_repeat_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"반복설정을 변경하세요!\" /></td></tr>");ret.push("<tr id=\"",contents.event_id,"_sub\" style=\"display:none;\" class=\"agenda_sub\">");ret.push("<td class=\"subplan_all\" colspan=\"4\"><div class='subPlanImg'>, <img src='",contents.event_attach,"' class='attach_preview' width='181' height='80' style=\"cursor:pointer;\" /></div>");ret.push("<div class='subPlanDesc'><div class='info'><label>내용 :</label><div id=\"",contents.event_id,"_description\" class=\"desc\">",contents.event_description,"</div><div class=\"clear\"></div></div><div class='info'><label>링크 :</label>");ret.push("<div style=\"float:left;display:inline;\"><span id=\"",contents.event_id,"_link\" class=\"link\">",contents.event_url,"</span><a href=\"javascript:;\" onclick=\"window.open('",contents.event_link_go,"');\" style=\"margin-left:10px;\">");ret.push("<img src=\"http://mimg.daum-img.net/dcal_2/01_common/bnt_go.gif\" width=\"28\" height=\"16\" alt=\"GO\" style=\"vertical-align:middle;\" /></a></div><div class=\"clear\"></div></div>");ret.push("<div class=\"button\"><img id=\"",contents.event_id,"_delete_btn\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_del.gif\" width=\"28\" height=\"16\" alt=\"삭제\" />\r\n");ret.push("<img id=\"",contents.event_id,"_detail_btn\" onclick=\"history_controller.go('",contents.edit_view,"');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_view.gif\" width=\"58\" height=\"16\" alt=\"자세히보기\" /></div></div>");ret.push("<img onclick=\"Element.hide('",contents.event_id,"_sub');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_close.gif\" width=\"17\" height=\"10\" alt=\"닫기\" class=\"close\" /></td></tr>");return ret.join("");}else if(type=="special"){return this.special_event_main_template.evaluate(contents);}},register_field_event:function(contents){var _complete_el=$$('.event_'+contents.event_id+'_completed').first();if(_complete_el)_complete_el.onclick=this.update_complete.bind(this,contents);},make_request_url:function(event){return'/calendars/'+event.calendar_id+'/'+(event.is_memorial()?'memorials':'events')+'/'+event.id;},update_complete:function(event){var _value=(event.completed_at?'':today.to_param());var url=this.make_request_url(event);if(event.is_memorial()||!event.repeat){new Ajax.Request(url,{method:"put",parameters:'event[completed_at]='+_value,onFailure:function(transport){}});}else{var r=new RepeatEventAlert(url,'event[completed_at]='+_value,'put',event,{});}},bind_InPlaceEditor:function(contents,event,options){var url=this.make_request_url(event);Object.extend(options,{hoverClassName:"agenda_editable"});makeInPlaceEditor(contents.event_id+"_title",'event[title]',url,options);options.isLink=true;makeInPlaceEditor(contents.event_id+"_link",'event[url]',url,options);options.isLink=false;options.rows=5;options.hoverClassName="textboxEditable";makeInPlaceEditor(contents.event_id+"_description",'event[description]',url,options);},bind_DateSelector:function(contents,event){if(contents.is_memorial()){var e=$(contents.event_id+"_date");e.onclick=this.register_date_selector.bind(this,contents,e,event);}else{$(contents.event_id+"_date").onmouseover=function(){this.style.border="solid 1px #d7d7d7";this.style.padding="0 2px";}
$(contents.event_id+"_date").onmouseout=function(){this.style.border="none";this.style.padding="0";}}},bind_MemorialSelector:function(contents,event){},bind_PopupWindow:function(contents,event,options){},lazy_bind_alarms:function(){var self=this;var type=(this.ename=='memorial_view_list')?3:2;this.parent.select('img.alarm').each(function(img){var alarm=model.alarm.get(parseInt(img.id.split('_')[type]/10000));img.src=(alarm&&typeof alarm!='string')?self.info_alarm_url[0]:self.info_alarm_url[1];});},expand_repeat:function(events){var results=$A();events.each(function(event){if(event.repeat_id){if(event._rdates){event._rdates.each(function(rdate){var expanded_event=Object.clone(event);expanded_event._start_at=expanded_event.start_at;expanded_event._end_at=expanded_event.end_at;expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];results.push(expanded_event);});}}else{results.push(event);}});return results;},register_date_selector:function(contents,e,event){if(!e.editable){e.editable=true;e.update(this.memorial_date_template.evaluate({event_id:contents.event_id}));var edit_field=$(contents.event_id+'_date_edit_field');edit_field.custom_cursor_update=function(){this.update_memorial_date(contents,event.id);}.bind(this);this.date_observer_instance[event.id]=this.date_observe_click.bindAsEventListener(this,contents,event.id);Event.observe(document.body,'click',this.date_observer_instance[event.id]);var self=this;Event.observe(edit_field,'keypress',function(e){if(!e)e=window.event;var key=e.which||e.keyCode;if(key==Event.KEY_RETURN){Event.stop(e);self.update_memorial_date(contents,event.id);}});this.attach_date_selector(null,edit_field);}},date_observe_click:function(event,contents,event_id){var el=Event.element(event);if((el!=$(contents.event_id+'_date'))&&(el!=$(contents.event_id+'_date_edit_field'))){if(!$('date_selector')||!el.descendantOf($('date_selector'))){date_selector.detach();Event.stopObserving(document.body,'click',this.date_observer_instance[event_id]);var e=$(contents.event_id+"_date");e.update(e.title);e.editable=false;}}},update_memorial_date:function(contents,event_id){date_selector.detach();Event.stopObserving(document.body,'click',this.date_observer_instance[event_id]);value=$F(contents.event_id+'_date_edit_field');value=(_dt=DateConverter.str_to_date(value))?_dt.format_date():'';var params='event[start_at]='+value;if(contents.is_lunar())params+="&meta[date_format]=solar_to_lunar"
var memorial=model.calendar.get_memorial();var url='/calendars/'+(memorial||{id:0}).id+'/memorials/'+event_id;new Ajax.Request(url,{method:"put",parameters:params,onFailure:function(transport){eval("var r = "+transport.responseText);calendar.notify(r[0][1]);}});},attach_date_selector:function(event,el){date_selector.detach();date_selector.attach(el);},event_range_to_array:function(range,allday){if(range.start.before(this.range.start))range.start=this.range.start;if(allday)range.end=range.end.next_day();if(range.end.after(this.range.end))range.end=this.range.end;return this.range_to_array(range,this.sort.time.direction);},event_created:function(event){this.draw_events([model.event.get(event.id,this.range.start,this.range.end)]);},event_updated:function(event,old_event){var previous_element=$(this.ename);var founded_elements=this.find_elements(event.id);if(founded_elements.size()>0&&founded_elements.first().previous(0))previous_element=this.find_elements(event.id).first().previous(0);this.event_destroyed(event);this.draw_events([model.event.get(event.id,this.range.start,this.range.end)],previous_element);founded_elements.each(function(e){if(e.className=="agenda_main")e.show();if(event.description!=old_event.description){if(e.className=="agenda_sub")e.show();}});},event_destroy:function(contents){var _url,_options;if(contents.is_memorial()){_url='/memorials/'+contents.id;_options={name:'event',caller:this,obj:contents,message:'기념일을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'event_destroy_execute'}
var r=new OkCancelAlert(_options);}else{if(contents.event_is_repeating){_url='/events/'+contents.id;_options={callbackObj:this,onSubmitFunc:'event_after_destroy'};var r=new RepeatEventAlert(_url,null,'delete',contents,_options);}else{_options={name:'event',caller:this,obj:contents,message:'일정을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'event_destroy_execute'}
var r=new OkCancelAlert(_options);}}},event_after_destroy:function(obj){this.find_elements(obj.id).invoke("hide");},event_destroy_execute:function(obj){var elements=this.find_elements(obj.id);elements.invoke("hide");var url=this.make_request_url(obj);new Ajax.Request(url+".js",{method:"delete",onFailure:function(transport){elements.invoke("show");}});},event_destroyed:function(event){this.find_elements(event.id).invoke("remove");this.reset_grid_height();},calendar_created:Prototype.emptyFunction,calendar_updated:function(calendar,old_calendar){this.draw();},calendar_destroyed:function(calendar){this.draw();},find_elements:function(id){return $$('#'+this.ename+' tr').findAll(function(e){var is_memorial=(e.id.indexOf("_memorial_")==-1)?false:true;if(is_memorial){return Math.floor((e.id.split("_"))[3]/10000)==id;}else{return Math.floor((e.id.split("_"))[2]/10000)==id;}});},curr:function(cursor){this.cursor=cursor||new Date();this.range=$R(this.cursor.clear_time(),this.cursor.next_day(this.cursor_step).clear_time(),true);this.header_mandatory=true;this.mini_event_tooltip=false;this.livegrid.disable();this.set_cursor_date();},prev:function(){this.cursor=this.cursor.prev_day(this.cursor_step);this.range=$R(this.cursor.clear_time(),this.cursor.next_day(this.cursor_step).clear_time(),true);this.header_mandatory=true;this.livegrid.disable();this.set_cursor_date();},next:function(){this.cursor=this.cursor.next_day(this.cursor_step);this.range=$R(this.cursor.clear_time(),this.cursor.next_day(this.cursor_step).clear_time(),true);this.header_mandatory=true;this.livegrid.disable();this.set_cursor_date();},prev_1day:function(){this.cursor=this.cursor.prev_day(1);this.range=$R(this.cursor.clear_time(),this.cursor.next_day(this.cursor_step).clear_time(),true);this.header_mandatory=true;this.livegrid.disable();this.set_cursor_date();},next_1day:function(){this.cursor=this.cursor.next_day(1);this.range=$R(this.cursor.clear_time(),this.cursor.next_day(this.cursor_step).clear_time(),true);this.header_mandatory=true;this.livegrid.disable();this.set_cursor_date();},prev_this_year:function(){this.cursor=new Date();this.range=$R(this.cursor.firstday_of_year().clear_time(),this.cursor.next_day(1).clear_time(),true);this.header_mandatory=false;this.livegrid.enable();this.set_cursor_date();},next_this_year:function(){this.cursor=new Date();this.range=$R(this.cursor.clear_time(),this.cursor.lastday_of_year().next_day(1).clear_time(),true);this.header_mandatory=false;this.livegrid.enable();this.set_cursor_date();},order_by_complete:function(obj){this.sort.selected="complete";this.toggle_direction();this.draw();if(obj.className!="up"){obj.className="up";}else{obj.className="down";}},order_by_time:function(obj){this.sort.selected="time";this.toggle_direction();this.draw();obj.className=(obj.className!="up")?"up":"down";},order_by_title:function(obj){this.sort.selected="title";this.toggle_direction();this.draw();obj.className=(obj.className!="up")?"up":"down";},order_by_class_type:function(obj){this.sort.selected="class_type";this.toggle_direction();this.draw();obj.className=(obj.className!="up")?"up":"down";},toggle_direction:function(){if(this.sort[this.sort.selected].direction=="asc"){this.sort[this.sort.selected].direction="desc";}else{this.sort[this.sort.selected].direction="asc";}},filter:function(flag){this.flag={image:(flag&1)==1,alarm:(flag&4)==4,repeat:(flag&8)==8,link:(flag&16)==16};this.draw();},range_to_array:function(range,direction){var array=range.toArray();if(direction=="desc")return array.reverse();return array;},collapse_all:function(){$$('#'+this.ename+' .agenda_sub').each(function(e){Element.hide(e);});this.reset_grid_height();},expand_all:function(){$$('#'+this.ename+' .agenda_sub').each(function(e){e.show();});this.reset_grid_height();},cleanup:function(){$$('#'+this.ename+' tr').each(function(e){if(e.className=="header")return;e.remove();});this.reset_grid_height();},reset_grid_height:Prototype.emptyFunction,format_range:function(event,date){if(event.is_memorial()){return"기념일";}else if(event.allday){return"하루종일";}else{var s=false;var e=false;s=(event.start_at.before(date))?"계속":event.start_at.format(this.main_time_format);if(event.end_at.after(date.next_day(1))){e="계속";}else if(event.end_at.same_date_and_time(date.next_day(1))){e="오후 12시00분";}else{e=event.end_at.format(this.main_time_format);}
return s+" - "+e;}}};var AgendaView=Class.create();AgendaView.prototype=Object.extend(Object.extend({},EventView.prototype),{bind_PopupWindow:Prototype.emptyFunction,post_draw:function(){if(!calendar.preview&&$$('#'+this.ename+' tr.agenda_main').size()==0){$('agenda_view_message').innerHTML="위 기간에는 등록된 일정이 없네요. 지금 일정을 <a href=\"javascript:calendar.av.detail_view();\" style=\"color:#1E90FF; text-decoration:underline;\">추가</a> 해 보세요!";}else{$('agenda_view_message').innerHTML="";}},detail_view:function(){history_controller.add("event_new");var setting_dt=new Date();if(setting_dt.getMinutes()<30){setting_dt.setMinutes(30);}else{setting_dt=setting_dt.next_hour().clear_minute();}
var calendar_id=model.calendar.list().first().id;new Ajax.Updater('layout_main','/calendars/'+calendar_id+'/events/new',{parameters:{'previous_setting[startAtDate]':this.cursor.format("#{yy}년 #{mm}월 #{dd}일"),'previous_setting[endAtDate]':this.cursor.format("#{yy}년 #{mm}월 #{dd}일"),'previous_setting[startAtTime]':DateConverter.time_to_str(DateConverter.date_to_time(setting_dt)),'previous_setting[endAtTime]':DateConverter.time_to_str(DateConverter.date_to_time(setting_dt.next_hour())),'previous_setting[allday]':true,'previous_setting[calendar_id]':calendar_id},asynchronous:true,evalScripts:true,method:'get'});}});var PreviewAgendaView=Class.create();PreviewAgendaView.prototype=Object.extend(Object.extend({},AgendaView.prototype),{special_event_main_template:new Template("  <tr id=\"#{event_id}_main\" class=\"agenda_main\">\r\n"+"   <td class=\"during\" nowrap style=\"text-align:left;\"><div id=\"#{event_id}_category\" title=\"#{category_name}\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top #{event_color};\"></div><div style=\"height:18px; line-height:18px;\"><label id=\"#{event_id}_date\" class=\"fc_62a400\" style=\"color:#{event_color};\">#{event_date}</label></div><div class=\"clear\"></div></td>\r\n"+"   <td class=\"flexable\"><div style=\"float:left; padding:0px 16px 0px 10px;\"><span id=\"#{event_id}_title\">#{event_title}</span></div></td>\r\n"+"   <td class=\"info\" nowrap>\r\n<div class=\"wrapper\">"+"    <img id=\"#{event_id}_info_special\" src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon18.gif\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"특별일정\" />\r\n"+"   </div></td>\r\n"+"  </tr>\r\n"),get_template_contents:function(contents,type){if(type=="all"){var ret=new Array();ret.push("<tr id=\"",contents.event_id,"_main\" class=\"agenda_main\">");ret.push("<td class=\"during\" nowrap style=\"text-align:left;border-left:solid 1px #dcdcdc;\"><div style=\"margin-right:5px;\">");ret.push("<div id=\"",contents.event_id,"_category\" title=\"",contents.category_name,"\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top ",contents.event_color,";\"></div>");ret.push("<div id=\"",contents.event_id,"_date\" class=\"contenter\" style=\"color:",contents.event_color,";margin-left:2px;\" title=\"",contents.event_date,"\">",contents.event_date,"</div></div></td>");ret.push("<td class=\"flexable\" valign=\"middle\"><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;width:95%;height:auto;line-height:16px;\">");ret.push("<div style=\"display:inline;\">",contents.event_title_info,"<span id=\"",contents.event_id,"_title\" class=\"agenda_title\" style=\"",contents.event_title_decoration," float:left;\" >",contents.event_title,"</span>");ret.push("<a href=\"javascript:;\" onclick=\"calendar.av.agenda_sub_toggle(this, '",contents.event_id,"_sub');\" title=\"자세히 보기\" class=\"folder_open\">자세히 보기</a>",contents.event_link_to,"</div></div></td>");ret.push("<td class=\"info\" nowrap><img id=\"",contents.event_id,"_info_link\" src=\"",contents.info_link_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"링크설정을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_image\" src=\"",contents.info_image_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"이미지를 첨부/변경하세요!\" />");ret.push("<tr id=\"",contents.event_id,"_sub\" style=\"display:none;\" class=\"agenda_sub\">");ret.push("<td class=\"subplan_all\" colspan=\"4\"><div class='subPlanImg'>, <img src='",contents.event_attach,"' class='attach_preview' width='181' height='80' style=\"cursor:pointer;\" /></div>");ret.push("<div class='subPlanDesc'><div class='info'><label>내용 :</label><div id=\"",contents.event_id,"_description\" class=\"desc\">",contents.event_description,"</div><div class=\"clear\"></div></div><div class='info'><label>링크 :</label>");ret.push("<div style=\"float:left;display:inline;\"><span id=\"",contents.event_id,"_link\" class=\"link\">",contents.event_url,"</span><a href=\"javascript:;\" onclick=\"window.open('",contents.event_link_go,"');\" style=\"margin-left:10px;\">");ret.push("<img src=\"http://mimg.daum-img.net/dcal_2/01_common/bnt_go.gif\" width=\"28\" height=\"16\" alt=\"GO\" style=\"vertical-align:middle;\" /></a></div><div class=\"clear\"></div></div>");ret.push("<div class=\"button\"><img id=\"",contents.event_id,"_delete_btn\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_del.gif\" width=\"28\" height=\"16\" alt=\"삭제\" />\r\n");ret.push("<img id=\"",contents.event_id,"_detail_btn\" onclick=\"history_controller.go('",contents.edit_view,"');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_view.gif\" width=\"58\" height=\"16\" alt=\"자세히보기\" /></div></div>");ret.push("<img onclick=\"Element.hide('",contents.event_id,"_sub');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_close.gif\" width=\"17\" height=\"10\" alt=\"닫기\" class=\"close\" /></td></tr>");return ret.join("");}else if(type=="special"){return this.special_event_main_template.evaluate(contents);}}});var MemorialView=Class.create();MemorialView.prototype=Object.extend(Object.extend({},EventView.prototype),{memorial_view:true,date_format:"#{yy}년 #{mm}월 #{dd}일",livegrid_height:300,initialize:function(ename,grid,year,model){this.ename=ename;this.parent=$(this.ename);if(model)this.set_model(year,model);this.cursor_step=1;var grid_opt={element:grid,options:{size:15,height:this.livegrid_height,header_table:'memorial_table_header',grid_table:'memorial_table'}}
this.livegrid=new LiveGrid(grid,this.fetch.bind(this),grid_opt.options);this.render('this_year');this.register_event_reactor();this.register_calendar_reactor();this.date_observer_instance=$A;if(grid_opt.options.header_table&&grid_opt.options.grid_table)this.init_resizer_set(grid_opt);},reset_grid_height:function(){if(this.parent.offsetHeight>this.livegrid_height){this.livegrid.options.height=this.livegrid_height;this.livegrid.element.style.height=this.livegrid_height+"px";}else{this.livegrid.options.height=this.parent.offsetHeight;this.livegrid.element.style.height=this.parent.offsetHeight+5+"px";}},post_draw:function(){this.area_resize();},this_year:function(cursor){this.cursor=new Date();this.range=$R(this.cursor.firstday_of_year().clear_time(),this.cursor.lastday_of_year().next_day().clear_time(),true);this.header_mandatory=false;this.livegrid.enable();},prev_year:function(cursor){this.cursor=this.cursor.prev_year();if(this.range){this.range.start=this.range.start.prev_year();this.range.end=this.range.end.prev_year();}
this.header_mandatory=false;this.livegrid.enable();this.flush_model();},next_year:function(cursor){this.cursor=this.cursor.next_year();if(this.range){this.range.start=this.range.start.next_year();this.range.end=this.range.start.next_year();}
this.header_mandatory=false;this.livegrid.enable();this.flush_model();},set_model:function(year,memorials){this._year=year;this._model=memorials;this._model.each(function(event){event_bucket.created(event);});},flush_model:function(){this._year=null;this._model=null;},load_model:function(year){var self=this;if(!year)year=new Date().getFullYear();if(this._year==year)return;new Ajax.Request('/calendars/'+model.calendar.get_memorial().id+'/memorials.js',{method:"get",parameters:{year:year},asynchronous:false,onSuccess:function(transport){eval("var memorials = "+transport.responseText);self.set_model(year,memorials);},onFailure:function(transport){self.set_model(year,[]);}});},draw_events:function(events,previous_element){var year=this.range.start.getFullYear();this.load_model(year);var models=events||this._model;models=models.findAll(function(event){return $E(event).is_memorial();});models=this.expand_repeat(models);if(this.sort.selected=="time"){models=models.sortBy(function(event){return event.start_at;});}else if(this.sort.selected=="class_type"){models=models.sortBy(function(event){return event.class_type;});}else if(this.sort.selected=="complete"){models=models.sortBy(function(event){return event.completed_at;});}else{models=models.sortBy(function(event){return event.title;});}
if(this.sort[this.sort.selected].direction=="desc")models.reverse(models);if(this.livegrid.active&&!events){models=models.findAll(function(model,index){if(index>=(this.livegrid.page+1)*this.livegrid.options.size){throw $break;}
return index>=this.livegrid.page*this.livegrid.options.size;}.bind(this));}
var self=this;service_type=1;models.each(function(event){self.draw_event(event,service_type,previous_element);});this.reset_grid_height();$j('img.attach_preview').fancyzoom();return models.size();},bind_MemorialSelector:function(contents,event){if(contents.is_memorial()){var e=$(contents.event_id+"_class_type");Object.extend(e,new MemorialSelector(null,{event:event,offset_x:0}));e=null;}},get_template_contents:function(contents,type){if(type=="all"){var ret=new Array();ret.push("<tr id=\"",contents.event_id,"_main\"><td class=\"memorial_checker\" nowrap><input type=\"checkbox\" class=\"delete_checkbox\" value=\"",contents.id,"\"/></td>");ret.push("<td class='memorial_complete' nowrap><span class='event_",contents.event_id,"_completed' style='cursor:pointer;'>",contents.event_completed_img,"</span></td>");ret.push("<td class=\"memorial_day\" nowrap><div class=\"contenter\" style=\"margin:0 5px;\" >");ret.push("<div id=\"",contents.event_id,"_date\" style=\"float:left;text-align:left;text-indent:3px;color:",contents.event_color,";line-height:16px;border:solid 1px #ffffff;\" title=\"",contents.event_date,"\" onmouseover=\"this.style.border='solid 1px #dcdcdc';\" onmouseout=\"this.style.border='solid 1px #ffffff';\">",contents.event_date,"</div>",contents.event_date_format,"</div></td>");ret.push("<td class=\"memorial_type\" nowrap><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;height:16px;line-height:16px;cursor:pointer;\"><span id=\"",contents.event_id,"_class_type\" onmouseover=\"this.style.border='solid 1px #dcdcdc';\" onmouseout=\"this.style.border='solid 1px #ffffff';\">",contents.event_class_type,"</span></div></td>");ret.push("<td class=\"flexable\"><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;height:16px;line-height:16px;\">");ret.push("<div style=\"float:left;display:inline;\"><span id=\"",contents.event_id,"_title\" style=\"",contents.event_title_decoration,"float:left;\" >",contents.event_title,"</span>",contents.event_elapse_time,"<img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon19.gif' width='11' height='12' alt='' class='folder' onclick=\"Element.toggle('",contents.event_id,"_sub');memorial_view.reset_grid_height();\" style=\"margin-top:1px;\"/></div></div></td>");ret.push("<td class=\"memorial_leftday\" nowrap><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;height:16px;line-height:16px;\"><span id=\"",contents.event_id,"_dday\">",contents.event_dday,"</span></div></td>");ret.push("<td class=\"memorial_info\" nowrap>\r\n<div class=\"wrapper\" style=\"height:19px;line-height:19px;\">");ret.push("<img id=\"",contents.event_id,"_info_link\" src=\"",contents.info_link_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"링크설정을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_image\" src=\"",contents.info_image_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"이미지를 첨부/변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_alarm\" class=\"alarm\" src=\"",contents.info_alarm_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"알림을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_repeat\" src=\"",contents.info_repeat_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"반복설정을 변경하세요!\" /></td></tr>");ret.push("<tr id=\"",contents.event_id,"_sub\" style=\"display:none;\" class=\"agenda_sub\"><td class=\"subplan_all\" colspan=\"7\">");ret.push("<div class='subPlanImg'><img src='",contents.event_attach,"' class='attach_preview' width='181' height='80' style=\"cursor:pointer;\" /></div>");ret.push("<div class='subPlanDesc'><div class='info'><label>기념일 시작 :</label><div id=\"",contents.event_id,"_origin_start_at\" class=\"desc\">",contents.origin_start_at,contents.event_elapse_time,"</div><div class=\"clear\"></div></div>");ret.push("<div class='info'><label>내용 :</label><div id=\"",contents.event_id,"_description\" class=\"desc\">",contents.event_description,"</div><div class=\"clear\"></div></div>");ret.push("<div class='info'><label>링크 :</label><div style=\"float:left;display:inline;\"><span id=\"",contents.event_id,"_link\" class=\"link\">",contents.event_url,"</span><a href=\"javascript:;\" onclick=\"window.open('",contents.event_link_go,"');\" style=\"margin-left:10px;\"><img src=\"http://mimg.daum-img.net/dcal_2/01_common/bnt_go.gif\" width=\"28\" height=\"16\" alt=\"GO\" style=\"vertical-align:middle;\" /></a></div><div class=\"clear\"></div></div>");ret.push("<div class=\"button\"><img id=\"",contents.event_id,"_delete_btn\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_del.gif\" width=\"28\" height=\"16\" alt=\"삭제\" />\r\n");ret.push("<img onclick=\"history_controller.go('memorial_edit:",contents.id,"');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_view.gif\" width=\"58\" height=\"16\" alt=\"자세히보기\" /></div></div>");ret.push("<img onclick=\"Element.toggle('",contents.event_id,"_sub');memorial_view.reset_grid_height();\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_close.gif\" width=\"17\" height=\"10\" alt=\"닫기\" class=\"close\" /></td></tr>");return ret.join("");}else if(type=="special"){return this.special_event_main_template.evaluate(contents);}},draw_headers:function(){return;},check_all:function(element){_check=element.checked;this.parent.select('.delete_checkbox').each(function(e){e.checked=_check;});},destroy_checked:function(){var del_count=0;this.parent.select('.delete_checkbox').each(function(e){if(e.checked)del_count++;});if(del_count==0){calendar.notify("삭제하실 기념일을 선택하신 후 삭제버튼을 눌러주세요.");return;}
var _options={name:'todo',caller:this,obj:null,message:'기념일을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'destroy_process'}
var r=new OkCancelAlert(_options);},format_range:function(event,date){return event.start_at.format(this.memorial_date_format);},destroy_process:function(obj){var memorial=model.calendar.get_memorial();var url='/calendars/'+(memorial||{id:0}).id+'/memorials/';this.parent.select('.delete_checkbox').each(function(e){if(e.checked)new Ajax.Request(url+e.value,{method:"delete"});});},expand_repeat:function(events){var results=$A();events.each(function(event){if(event.repeat_id){if(event.rdates){event.rdates.each(function(rdate){var expanded_event=Object.clone(event);expanded_event._start_at=expanded_event.start_at;expanded_event._end_at=expanded_event.end_at;expanded_event.start_at=rdate[0];expanded_event.end_at=rdate[1];results.push(expanded_event);});}}else{results.push(event);}});return results;},temp:Prototype.emptyFunction});var AppAgendaView=Class.create();AppAgendaView.prototype=Object.extend(Object.extend({},AgendaView.prototype),{init_resizer_set:function(grid){return;},get_template_contents:function(contents,type){var html=[];html.push("<tr id=\"",contents.event_id,"_main\" class=\"agenda_main\">");html.push("<td class=\"during\" nowrap style=\"text-align:left;\"><div class=\"wrapper\" style=\"margin-right:5px;\">");html.push("<div id=\"",contents.event_id,"_category\" title=\"",contents.category_name,"\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top ",contents.event_color,";cursor:default;\"></div>");html.push("<div id=\"",contents.event_id,"_date\" class=\"contenter\" style=\"color:",contents.event_color,";margin-left:5px;cursor:default;\" title=\"",contents.event_date,"\">",contents.event_date,"</div></div></td>");html.push("<td class=\"flexable\"><div class=\"wrapper\" style=\"margin:0 5px 0 10px;\" title=\"",contents.event_title,contents.event_description,"\"><span id=\"",contents.event_id,"_title\" style=\"",contents.event_title_width,"display:block;float:left;padding-right:5px;line-height:19px;",contents.event_title_decoration,";\">",contents.event_title,"</span><span style=\"display:block;float:right;margin:5px 0 0 2px;\" onclick=\"window.open('",contents.event_url,"');\">",contents.event_link_to,"</span></div></td>");html.push("<td class=\"info\" nowrap>\r\n<div class=\"wrapper\">");html.push("<img id=\"",contents.event_id,"_info_alarm\" src=\"",contents.info_alarm_src,"\" width=\"19\" height=\"15\" alt=\"알림\" class=\"info_alarm\" />");html.push("<img id=\"",contents.event_id,"_info_repeat\" src=\"",contents.info_repeat_src,"\" width=\"19\" height=\"15\" alt=\"반복\" class=\"info_repeat\" />");html.push("</div></td></tr>");return html.join("");},special_event_main_template:new Template("<tr id=\"#{event_id}_main\" class=\"agenda_main\">\r\n"+"<td class=\"during\" nowrap style=\"text-align:left;\"><div id=\"#{event_id}_category\" title=\"#{category_name}\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top #{event_color};\"></div><div style=\"height:18px; line-height:18px;\"><label id=\"#{event_id}_date\" class=\"fc_62a400\" style=\"color:#{event_color};\">#{event_date}</label></div><div class=\"clear\"></div></td>\r\n"+"<td class=\"flexable\"><div style=\"float:left; padding:0px 16px 0px 10px;\"><span id=\"#{event_id}_title\">#{event_title}</span></div></td>\r\n"+"<td class=\"info\" nowrap>\r\n<div class=\"wrapper\">"+"<img id=\"#{event_id}_info_special\" src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon18.gif\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"특별일정\" />\r\n"+"</div></td>\r\n"+"</tr>\r\n"),info_alarm_url:["http://mimg.daum-img.net/dcal_2/04_app/icon08_ap_on.gif","http://mimg.daum-img.net/dcal_2/04_app/icon08_ap.gif"],info_repeat_url:["http://mimg.daum-img.net/dcal_2/04_app/icon09_ap_on.gif","http://mimg.daum-img.net/dcal_2/04_app/icon09_ap.gif"],livegrid_height:100,bind_PopupWindow:function(contents,event,options){this.miniEditPopup(contents.event_id+"_category",contents,event);this.miniEditPopup(contents.event_id+"_info_alarm",contents,event);this.miniEditPopup(contents.event_id+"_info_repeat",contents,event);},bind_ToolTip:Prototype.emptyFunction,bind_DateSelector:function(contents,event){this.miniEditPopup(contents.event_id+"_date",contents,event);},bind_InPlaceEditor:function(contents,event,options){var edit_url=(contents.is_memorial())?'/external/mini/memorial/edit/':'/external/mini/event/edit/';var post_url=(contents.is_memorial())?'/memorials/':'/events/';this.miniEditPopup(contents.event_id+"_title",contents,event);Object.extend(options,{hoverClassName:"textboxEditable",row:5});},post_draw:function(){PageLayout.layoutInterval();date=new Date();if($(date.format(this.header_id_format)))$(date.format(this.header_id_format)).addClassName('today');},miniEditPopup:function(el,contents,event){var edit_url=(contents.is_memorial())?'/external/mini/memorial/edit/':'/external/mini/event/edit/';var _element=$(el);_element.style.cursor="pointer";_element.onclick=function(){if(String(location).indexOf("?appMode=moov")!=-1){document.location.href="/#event_edit:"+event.id;}else{document.location.href=edit_url+event.id+"/"+event.start_at.to_param()+"/"+event.end_at.to_param();}}
_element.onmouseover=function(){this.style.textDecoration="underline";};if(event.completed_at){_element.onmouseout=function(){this.style.textDecoration="line-through";};}else{_element.onmouseout=function(){this.style.textDecoration="none";};}
_element=null;},draw_event:function(event,service_type){var calendar=model.calendar.get(event.calendar_id)||{visible:event.is_special(),color:'#D92D1E'};if(service_type==1&&!event.is_memorial())return;if(service_type!=1&&!calendar.visible)return;this.event_range_to_array($R(event.start_at,event.end_at,true),event.allday).each(function(date){var _dday=Date.diff_day(new Date(),event.start_at)+1;var contents=Object.extend({category_name:event.calendar_name(),event_id:date.format(this.header_id_format+"_"+event.r_id()),event_title_info:(event.is_memorial())?"<div style='float:left;display:inline;margin-right:5px;'>"+this.get_class_type_name(event.class_type,event.is_lunar())+"</div> ":"",event_title:(event.title&&event.title.length>0)?event.title.escapeHTML().replaceAll("\"","'"):"(제목없음)",event_title_decoration:event.completed_at?'text-decoration:line-through;':'',event_elapse_time:"",event_color:calendar.color,event_date:(this.sort.selected=="title")?this.format_range(event,date).replaceAll(" ",""):this.format_range(event,date),event_date_format:event.is_lunar()?"<span class='lunar_mark'>(<label>"+event.lunar_on.format("#{mm}/#{dd}")+"</label>)</span>":"",event_description:(event.description||"").escapeHTML().replaceAll("\"","'"),event_class_type:this.get_class_type_name(event.class_type,event.is_lunar()),event_dday:'D'+((_dday<0)?'+':'-')+Math.abs(_dday)+'일',event_url:event.url,start_at_param:event.start_at.to_param(),event_is_repeating:(event.is_repeating())?true:false,info_alarm_src:event.alarm?this.info_alarm_url[0]:this.info_alarm_url[1],info_repeat_src:event.repeat_id?this.info_repeat_url[0]:this.info_repeat_url[1],event_link_to:event.url?"<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' title='"+event.url+" 으로 이동하기' class='link_to_url' style='cursor:pointer'/>":"",event_title_width:event.url?"":"",edit_view:event.is_memorial()?"memorial_edit:"+event.id:"event_edit:"+event.id},event);if((contents.event_description||'')!='')contents.event_description="\r\n\r\n"+contents.event_description;if(!event.calendar_id){contents.event_id=date.format(this.header_id_format+"_special_"+event.id);contents.event_color=(event.holiday)?"red":"#2AAA5B";}
if(event.is_memorial()){contents.event_id=date.format(this.header_id_format+"_memorial_"+event.r_id());if(event.is_repeating()&&event.class_type==3){var e=model.event.get(event.id);var elapsed_day=Date.diff_day(e.start_at.clear_time(),event.start_at.clear_time());if(elapsed_day==0)elapsed_day="시작";contents.event_elapse_time=" ("+elapsed_day+"일)";}}
if(this.sort.selected=="time"||(service_type==1)){if(this.cursor_step==1){if(event.calendar_id){this.parent.insert({bottom:this.get_template_contents(contents)});}else{this.parent.insert({bottom:this.special_event_main_template.evaluate(contents)});}}else{if(event.calendar_id){this.draw_header(date).insert({before:this.get_template_contents(contents)});}else{this.draw_header(date).insert({before:this.special_event_main_template.evaluate(contents)});}}}else{contents.event_date=date.format("#{mm}/#{dd} ")+contents.event_date;if(event.calendar_id){this.parent.insert({bottom:this.get_template_contents(contents)});}else{this.parent.insert({bottom:this.special_event_main_template.evaluate(contents)});}}
if(event.calendar_id){var options=(!event.is_memorial()&&event.repeat_id&&(service_type!=1))?{event:event,repeat_event:true}:{event:event,repeat_event:false};this.bind_InPlaceEditor(contents,event,options);this.bind_DateSelector(contents,event);this.bind_PopupWindow(contents,event,options);this.bind_ToolTip(contents);var event_del_btn=$(contents.event_id+"_delete_btn");if(event_del_btn){event_del_btn.onclick=function(){this.event_destroy(contents);}.bind(this);}
event_del_btn=null;}
var cur_dt=new Date();if(cur_dt.equal_date(date)){if($(contents.event_id+"_main")){$(contents.event_id+"_main").addClassName('today');}}}.bind(this));},lazy_bind_alarms:function(){var self=this;var type=(this.ename=='memorial_view_list')?3:2;this.parent.select('img.info_alarm').each(function(img){var alarm=model.alarm.get(parseInt(img.id.split('_')[type]/10000));img.src=(alarm&&typeof alarm!='string')?self.info_alarm_url[0]:self.info_alarm_url[1];});}});var TodoList=Class.create();TodoList.prototype={date_format:"#{yy}-#{mm}-#{dd}",info_alarm_url:["http://mimg.daum-img.net/dcal_2/01_common/icon/icon09_on.gif","http://mimg.daum-img.net/dcal_2/01_common/icon/icon09_off.gif"],todo_template:function(contents){var html=[];html.push("<tr id='todo_main_",contents.id,"' class='todos todo_",contents.id," todo_main_",contents.id,"'><td class='checker_todo' nowrap><input type='checkbox' class='delete_checkbox' value='");html.push(contents.id,"'></td><td class='done_todo' nowrap><span id='todo_",contents.id,"_completed' style='cursor:pointer;'>",contents.todo_completed_img);html.push("</span></td><td class='flexable todo' style='padding:2px 0;'><div class='titleFolder' style='background:none;height:19px;line-height:17px;overflow:hidden;padding-right:0;margin:0 10px;white-space:wrap;'><div id='todo_");html.push(contents.id,"_title' style='",contents.todo_title_decoration,";' class='todo_title'>",contents.todo_title,"</div><strong id='todo_",contents.id);html.push("_count' style='float:left;cursor:pointer;'>",contents.todo_sub_count,"</strong><a id='todo_",contents.id);html.push("_folder' href='javascript:;' title='작은할일' style='display:none;' class='folder'>작은할일</a></div></td><td class='add_todo' nowrap><img id='todo_",contents.id);html.push("_add_sub' src='http://mimg.daum-img.net/dcal_2/01_common/btn/blt_m04.gif' width='14' height='14' alt='추가' style='cursor:pointer;' /><br /></td><td class='duedate_todo' nowrap><div id='todo_",contents.id);html.push("_duedate' title='클릭하면 수정할 수 있어요!' onmouseover=\"this.style.border='solid 1px #d7d7d7'; this.style.cursor='pointer';\" onmouseout=\"this.style.border='none';\" style=\"margin:0 5px;\">");html.push(contents.todo_duedate_on,"</div></td><td class='leftday_todo' nowrap><a id='todo_",contents.id,"_leftday' href='javascript:;'>",contents.todo_leftdays);html.push("</a></td><td class='priority_todo' nowrap><div id='todo_",contents.id,"_priority'>",contents.priority,"</div></td><td class='info_todo' nowrap id='todo_",contents.id,"_info_alarm_td'><img id='todo_",contents.id);html.push("_info_alarm' src=\"",contents.info_alarm_src,"\" style=\"cursor: pointer;\" width='22' height='19' alt='' /><br /></td></tr>");return html.join("");},sub_todo_template:new Template(" <tr id='todo_main_#{id}' class='todos todo_#{parent_id} todo_sub_#{parent_id} todo_child_of_#{parent_id} todo_main_#{id}'>\r\n"+"  <td class='checker_todo_sub' nowrap>&nbsp;</td>\r\n"+"  <td class='done_todo sub' nowrap><span id='todo_#{id}_completed' style='cursor:pointer;'>#{todo_completed_img}</span></td>\r\n"+"  <td class='flexable sub'><input type='checkbox' class='delete_checkbox' class='check' value='#{id}' style='margin-left:10px;'> <span id='todo_#{id}_title' style='#{todo_title_decoration}'>#{todo_title}</span></td>\r\n"+"  <td class='add_todo sub' nowrap>&nbsp;</td>\r\n"+"  <td class='duedate_todo sub' nowrap><div id='todo_#{id}_duedate' title='클릭하면 수정할 수 있어요!' onmouseover=\"this.style.border='solid 1px #d7d7d7'; this.style.cursor='pointer';\" onmouseout=\"this.style.border='none';\" style=\"margin:0 5px;\">#{todo_duedate_on}</div></td>\r\n"+"  <td class='leftday_todo sub' nowrap><a id='todo_#{id}_leftday' href='javascript:;'>#{todo_leftdays}</a></td>\r\n"+"  <td class='priority_todo sub' nowrap><div id='todo_#{id}_priority'>#{priority}</div></td>\r\n"+"  <td class='info_todo sub' nowrap id='todo_#{id}_info_alarm_td'><img id='todo_#{id}_info_alarm' src=\"#{info_alarm_src}\" style=\"cursor: pointer;\" width='22' height='19' alt='' /></td>\r\n"+" </tr>\r\n"),new_sub_todo_template:new Template(" <tr id='todo_main_#{id}_new' class='todos todo_#{id} todo_sub_#{id} todo_child_of_#{id} todo_main_#{id}_new'>\r\n"+"  <td class='checker_todo_sub' nowrap>&nbsp;</td>\r\n"+"  <td class='done_todo sub' nowrap>&nbsp;</td>\r\n"+"  <td class='flexable sub'><input type=\"text\" id='todo_#{id}_new_title' value='이곳에 작은 할일을 입력해주세요!' class='textbox' style='margin-left:10px;width:170px;'>"+"  <img id='todo_#{id}_new_title_save' width='28' height='16' style='vertical-align: middle;cursor:pointer;' alt='저장' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_save.gif'/>"+"   <img id='todo_#{id}_new_title_cancel' width='28' height='16' style='vertical-align: middle;cursor:pointer;' alt='취소' src='http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_cancel.gif'/>"+"  </td>\r\n"+"  <td class='add_todo sub' nowrap>&nbsp;</td>\r\n"+"  <td class='duedate_todo sub' nowrap><span id='todo_#{id}_new_duedate'>&nbsp;</span></td>\r\n"+"  <td class='leftday_todo sub' nowrap>&nbsp;</td>\r\n"+"  <td class='priority_todo sub' nowrap><div id='todo_#{id}_new_priority'>&nbsp;</div></td>\r\n"+"  <td class='info_todo sub' nowrap id='todo_#{id}_info_alarm_td'><img id='todo_#{id}_new_info_alarm' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon09_off.gif' width='22' height='19' alt='' /></td>\r\n"+" </tr>\r\n"),empty_todo_template:new Template("<tr id='main_todo_empty'><td colspan='8' class='first' style='height:50px;'>등록된 할일이 없습니다.</td></tr>"),duedate_on_template:new Template(" <form onSubmit=\"todoList.update_duedate('#{id}'); return false;\">\r\n"+"  <input id='todo_#{id}_duedate_on_edit' type='textfield' value='#{value}' class='editor_text_field' onclick='todoList.attach_date_selector(this)' />\r\n"+" </form>"),empty_completed_todo_template:new Template("<tr id='main_todo_empty'><td colspan='8' class='first' style='height:50px;'>진행중인 할일이 없습니다.</td></tr>"),initialize:function(ename,model,grid){this.ename=ename;this.model=model;this.parent=$(this.ename);this.first_element=$('todo_table_first');this.last_element=$('todo_table_last');if(grid){this.livegrid=new LiveGrid(grid.element,this.fetch.bind(this),grid.options);}
this.limit=10;this.total_count=0;this.sort={selected:"recent",recent:{direction:"desc"},title:{direction:"asc"},duedate:{direction:"asc"},priority:{direction:"desc"},complete:{direction:"desc"},alarm:{direction:"desc"}};this.date_observer_instance=$A;this.register_todo_reactor();if(grid&&grid.options.header_table&&grid.options.grid_table)this.init_resizer_set(grid);},init_resizer_set:function(grid){this.grid_div=document.getElementById(grid.element);this.header_table=document.getElementById(grid.options.header_table);this.grid_table=document.getElementById(grid.options.grid_table);this.onresize_timer=null;this.grid_resizer_timer=null;this.area_resize();Event.observe(window,"resize",this.on_resize.bind(this));window.viewResizer=this.area_resize.bind(this);},on_resize:function(){window.clearTimeout(this.onresize_timer);this.onresize_timer=window.setTimeout(this.area_resize.bind(this),500);},area_resize:function(){window.clearTimeout(this.grid_resizer_timer);if(this.header_table){this.grid_div.style.width="100%";this.header_table.style.width="100%";this.grid_table.style.width="100%";this.grid_resizer_timer=window.setTimeout(function(){if(Prototype.Browser.IE){var headerWidth=this.header_table.offsetWidth;this.grid_div.style.width=headerWidth+"px";if(this.grid_table){this.grid_table.style.width=headerWidth+"px";}}else{this.grid_table.style.width=this.grid_table.offsetWidth+"px";this.header_table.style.width=this.grid_table.offsetWidth+"px";}}.bind(this),500);}},register_todo_reactor:function(){this.todo_reactor=new Reactor(this.ename);this.todo_reactor.created=this.created.bind(this);this.todo_reactor.updated=this.updated.bind(this);this.todo_reactor.destroyed=this.destroyed.bind(this);actor.todo.add_reactor(this.todo_reactor);},rearrange_by:function(field,linkObj){var sort=this.sort;if(sort.selected==field){sort[sort.selected].direction=(sort[sort.selected].direction=="asc"?"desc":"asc");}else{sort.selected=field;}
this.model.clear();this.draw();if(linkObj)linkObj.className=(linkObj.className=="up")?"down":"up";var todoSelChk=$('todoSelectCheck');if(todoSelChk)todoSelChk.checked=false;},draw:function(){this.cleanup();this.pre_draw();(this.livegrid&&this.livegrid.active)?this.livegrid.reset():this.draw_todos();this.post_draw();},pre_draw:Prototype.emptyFunction,post_draw:function(){this.area_resize();},fetch:function(page,size){if(this.livegrid&&this.livegrid.active)this.load_model(page+1,size);return this.total_count-(page+1)*size;},reset_grid_height:Prototype.emptyFunction,load_model:function(page,limit){var _params={page:page||this.page,limit:limit||this.limit,toggle:(this.toggle_button&&this.toggle_button.checked)?true:false,todo_store:(this.current_store)?this.current_store:null,sort_type:this.sort.selected,sort_dir:this.sort[this.sort.selected].direction,date_on:this.date_on};var self=this;new Ajax.Request('/todos.js',{method:"get",parameters:_params,onSuccess:function(transport){eval("var r = "+transport.responseText);r.todos.each(function(r_obj){if(!self.model.entries.get(r_obj.id)){self.model.created(r_obj);model.todo.created(r_obj);self.draw_todo(r_obj,null,'last');}});self.total_count=r.count;if((!page||page==1)&&r.count<=0){self.show_empty();self.reset_grid_height();}
if(self.livegrid)self.livegrid.status=(self.total_count-page*limit)>0?1:2;},onFailure:function(transport){}});},show_empty:function(){if(!$("main_todo_empty")&&(this.toggle_button&&!this.toggle_button.checked)){this.last_element.insert({before:this.empty_todo_template.evaluate({})});}else{this.last_element.insert({before:this.empty_completed_todo_template.evaluate({})});}},hide_empty:function(){if($("main_todo_empty"))$("main_todo_empty").remove();},draw_todos:function(){var self=this;self.model.entries.each(function(todo){self.draw_todo(todo[1],null,'last');});},calculate_leftdays:function(duedate_on){if(!duedate_on)return'없음';_leftdays=Date.diff_day(today.clear_time(),duedate_on);return'D'+(_leftdays>=0?'-':'+')+Math.abs(_leftdays)+'일';},make_contents:function(todo){var _leftdays=this.calculate_leftdays(todo.duedate_on);var _contents=Object.extend({todo_completed_img:(todo.completed_at?'<img src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon23.gif" width="15" height="17" alt="완료" />':'<img src="http://mimg.daum-img.net/dcal_2/01_common/icon/icon24.gif" width="15" height="17" alt="완료" />'),todo_title:(todo.title?todo.title.escapeHTML():"(제목없음)"),todo_title_decoration:(todo.completed_at?'text-decoration:line-through;':''),todo_duedate_on:(todo.duedate_on?DateConverter.date_to_str(todo.duedate_on):"마감일 없음"),todo_leftdays:_leftdays,todo_sub_count:(todo.children_count>0?"("+todo.children_count+")":""),info_alarm_src:(todo.alarm_id?this.info_alarm_url[0]:this.info_alarm_url[1])},todo);return _contents;},draw_todo:function(todo,rowIndex,option){if(!rowIndex||rowIndex==-1)rowIndex=0;var contents=this.make_contents(todo);if(option=='last'){this.last_element.insert({before:this.todo_template(contents)});}else if(option=='sub'){if(this.toggle_button&&this.toggle_button.checked&&todo.completed_at){this.destroyed(todo);return;}
var before_td=$(this.get_main_todo_name(todo.parent_id));before_td.insert({after:this.sub_todo_template.evaluate(contents)});}else{if(rowIndex==0){this.first_element.insert({after:this.todo_template(contents)});}else{var before_td=this.first_element.up().childElements()[rowIndex-1];before_td.insert({after:this.todo_template(contents)});}}
this.register_field_event(todo);this.reset_grid_height();},bind_InPlaceEditor:function(todo){makeInPlaceEditor("todo_"+todo.id+"_title",'todo[title]','/todos/'+todo.id,{highlightcolor:"#ffffff",hoverClassName:"agenda_editable",isTodoStore:true});},register_field_event:function(todo){var parent=this.parent;var _duedate_el=parent.select('#todo_'+todo.id+'_duedate')[0];var _leftday_el=parent.select('#todo_'+todo.id+'_leftday')[0];var _complete_el=parent.select('#todo_'+todo.id+'_completed')[0];var self=this;makeUpdatable('todo_'+todo.id+'_priority',todo.priority,'/todos/'+todo.id);$("todo_main_"+todo.id).onmouseover=function(e){this.onmouseover=null;self.bind_InPlaceEditor(todo);_duedate_el.onclick=self.register_date_selector.bind(self,_duedate_el,todo);Object.extend(_leftday_el,new DDaySelector(null,{todo_id:todo.id,offset_x:0,width:77}));_complete_el.onclick=self.update_complete.bind(self,todo);self.bind_PopupWindow(todo);if(!todo.parent_id){var _folder=parent.select('#todo_'+todo.id+'_folder')[0];var _count=parent.select('#todo_'+todo.id+'_count')[0];var _add_sub_btn=parent.select('#todo_'+todo.id+'_add_sub')[0];if(todo.children_count>0){_folder.onclick=self.load_sub_todo.bind(self,todo.id);_count.onclick=self.load_sub_todo.bind(self,todo.id);_folder.show();}
_add_sub_btn.onclick=self.new_sub_todo.bind(self,todo.id);}}
if(!todo.parent_id){var _folder=parent.select('#todo_'+todo.id+'_folder')[0];if(todo.children_count>0)_folder.show();}},bind_PopupWindow:function(todo){var alarm_el=$('todo_'+todo.id+'_info_alarm_td');if(todo.duedate_on){var options={offsetLeft:-80,offsetTop:-35,offsetTopValue:-35,className:'tooltip'};GeneralTooltip.create(alarm_el,"<b>알림<\/b>을 변경하세요!",options);Object.extend(alarm_el,new PopupWindow("/alarms?alarmable_type=todo&alarmable_id="+todo.id));}else{alarm_el.onclick=function(){calendar.notify("알림을 설정하시려면 마감일을 먼저 설정하셔야 합니다.");}
var alarm_img=$('todo_'+todo.id+'_info_alarm');alarm_img.alt="알림을 설정하시려면 마감일을 먼저 설정하셔야 합니다.";}},load_sub_todo:function(todo_id,option){var sub_todo_elements_count=this.parent.select('.todo_sub_'+todo_id).length;this.delete_child_of_todo_cell(todo_id);if(sub_todo_elements_count==0||option=='open'){var self=this;var _oLi=$(self.get_main_todo_name(todo_id));if(_oLi){_oLi.removeClassName('subClosed');_oLi.addClassName('subOpened');_oLi.down().removeClassName('removeUnderLine');}
new Ajax.Request('/todos.js?parent_id='+todo_id,{method:"get",onSuccess:function(transport){eval("var r = "+transport.responseText);r.todos.each(function(r_obj){if(!self.model.entries.get(r_obj.id)){self.model.created(r_obj);model.todo.created(r_obj);}
self.delete_sub_todo_cell(r_obj.id);self.draw_todo(r_obj,null,'sub');});if(r.todos.size()>0)self.parent.select('#todo_'+todo_id+'_count').first().update('('+r.todos.size()+')');if(r.todos.size()==1){var _folder=self.parent.select('#todo_'+todo_id+'_folder').first();var _count=self.parent.select('#todo_'+todo_id+'_count').first();_folder.onclick=self.load_sub_todo.bind(self,todo_id);_count.onclick=self.load_sub_todo.bind(self,todo_id);_folder.show();}
var _group=self.parent.select('.todo_'+todo_id);for(var idx=0;idx<_group.length-1;idx++){_group[idx].down().addClassName('removeUnderLine');}
$("statusBar").toggle();},onLoading:function(){$("statusBar").toggle();},onFailure:function(transport){},asynchronous:false});}
else{var _oLi=$(this.get_main_todo_name(todo_id));if(_oLi){_oLi.removeClassName('subOpened');_oLi.addClassName('subClosed');_oLi.down().removeClassName('removeUnderLine');}}
this.reset_grid_height();},new_sub_todo:function(todo_id){this.delete_new_sub_todo_cell(todo_id);this.load_sub_todo(todo_id,'open');var _before_tds=this.parent.select('.todo_'+todo_id);var _before_td=_before_tds[_before_tds.length-1];_before_td.insert({after:this.new_sub_todo_template.evaluate({id:todo_id})});var new_title=$('todo_'+todo_id+'_new_title');try{new_title.focus();new_title.select();}catch(e){}
Event.observe(new_title,"click",function(event){if(this.value=="이곳에 작은 할일을 입력해주세요!")this.value="";});var self=this;Event.observe(new_title,"keypress",function(event){if(!event)event=window.event;var key=event.which||event.keyCode;if(key==Event.KEY_RETURN)self.new_sub_todo_save(event,new_title,todo_id);});Event.observe($('todo_'+todo_id+'_new_title_save'),"click",this.new_sub_todo_save.bindAsEventListener(null,new_title,todo_id));Event.observe($('todo_'+todo_id+'_new_title_cancel'),"click",function(event){self.load_sub_todo(todo_id);});this.reset_grid_height();},new_sub_todo_save:function(event,new_title,todo_id){var params='todo[title]='+encodeURIComponent(new_title.value);new Ajax.Request('/todos?parent_id='+todo_id,{asynchronous:true,evalScripts:true,method:'post',parameters:params});},register_date_selector:function(e,todo){if(!e.editable){e.editable=true;_html=(e.innerHTML=='없음'?'':e.innerHTML);e.innerHTML=this.duedate_on_template.evaluate({id:todo.id,value:_html});var self=this;$('todo_'+todo.id+'_duedate_on_edit').custom_cursor_update=function(){if($('todo_'+todo.id+'_duedate_on_edit').value!=" ")self.update_duedate(todo.id);};this.date_observer_instance[todo.id]=this.date_observe_click.bindAsEventListener(this,todo.id);Event.observe(document.body,'click',this.date_observer_instance[todo.id]);$('todo_'+todo.id+'_duedate_on_edit').onclick();}},date_observe_click:function(event,todo_id){if((Event.element(event)!=$('todo_'+todo_id+'_duedate_on_edit'))&&Event.element(event)!=$('todo_'+todo_id+'_duedate')){if(!$('date_selector')||!Event.element(event).descendantOf($('date_selector')))this.update_duedate(todo_id);}},update_complete:function(todo){var _value=(todo.completed_at?'':today.to_param());new Ajax.Request('/todos/'+todo.id,{method:"put",parameters:'todo[completed_at]='+_value});},update_duedate:function(todo_id){date_selector.detach();Event.stopObserving(document.body,'click',this.date_observer_instance[todo_id]);var value=$F('todo_'+todo_id+'_duedate_on_edit');var value=(_dt=DateConverter.str_to_date(value))?_dt.format_date():'';new Ajax.Request('/todos/'+todo_id,{method:"put",parameters:'todo[duedate_on]='+value,onFailure:function(transport){eval("var r = "+transport.responseText);calendar.notify(r[0][1]);}});},attach_date_selector:function(element){var options={date_remove_button:true};date_selector.detach();date_selector.attach(element,options);},check_all:function(element){var _check=element.checked;this.parent.select('.delete_checkbox').each(function(e){e.checked=_check;});},cleanup:function(){this.parent.select('#main_todo_empty').invoke('remove');this.parent.select('.todos').invoke('remove');},delete_todo_cell:function(todo_id){var trs=this.parent.select('.todo_'+todo_id);var rowIndex=(trs.length>0)?trs[0].rowIndex:0;trs.invoke('remove');return rowIndex;},delete_sub_todo_cell:function(todo_id,parent_id){this.parent.select('.'+this.get_main_todo_name(todo_id)).invoke('remove');if(parent_id){var children_size=this.parent.select('.todo_sub_'+parent_id).size();if(children_size>0){this.parent.select('#todo_'+parent_id+'_count').first().update('('+children_size+')');}else{this.parent.select('#todo_'+parent_id+'_folder').first().hide();this.parent.select('#todo_'+parent_id+'_count').first().update('');}}},delete_new_sub_todo_cell:function(todo_id){this.parent.select('.todo_main_'+todo_id+'_new').invoke('remove');},delete_child_of_todo_cell:function(todo_id){this.parent.select('.todo_child_of_'+todo_id).invoke('remove');},get_main_todo_name:function(todo_id){return'todo_main_'+todo_id;},insert_todo_cell:function(todo,rowIndex){this.draw_todo(todo,rowIndex);return;},created:function(obj,updated){if(obj.parent_id)return;if(!updated&&this.hasTodoStore&&this.current_store!=obj.todo_store_id)return;this.model.entries.set(obj.id,obj);this.insert_todo_cell(obj,0);this.total_count++;if(this.total_count==1)this.hide_empty();},updated:function(obj,old_obj){if(obj.parent_id){this.load_sub_todo(obj.parent_id,'open');return;}
if(this.hasTodoStore){if(obj.todo_store_id==old_obj.todo_store_id){this.original_updated(obj,old_obj);}else{if(this.current_store!=obj.todo_store_id){this.destroyed(obj,true);}else if(this.current_store==obj.todo_store_id){this.created(obj,true);}}}else{this.original_updated(obj,old_obj);}},original_updated:function(obj,old_obj){if(this.toggle_button&&this.toggle_button.checked&&obj.completed_at){this.destroyed(obj);return;}
var sub_todo_elements_count=this.parent.select('.todo_sub_'+obj.id).length;this.model.entries.set(obj.id,obj);var rowIndex=this.delete_todo_cell(obj.id);if(rowIndex!=-1)this.insert_todo_cell(obj,rowIndex);if(sub_todo_elements_count>0)this.load_sub_todo(obj.id,'open');},destroyed:function(obj,updated){if(!updated&&this.hasTodoStore&&this.current_store!=obj.todo_store_id)return;if(obj.parent_id){this.delete_sub_todo_cell(obj.id,obj.parent_id);this.reset_grid_height();return;}
this.model.entries.unset(obj.id);this.delete_todo_cell(obj.id);this.total_count--;if(this.total_count==0)this.show_empty();this.reset_grid_height();},destroy_checked:function(){del_count=0;this.parent.select('.delete_checkbox').each(function(e){if(e.checked)del_count++;});if(del_count==0){calendar.notify("삭제하실 할일을 선택하신 후 삭제버튼을 눌러주세요.");return;}
_options={name:'todo',caller:this,obj:null,message:'할일을 <strong>삭제</strong>하시겠습니까?',onSubmitFunc:'destroy_process'};var r=new OkCancelAlert(_options);},destroy_process:function(obj){this.parent.select('.delete_checkbox').each(function(e){if(e.checked)new Ajax.Request('/todos/'+e.value,{method:"delete"});});if($('todoSelectCheck').checked){$('todoSelectCheck').checked=false;}},set_cookie:function(){tValue={show_completed_todo:(this.toggle_button&&this.toggle_button.checked)?true:false,sort:this.sort};CalCookie.set_hashed_cookie('todoStatus',this.ename,tValue);},get_cookie:function(){return CalCookie.get_hashed_cookie('todoStatus',this.ename);},set_value_by_cookie:function(){var tValue=this.get_cookie();if(tValue&&tValue.show_completed_todo&&this.toggle_button)this.toggle_button.checked=true;},move_store_checked:function(selbox){var move_count=0;var checked_count=0;var checked_ids=this.parent.select('.delete_checkbox').collect(function(e){if(e.checked){return parseInt(e.value);}}).compact();this.parent.select('.delete_checkbox').each(function(e){if(e.checked){if(model.todo.get(e.value).parent_id==0||checked_ids.select(function(id){return id==model.todo.get(e.value).parent_id;}).size()>0)move_count++;checked_count++;}});var selected_store_id=$('todo_store_bottom').value;if(checked_count!=move_count){calendar.notify("작은 할일만 따로 다른 보관함으로 이동시킬 수 없습니다.");return;}
if(((!selected_store_id||selected_store_id=='null')&&!todoStorePanel.current_store)||(selected_store_id==todoStorePanel.current_store)){calendar.notify("현재 보관함과 다른 보관함을 선택해주세요.");selbox.optionSelect(null,0);return;}
if(move_count==0){calendar.notify("이동하실 할일을 체크하신 후 선택해주세요.");selbox.optionSelect(null,0);return;}
if(selected_store_id<0){calendar.notify("보관함을 선택해주세요.");return;}
_options={name:'todo',caller:this,obj:null,message:'할일을 <strong>이동</strong>하시겠습니까?',onSubmitFunc:'move_store_process'};var r=new OkCancelAlert(_options);},move_store_process:function(obj){var store_id=parseInt($('todo_store_bottom').value);this.parent.select('.delete_checkbox').each(function(e){if(e.checked&&model.todo.get(e.value).parent_id==0){new Ajax.Request('/todos/'+e.value,{method:"put",parameters:'todo[todo_store_id]='+store_id,onComplete:function(){$('todo_store_bottom').xselect.optionSelect(null,0);}});}});}};var todoDraggable=Class.create();Object.extend(todoDraggable,{make_draggable:function(todo){var todo_element=$('left_todo_'+todo.id+'_title');Event.observe(todo_element,"mouseover",this.show_draggable_div.bindAsEventListener(this,todo,todo_element));},show_draggable_div:function(event,todo,todo_element){if(todoDraggableDiv.onDragging)return;var current_key=(history_controller)?history_controller.current_key:"";var view_type=null;if(current_key.indexOf('monthly_view')!=-1){view_type='monthly';}else if(current_key.indexOf('weekly_view')!=-1){view_type='weekly';}else if(current_key.indexOf('daily_view')!=-1){view_type='daily';}
todoDraggableDiv.view_type=(view_type)?view_type:null;if(!todoDraggableDiv.view_type)return;var offset_top=Position.cumulativeOffset(todo_element)[1];var offset_left=Position.cumulativeOffset(todoDraggableDiv.container)[0];var scrollTop=(todoDraggableDiv.container)?todoDraggableDiv.container.scrollTop:0;todoDraggableDiv.style.top=(offset_top-scrollTop)+"px";todoDraggableDiv.style.left=offset_left+"px";var category=model.calendar.list();var color=(category.length>0)?category[0].color:'#0062be';todoDraggableDiv.down().innerHTML=todo.title||'(제목없음)';todoDraggableDiv.onDragging=false;todoDraggableDiv.isMoved=false;todoDraggableDiv.todo=todo;todoDraggableDiv.show_div();}});var LeftTodoList=Class.create();LeftTodoList.prototype=Object.extend(Object.extend({},TodoList.prototype),{todo_template:function(contents){var html=[];html.push("<div id='left_todo_main_",contents.id,"' class='todos todo_",contents.id," ",contents.status," todo_main_",contents.id);html.push(" entry'><div id='left_todo_",contents.id,"_title'><span id='left_todo_",contents.id,"_title_move' class='title' style='float:left; ");html.push(contents.todo_title_decoration,"'>",contents.todo_title,"</span><div id='left_todo_",contents.id);html.push("_sub_count' style='float:left;margin-left:5px;padding:0;cursor:pointer;line-height:19px;'>",contents.todo_sub_count,"</div></div>");return html.join("");},sub_todo_template:new Template(" <div id='left_todo_main_#{id}' class='todos todo_#{parent_id} todo_sub_#{parent_id} todo_child_of_#{parent_id} sub todo_main_#{id}'>\r\n"+"   <div id='left_todo_#{id}_title' class='left_wrapper' style='#{todo_title_decoration}'><span id='left_todo_#{id}_title_move' class='title' style='float:left;cursor:pointer;'>#{todo_title}</span></div>\r\n"+" </div>\r\n"),empty_todo_template:new Template('<div id="left_todo_empty" class="empty">등록된 할일이 없습니다.</div>'),empty_completed_todo_template:new Template('<div id="left_todo_empty" class="empty">진행중인 할일이 없습니다.</div>'),curLimit:calendar.todoLimit,initialize:function(ename,model,grid,todo_data,todo_count){this.ename=ename;this.model=model;this.parent=$(this.ename);this.newTodoBtn=$('left_todo_write');this.first_element=$('left_todo_list_first');this.last_element=$('left_todo_list_last');this.grid_element=$('left_todo_livegrid');this.todo_view_element=$("leftTodoTypeList");this.toggle_button=$('toggle_completed_box');this.todo_data=todo_data;this.total_count=this.todo_count=(todo_count||0);if(grid)this.livegrid=new LiveGrid(grid.element,this.fetch.bind(this),grid.options);this.limit=this.curLimit;this.todo_count_display=$('left_todo_count');this.folded=true;this.sort={selected:"l_recent",l_recent:{direction:"desc"},l_duedate:{direction:"desc"},l_priority:{direction:"desc"}};this.register_todo_reactor();var self=this;Event.observe(this.todo_count_display,'click',this.more.bind(this));Event.observe(this.toggle_button,'click',function(){self.set_cookie();self.todo_redraw();});this.todo_data.todos.each(function(r_obj){self.model.created(r_obj);}.bind(this));this.set_value_by_cookie();},on_buttonarea_show:function(){},more:function(){if(this.folded){this.folded=false;this.livegrid.activate();this.todo_count_display.innerHTML='<img src="http://mimg.daum-img.net/dcal_2/01_common/img_03.gif" width="28" height="9" alt="접기" />';this.todo_count_display.className="more_close";$('left_todo_list_button').className="more_close";this.cleanup();this.model.clear();this.livegrid.reset();Position.absolutize($('leftTodoArea'));this.grid_element.style.height=180+"px";$('leftTodoArea').style.width='180px';$('leftTodoAreaHidden').show();}else{this.folded=true;this.grid_element.style.height=this.limit*20+"px";this.livegrid.deactivate();this.todo_count_display.innerHTML="+"+this.total_count;this.todo_count_display.className="more";$('left_todo_list_button').className="more";this.cleanup();this.limit=this.curLimit;this.todo_view();$('leftTodoAreaHidden').hide();Position.relativize($('leftTodoArea'));$('leftTodoArea').style.width='auto';$('leftTodoArea').style.height="145px";}},bind_InPlaceEditor:function(todo){var title_move=$("left_todo_"+todo.id+"_title_move");title_move.onclick=function(e){var e=window.event||e;document.location.href="/external/mini/todo/edit/"+todo.id;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();}},register_field_event:function(todo){if(!todo.parent_id&&todo.children_count>0){var _li_obj=$('left_todo_main_'+todo.id);_li_obj.onclick=this.load_sub_todo.bind(this,todo.id);}
var title_div=$('left_todo_'+todo.id+'_title');title_div.onmouseup=function(){history_listener("#","#todo_view");history_controller.add("todo_view");}
todoDraggable.make_draggable(todo);},make_contents:function(todo){var _contents=Object.extend({todo_title_decoration:(todo.completed_at?'text-decoration:line-through;':''),status:(todo.children_count>0?"subClosed":"subNone"),todo_title:(todo.title?todo.title.escapeHTML():"(제목없음)"),todo_sub_count:(todo.children_count>0?"("+todo.children_count+")":"")},todo);_contents.todo_title_decoration=(todo.children_count>0?_contents.todo_title_decoration+"width:135px;":_contents.todo_title_decoration+"width:145px;");return _contents;},sort_view:function(num,init){switch(num){case 1:this.sort.selected='l_recent';break;case 2:this.sort.selected='l_duedate';break;case 3:this.sort.selected='l_priority';break;default:this.sort.selected='l_recent';break;}
init?this.todo_view():this.todo_redraw(0);},next_sort:function(){switch(this.sort.selected){case'l_recent':_sort='l_duedate';break;case'l_duedate':_sort='l_priority';break;case'l_priority':_sort='l_recent';break;}
return _sort;},prev_sort:function(){switch(this.sort.selected){case'l_recent':_sort='l_priority';break;case'l_duedate':_sort='l_recent';break;case'l_priority':_sort='l_duedate';break;}
return _sort;},show_empty:function(){this.grid_element.style.height="45px";$('left_todo_count').hide();if(!$("left_todo_empty")&&!this.toggle_button.checked){this.last_element.insert({before:this.empty_todo_template.evaluate({})});}else{this.last_element.insert({before:this.empty_completed_todo_template.evaluate({})});}
if(!this.folded)this.more();},hide_empty:function(){if($("left_todo_empty"))$("left_todo_empty").remove();this.grid_element.style.height="100px";},todo_view_toggle:function(){this.todo_view_element.toggle();},todo_view:function(){var _sort=this.sort.selected;var _is_checked=this.toggle_button.checked;if(!this.folded){this.sort.selected=_sort;this.cleanup();this.model.clear();this.livegrid.reset();this.draw_title();return;}
if(this.total_count>this.limit){$('left_todo_count').show();this.hide_empty();this.on_buttonarea_show();this.todo_count_display.innerHTML="+"+(this.total_count-5);}else if(this.total_count<=0){this.hide_empty();this.show_empty();(this.toggle_button.checked)?$('left_todo_count').hide():$('left_todo_list_button').hide();}else{this.hide_empty();$('left_todo_list_button').show();$('left_todo_count').hide();}
this.sort.selected=_sort;this.draw_title();this.draw();},todo_redraw:function(){var _sort=this.sort.selected;var _is_checked=this.toggle_button.checked;if(!this.folded){this.sort.selected=_sort;this.cleanup();this.model.clear();this.livegrid.reset();this.draw_title();return;}
var _params={sort_type:_sort,limit:this.limit,toggle:_is_checked}
var self=this;new Ajax.Request('/todos',{method:"get",parameters:_params,onSuccess:function(transport){self.model.clear();eval("var r = "+transport.responseText);r.todos.each(function(r_obj){self.model.created(r_obj);model.todo.created(r_obj);}.bind(this));this.total_count=r.count;if(r.count>this.limit){$('left_todo_count').show();this.hide_empty();this.on_buttonarea_show();this.todo_count_display.innerHTML="+"+(r.count-5);}else if(r.count<=0){this.hide_empty();this.show_empty();(this.toggle_button.checked)?$('left_todo_count').hide():$('left_todo_list_button').hide();}else{this.hide_empty();$('left_todo_list_button').show();$('left_todo_count').hide();}
this.sort.selected=_sort;this.draw_title();this.draw();}.bind(this),onFailure:function(transport){}});},draw_title:function(){switch(this.sort.selected){case'l_recent':_title="<span><a href=\"javascript:history_listener('#', '#todo_view');history_controller.add('todo_view');\" class=\"goTodo\">할일</a></span> : 최근등록 순";break;case'l_duedate':_title="<span><a href=\"javascript:history_listener('#', '#todo_view');history_controller.add('todo_view');\" class=\"goTodo\">할일</a></span> : 마감일 순";break;case'l_priority':_title="<span><a href=\"javascript:history_listener('#', '#todo_view');history_controller.add('todo_view');\" class=\"goTodo\">할일</a></span> : 중요도 순";break;}
$('left_todo_title').innerHTML=_title;},new_todo_popup:function(){popupManager.load('left_todo_newform','/popup/todoform.html');if(!this.newFormDiv)this.newFormDiv=$('left_todo_newform');var panel=this.newFormDiv;if(panel.getStyle('display')!='none')return;this.popup_opened=true;ActivePopup.register(this);var pos=Position.cumulativeOffset(this.newTodoBtn);var left=pos[0];var top=pos[1]+this.newTodoBtn.getHeight();panel.style.left=left+'px';panel.style.top=top+'px';panel.show();if(this.popup_detail_view)this.new_todo_detail_view();$('left_todo_form').reset();$('left_new_todo_leftdays').innerHTML="";try{panel.select('#left_popup_todo_title').last().focus();}catch(e){}
if(!panel.priority_selector)
panel.priority_selector=new PrioritySelector("left_todo_new_priority","left_todo_priority");panel.priority_selector.default_setting(3);this.newform_observe=this.newform_click.bindAsEventListener(this);Event.observe(document,'click',this.newform_observe);},new_todo_detail_view:function(event){if(!this.popup_detail_view){this.popup_detail_view=true;$('left_new_todo_detail_button').innerHTML='할일 간단히 쓰기';$('new_todo_detail_Area').show();}else{this.popup_detail_view=false;$('left_new_todo_detail_button').innerHTML='할일 자세히 쓰기';$('new_todo_detail_Area').hide();}
try{$('left_popup_todo_title').focus();}catch(e){}},newform_click:function(event){var x=Event.pointerX(event);var y=Event.pointerY(event);if(!Position.within(this.newTodoBtn,x,y)&&!Position.within(this.newFormDiv,x,y)){if(!Event.element(event).descendantOf(this.newFormDiv))
if(!$('date_selector')||!Event.element(event).descendantOf($('date_selector')))
this.newform_close();}},newform_close:function(){if(this.popup_opened){this.newFormDiv.hide();Event.stopObserving(document,'click',this.newform_observe);}
ActivePopup.unregister(this);this.popup_opened=false;ActivePopup.close_all();},detach:function(){this.newform_close();},get_main_todo_name:function(todo_id){return'left_todo_main_'+todo_id;},delete_todo_cell:function(todo_id){var children=this.parent.childElements();var idx=0;var rowIndex=-1;children.each(function(c){if(c.id=='left_todo_main_'+todo_id){rowIndex=idx;throw $break;}
idx++;});var trs=this.parent.select('.todo_'+todo_id);trs.invoke('remove');return rowIndex;},created:function(obj){if(obj.parent_id)return;if(obj.todo_store_id)return;this.model.entries.set(obj.id,obj);this.insert_todo_cell(obj,0);this.total_count++;if(this.total_count==1){this.hide_empty();$('left_todo_list_button').show();}
if(this.total_count==6){if(this.folded)$('left_todo_count').show();this.on_buttonarea_show();}
if(this.folded&&this.total_count>5){this.todo_count_display.innerHTML="+"+(this.total_count-5);}},updated:function(obj,old_obj){if(obj.parent_id){this.load_sub_todo(obj.parent_id,'open');return;}
if(obj.todo_store_id){if(!old_obj.todo_store_id)this.destroyed(obj);}else{if(old_obj.todo_store_id){if(!this.toggle_button.checked||!obj.completed_at)this.todo_redraw();}else{this.conditional_updated(obj,old_obj);}}},conditional_updated:function(obj,old_obj){if(!this.model.entries.get(obj.id)){if(obj.completed_at&&this.toggle_button.checked)return;else if(!obj.completed_at&&this.toggle_button.checked){this.todo_redraw();return;}}
if(this.toggle_button.checked){this.destroyed(obj);return;}
var sub_todo_elements_count=this.parent.select('.todo_sub_'+obj.id).length;this.model.entries.set(obj.id,obj);var rowIndex=this.delete_todo_cell(obj.id);if(rowIndex!=-1)this.insert_todo_cell(obj,rowIndex);if(sub_todo_elements_count>0)this.load_sub_todo(obj.id,'open');},destroyed:function(obj){if(obj.parent_id){this.delete_sub_todo_cell(obj.id);return;}
this.model.entries.unset(obj.id);this.delete_todo_cell(obj.id);this.total_count--;if(!this.folded)this.more();this.todo_view();}});var TodoStorePanel=Class.create();TodoStorePanel.prototype={template:new Template('<li id="store_#{id}" class="off store_display_order"><div id="store_#{id}_title" class="title" style="text-overflow:ellipsis;overflow:hidden"><span id="todo_store_#{id}">#{name}</span><img src="http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_close.gif" id="todo_store_#{id}_del" class="close" style="display:none;" /></div><div class="rounding"></div><div class="blank"></div></li>'),MAX_COUNT:5,initialize:function(ename,current_store){this.ename=ename;this.current_store=current_store;this.add_todostore();this.register_event(0);actor.todo_store.add_reactor(this);this.todostore_ul=$('todostore_ul');this.todostore_panel=$("todostore_panel");var self=this;this.total_width=230;model.todo_store.list().sortBy(function(r){return r.id;}).each(function(r){self.created(r)});this.refresh_todostore_list();$FE('layout_main').register_deactivator(this);this.observer_instance=this.init_size.bindAsEventListener(this);Event.observe(window,'resize',this.observer_instance);this.history_id=history_controller.current_key.split(":")[1];if(this.history_id>0){$('store_'+this.history_id).editor=makeInPlaceEditor($('todo_store_'+this.history_id),'todo_store[name]','/todo_stores/'+this.history_id,{hoverClassName:"storeEditable",maxLength:12,size:12,isStore:true});this.init_size(this.history_id);return;}
this.init_size(0);},init_size:function(id){if(this.total_width>this.todostore_panel.offsetWidth){this.activate_menu(id);}else{this.todostore_list.each(function(e){$(e.id+'_title').style.width="";});this.activate_menu(id);}},deactivate:function(){console.log('todolistview.deactivate() called');Event.stopObserving(window,'resize',this.observer_instance);$FE('layout_main').style.overflowY="auto";},refresh_todostore_list:function(){this.todostore_list=this.todostore_ul.childElements();},add_todostore:function(){var max_count=this.MAX_COUNT;var self=this;$('todostore_add_btn').onclick=function(){if(model.todo_store.list().size()>=max_count){calendar.notify('할일 보관함은 '+max_count+'개 이상 만드실 수 없습니다.');}else{new Ajax.Request('/todo_stores',{asynchronous:true,evalScripts:true,method:'post'});}}},add_todostore_after:function(id){$('store_'+id).onclick();},activate_menu:function(id){var id=isNaN(id)?this.current_store||0:id;var self=this;this.todostore_list.each(function(e){var el_li=$(e.id);if(e.id=='store_'+id){if(e.id!='store_0'){$('todo_'+e.id+'_del').show();$(e.id+'_title').style.width="";}
el_li.addClassName("on");el_li.removeClassName("off");}else{if(e.id!='store_0'){$('todo_'+e.id+'_del').hide();if(self.total_width>self.todostore_panel.offsetWidth)$(e.id+'_title').style.width="35px";}
el_li.addClassName("off");el_li.removeClassName("on");if(el_li.editor){el_li.editor.dispose();el_li.editor=null;}}});},register_event:function(id,name){var self=this;$('store_'+id).onclick=function(){var cur_self=this;loading.draw(function(){if(self.current_store==id||(!self.current_store&&id==0))return;self.activate_menu(id);todoList.current_store=self.current_store=(id)?id:null;todoList.rearrange_by("recent","desc");var todo_store_select=$('todo_todo_store_id');todo_store_select.value=self.current_store;todo_store_select.xselect.optionSelect(null,todo_store_select.selectedIndex);if(id>0&&!cur_self.editor)cur_self.editor=makeInPlaceEditor($('todo_store_'+id),'todo_store[name]','/todo_stores/'+id,{hoverClassName:"storeEditable",maxLength:12,size:12,isStore:true});if(self.move_xselect)self.move_xselect.hide_current_store(self.current_store);history_controller.add("todo_view:"+id);});}
if(id>0)$('todo_store_'+id+'_del').onclick=function(e){var event=e?e:window.event;Event.stop(event);this.destroy_confirm=new TodoStoreDestroyAlert({},{store_id:id});};},created:function(obj){this.todostore_ul.insert({bottom:this.template.evaluate(obj)});this.refresh_todostore_list();this.register_event(obj.id);this.total_width+=$('store_'+obj.id).getWidth();this.init_size(obj.id);},updated:function(new_obj,old_obj){var el=$('todo_store_'+new_obj.id);if(el){el.update(new_obj.name||'보관함');el.title=new_obj.name||'보관함';}},destroyed:function(obj){var el=$('store_'+obj.id);this.total_width-=el.getWidth();el.remove();this.refresh_todostore_list();if(this.total_width<=this.todostore_panel.offsetWidth){this.todostore_list.each(function(e){$(e.id+'_title').style.width="";});}
$('store_0').onclick();}};var MainTodoList=Class.create();MainTodoList.prototype=Object.extend(Object.extend({},TodoList.prototype),{initialize:function(ename,model,grid,total_count,sort_type){this.ename=ename;this.model=model;this.parent=$(this.ename);this.first_element=$('todo_table_first');this.last_element=$('todo_table_last');this.toggle_button=$('toggle_completed_box_main');this.total_count=total_count;this.hasTodoStore=true;if(grid){this.livegrid=new LiveGrid(grid.element,this.fetch.bind(this),grid.options);}
this.livegrid.status=(this.total_count>20)?1:2;this.livegrid.page=1;this.limit=20;this.sort={selected:(sort_type==2)?"duedate":((sort_type==3)?"priority":"recent"),recent:{direction:"desc"},title:{direction:"asc"},duedate:{direction:"asc"},priority:{direction:"desc"},complete:{direction:"desc"},alarm:{direction:"desc"}};this.date_observer_instance=$A;this.register_todo_reactor();if(grid&&grid.options.header_table&&grid.options.grid_table)this.init_resizer_set(grid);var self=this;Event.observe(this.toggle_button,'click',function(){self.set_cookie();self.toggle_completed();});this.set_value_by_cookie();},toggle_completed:function(){var self=this;var _params={toggle:this.toggle_button.checked,todo_store:this.current_store};new Ajax.Request('/todos',{method:"get",parameters:_params,onSuccess:function(transport){loading.draw(function(){main_todo_model.clear();eval("var r = "+transport.responseText);self.total_count=r.count;if(self.total_count>0)self.hide_empty();if(self.total_count==0){self.cleanup();self.show_empty();self.reset_grid_height();return;}
r.todos.each(function(r_obj){main_todo_model.created(r_obj);});self.livegrid.status=(self.total_count>20)?1:2;self.livegrid.page=1;self.draw_by_model();});}.bind(this),onFailure:function(transport){}});},draw_by_model:function(){this.cleanup();this.pre_draw();this.draw_todos();this.post_draw();},reset_grid_height:function(){if(this.parent.offsetHeight>350){this.livegrid.options.height=350;this.livegrid.element.style.height="350px";}else{this.livegrid.options.height=this.parent.offsetHeight;this.livegrid.element.style.height=this.parent.offsetHeight+"px";}}});var AppTodoList=Class.create();AppTodoList.prototype={initialize:function(element,use_toolbar){this.ename=element;this.cookie_name="appTodoList";this.total_count=0;this.options={page:1,limit:5,sort_type:'l_recent',toggle:false};this.toolbar=use_toolbar;if(this.toolbar)this.register_todo_reactor();},register_todo_reactor:function(){this.todo_reactor=new Reactor(this.ename);this.todo_reactor.created=Prototype.emptyFunction;this.todo_reactor.updated=this.updated.bind(this);this.todo_reactor.destroyed=Prototype.emptyFunction;actor.todo.add_reactor(this.todo_reactor);},updated:function(obj,old_obj){var el=$('left_todo_'+obj.id+'_title_move');if(el)el.update(obj.title);},load:function(){if(this.toolbar){new Ajax.Updater('left_todo_list',"/todo/app_index_toolbar",{parameters:this.options,evalScripts:true,method:'get'});}else{new Ajax.Updater('left_todo_list',"/todo/app_index",{parameters:this.options,evalScripts:true,method:'get'});}},set_options:function(options){this.options=options;},new_todo_popup:function(){document.location.href="/external/mini/todo/new/";},new_sub_todo_popup:function(parent_id){document.location.href="/external/mini/todo/new/"+parent_id;},app_paging:function(num){if(num==-1&&this.options.page==1){return;}
if(num==1&&this.total_count<=(this.options.page*this.options.limit)){return;}
if(num==0)this.options.page=1;this.options.page+=num;this.load();},sort_view:function(num){this.options.page=1;switch(num){case 1:this.options.sort_type='l_recent';break;case 2:this.options.sort_type='l_duedate';break;case 3:this.options.sort_type='l_priority';break;default:this.options.sort_type='l_recent';break;}
this.load();},toggle_check:function(el){this.options.page=1;this.options.toggle=(el.checked)?true:false;CalCookie.set_hashed_cookie('todoStatus',this.cookie_name,{show_completed_todo:this.options.toggle});this.load();},bind_InPlaceEditor:function(todo_id,parent_id){if(this.toolbar){makeInPlaceEditor("left_todo_"+todo_id+"_title_move",'todo[title]','/todos/'+todo_id,{hoverClassName:"left_editable"});}else{$("left_todo_"+todo_id+"_title_move").onclick=function(e){e=e||window.event;document.location.href=(parent_id&&parent_id>0)?"/external/mini/todo/sub/edit/"+todo_id+"/"+parent_id:"/external/mini/todo/edit/"+todo_id;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();}}},load_sub_todo:function(todo_id){$$('#left_todo_list .todo_sub_'+todo_id).invoke('remove');var parent_obj=$('left_todo_main_'+todo_id);if(parent_obj.className.indexOf('subOpened')==-1){parent_obj.removeClassName('subClosed');parent_obj.addClassName('subOpened');var ajax_options={parameters:this.options,evalScripts:true,method:'get',insertion:Insertion.After};new Ajax.Updater('left_todo_main_'+todo_id,'/todo/app_index?parent_id='+todo_id,ajax_options);}else{parent_obj.removeClassName('subOpened');parent_obj.addClassName('subClosed');}},set_parent_classname:function(todo_id){var parent_obj=$('left_todo_main_'+todo_id);parent_obj.removeClassName('subClosed');parent_obj.addClassName('subOpened');},after_updated:function(){if($('toggle_completed_box'))$('toggle_completed_box').checked=this.options.toggle;if(this.toolbar){var title=(this.options.sort_type=="l_duedate")?"<span><a href=\"javascript:;\" onclick=\"location.href = '/#todo_view';\" class=\"goTodo\">할일</a></span> : 마감일 순":((this.options.sort_type=="l_priority")?"<span><a href=\"javascript:;\" onclick=\"location.href = '/#todo_view';\" class=\"goTodo\">할일</a></span> : 중요도 순":"<span><a href=\"javascript:;\" onclick=\"location.href = '/#todo_view';\" class=\"goTodo\">할일</a></span> : 최근등록 순");}else{var title=(this.options.sort_type=="l_duedate")?"<span><a href=\"http://calendar.daum.net/sharp/todo_view\" onclick=\"window.open(this.href, ''); return false; \" target=\"_blank\" class=\"goTodo\">할일</a></span> : 마감일 순":((this.options.sort_type=="l_priority")?"<span><a href=\"http://calendar.daum.net/sharp/todo_view\" onclick=\"window.open(this.href, ''); return false; \" target=\"_blank\" class=\"goTodo\">할일</a></span> : 중요도 순":"<span><a href=\"http://calendar.daum.net/sharp/todo_view\" onclick=\"window.open(this.href, ''); return false; \" target=\"_blank\" class=\"goTodo\">할일</a></span> : 최근등록 순");}
$('left_todo_title').update(title);if($('left_todo_move_page')){((this.total_count||0)>this.options.limit)?$('left_todo_move_page').show():$('left_todo_move_page').hide();};}};var TodayTodoList=Class.create();TodayTodoList.prototype=Object.extend(Object.extend({},TodoList.prototype),{todo_template:function(contents){var html=[];html.push("<tr id='todo_main_",contents.id,"' class='todos todo_",contents.id," todo_main_",contents.id,"'>");html.push("<td class='done_todo' nowrap><span id='todo_",contents.id,"_completed'>",contents.todo_completed_img,"</span></td>");html.push("<td class='flexable'><div class='titleFolder' style='background:none;height:16px;line-height:16px;padding-right:0;margin:0 10px;white-space:nowrap;'>");html.push("<div id='todo_",contents.id,"_title' style='float:left;width:auto;display:inline;",contents.todo_title_decoration,";'>",contents.todo_title,"</div><b style='margin:0 0 0 5px;float:left;'>",contents.todo_sub_count,"</b>");html.push("<img id='todo_",contents.id,"_folder' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon19.gif' width='11' height='12' class='folder' style='display:none;float:left;vertical-align:middle;margin:2px 0 0 5px;' /></div></td>");html.push("<td class='duedate_todo' nowrap><div id='todo_",contents.id,"_duedate' title='클릭하면 수정할 수 있어요!' onmouseover=\"this.style.border='solid 1px #d7d7d7'; this.style.cursor='pointer';\" onmouseout=\"this.style.border='none';\" style=\"margin:0 5px;\">",contents.todo_duedate_on,"</div></td>");html.push("<td class='leftday_todo' nowrap><span id='todo_",contents.id,"_leftday'  style='cursor:default;'>",contents.todo_leftdays,"</span></td>");html.push("<td class='priority_todo' nowrap><div id='todo_",contents.id,"_priority'>",contents.priority,"</div></td>");html.push("<td class='info_todo' nowrap id='todo_",contents.id,"_info_alarm_td'><img id='todo_",contents.id,"_info_alarm' src=\"",contents.info_alarm_src,"\" style=\"cursor: pointer;\" width='22' height='19' alt='알림' /><br /></td></tr>");return html.join("");},sub_todo_template:new Template(" <tr id='todo_main_#{id}' class='todos todo_#{parent_id} todo_sub_#{parent_id} todo_child_of_#{parent_id} todo_main_#{id}'>\r\n"+"  <td class='done_todo sub' nowrap><span id='todo_#{id}_completed'>#{todo_completed_img}</span></td>\r\n"+"  <td class='flexable sub'><span style='margin-left:10px;'>→ </span><span id='todo_#{id}_title' style='#{todo_title_decoration}'>#{todo_title}</span></td>\r\n"+"  <td class='duedate_todo sub' nowrap><span id='todo_#{id}_duedate'>#{todo_duedate_on}</span></td>\r\n"+"  <td class='leftday_todo sub' nowrap><span id='todo_#{id}_leftday'  style='cursor:default;'>#{todo_leftdays}</span></td>\r\n"+"  <td class='priority_todo sub' nowrap><div id='todo_#{id}_priority'>#{priority}</div></td>\r\n"+"  <td class='info_todo sub' nowrap id='todo_#{id}_info_alarm_td'><img id='todo_#{id}_info_alarm' src=\"#{info_alarm_src}\" style=\"cursor: pointer;\" width='22' height='19' alt='알림' /></td>\r\n"+" </tr>\r\n"),empty_todo_template:new Template(" <tr class='todos'><td colspan='6' class='first' style='height:50px;text-align:center;'>오늘의 할일이 없습니다.</td></tr>\r\n"),duedate_on_template:new Template(" <form onSubmit=\"todayTodoList.update_duedate('#{id}'); return false;\">\r\n"+"  <input id='todo_#{id}_duedate_on_edit' type='textfield' value='#{value}' class='editor_text_field' onclick='todayTodoList.attach_date_selector(this)'>\r\n"+" </form>"),post_draw:function(){if(this.model.entries.size()==0){this.first_element.insert({after:this.empty_todo_template.evaluate({})});}},register_field_event:function(todo){var _duedate_el=this.parent.select('#todo_'+todo.id+'_duedate')[0];var _complete_el=this.parent.select('#todo_'+todo.id+'_completed')[0];makeInPlaceEditor("todo_"+todo.id+"_title",'todo[title]','/todos/'+todo.id);_duedate_el.onclick=this.register_date_selector.bind(this,_duedate_el,todo);_complete_el.onclick=this.update_complete.bind(this,todo);this.bind_PopupWindow(todo);makeUpdatable('todo_'+todo.id+'_priority',todo.priority,'/todos/'+todo.id);if(!todo.parent_id){var _folder=this.parent.select('#todo_'+todo.id+'_folder')[0];if(todo.children_count>0){_folder.onclick=this.load_sub_todo.bind(this,todo.id);_folder.show();}}},created:function(obj){if(obj.parent_id){this.load_sub_todo(obj.parent_id,'open');return;}else{today_date=new Date().clear_time();if(obj.duedate_on&&today_date.before(obj.duedate_on,true)){this.model.entries.set(obj.id,obj);this.insert_todo_cell(obj,'first');}}},updated:function(obj,old_obj){if(obj.parent_id){this.load_sub_todo(obj.parent_id,'open');return;}else{today_date=new Date().clear_time();if(!obj.completed_at&&obj.duedate_on&&today_date.before(obj.duedate_on,true)){this.model.entries.set(obj.id,obj);this.delete_todo_cell(obj.id);this.insert_todo_cell(obj);}else{this.model.entries.set(obj.id,obj);this.delete_todo_cell(obj.id);}}}});var DwmView=Class.create();Object.extend(DwmView,{opacity:{basic:0.55,dragging:0.4,saving:0.3},starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;Element.setOpacity(element,DwmView.opacity.dragging);},endeffect:function(element){var toOpacity=typeof element._opacity=='number'?element._opacity:DwmView.opacity.basic;Draggable._dragging[element]=false;Element.setOpacity(element,toOpacity);},alarm_img:" <img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon_alarmclock.gif'/>",icon_list:["icon_u_birth.gif","icon_u_wedding.gif","icon_u_love.gif","icon_u_death.gif","icon_u_build.gif"],memorial_tag:function(event){var img_tag='';if(event.is_memorial()){var file=this.icon_list[event.class_type]||"icon_u_etc.gif";img_tag="<img src='http://mimg.daum-img.net/dcal_2/01_common/icon/"+file+"'/>";}
return img_tag;},event_duplicate_handler:function(){return false;var event=this.event;new EventDuplicateAlert({},{requestUrl:'/event/duplicate_event/'+event.id,doRequest:true,event:event});}});var AbstractEventAdder=Class.create();AbstractEventAdder.prototype={initialize:function(view,parent){this.parent=parent;this.view=view;this.dragging=false;},start:function(){this.event_mouse_down=this.on_mousedown.bindAsEventListener(this);this.event_mouse_up=this.on_mouseup.bindAsEventListener(this);this.event_mouse_move=this.on_mousemove.bindAsEventListener(this);this.event_keypress=this.on_keypress.bindAsEventListener(this);Event.observe(this.view,'mousedown',this.event_mouse_down);Event.observe(document,'mouseup',this.event_mouse_up);Event.observe(document,'mousemove',this.event_mouse_move);Event.observe(document,'keypress',this.event_keypress);if(this.on_start)this.on_start();return this;},deactivate:function(){console.log('AbstractEventAdder.deactivate called');Event.stopObserving(this.view,'mousedown',this.event_mouse_down);Event.stopObserving(document,'mouseup',this.event_mouse_up);Event.stopObserving(document,'mousemove',this.event_mouse_move);Event.stopObserving(document,'keypress',this.event_keypress);if(this.on_deactivate)this.on_deactivate();this.view=null;},on_mousedown:function(event){if(this.dragging)return;if(EventPopup.attached())return;if(this.start_drag){this.dragging=this.start_drag(event);}
Event.stop(event);},on_mousemove:function(event){if(!this.dragging)return;if(this.move_drag)this.move_drag(event);Event.stop(event);},on_mouseup:function(event){if(!this.dragging)return;if(this.finish_drag){this.dragging=this.finish_drag(event);}
Event.stop(event);},on_keypress:function(event){if(!event)event=window.event;if(event.keyCode==Event.KEY_ESC&&this.cancel_drag){this.dragging=this.cancel_drag(event);Event.stop(event);}}};var AbstractDragObserver=Class.create();AbstractDragObserver.prototype={onStart:function(event_name,draggable,event){if(draggable.drag_type&&draggable.on_start){draggable.on_start(event);}
var e=draggable.element;e.start_dragged_time=e.last_dragged_time=new Date();},onDrag:function(event_name,draggable,event){if(draggable.drag_type&&draggable.on_drag){draggable.on_drag(event);}
draggable.element.last_dragged_time=new Date();},onEnd:function(event_name,draggable,event){if(draggable.drag_type&&draggable.on_end){draggable.on_end(event);}
draggable.element.last_dragged_time=new Date();}};var ContentNavigation=Class.create({initialize:function(){this.current_text_element=FE.next(FE.down(FE.down($FE('contentNavigation'))));this.prev_button=FE.down(FE.previous(this.current_text_element));this.next_button=FE.down(FE.next(this.current_text_element));this.today_button=FE.down(FE.next(FE.next(this.current_text_element)));this.mode_menus=FE.childElements($FE('modeTab'));this.mode_menus[0].onclick=function(){history_controller.go("daily_view");};this.mode_menus[1].onclick=function(){history_controller.go("weekly_view");};this.mode_menus[2].onclick=function(){history_controller.go("monthly_view");};this.mode_menus[3].onclick=function(){history_controller.go("yearly_view:"+calendar.cursor.date.getFullYear());};this.mode_menus[4].onclick=function(){history_controller.go("agenda_view");};},set_view:function(view){this.mode_menus.each(function(m){m.className="tabOff";});switch(view){case"daily":this.prev_button.onclick=function(){loading.draw(function(){calendar.cursor.prev_day()})};this.next_button.onclick=function(){loading.draw(function(){calendar.cursor.next_day()})};this.today_button.onclick=function(){loading.draw(function(){calendar.cursor.update_date(new Date())})};this.mode_menus[1].style.width="37px";this.mode_menus[1].style.backgroundPosition="-39px 0";this.mode_menus[0].className="tabOn";break;case"weekly":this.prev_button.onclick=function(){loading.draw(function(){calendar.cursor.prev_week()})};this.next_button.onclick=function(){loading.draw(function(){calendar.cursor.next_week()})};this.today_button.onclick=function(){loading.draw(function(){calendar.cursor.update_date(new Date())})};this.mode_menus[2].style.width="37px";this.mode_menus[2].style.backgroundPosition="-77px 0";this.mode_menus[1].className="tabOn";break;case"monthly":this.prev_button.onclick=function(){loading.draw(function(){calendar.cursor.prev_month()})};this.next_button.onclick=function(){loading.draw(function(){calendar.cursor.next_month()})};this.today_button.onclick=function(){loading.draw(function(){calendar.cursor.update_date(new Date())})};this.mode_menus[3].style.width="37px";this.mode_menus[3].style.backgroundPosition="-115px 0";this.mode_menus[2].className="tabOn";this.mode_menus[4].style.backgroundPosition=calendar.preview?"-153px 0":"-152px 0";this.mode_menus[4].style.width=calendar.preview?"38px":"39px";break;case"yearly":this.prev_button.onclick=function(){loading.draw(function(){calendar.year_cursor.prev_year(true)})};this.next_button.onclick=function(){loading.draw(function(){calendar.year_cursor.next_year(true)})};this.today_button.onclick=function(){loading.draw(function(){calendar.year_cursor.today_year(true)})};break;case"agenda":this.prev_button.onclick=function(){loading.draw(function(){calendar.av.render('prev_1day')})};this.next_button.onclick=function(){loading.draw(function(){calendar.av.render('next_1day')})};this.today_button.onclick=function(){loading.draw(function(){calendar.av.render('curr')})};this.mode_menus[4].className="tabOn";break;}},set_current_text:function(html){this.current_text_element.innerHTML=html;}});var RecommendView=Class.create();RecommendView.prototype={navigator_template:new Template("<a id=\"navigator_#{page_num}\" class=\"off\" onclick=\"recommendViewList.direct_paging(#{page_num});\" href=\"javascript:;\">#{page_num}</a>"),empty_recommend_template:new Template("<div id=\"recommend_empty\" class=\"recommend_empty\">#{message}</div>"),initialize:function(element){this.ename=element;this.total_count=0;this.recent_tab=$('recommend_recent_view');this.population_tab=$('recommend_population_view');this.operator_tab=$('recommend_operator_view');this.options={page:1,start_page:1,end_page:1,paging_size:10,tab_type:'recent_index',limit:10,sort_type:'date',sort_dir:'desc'};this.search_options={field:"title_description",keyword:""};this.register_events();},register_events:function(){var self=this;this.recent_tab.onclick=function(){self.options.tab_type='recent_index';self.reset_class_name(this);self.load_page(1,1,"date","desc","recent_index");};this.population_tab.onclick=function(){self.options.tab_type='population_index';self.reset_class_name(this);self.load_page(1,1,"addcount","desc","population_index");};this.operator_tab.onclick=function(){self.options.tab_type='operator_index';self.reset_class_name(this);self.load_page(1,1,"date","desc","operator_index");};},set_options:function(options){this.options.page=options.page;this.options.start_page=options.start_page;this.options.sort_type=options.sort_type;this.options.tab_type=options.tab_type||this.options.tab_type;},set_search_options:function(options){this.search_options=options;},reset_class_name:function(element){$$('#recommend_table_header .up').each(function(e){e.className="down";});if(element){$$('.recommend_tab li').each(function(e){e.className=(element==e)?"on":"off";});}},order_by_date:function(obj){obj.className=(obj.className!="up")?"up":"down";this.change_sort("date");this.sort_paging();},order_by_add_count:function(obj){obj.className=(obj.className!="up")?"up":"down";this.change_sort("addcount");this.sort_paging();},change_sort:function(sort_type){this.options.sort_dir=(this.options.sort_dir!="desc")?"desc":"asc";this.options.sort_type=sort_type;},toggle_bold_page_number:function(){var self=this;$('recommend_navigator_page_list').childElements().each(function(page){(page.id=='navigator_'+self.options.page)?page.className="on":page.className="off";});},generate_page_number:function(){var page_list=$('recommend_navigator_page_list');page_list.innerHTML="";if(this.total_count>((this.options.start_page+this.options.paging_size-1)*this.options.limit)){this.options.end_page=this.options.start_page+this.options.paging_size-1;}else{this.options.end_page=Math.ceil(this.total_count/this.options.paging_size);}
if(this.options.end_page==0&&this.total_count==0){page_list.insert({bottom:this.navigator_template.evaluate({page_num:1})});}else{var self=this;$R(this.options.start_page,this.options.end_page).each(function(page){page_list.insert({bottom:self.navigator_template.evaluate({page_num:page})});});}},validate_form:function(){var e=$('recommend_search_keyword');if(e.value.trim().length==0||e.value=='검색어'){calendar.notify("검색할 문구를 입력해주세요.");return false;}
if(e.value.length<2){calendar.notify("검색어를 두 글자 이상 입력해 주세요!");return false;}
return true;},show_empty:function(message){$('recommend_view').insert({bottom:this.empty_recommend_template.evaluate({message:message})});},sort_paging:function(){this.options.page=1;this.load_page(1);},direct_paging:function(num){this.options.page=num;this.toggle_bold_page_number();this.load_page(0);},navigate_paging:function(num){if((num==-1||num==-10)&&this.options.page==1){return;}
if(num==1&&(this.total_count<=(this.options.page*this.options.limit))){return;}
if(num==-10&&this.options.page<=10){return;}
if(num==10&&((this.options.page+this.options.paging_size)>Math.ceil(this.total_count/this.options.paging_size))){if(this.options.end_page==Math.ceil(this.total_count/this.options.paging_size)){return;}
this.options.page=Math.ceil(this.total_count/this.options.paging_size);}else{this.options.page+=num;}
if((num==-1&&this.options.page>=this.options.start_page)||(num==1&&this.options.page<=this.options.end_page)){this.toggle_bold_page_number();this.load_page(0);}else{this.load_page(1);}},load_page:function(paging_type,page,sort_type,sort_dir,action){if(!action){var action=this.options.tab_type;}
var _params={paging_type:paging_type,page:page||this.options.page,sort_type:sort_type||this.options.sort_type,sort_dir:sort_dir||this.options.sort_dir,tab_type:action||this.options.tab_type}
if(action=="search_recommend_in_main"){_params='paging_type='+paging_type;_params+='&page='+this.options.page;_params+='&sort_type='+this.options.sort_type;_params+='&sort_dir='+this.options.sort_dir;_params+='&tab_type='+this.options.tab_type;_params+='&search[field]='+this.search_options.field;_params+='&search[keyword]='+this.search_options.keyword;new Ajax.Updater('recommend_view','/search/'+action,{method:'get',evalScripts:true,parameters:_params});}else{new Ajax.Updater('recommend_view','/calendar_recommend/',{method:'get',evalScripts:true,parameters:_params});}},add_recommend:function(calendar_id,recommend_id,element){var add_btn=$('recommend_'+recommend_id+'_add_btn');var add_btn_detail=$('recommend_'+recommend_id+'_add_btn_detail');if(!add_btn.add_clicked&&!add_btn_detail.add_clicked){add_btn.add_clicked=true;add_btn_detail.add_clicked=true;if(model.calendar.entries.size()>=30){calendar.notify("카테고리 생성은 30개까지 가능합니다.");add_btn.add_clicked=false;add_btn_detail.add_clicked=false;return false;}
new Ajax.Request('calendar_recommend/add_recommend/'+calendar_id,{method:'get',onSuccess:function(transport){var add_count=parseInt($("recommend_"+recommend_id+"_add_count").innerHTML)+1;$("recommend_"+recommend_id+"_add_count").innerHTML=add_count;calendar.notify("공개 캘린더가 내 카테고리에 추가되었습니다.");add_btn.add_clicked=false;add_btn_detail.add_clicked=false;},onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);add_btn.add_clicked=false;add_btn_detail.add_clicked=false;}});}},recommened_sub_toggle:function(recommend_id){Element.toggle("recommend_"+recommend_id+"_sub");$(recommend_id+"_folder").className=$(recommend_id+"_folder").className=="folder_open"?"folder_close":"folder_open";}}
var ReceiveInvitationList=Class.create();ReceiveInvitationList.prototype={navigator_template:new Template("<a href=\"javascript:;\" id=\"navigator_#{page_num}\" class=\"off\" onclick=\"receiveInvitationList.direct_paging(#{page_num});\">#{page_num}</a>"),empty_share_template:new Template("<div class=\"share_empty\"><span>#{message}</span></div>"),initialize:function(element){this.ename=$(element);this.total_count=0;this.options={page:1,start_page:1,end_page:1,paging_size:10,limit:10,unread_count:0,tab_type:'normal'}
this.search_options={keyword:""}},set_options:function(options){this.options.page=options.page;this.options.start_page=options.start_page;this.options.tab_type=options.tab_type||this.options.tab_type;this.options.unread_count=options.unread_count||0;},set_search_options:function(options){this.search_options=options;},detail_view:function(element,id){if(!element.opened){element.opened=true;if(!element.ajax_called){new Ajax.Updater('detail_'+id+'_view','/share/receive_detail_view/'+id,{method:'get',asynchronous:true,evalScripts:true});}
this.ename.select('#receive_'+id+'_detail')[0].show();element.style.backgroundPosition='center -10px';element.ajax_called=true;}else{element.opened=false;this.ename.select('#receive_'+id+'_detail')[0].hide();element.style.backgroundPosition='center 7px';}},show_empty:function(message){$('receive_invitation_view').insert({bottom:this.empty_share_template.evaluate({message:message})});},toggle_confirm_view:function(flag,id){if(flag){this.ename.select('#beforeConfirm_'+id)[0].show();this.ename.select('#afterConfirm_'+id)[0].hide();this.ename.select('#td_accept_'+id)[0].show();this.ename.select('#td_modify_'+id)[0].hide();this.ename.select('#title_'+id)[0].style.fontWeight="bold";this.ename.select('#receive_email_'+id)[0].style.fontWeight="bold";this.ename.select('#receive_date_'+id)[0].style.fontWeight="bold";}else{this.ename.select('#beforeConfirm_'+id)[0].hide();this.ename.select('#afterConfirm_'+id)[0].show();this.ename.select('#td_accept_'+id)[0].hide();this.ename.select('#td_modify_'+id)[0].show();this.ename.select('#title_'+id)[0].style.fontWeight="normal"}},toggle_check:function(element){var _check=element.checked;this.ename.select('.delete_checkbox').each(function(e){e.checked=_check;});},share_delete:function(){var values=[];this.ename.select('.delete_checkbox').each(function(e){if(e.checked)values.push(e.value);});var _param={type:(this.ename.id=='receive_invitation_view')?'receive':'send'};if(values.length>0){var self=this;new Ajax.Request('/share/destroy/'+values.join(","),{method:'post',parameters:_param,onSuccess:function(){calendar.notify("정상적으로 삭제됐습니다.");self.direct_paging((self.options.page||1));},onFailure:function(){calendar.notify("삭제에 실패했습니다.<br />잠시 후 다시 시도해 주세요.");}});}else{calendar.notify("삭제할 공유목록을 선택하세요.");}
$(_param.type+'ShareDeleteBox').checked=false;},share_confirm:function(id){if(model.calendar.entries.size()>=30){calendar.notify("카테고리 생성은 30개까지 가능합니다.");return false;}
var self=this;new Ajax.Request('/share/confirm/'+id,{method:'post',onSuccess:function(){calendar.notify("공유 카테고리를 추가하였습니다.");todayScheduleControl.share_update(self.options.unread_count-1);self.toggle_confirm_view(false,id);var element=self.ename.select('#receive_'+id+'_detail_btn')[0];self.detail_view(element,id);element.ajax_called=false;},onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);}});},duplicate_category:function(source_id){var selected_calendar=$('calendar_id').value;new Ajax.Request('/share/duplicate/'+selected_calendar,{method:'post',parameters:{source_id:source_id},onSuccess:function(transport){calendar.notify("카테고리를 복사하였습니다.");},onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);}});},validate_form:function(){var e=$('share_query');if(e.value.trim().length==0||e.value=='검색어'){calendar.notify("검색할 문구를 입력해주세요.");return false;}
if(e.value.length<2){calendar.notify("검색어를 두 글자 이상 입력해 주세요!");return false;}
return true;},modify_share:function(){history_controller.go("calendar_setting");},toggle_bold_page_number:function(){var self=this;$('receive_navigator_page_list').childElements().each(function(page){(page.id=='navigator_'+self.options.page)?page.className="on":page.className="off";});},generate_page_number:function(){var page_list=$('receive_navigator_page_list');page_list.innerHTML="";if(this.total_count>((this.options.start_page+this.options.paging_size-1)*this.options.limit)){this.options.end_page=this.options.start_page+this.options.paging_size-1;}else{this.options.end_page=Math.ceil(this.total_count/this.options.paging_size);}
if(this.options.end_page==0&&this.total_count==0){page_list.insert({bottom:this.navigator_template.evaluate({page_num:1})});}else{var self=this;$R(this.options.start_page,this.options.end_page).each(function(page){page_list.insert({bottom:self.navigator_template.evaluate({page_num:page})});});}},direct_paging:function(num){this.options.page=num;this.toggle_bold_page_number();this.load_page(0);},navigate_paging:function(num){if((num==-1||num==-10)&&this.options.page==1){return;}
if(num==1&&(this.total_count<=(this.options.page*this.options.limit))){return;}
if(num==-10&&this.options.page<=10){return;}
if(num==10&&((this.options.page+this.options.paging_size)>Math.ceil(this.total_count/this.options.paging_size))){if(this.options.end_page==Math.ceil(this.total_count/this.options.paging_size)){return;}
this.options.page=Math.ceil(this.total_count/this.options.paging_size);}else{this.options.page+=num;}
if((num==-1&&this.options.page>=this.options.start_page)||(num==1&&this.options.page<=this.options.end_page)){this.toggle_bold_page_number();this.load_page(0);}else{this.load_page(1);}},load_page:function(paging_type){var _params={paging_type:paging_type,page:this.options.page}
if(this.options.tab_type=="search"){_params='paging_type='+paging_type;_params+='page='+this.options.page;_params+='&search[keyword]='+this.search_options.keyword;new Ajax.Updater('receive_invitation_view','/search/share_receive_search',{method:'get',evalScripts:true,parameters:_params});}else{new Ajax.Updater('receive_invitation_view','/share/receive_invitation',{method:'get',evalScripts:true,parameters:_params});}},duplicate_popup:function(event,source_id){var e=Event.element(event);var popup=null;popup=new PopupWindow("/share/popup_duplicate?source_id="+source_id,{repeat_event:false,width:500,offset_x:-200});Object.extend(e,popup);e.onclick();}}
var SendInvitationList=Class.create();SendInvitationList.prototype=Object.extend(Object.extend({},ReceiveInvitationList.prototype),{navigator_template:new Template("<a href=\"javascript:;\" id=\"navigator_#{page_num}\" class=\"off\" onclick=\"sendInvitationList.direct_paging(#{page_num});\">#{page_num}</a>"),set_options:function(options){this.options.page=options.page;this.options.start_page=options.start_page;this.options.tab_type=options.tab_type||this.options.tab_type;},show_empty:function(message){$('send_invitation_view').insert({bottom:this.empty_share_template.evaluate({message:message})});},detail_view:function(element,id,calendar_id){if(!element.opened){element.opened=true;if(!element.ajax_called){new Ajax.Updater('detail_'+id+'_view','/share/send_detail_view/'+calendar_id,{method:'get',asynchronous:true,evalScripts:true});}
$('send_'+id+'_detail').show();$('send_'+id+'_detail_btn').style.backgroundPosition='center -10px';element.ajax_called=true;}else{element.opened=false;$('send_'+id+'_detail').hide();$('send_'+id+'_detail_btn').style.backgroundPosition='center 7px';}},toggle_bold_page_number:function(){var self=this;$('send_navigator_page_list').childElements().each(function(page){(page.id=='navigator_'+self.options.page)?page.className="on":page.className="off";});},generate_page_number:function(){var page_list=$('send_navigator_page_list');page_list.innerHTML="";if(this.total_count>((this.options.start_page+this.options.paging_size-1)*this.options.limit)){this.options.end_page=this.options.start_page+this.options.paging_size-1;}else{this.options.end_page=Math.ceil(this.total_count/this.options.paging_size);}
if(this.options.end_page==0&&this.total_count==0){page_list.insert({bottom:this.navigator_template.evaluate({page_num:1})});}else{var self=this;$R(this.options.start_page,this.options.end_page).each(function(page){page_list.insert({bottom:self.navigator_template.evaluate({page_num:page})});});}},load_page:function(paging_type){var _params={paging_type:paging_type,page:this.options.page}
if(this.options.tab_type=="search"){_params='paging_type='+paging_type;_params+='page='+this.options.page;_params+='&search[keyword]='+this.search_options.keyword;new Ajax.Updater('send_invitation_view','/search/share_send_search',{method:'get',evalScripts:true,parameters:_params});}else{new Ajax.Updater('send_invitation_view','/share/send_invitation',{method:'get',evalScripts:true,parameters:_params});}}});var SearchEventView=Class.create();SearchEventView.prototype=Object.extend(Object.extend({},EventView.prototype),{initialize:function(ename,cursor_step,model,events_grid){this.ename=ename;this.model=model;this.parent=$(this.ename);this.cursor_step=cursor_step||1;if(events_grid)this.livegrid=new LiveGrid(events_grid.element,this.fetch.bind(this),events_grid.options);this.total_count=0;this.sort={selected:"time",complete:{direction:"asc"},time:{direction:"asc"},title:{direction:"asc"},class_type:{direction:"asc"}};this.flag={image:false,invite:false,alarm:false,repeat:false,link:false};this.register_event_reactor();this.register_calendar_reactor();this.date_observer_instance=$A;if(events_grid){if(events_grid.options.header_table&&events_grid.options.grid_table){this.init_resizer_set(events_grid);}}},get_template_contents:function(contents,type){if(type=="all"){var ret=new Array();ret.push("<tr id=\"",contents.event_id,"_main\" class=\"agenda_main\">");ret.push("<td class='done_event' nowrap><span class='event_",contents.event_id,"_completed' style='cursor:pointer;'>",contents.event_completed_img,"</span></td>");ret.push("<td class=\"during\" nowrap style=\"text-align:left;\"><div style=\"margin-right:5px;\">");ret.push("<div id=\"",contents.event_id,"_category\" title=\"",contents.category_name,"\" class=\"agenda_tag\" style=\"background:url('http://mimg.daum-img.net/dcal_2/01_common/agenda_tag.gif') no-repeat left top ",contents.event_color,";\"></div>");ret.push("<div id=\"",contents.event_id,"_date\" class=\"contenter\" style=\"color:",contents.event_color,";margin-left:2px;\" title=\"",contents.event_date,"\">",contents.event_date,"</div></div></td>");ret.push("<td class=\"flexable\" valign=\"middle\"><div class=\"wrapper\" style=\"margin:1px 5px 0 10px;width:95%;height:auto;line-height:16px;\">");ret.push("<div style=\"display:inline;\">",contents.event_title_info,"<span id=\"",contents.event_id,"_title\" class=\"agenda_title\" style=\"",contents.event_title_decoration," float:left;\" >",contents.event_title,"</span>");ret.push("<a href=\"javascript:;\" onclick=\"search_event_view.agenda_sub_toggle(this, '",contents.event_id,"_sub');\" title=\"자세히 보기\" class=\"folder_open\">자세히 보기</a>",contents.event_link_to,"</div></div></td>");ret.push("<td class=\"info\" nowrap><img id=\"",contents.event_id,"_info_link\" src=\"",contents.info_link_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"링크설정을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_image\" src=\"",contents.info_image_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"이미지를 첨부/변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_alarm\" class=\"alarm\" src=\"",contents.info_alarm_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"알림을 변경하세요!\" />");ret.push("<img id=\"",contents.event_id,"_info_repeat\" src=\"",contents.info_repeat_src,"\" style=\"cursor: pointer;\" width=\"22\" height=\"19\" alt=\"반복설정을 변경하세요!\" /></td></tr>");ret.push("<tr id=\"",contents.event_id,"_sub\" style=\"display:none;\" class=\"agenda_sub\">");ret.push("<td class=\"subplan_all\" colspan=\"4\"><div class='subPlanImg'>, <img src='",contents.event_attach,"' class='attach_preview' width='181' height='80' style=\"cursor:pointer;\" /></div>");ret.push("<div class='subPlanDesc'><div class='info'><label>내용 :</label><div id=\"",contents.event_id,"_description\" class=\"desc\">",contents.event_description,"</div><div class=\"clear\"></div></div><div class='info'><label>링크 :</label>");ret.push("<div style=\"float:left;display:inline;\"><span id=\"",contents.event_id,"_link\" class=\"link\">",contents.event_url,"</span><a href=\"javascript:;\" onclick=\"window.open('",contents.event_link_go,"');\" style=\"margin-left:10px;\">");ret.push("<img src=\"http://mimg.daum-img.net/dcal_2/01_common/bnt_go.gif\" width=\"28\" height=\"16\" alt=\"GO\" style=\"vertical-align:middle;\" /></a></div><div class=\"clear\"></div></div>");ret.push("<div class=\"button\"><img id=\"",contents.event_id,"_delete_btn\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_del.gif\" width=\"28\" height=\"16\" alt=\"삭제\" />\r\n");ret.push("<img id=\"",contents.event_id,"_detail_btn\" onclick=\"history_controller.go('",contents.edit_view,"');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_s_view.gif\" width=\"58\" height=\"16\" alt=\"자세히보기\" /></div></div>");ret.push("<img onclick=\"Element.hide('",contents.event_id,"_sub');\" src=\"http://mimg.daum-img.net/dcal_2/01_common/btn/bnt_close.gif\" width=\"17\" height=\"10\" alt=\"닫기\" class=\"close\" /></td></tr>");return ret.join("");}else if(type=="special"){return this.special_event_main_template.evaluate(contents);}},draw_events:function(){var models=this.model.entries.values();if(this.sort.selected=="time"){models=models.sortBy(function(event){return event.start_at;});}else if(this.sort.selected=="complete"){models=models.sortBy(function(event){return event.completed_at;});}else{models=models.sortBy(function(event){return event.title;});}
if(this.sort[this.sort.selected].direction=="desc"){models.reverse(models);}
models.each(function(event){this.draw_event(event);}.bind(this));return models.size();},draw:function(){this.cleanup();this.pre_draw();this.draw_events();this.post_draw();this.reset_grid_height();},fetch:function(page,size){if(this.livegrid&&this.livegrid.active)
this.load_model(page+1,size);return this.total_count-(page+1)*size;},load_model:function(page,limit){_params={page:page||this.page,what_is:"event"};var self=this;new Ajax.Request('/search/search.js?'+self.search_params,{method:"get",parameters:_params,onSuccess:function(transport){eval("var r = "+transport.responseText);r.events.each(function(r_obj){if(!self.model.entries.get(r_obj.id)){self.model.created(r_obj);model.event.created(r_obj);self.draw_event(r_obj);}});if((!page||page==1)&&r.size()<=0){self.show_empty();self.reset_grid_height();}
if(self.livegrid)self.livegrid.status=(self.total_count-page*limit)>0?1:2;},onFailure:function(transport){}});},event_range_to_array:function(range,allday){return[range.start];},format_range:function(event,date){if(event.allday){return event.start_at.format("#{yy}년 #{m}월 #{d}일 (#{ka})");}
return event.start_at.format("#{yy}년#{m}월#{d}일(#{ka}) #{kp}#{II}시#{MM}분");},draw_by_model:function(){this.cleanup();this.pre_draw();this.draw_events();this.post_draw();},post_draw:function(){if(this.model.entries.size()==0){this.parent.insert({bottom:"<tr><td colspan='3' class='first' style='height:50px;'>검색된 일정/기념일이 없습니다.</td></tr>"});}},event_updated:function(event,old_event){console.log('event update !!');this.event_destroyed(event);this.model.entries.set(event.id,event);this.draw_event(model.event.get(event.id));}});var SearchTodoView=Class.create();SearchTodoView.prototype=Object.extend(Object.extend({},TodoList.prototype),{todo_template:new Template(" <tr id='todo_main_#{id}' class='todos todo_#{id} todo_main_#{id}'>\r\n"+"  <td class='checker_todo' nowrap style='display:none;'><input type='checkbox' class='delete_checkbox' value='#{id}'></td>\r\n"+"  <td class='done_todo first' nowrap><span id='todo_#{id}_completed' style='cursor:pointer;'>#{todo_completed_img}</span></td>\r\n"+"  <td class='flexable todo'>\r\n"+"   <div class='titleFolder' style='background:none;height:16px;line-height:16px;padding-right:0;margin:0 10px;'>\r\n"+"    <div id='todo_#{id}_title' style='float:left;display:inline;#{todo_title_decoration};'>#{todo_title}</div><b style='margin:0 0 0 5px;float:left;'>#{todo_sub_count}</b>\r\n"+"    <img id='todo_#{id}_folder' src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon19.gif' width='11' height='12' alt='' class='folder' style='display:none;float:left;vertical-align:middle;margin:2px 0 0 5px;' />\r\n"+"   </div>\r\n"+"  </td>\r\n"+"  <td class='add_todo' nowrap style='display:none;'><img id='todo_#{id}_add_sub' src='http://mimg.daum-img.net/dcal_2/01_common/btn/blt_m04.gif' width='14' height='14' alt='추가' style='cursor:pointer;' /><br /></td>\r\n"+"  <td class='duedate_todo' nowrap><div id='todo_#{id}_duedate' title='클릭하면 수정할 수 있어요!' onmouseover=\"this.style.border='solid 1px #d7d7d7';\" onmouseout=\"this.style.border='none';\" style=\"margin:0 5px;\">#{todo_duedate_on}</div></td>\r\n"+"  <td class='leftday_todo' nowrap><span id='todo_#{id}_leftday' >#{todo_leftdays}</span></td>\r\n"+"  <td class='priority_todo' nowrap><div id='todo_#{id}_priority'>#{priority}</div></td>\r\n"+"  <td class='info_todo' nowrap id='todo_#{id}_info_alarm_td'><img id='todo_#{id}_info_alarm' src=\"#{info_alarm_src}\" style=\"cursor: pointer;\" width='22' height='19' alt='알림' /><br /></td>\r\n"+" </tr>\r\n"),initialize:function(ename,model,grid){this.ename=ename;this.model=model;this.parent=$(this.ename);this.first_element=$('todo_table_first');this.last_element=$('todo_table_last');this.toggle_button={checked:false};if(grid){this.livegrid=new LiveGrid(grid.element,this.fetch.bind(this),grid.options);}
this.limit=10;this.total_count=0;this.sort={selected:"recent",recent:{direction:"desc"},title:{direction:"asc"},duedate:{direction:"asc"},priority:{direction:"desc"},complete:{direction:"desc"},alarm:{direction:"desc"}};this.date_observer_instance=$A;this.register_todo_reactor();if(grid){if(grid.options.header_table&&grid.options.grid_table){this.init_resizer_set(grid);}}},load_model:function(page,limit){_params={page:page||this.page,limit:limit||this.limit,what_is:"todo"};var self=this;new Ajax.Request('/search/search.js?'+self.search_params,{method:"get",parameters:_params,onSuccess:function(transport){eval("var r = "+transport.responseText);r.todos.each(function(r_obj){if(!self.model.entries.get(r_obj.id)){self.model.created(r_obj);model.todo.created(r_obj);self.draw_todo(r_obj,null,'last');}});if((!page||page==1)&&r.count<=0){self.show_empty();self.reset_grid_height();}
if(self.livegrid)self.livegrid.status=(self.total_count-page*limit)>0?1:2;},onFailure:function(transport){}});},draw_by_model:function(){this.cleanup();this.pre_draw();this.draw_todos();this.post_draw();},draw_todos:function(){var self=this;switch(this.sort.selected){case"title":models=this.model.list().sortBy(function(todo){return todo.title;});break;case"complete":models=this.model.list().sortBy(function(todo){return todo.completed_at;});break;case"priority":models=this.model.list().sortBy(function(todo){return todo.priority;});break;case"duedate":models=this.model.list().sortBy(function(todo){return todo.duedate_on;});break;default:models=this.model.list().sortBy(function(todo){return todo.id;});break;}
if(this.sort[this.sort.selected].direction=="desc")models.reverse(models);models.each(function(todo){self.draw_todo(todo,null,'last');});},rearrange_by:function(field,linkObj){var sort=this.sort;if(sort.selected==field)
sort[sort.selected].direction=(sort[sort.selected].direction=="asc"?"desc":"asc");else
sort.selected=field;if(linkObj)linkObj.className=(linkObj.className=="up")?"down":"up";this.cleanup();this.draw_by_model();},updated:function(obj,old_obj){var sub_todo_elements_count=this.parent.select('.todo_sub_'+obj.id).length;this.model.entries.set(obj.id,obj);var rowIndex=this.delete_todo_cell(obj.id);if(rowIndex!=-1)this.insert_todo_cell(obj,rowIndex);if(sub_todo_elements_count>0)this.load_sub_todo(obj.id,'open');},post_draw:function(){if(this.model.entries.size()==0){if(!$('empty_todo_view'))
$('todo_table_last').insert({before:"<tr id='empty_todo_view'><td colspan='6' class='first' style='height:50px;'>검색된 할일이 없습니다.</td></tr>"});}}});var SearchRecommendView=Class.create();SearchRecommendView.prototype=Object.extend(Object.extend({},EventView.prototype),{recommend_template:new Template(" <tr id=\"recommend_main_#{id}\" class=\"recommends recommend_#{id} recommend_main_#{id}\">\r\n"+"  <td class=\"number\" nowrap><span style=\"cursor:pointer;\">#{id}</span></td>\r\n"+"  <td class=\"flexable recommend\">\r\n"+"   <div class=\"wrapper\" style=\"background:none;height:16px;line-height:16px;padding-right:0;margin:0 10px;\">\r\n"+"    <div id=\"recommend_#{id}_title\" style=\"margin:1px 5px 0 10px;height:16px;line-height:16px;\"><div style=\"display:inline;\"><span id=\"#{id}_title\">#{name}</span><img src=\"http://mimg.daum-img.net/dcal_2/01_common/icon/icon19.gif\" width=\"11\"eight=\"12\" class=\"folder\" onclick=\"Element.toggle('recommend_#{id}_sub');\" style=\"margin-top:1px;\"/></div></div></td>\r\n"+"  <td class=\"owner\" nowrap>#{daumname}</td>\r\n"+"  <td id=\"recommend_#{id}_add_count\" class=\"add_count\" nowrap>#{add_count}</td>\r\n"+"  <td class=\"date\" nowrap>#{date}</td>\r\n"+"  <td class=\"view\" nowrap><div><a href=\"javascript:;\" onclick=\"calendar.preview_calendar(#{calendar_id});\">버튼</a></div></td>\r\n"+"  <td class=\"add\" nowrap><div><a href=\"javascript:;\" id=\"recommend_#{id}_add_btn\" onclick=\"search_recommend_view.add_recommend(#{calendar_id}, #{id});\">버튼</a></div></td>\r\n"+" </tr>\r\n"+" <tr id=\"recommend_#{id}_sub\" class=\"recommend_sub\" style=\"display:none;\">\r\n"+"  <td colspan=\"7\" class=\"recommend_detail\">\r\n"+"   <ul>\r\n"+"    <li>내용 : #{description}</li>\r\n"+"    <li>\r\n"+"     <a href=\"javascript:;\" onclick=\"calendar.preview_calendar(#{calendar_id});\" class=\"preview\" title=\"미리보기\">미리보기</a>"+"     <a href=\"javascript:;\" id=\"recommend_#{id}_add_btn_detail\" onclick=\"search_recommend_view.add_recommend(#{calendar_id}, #{id});\" class=\"add\" title=\"내 캘린더로 추가하기\">내 캘린더로 추가하기</a>"+"     <div style=\"clear:both;\"></div>\r\n"+"    </li>\r\n"+"   </ul>\r\n"+"   <a href=\"javascript:;\" class=\"recommend_detail_close\" onclick=\"Element.toggle('recommend_#{id}_sub');\" title=\"닫기\">닫기</a>\r\n"+"  </td>\r\n"+" </tr>\r\n"),empty_recommend_template:new Template(" <tr id=\"empty_recommend_view\" class=\"recommend_main\" style=\"height:50px;\">\r\n"+"  <td colspan=\"7\" class=\"recommend_empty\">검색된 공개 캘린더가 없습니다.</td>\r\n"+" </tr>"),initialize:function(ename,model,grid){this.ename=ename;this.model=model;this.parent=$(this.ename);this.first_element=$('recommend_table_first');this.last_element=$('recommend_table_last');if(grid){this.livegrid=new LiveGrid(grid.element,this.fetch.bind(this),grid.options);}
this.limit=10;this.total_count=0;this.sort={selected:"date",date:{direction:"desc"},addcount:{direction:"desc"}};if(grid){if(grid.options.header_table&&grid.options.grid_table){this.init_resizer_set(grid);}}},fetch:function(page,size){if(this.livegrid&&this.livegrid.active){this.load_model(page+1,size);return this.total_count-(page+1)*size;}
return this.draw_recommends();},load_model:function(page,limit){_params={page:page||this.page,what_is:"recommend"};var self=this;new Ajax.Request('/search/search.js?'+self.search_params,{method:"get",parameters:_params,onSuccess:function(transport){eval("var r = "+transport.responseText);r.recommends.each(function(r_obj){if(!self.model.entries.get(r_obj.id)){self.model.created(r_obj);self.draw_recommend(r_obj);}});if((!page||page==1)&&r.size()<=0){self.show_empty();self.reset_grid_height();}
if(self.livegrid)self.livegrid.status=(self.total_count-page*limit)>0?1:2;},onFailure:function(transport){}});},show_empty:function(){this.last_element.insert({before:this.empty_recommend_template.evaluate({})});},draw_recommends:function(){var self=this;switch(this.sort.selected){case"date":models=this.model.list().sortBy(function(recommend){return recommend.id;});break;case"addcount":models=this.model.list().sortBy(function(recommend){return recommend.add_count;});break;default:models=this.model.list().sortBy(function(recommend){return recommend.id;});break;}
if(this.sort[this.sort.selected].direction=="desc")models.reverse(models);models.each(function(recommend){self.draw_recommend(recommend);});return models.size();},draw_recommend:function(recommend){var contents=this.make_contents(recommend);this.last_element.insert({before:this.recommend_template.evaluate(contents)});this.reset_grid_height();},make_contents:function(recommend){var _contents={id:recommend.id,name:recommend.calendar.name,calendar_id:recommend.calendar.id,daumname:recommend.daumname,add_count:recommend.add_count||0,date:recommend.created_at.format("#{y}.#{mm}.#{dd}"),description:(recommend.calendar.description)?recommend.calendar.description:"(내용 없음)"};return _contents;},draw_by_model:function(){this.cleanup();this.draw_recommends();this.post_draw();},cleanup:function(){this.parent.select('#empty_recommend_view').invoke('remove');this.parent.select('.recommends').invoke('remove');this.parent.select('.recommend_sub').invoke('remove');},rearrange_by:function(field,linkObj){var sort=this.sort;if(sort.selected==field)
sort[sort.selected].direction=(sort[sort.selected].direction=="asc"?"desc":"asc");else
sort.selected=field;if(linkObj)linkObj.className=(linkObj.className=="up")?"down":"up";this.cleanup();this.draw_by_model();},post_draw:function(){if(this.model.entries.size()==0&&!$('empty_recommend_view')){this.show_empty();}},add_recommend:function(calendar_id,recommend_id){var add_btn=$('recommend_'+recommend_id+'_add_btn');var add_btn_detail=$('recommend_'+recommend_id+'_add_btn_detail');if(!add_btn.add_clicked&&!add_btn_detail.add_clicked){add_btn.add_clicked=true;add_btn_detail.add_clicked=true;if(model.calendar.entries.size()>=30){calendar.notify("카테고리 생성은 30개까지 가능합니다.");return false;}
new Ajax.Request('calendar_recommend/add_recommend/'+calendar_id,{method:'get',onSuccess:function(transport){var add_count=parseInt($("recommend_"+recommend_id+"_add_count").innerHTML)+1;$("recommend_"+recommend_id+"_add_count").innerHTML=add_count;calendar.notify("공개 캘린더가 내 카테고리에 추가되었습니다.");add_btn.add_clicked=false;add_btn_detail.add_clicked=false;},onFailure:function(transport){var message=/\(\'(.*)\'\)\;$/.exec(transport.responseText)[1];if(message.indexOf('Mysql')!=-1){message="일정 복사/이동에 실패 했습니다.<br />중복되는 일정이 있거나 저장하는 과정에 오류가 있습니다.";}else if(message.indexOf('Could')!=-1||message.indexOf('다')==-1){message="카테고리가 삭제되었거나 접근권한이 없습니다.";}
calendar.notify(message);add_btn.add_clicked=false;add_btn_detail.add_clicked=false;}});}}});var DailyAlldayEventDiv=Class.create();Object.extend(DailyAlldayEventDiv,{make_element:function(event){var div_id='event_'+event.id+'_div';FE.insert_html('daily_allday_events_owner',"<div id='"+div_id+"' class='event'><dl class='line top'><dd class='r1'></dd></dl><dl class='title'><dd class='left'><img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon_continue_l.gif' width='3' height='6' alt='' class='continue' /></dd><dd class='memorial'></dd><dd class='title'></dd><dd class='link'></dd><dd class='right'><img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon_continue_r.gif' width='3' height='6' alt='' class='continue' /></dd></dl><dl class='line bottom'><dd class='r1'></dd></dl></div>");var element=$FE(div_id);var div=new DailyAlldayEventDiv(event,element);return Object.extend(element,div).start();}});DailyAlldayEventDiv.prototype={initialize:function(event,div){this.event=event;this.title_div=FE.next(FE.down(div));this.title_left=FE.down(this.title_div);this.title_memorial=FE.next(this.title_left);this.title_dd=FE.next(this.title_memorial);this.title_link=FE.next(this.title_dd);this.title_right=FE.next(this.title_link);this.color_divs=[this.title_div,FE.down(FE.previous(this.title_div)),FE.down(FE.next(this.title_div))].flatten();var cd=$('daily_grid').date.clear_time();FE.setVisible(this.title_left,event.start_at.before(cd));FE.setVisible(this.title_right,event.end_at.after(cd));},start:function(){FE.setOpacity(this,DwmView.opacity.basic);this.updated(this.event);this.title_div.onclick=this.edit_event.bindAsEventListener(this);return this;},deactivate:function(){this.event=null;FE.remove(this);this.onclick=this.title_div=this.title_left=this.title_dd=this.title_link=this.title_right=this.color_divs=this.title_memorial=null;},updated:function(event){this.color_divs.each(function(div){FE.setBgColor(div,event.color());});var title=event.get_view_title();this.title=event.get_view_title_description();var event_title_decoration=this.event.completed_at?'text-decoration:line-through;':'';if(!event.allday)title=event.start_at.format('(#{kp}#{II}:#{MM}) ')+title;title='<a href="javascript:;" style="'+event_title_decoration+'">'+title.unescapeHTML()+'</a>';if(event.has_alarm()){title+=' '+DwmView.alarm_img;}
this.title_dd.innerHTML=title;if(this.event.url){this.title_link.innerHTML="<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' width='13' height='8' title='"+this.event.url.gsub(/\"|\'/,'')+" 으로 이동하기' class='link_to_url' style='position:absolute;top:3px;right:8px;' onclick='calendar.link_to_url(event, \""+escape(this.event.url)+"\");' />";}
this.title_memorial.innerHTML=DwmView.memorial_tag(event);},edit_event:function(event){if((new Date()-(this.last_dragged_time||0))<500)return;Event.stop(event);_option={repeat_event_start_at:event.start_at,offset_x:200,offset_y:300,parent:this,event:this.event,method:'put'};EventPopup.attach(this.event,_option);},on_resize:function(){}};var DailyAlldayEventsOwner=Class.create();DailyAlldayEventsOwner.prototype={initialize:function(){this._do_not_resize=0;},start:function(){if(!calendar.preview)this.onclick=this.popup_new_event.bindAsEventListener(this);},deactivate:function(){this.onclick=null;},today_on:function(){if(this._today)return;FE.addClassName(this,'today');this._today=true;},today_off:function(){if(!this._today)return;FE.removeClassName(this,'today');this._today=false;},popup_new_event:function(){var self=this;var start_at=$('daily_grid').date.clear_time();var _option={allday:true,offset_x:350,offset_y:200,parent:$('wv_container'),startAt:start_at,endAt:start_at,category_id:model.calendar.get_default().id};EventPopup.attach(null,_option);},add_event:function(event){var div=DailyAlldayEventDiv.make_element(event);div.on_resize();this.on_resize();},remove_event:function(event){var found=FE.childElements(this).find(function(div){return div.event.id==event.id;});if(found)found.deactivate();this.on_resize();},clear_events:function(){FE.childElements(this).invoke('deactivate');},resize_once:function(callback){this._do_not_resize++;try{callback(this);}finally{this._do_not_resize--;this.on_resize();}},on_resize:function(){if(this._do_not_resize>0)return;var children=FE.childElements(this);console.log('daily_allday_events_owner.on_resize called');var allday_height=[children.length*17,30].max()+8;FE.setHeight($FE('daily_allday_events_owner'),allday_height);if(!($FE('daily_grid').target_height))$FE('daily_grid').target_height=calendar.height-115;FE.setHeight($FE('daily_grid'),$FE('daily_grid').target_height+55-allday_height);}};var DailyEventDiv=Class.create();Object.extend(DailyEventDiv,{make_element:function(owner,event){var div_id='event_'+event.id+'_div';FE.insert_html('daily_events_owner',"<div id='"+div_id+"' class='event'><dl class='line top'><dd class='r4'></dd><dd class='r2'></dd><dd class='r1'></dd></dl><dl class='body'><dt class='time'>시간</dt><dd class='title'>내용</dd><dd class='resize' style='position: absolute; top: 0;'><img src='http://mimg.daum-img.net/dcal_2/01_common/c_blt_s01.gif' width='7' height='6' alt=''/></dd></dl><dl class='line bottom'><dd class='r1'></dd><dd class='r2'></dd><dd class='r4'></dd></dl></div>");var element=$FE(div_id);var div=new DailyEventDiv(owner,event,element);return Object.extend(element,div).start();},body_snap:function(x,y,draggable){var e=draggable.element;var y_scr=$('daily_grid').scrollTop-draggable.originalScrollTop;var snapped_cell=$('daily_grid').get_cell_of_position(10,y+y_scr);e.snapped_date=snapped_cell.date;e.show_time(e.snapped_date);return[e.relative_x,snapped_cell.cell_offset()[1]];},resize_snap:function(x,y,draggable){var e=draggable.element;var y_scr=$('daily_grid').scrollTop-draggable.originalScrollTop;var resized_cell=$('daily_grid').get_cell_of_position(10,y+(FE.up(FE.up(e)).offsetTop||0)+y_scr);e.resized_cell=resized_cell;return[x,resized_cell.cell_offset()[1]];},move_draggable:{drag_type:'daily_move',on_start:Prototype.emptyFunction,on_drag:Prototype.emptyFunction,on_end:function(event){(this.element.copy_mode)?this.element.copy_time():this.element.update_time();}},resize_draggable:{drag_type:"daily_resize",draw:function(point){var pos=Position.cumulativeOffset(this.element);var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i]);}.bind(this));p=this.options.snap(p[0],p[1],this);if(!this.element.before_resize_y||this.element.before_resize_y!=p[1]){this.element.before_resize_y=p[1];var event_div=FE.up(FE.up(this.element));var h=p[1]+17-event_div.offsetTop;if(h<event_div.extra_height)h=event_div.extra_height+1;event_div.set_height(h);}},on_start:Prototype.emptyFunction,on_drag:Prototype.emptyFunction,on_end:function(event){FE.up(FE.up(this.element)).set_resize_position();}}});DailyEventDiv.prototype={initialize:function(owner,event,div){this.owner=owner;var line_top=FE.down(div);this.body_element=FE.next(line_top);var line_bottom=FE.next(this.body_element);this.width_elements=[this.body_element,line_top,line_bottom];this.time_dt=FE.down(this.body_element);this.header_color_elements=[FE.childElements(line_top),this.time_dt].flatten();this.normal_color_elements=[FE.childElements(line_bottom),this.body_element].flatten();this.title_dd=FE.next(this.time_dt);this.resize_element=FE.next(this.title_dd);this.extra_height=6;this.event=event;this.level=1;this.depth=1;},start:function(){this.show(this.event);calendar.preview?this.start_listening_for_preview():this.start_listening();return this;},start_listening:function(){FE.setOpacity(this,DwmView.opacity.basic);this.onclick=this.edit_event.bindAsEventListener(this);var self=this;this.resize_element.onmousedown=function(event){self.resize_element.onmousedown=null;self.start_resizing();self.resizer.eventMouseDown(event);};this.onmousedown=function(event){this.onmousedown=this.check_copy_mode;this.check_copy_mode(event);self.start_dragging();self.mover.eventMouseDown(event);};return this;},start_listening_for_preview:function(){FE.setOpacity(this,DwmView.opacity.basic);this.onclick=this.edit_event.bindAsEventListener(this);return this;},check_copy_mode:function(event){event=event||window.event;this.copy_mode=(event.ctrlKey||event.metaKey||false);if(this.mover)this.mover.options.ghosting=this.copy_mode;},start_dragging:function(){this.mover=new Draggable(this,{snap:DailyEventDiv.body_snap,scroll:$('daily_grid'),starteffect:DwmView.starteffect,endeffect:DwmView.endeffect,ghosting:this.copy_mode});Object.extend(this.mover,DailyEventDiv.move_draggable);return this;},start_resizing:function(){this.resizer=new Draggable(this.resize_element,{snap:DailyEventDiv.resize_snap,scroll:$('daily_grid'),starteffect:Prototype.K,endeffect:Prototype.K});Object.extend(this.resizer,DailyEventDiv.resize_draggable);return this;},stop_listening:function(){FE.setOpacity(this,1.0);if(this.mover)this.mover.destroy();if(this.resizer)this.resizer.destroy();this.resize_element.onmousedown=this.onmousedown=null;return this;},deactivate:function(){if(this.resizer)this.resizer.destroy();if(this.mover)this.mover.destroy();FE.remove(this);this.onclick=this.resizer=this.mover=null;},edit_event:function(event){if((new Date()-(this.last_dragged_time||this.resize_element.last_dragged_time||0))<500)return;Event.stop(event);_option={repeat_event_start_at:event.start_at,offset_x:200,offset_y:300,parent:this,event:this.event,method:'put'};EventPopup.attach(this.event,_option);},show:function(event){this.event=event||this.event;this.url='/events/'+this.event.id;var title=this.event.get_view_title();this.title=this.event.get_view_title_description();this.show_time();var event_title_decoration=this.event.completed_at?'text-decoration:line-through;':'';this.title_dd.innerHTML='<a href="javascript:;" style="'+event_title_decoration+'">'+title.unescapeHTML()+'</a>';this.set_color(this.event);this.locate_cell();this.on_resize();return this;},show_time:function(time){var time=(time||this.event.start_at).format('#{kp} #{I}:#{MM}');if(this.event.has_alarm())time+=DwmView.alarm_img;if(this.event.url)time+="<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' width='13' height='8' title='"+this.event.url.gsub(/\"|\'/,'')+" 으로 이동하기' class='link_to_url' style='padding-left:5px;' onclick='calendar.link_to_url(event, \""+escape(this.event.url)+"\");' />";this.time_dt.innerHTML=time;},set_color:function(event){var event=event||this.event;var color=event.color();var header_color=color.multiply_color(0.8);this.normal_color_elements.each(function(div){FE.setBgColor(div,color);});this.header_color_elements.each(function(div){FE.setBgColor(div,header_color);});},set_level_and_depth:function(level,depth){this.level=level;this.depth=depth;},locate_cell:function(){this.start_cell=$('daily_grid').get_cell_of_date(this.event.start_at);this.end_cell=$('daily_grid').get_cell_of_date(this.event.end_at);},on_resize:function(){var self=this;if(this.start_cell&&this.end_cell){var pos=this.start_cell.cell_offset();var x=pos[0];var y1=pos[1];var y2=this.end_cell.cell_offset()[1];var cell_width=Math.round(this.start_cell.cell_width()*1.0/this.depth);x=x+cell_width*(this.level-1);if(this.level==1){cell_width-=7;x+=7;}
FE.setPosition(this,x,y1);this.relative_x=x;this.width_elements.each(function(div){FE.setWidth(div,cell_width-1);});this.cell_h=this.start_cell.cell_height();var start_rel_y=this.event.start_at.getMinutes()*1.0/30*this.cell_h;var end_rel_y=((this.event.end_at.getMinutes())%30+1)*1.0/30*this.cell_h;var height=y2+end_rel_y-y1-this.extra_height-1;FE.setPosition(this.resize_element,0,height-6);FE.setHeight(this.body_element,height);}},set_height:function(h){FE.setPosition(this.resize_element,0,h-10);FE.setHeight(this.body_element,h-this.extra_height);return this;},_request_save:function(){var self=this;this.owner.move_event(this.event);this.show().stop_listening();var _url=self.event.is_memorial()?'/memorials/'+self.event.id:'/events/'+self.event.id
var _params=$H({'event[start_at]':self.event.start_at.to_param(),'event[end_at]':self.event.end_at.to_param()});if(self.event.is_lunar())_params.merge({'meta[date_format]':'solar_to_lunar'});if(self.event.is_repeating()&&!self.event.is_memorial()){var _options={callbackObj:self,onCancelFunc:'rollback_event_move'};var r=new RepeatEventAlert(_url,_params,'put',self.event,_options);}else{var self=this;new Ajax.Request(_url,{method:'put',parameters:_params,onFailure:function(t){console.log('update failure');self.rollback_event_move();}});}},set_resize_position:function(){var end_cell=this.resize_element.resized_cell;var end_at=end_cell.date.next_minute(30);var after_half=this.event.start_at.next_minute(30);if(end_at.before(after_half))end_at=after_half;this.event.set_at(this.event.start_at,end_at);this._request_save();},update_time:function(){this.event.move_start_at(this.snapped_date);this._request_save();},copy_time:function(){this.copy_event(this.event,this.snapped_date);},copy_event:function(event,new_at){new Ajax.Request('/event/copy_to_start_at/'+event.id,{parameters:'start_at='+new_at.to_param(),onFailure:function(){calendar.notify('일정 드래그 복사에 실패했습니다.');}});},rollback_event_move:function(){this.event.revert_set_at();this.show().start_listening();}};var DailyEventsOwner=Class.create();DailyEventsOwner.prototype={initialize:function(){this.owner=new EventDrawGroupOwner(function(event){return[event.start_at.clear_half_hour().getTime()/1000,event.end_at.clear_half_hour().getTime()/1000];});this.event_divs=$H();this._do_not_resize=0;},expanded_add_event:function(event){var self=this;model.event.expand_event(event).each(function(e){self.add_event(e);});},add_event:function(event){var div=DailyEventDiv.make_element(this,event);this.owner.add_event(event);this.event_divs.set(event.id,div);this.on_resize();},remove_event:function(event){if(!this.event_divs.get(event.id))return;this.owner.remove_event(event);this.event_divs.get(event.id).deactivate();this.event_divs.unset(event.id);this.on_resize();},clear_events:function(){FE.childElements(this).invoke('deactivate');this.event_divs=$H();this.owner.clear();},deactivate:function(){FE.childElements(this).invoke('deactivate');this.owner.clear();},move_event:function(event){this.owner.remove_event(event);},resize_once:function(callback){this._do_not_resize++;try{callback(this);}finally{this._do_not_resize--;this.on_resize();}},on_resize:function(){if(this._do_not_resize>0)return;var self=this;self.owner.arrange();var self=this;FE.childElements(this).each(function(div){if(div.on_resize){var edg=self.owner.find_event_group(div.event);div.set_level_and_depth(edg.event_level(div.event),edg.tree_depth());div.on_resize();}});console.log("daily_events_owner.on_resize called");}};var DailyCell=Class.create();DailyCell.prototype={initialize:function(row){this.row=row;},clear_cache:function(){this._offset_cache=null;},cell_offset:function(){if(this._offset_cache)return this._offset_cache;var ofs=FE.relative_offset(this.offsetParent,this);var row_ofs=this.row.row_offset();return(this._offset_cache=[ofs[0]+row_ofs[0],ofs[1]+row_ofs[1]]);},cell_width:function(){return FE.getWidth(this);},cell_height:function(){return FE.getHeight(this);}};var DailyRow=Class.create();DailyRow.prototype={initialize:function(element){this.time_element=FE.down(element);this.cell_element=FE.next(this.time_element);this.top_cell=Object.extend(FE.down(this.cell_element),new DailyCell(element));this.bottom_cell=Object.extend(FE.next(this.top_cell),new DailyCell(element));},set_date:function(date){[this,this.top_cell,this.bottom_cell].each(function(e){e.date=date;e.hour=date.getHours();});this.bottom_cell.date=this.bottom_cell.date.next_minute(30);},clear_cache:function(){this._offset_cache=this._height_cache=null;},row_offset:function(){var ofs=this._offset_cache||(this._offset_cache=FE.relative_offset($FE('daily_grid'),this));return[ofs[0]+60,ofs[1]];},row_width:function(){return FE.getWidth(this)-60;},row_height:function(){return this._height_cache||(this._height_cache=FE.getHeight(this));}};var DailyEventAdder=Class.create();DailyEventAdder.prototype=Object.extend({start_drag:function(event){if(!this.view.inside_area(event))return false;var pos=this.view.event_position_in_view(event);this.start_cell=this.view.get_cell_of_position(pos[0],pos[1]);return true;},move_drag:function(event){var pos=this.view.event_position_in_view(event);var cur_cell=this.view.get_cell_of_position(pos[0],pos[1]);var cells=this.view.cells_in_range(this.start_cell,cur_cell);this._show_drag_area(cells);},finish_drag:function(event){if(!this.view.inside_area(event))return this.cancel_drag(event);var pos=this.view.event_position_in_view(event);this.end_cell=this.view.get_cell_of_position(pos[0],pos[1]);this.popup_new_event(this.start_cell,this.end_cell);return false;},cancel_drag:function(event){this._clear_drag_area();return false;},_show_drag_area:function(cells){var others=this.view.cells.subtract(cells);others.each(function(cell){FE.removeClassName(cell,'on_drag');});cells.each(function(cell){FE.addClassName(cell,'on_drag');});},_clear_drag_area:function(){this.view.cells.each(function(cell){FE.removeClassName(cell,'on_drag');});},popup_new_event:function(cell1,cell2){var self=this;var cells=[cell1,cell2].sortBy(function(c){return c.date.getTime();});var start_at=cells[0].date;var end_at=cells[1].date.next_minute(30);if(start_at.next_hour().after(end_at))end_at=start_at.next_hour();var _option={allday:false,offset_x:350,offset_y:300,parent:$FE('daily_grid'),startAt:start_at,endAt:end_at,category_id:model.calendar.get_default().id,on_detach:function(){self._clear_drag_area();}};EventPopup.attach(null,_option);}},AbstractEventAdder.prototype);var DailyGridEventReactor=Class.create();DailyGridEventReactor.prototype=Object.extend(new Reactor('daily_grid'),{initialize:function(view){this.view=view;},start:function(){actor.event.add_reactor(this);return this;},deactivate:function(){actor.event.remove_reactor(this);this.view=null;},created:function(event){if(event.visible()&&event.is_valid()&&event.in_range_for_dw($FE('daily_grid').start_time,$FE('daily_grid').end_time))
$FE('daily_grid').add_event(event);},updated:function(new_event,old_event){this.destroyed(old_event);this.created(new_event);},destroyed:function(event){$FE('daily_grid').remove_event(event);}});var DailyGridCalendarReactor=Class.create();DailyGridCalendarReactor.prototype=Object.extend(new Reactor('daily_grid'),{initialize:function(view){this.view=view;},start:function(){actor.calendar.add_reactor(this);return this;},deactivate:function(){actor.calendar.remove_reactor(this);this.view=null;},created:function(calendar){},updated:function(new_calendar,old_calendar){this.view.cursor_updated(calendar.cursor,true);},destroyed:function(calendar){this.view.cursor_updated(calendar.cursor,true);}});var DailyGrid=Class.create();DailyGrid.prototype={initialize:function(){var self=this;this.element=$FE('daily_grid');this.header_span_desc=FE.down($FE('daily_header'));this.header_span_whatday=FE.next(this.header_span_desc);this.header_span_lunarday=FE.next(this.header_span_whatday);this.rows=FE.childElements($FE('daily_cells')).collect(function(row,idx){return Object.extend(row,new DailyRow(row));});this.cells=this.rows.collect(function(row){return[row.top_cell,row.bottom_cell];}).flatten();},start:function(){var self=this;calendar.cursor.add_listener(this);$('layout_main').register_deactivator(this);Draggables.addObserver(Object.extend({element:$('daily_grid')},AbstractDragObserver.prototype));$FE('daily_allday_events_owner').start();this.reactor=new DailyGridEventReactor(this).start();this.reactor_calendar=new DailyGridCalendarReactor(this).start();if(!calendar.preview)this.event_adder=new DailyEventAdder(this).start();$('contentNavigation').set_view('daily');self.cursor_updated(calendar.cursor);},deactivate:function(){console.log("daily_grid deactivator called");$FE('daily_allday_events_owner').deactivate();this.reactor.deactivate();this.reactor_calendar.deactivate();Draggables.removeObserver($('daily_grid'));calendar.cursor.remove_listener(this);$FE("daily_allday_events_owner").deactivate();$FE('daily_events_owner').deactivate();this.event_adder&&this.event_adder.deactivate();this.reactor=this.reactor_calendar=this.event_adder=null;$FE('layout_main').style.overflowY="auto";},set_header:function(){this.header_span_desc.innerHTML=this.cursor.date.format('#{m}월 #{d}일 #{ka}요일');var lunar=model.lunar.get(this.cursor.date.format("#{yy}#{mm}#{dd}"));this.header_span_lunarday.innerHTML=lunar?"(음력 "+lunar.year+"/"+lunar.month+"/"+lunar.day+")":"";},clear_events:function(){$FE('daily_allday_events_owner').clear_events();$FE('daily_events_owner').clear_events();},add_event:function(event){if(event.visible()&&event.is_valid()&&event.in_range_for_dw(this.start_time,this.end_time)){(event.is_multiday())?$FE('daily_allday_events_owner').add_event(event):$FE('daily_events_owner').add_event(event);}},remove_event:function(event){event=$E(event);if(event.is_multiday()){$FE('daily_allday_events_owner').remove_event(event);}else{$FE('daily_events_owner').remove_event(event);}},draw_events:function(){var self=this;$FE('daily_allday_events_owner').resize_once(function(owner){model.special_event.expanded_list(self.start_time.clear_time(),self.end_time).reject(function(event){return!event.holiday;}).each(function(se){self.add_event(se);});});model.event.async_expanded_list(this.start_time.clear_time(),this.end_time,function(events){$FE('daily_allday_events_owner').resize_once(function(){events.sortBy(function(r){return r.id;}).each(function(event){self.add_event(event);});});});},cursor_updated:function(cursor,force){this.cursor=cursor;var self=this;if(!cursor.date.equal_date(this.date)||force){$FE('daily_events_owner').resize_once(function(owner){$FE('daily_allday_events_owner').resize_once(function(allday_owner){self.clear_events();self.set_header();$FE('contentNavigation').set_current_text(cursor.date.format("#{yy}년 #{m}월 #{d}일"));self.rows.each(function(row,idx){var hour=idx+6;var date=cursor.date.clear_time();date.setHours(hour%24);date=date.next_day(Math.floor(hour/24));row.set_date(date);if(idx==0){self.start_time=date;}else if(idx==23){self.end_time=date.next_hour();}});self.date=cursor.date;if(self.date.equal_date(new Date())){FE.addClassName($FE('daily_cells'),'today');$FE('daily_allday_events_owner').today_on();}else{FE.removeClassName($FE('daily_cells'),'today');$FE('daily_allday_events_owner').today_off();}
self.draw_events();self.on_resize();});});}},_get_row_of_position:function(x,y){var first_row=this.rows.first();var last_row=this.rows.last();var result_row=first_row;if(y<=first_row.row_offset()[1]+first_row.row_height())return first_row;if(y>=last_row.row_offset()[1])return last_row;this.rows.find(function(row){var below=row.row_offset()[1]>y;if(!below)result_row=row;return below;});return result_row;},get_cell_of_position:function(x,y){var row=this._get_row_of_position(x,y);if(row){var top_cell=(row.row_offset()[1]+row.row_height()/2.0)>y;return(top_cell)?row.top_cell:row.bottom_cell;}
return null;},get_cell_of_date:function(date){var row=this._get_row_of_hour(date.getHours());if(row){return date.getMinutes()<30?row.top_cell:row.bottom_cell;}
return null;},_get_row_of_hour:function(hour){return this.rows.find(function(row){return row.hour==hour;});},cells_in_range:function(cell1,cell2){var cells=[];var started=false;var v=[cell1,cell2];this.cells.each(function(c){if(v.length==0)throw $break;if(started)cells.push(c);if(v.include(c)){v=v.without(c);started=!started;if(started)cells.push(c);}});return cells;},event_position_in_view:function(event){return this.position_in_view([Event.pointerX(event),Event.pointerY(event)]);},position_in_view:function(pointer){return[pointer[0]-this.view_offset[0],pointer[1]-this.view_offset[1]+this.scrollTop];},inside_area:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var dim=this.dimension;return(dim[0][0]<=pointer[0]&&dim[1][0]-15>=pointer[0])&&(dim[0][1]<=pointer[1]&&dim[1][1]>=pointer[1]);},on_resize:function(){console.log('daily_grid.on_resize called');var self=this;loading.draw(function(){$FE('daily_events_owner').on_resize();$FE('daily_allday_events_owner').on_resize();var self=$('daily_grid');self.rows.invoke('clear_cache');self.cells.invoke('clear_cache');var first_row=self.rows.first();self.min_snap_y=first_row.row_offset()[1];var last_row=self.rows.last();var last_row_offset=last_row.row_offset();self.max_snap_y=last_row_offset[1]+last_row.row_height()-5;self.view_offset=Position.cumulativeOffset(self);var first_row_ofs=Position.cumulativeOffset(first_row);self.dimension=[first_row_ofs,[self.view_offset[0]+FE.getWidth(self),self.view_offset[1]+FE.getHeight(self)]];});},move_snap_y:function(y){var cell=this.get_cell_of_position(10,y);return cell.cell_offset()[1];},positionedOffset:function(element){return FE.relative_offset(this,element);}};var WeeklyAlldayEventDiv=Class.create();Object.extend(WeeklyAlldayEventDiv,{make_element:function(owner,event,left_on,right_on){var div_id='event_'+event.r_id()+'_div';FE.insert_html('weekly_allday_events_owner',"<div id='"+div_id+"' class='event' style='position: absolute; display: block;'><dl class='line top'><dd class='r1'></dd></dl><dl class='title'><dd class='left'><img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon_continue_l.gif' width='3' height='6' alt='' class='continue' /></dd><dd class='memorial'></dd><dd class='title' style='overflow:hidden'></dd><dd class='link'></dd><dd class='right'><img src='http://mimg.daum-img.net/dcal_2/01_common/icon/icon_continue_r.gif' width='3' height='6' alt='' class='continue' /></dd></dl><dl class='line bottom'><dd class='r1'></dd></dl></div>");var element=$FE(div_id);var div=new WeeklyAlldayEventDiv(owner,event,element);return Object.extend(element,div).start();},snap:function(x,y,draggable){var e=draggable.element;var cell=$('wv_container').header_row.get_cell_of_position(x);if(cell){e.snapped_cell=cell;var ofs=cell.cell_offset();return[ofs[0]+2,ofs[1]+(e.relative_y||0)];}},move_draggable:{drag_type:"weekly_allday_event_move",on_start:Prototype.emptyFunction,on_drag:Prototype.emptyFunction,on_end:function(event){var e=this.element;if(e.positioned_cell&&e.snapped_cell){if(e.positioned_cell!=e.snapped_cell){e.move_to_snapped_cell();}}}}});WeeklyAlldayEventDiv.prototype={initialize:function(owner,event,div,left_on,right_on){this.owner=owner;this.event=event;this.url='/events/'+event.id;this.title_div=FE.next(FE.down(div));this.title_left=FE.down(this.title_div);this.title_memorial=FE.next(this.title_left);this.title_dd=FE.next(this.title_memorial);this.title_link=FE.next(this.title_dd);this.title_right=FE.next(this.title_link);this.color_divs=[FE.down(FE.down(div)),this.title_div,FE.down(FE.next(this.title_div))].flatten();FE.setVisible(this.title_left,left_on);FE.setVisible(this.title_right,right_on);},show_event:function(event){FE.setOpacity(this,DwmView.opacity.basic);this.event=event||this.event;var title=event.get_view_title();this.title=event.get_view_title_description();if(!this.event.allday)title=this.event.start_at.format('(#{kp}#{II}:#{MM}) ')+title;if(event.has_alarm()){title+=DwmView.alarm_img;}
this.title_memorial.innerHTML=DwmView.memorial_tag(this.event);var event_title_decoration=this.event.completed_at?'text-decoration:line-through;':'';this.title_dd.innerHTML='<a href="javascript:;" style="'+event_title_decoration+'">'+title.unescapeHTML()+'</a>';if(this.event.url){this.title_link.innerHTML="<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' width='13' height='8' title='"+this.event.url.gsub(/\"|\'/,'')+" 으로 이동하기' class='link_to_url' style='position:absolute;top:3px;right:8px;' onclick='calendar.link_to_url(event, \""+escape(this.event.url)+"\");' />";}
this.color_divs.each(function(div){FE.setBgColor(div,event.color());});return this;},start:function(){this.show_event(this.event);if(!this.event.is_special()&&!calendar.preview){this.mover=new Draggable(this,{snap:WeeklyAlldayEventDiv.snap,endeffect:Prototype.K});Object.extend(this.mover,WeeklyAlldayEventDiv.move_draggable);this.onclick=this.edit_event.bindAsEventListener(this);}else if(calendar.preview){this.onclick=this.edit_event.bindAsEventListener(this);}
return this;},stop_dragging:function(){FE.setOpacity(this,1.0);if(this.mover)this.mover.destroy();this.mover=null;},deactivate:function(){if(!this.event.is_special()){if(this.mover)this.mover.destroy();this.on_click=null;}
FE.remove(this);this.mover=this.event=this.owner=this.title_div=this.title_left=this.title_dd=this.title_link=this.title_right=this.color_divs=null;},edit_event:function(event){var dragged_duration=(this.last_dragged_time||new Date())-(this.start_dragged_time||0);var time_after_drop=new Date()-(this.last_dragged_time||0);if((dragged_duration>200)&&(time_after_drop<500))return false;Event.stop(event);_option={allday:true,repeat_event_start_at:event.start_at,offset_x:300,offset_y:200,parent:this,event:this.event,method:'put'};EventPopup.attach(this.event,_option);},set_level_and_depth:function(level,depth){this.level=level;this.depth=depth;},move_to_snapped_cell:function(){var sd=this.snapped_cell.date;var td=this.event.start_at.clone();td.setFullYear(sd.getFullYear());td.setMonth(sd.getMonth());td.setDate(sd.getDate());this.event.move_start_at(td);this.locate_cell();},locate_cell:function(){var self=this;this.before_start_cell=this.start_cell;this.before_end_cell=this.end_cell;var row=$('wv_container').header_row;var found_start_cell=row.get_cell_of_date(this.event.start_at);var found_end_cell=row.get_cell_of_date(this.event.end_at);FE.setVisible(this.title_left,!found_start_cell);FE.setVisible(this.title_right,!found_end_cell);this.start_cell=found_start_cell||row.days.first();this.end_cell=found_end_cell||row.days.last();if(this.before_start_cell&&(this.before_start_cell!=this.start_cell)){var _url=self.event.is_memorial()?'/memorials/'+self.event.id:'/events/'+self.event.id;var _params=$H({'event[start_at]':self.event.start_at.to_param(),'event[end_at]':self.event.end_at.to_param()});if(self.event.is_lunar())_params.merge({'meta[date_format]':'solar_to_lunar'});if(self.event.is_repeating()&&!self.event.is_memorial()){var _options={callbackObj:self,start_at:self.event.before_start_at,onCancelFunc:'rollback_event_move'};var r=new RepeatEventAlert(_url,_params,'put',self.event,_options);}else{new Ajax.Request(_url,{method:'put',parameters:_params,onFailure:function(t){calendar.notify("읽기 전용 일정입니다.");self.rollback_event_move();}});}}
this.on_resize();},on_resize:function(){if(!this.start_cell)this.locate_cell();var s_ofs=this.start_cell.cell_offset();var e_ofs=this.end_cell.cell_offset();this.positioned_cell=this.start_cell;this.relative_y=(this.level-1)*(FE.getHeight(this)+2)+3;FE.setWidth(FE.setPosition(this,s_ofs[0]+2,s_ofs[1]+this.relative_y),e_ofs[0]+this.end_cell.cell_width()-s_ofs[0]-5);var w=e_ofs[0]+this.end_cell.cell_width()-s_ofs[0];var width=(Prototype.Browser.IE)?28:20;if(this.event.is_memorial())width+=15;if(this.event.url)width+=20;FE.setWidth(this.title_dd,w-width);},rollback_event_move:function(){this.event.revert_set_at();this.start_cell=this.before_start_cell;this.end_cell=this.before_end_cell;this.locate_cell();}};var WeeklyAlldayCell=Class.create();WeeklyAlldayCell.prototype={initialize:function(cell){},today_on:function(){if(this._today)return;FE.addClassName(this,'today');this._today=true;},today_off:function(){if(!this._today)return;FE.removeClassName(this,'today');this._today=false;},clear_cache:function(){this.offset_cache=this.width_cache=this.height_cache=null;},cell_offset:function(){return this.offset_cache||(this.offset_cache=FE.relative_offset(this.offsetParent,this));},cell_x:function(){return this.cell_offset()[0];},cell_width:function(){return this.width_cache||(this.width_cache=FE.getWidth(this));},cell_height:function(){return this.height_cache||(this.height_cache=FE.getHeight(this));}};var WeeklyAlldayRow=Class.create();WeeklyAlldayRow.prototype={initialize:function(row){this.days=FE.childElements(row);this.days.shift();this.days.each(function(day){Object.extend(day,new WeeklyAlldayCell(day));});},clear_cache:function(){this.days.invoke('clear_cache');},set_dates:function(start_day){var d=start_day;var today=new Date();this.days.each(function(day){day.date=d;(d.equal_date(today))?day.today_on():day.today_off();d=d.next_day();});},get_cell_of_date:function(date){return this.days.find(function(day){return date.equal_date(day.date);});},get_cell_of_position:function(x){var first_cell=this.days.first();var last_cell=this.days.last();if(x<=first_cell.cell_x()+first_cell.cell_width())return first_cell;if(x>=last_cell.cell_x())return last_cell;var result_cell=first_cell;this.days.find(function(day){var before=day.cell_x()>x;if(!before)result_cell=day;});return result_cell;},on_resize:function(){this._row_offset=Position.cumulativeOffset(this);var o=this._row_offset;this._row_dimension=[this._row_offset,[o[0]+FE.getWidth(this),o[1]+FE.getHeight(this)]];this.clear_cache();},event_position_in_view:function(event){return this.position_in_view([Event.pointerX(event),Event.pointerY(event)]);},position_in_view:function(pointer){return[pointer[0]-this._row_offset[0],pointer[1]-this._row_offset[1]];},inside_area:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var dim=this._row_dimension;return(dim[0][0]<=pointer[0]&&dim[1][0]>=pointer[0])&&(dim[0][1]<=pointer[1]&&dim[1][1]>=pointer[1]);},show_drag_area:function(cells){var others=this.days.subtract(cells);others.each(function(cell){FE.removeClassName(cell,'on_drag');});cells.each(function(cell){FE.addClassName(cell,'on_drag');});},clear_drag_area:function(){this.days.each(function(cell){FE.removeClassName(cell,'on_drag');});},cells_in_range:function(cell1,cell2){var cells=[];var started=false;var v=[cell1,cell2];this.days.each(function(c){if(v.length==0)throw $break;if(started)cells.push(c);if(v.include(c)){v=v.without(c);started=!started;if(started)cells.push(c);}});return cells;},popup_new_event:function(date1,date2){var self=this;var dates=[date1,date2].sortBy(function(d){return d.getTime();});if(dates[0].next_hour().after(dates[1]))dates[1]=dates[0].next_hour();var _option={allday:true,offset_x:350,offset_y:200,parent:$('wv_container'),startAt:dates[0],endAt:dates[1],category_id:model.calendar.get_default().id,on_detach:function(){self.clear_drag_area();}};EventPopup.attach(null,_option);}};var WeeklyAlldayEventsOwner=Class.create();WeeklyAlldayEventsOwner.prototype={initialize:function(){this.owner=new EventDrawGroupOwner(function(event){return[event.start_at.clear_time().getTime()/1000,event.end_at.next_day().clear_time().getTime()/1000];});this.event_map=$H();this.table_row=FE.down(FE.next(FE.down(FE.down($FE('weekly_header_table')))));},clear_events:function(){FE.childElements(this).invoke('deactivate');this.owner.clear();},deactivate:function(){this.clear_events();this.event_map=null;},expanded_add_event:function(event){var self=this;model.event.expand_event(event).each(function(e){self.add_event(e);});},add_event:function(event){var div=WeeklyAlldayEventDiv.make_element(this,event);this.owner.add_event(event);this.event_map.set(event.id,div);$FE('wv_container').on_resize();return div;},move_event:function(event){var self=this;return $FE('wv_container').resize_once(function(){self.remove_event(event);return self.add_event(event);});},remove_event:function(event){var entry=this.event_map.get(event.id);if(entry){this.owner.remove_event(event);entry.deactivate();this.event_map.unset(event.id);$FE('wv_container').on_resize();}},on_resize:function(){this.owner.arrange();var self=this;var max_level=2;FE.childElements(this).each(function(div){if(div.on_resize){var edg=self.owner.find_event_group(div.event);if(edg){var level=edg.event_level(div.event);div.set_level_and_depth(level,edg.tree_depth());div.on_resize();max_level=[level,max_level].max();}}});FE.setHeight(this.table_row,max_level*17+10);if(!($FE('weekly_grid').target_height))$FE('weekly_grid').target_height=calendar.height-116;FE.setHeight($FE('weekly_grid'),$FE('weekly_grid').target_height+47-max_level*17);}};var WeeklyAlldayEventAdder=Class.create();WeeklyAlldayEventAdder.prototype=Object.extend({start_drag:function(event){if(!this.view.header_row.inside_area(event))return false;var pos=this.view.header_row.event_position_in_view(event);this.start_cell=this.view.header_row.get_cell_of_position(pos[0]);return true;},move_drag:function(event){var pos=this.view.header_row.event_position_in_view(event);var cur_cell=this.view.header_row.get_cell_of_position(pos[0]);var cells=this.view.header_row.cells_in_range(this.start_cell,cur_cell);this.view.header_row.show_drag_area(cells);},finish_drag:function(event){if(!this.view.header_row.inside_area(event))return this.cancel_drag(event);var pos=this.view.header_row.event_position_in_view(event);this.end_cell=this.view.header_row.get_cell_of_position(pos[0]);this.view.header_row.popup_new_event(this.start_cell.date,this.end_cell.date);return false;},cancel_drag:function(event){this.view.header_row.clear_drag_area();return false;}},AbstractEventAdder.prototype);var WeeklyEventDiv=Class.create();Object.extend(WeeklyEventDiv,{make_element:function(owner,event){var div_id='event_'+event.id+'_div_'+event.start_at.getDate();FE.insert_html('weekly_events_owner',"<div id='"+div_id+"' class='event' style='position: absolute; display: block;'><dl class='line top'><dd class='r4'></dd><dd class='r2'></dd><dd class='r1'></dd></dl><dl class='body'><dt class='time'>시간</dt><dd class='title'>내용</dd><dd class='resize'><img src='http://mimg.daum-img.net/dcal_2/01_common/c_blt_s01.gif' width='7' height='6' alt=''/></dd></dl><dl class='line bottom'><dd class='r1'></dd><dd class='r2'></dd><dd class='r4'></dd></dl></div>");var element=$FE(div_id);var div=new WeeklyEventDiv(owner,event,element);return Object.extend(element,div).start();},body_snap:function(x,y,draggable){var e=draggable.element;var y_scr=$('weekly_grid').scrollTop-draggable.originalScrollTop;var cell=$('wv_container').drag_area.get_mini_cell_of_position(x+($FE('wv_container').half_cell_width||0),y+y_scr);if(cell){var ofs=cell.cell_offset();e.snapped_cell=cell;e.snapped_time=cell.date;e.show_time(e.snapped_time);return[ofs[0]+e.relative_x||0,ofs[1]+2];}else{console.log("warn: WeeklyEventDiv.body_snap couldn't find a cell");}
return[x,y];},resize_snap:function(x,y,draggable){var e=draggable.element;var div=e.event_div;var cell=$('wv_container').drag_area.get_mini_cell_of_position(div.start_cell.cell_x(),y);if(cell){var located_cell=div.start_cell;if(cell.date.before(div.event.start_at,true))cell=located_cell.mini_cell_of_date(div.event.start_at);var ofs=cell.cell_offset();e.event_div.resized_cell=cell;e.event_div.resized_time=cell.date;return[x,ofs[1]];}
return[x,y];},move_draggable:{drag_type:'weekly_event_move',on_start:Prototype.emptyFunction,on_drag:Prototype.emptyFunction,on_end:function(event){var e=this.element;if(e.positioned_time&&e.snapped_time){if(e.positioned_time!=e.snapped_time){(e.copy_mode)?e.copy_to_snapped_time():e.move_to_snapped_time();}}}},resize_draggable:{drag_type:'weekly_event_resize',draw:function(point){var e=this.element;var pos=$('wv_container').drag_area.position_in_view(point);pos=this.options.snap(pos[0],pos[1],this);var cell=e.event_div.resized_cell;if(!e.before_cell||e.before_cell!=cell){e.before_cell=cell;e.event_div.set_height(cell.cell_offset()[1]+cell.cell_height()-e.event_div.offsetTop);}},on_start:Prototype.emptyFunction,on_drag:Prototype.emptyFunction,on_end:function(event){var div=this.element.event_div;div.last_dragged_time=new Date();div.resize_to_resized_time();}}});WeeklyEventDiv.prototype={initialize:function(owner,event,div){this.owner=owner;this.event=event;this.set_level_and_depth();this.body_div=FE.next(FE.down(div));this.time_dt=FE.down(this.body_div);this.title_div=FE.next(this.time_dt);this.resize_div=FE.next(this.title_div);this.resize_div.event_div=div;this.header_color_divs=[FE.childElements(FE.down(div)),this.time_dt].flatten();this.normal_color_divs=[this.body_div,FE.childElements(FE.next(this.body_div)),this.title_div].flatten();},start:function(){this.show_event();calendar.preview?this.start_listening_for_preview():this.start_listening();return this;},start_listening:function(){FE.setOpacity(this,DwmView.opacity.basic);this.onclick=this.edit_event.bindAsEventListener(this);var self=this;this.resize_div.onmousedown=function(event){self.resize_div.onmousedown=null;self.start_resizing();self.resizer.eventMouseDown(event);};this.onmousedown=function(event){this.onmousedown=this.check_copy_mode;this.check_copy_mode(event);self.start_dragging();self.mover.eventMouseDown(event);};return this;},start_listening_for_preview:function(){FE.setOpacity(this,DwmView.opacity.basic);this.onclick=this.edit_event.bindAsEventListener(this);return this;},check_copy_mode:function(event){event=event||window.event;this.copy_mode=(event.ctrlKey||event.metaKey||false);if(this.mover)this.mover.options.ghosting=this.copy_mode;},start_dragging:function(){this.mover=new Draggable(this,{snap:WeeklyEventDiv.body_snap,scroll:$('weekly_grid'),starteffect:DwmView.starteffect,endeffect:DwmView.endeffect,ghosting:this.copy_mode});Object.extend(this.mover,WeeklyEventDiv.move_draggable);},start_resizing:function(){this.resizer=new Draggable(this.resize_div,{snap:WeeklyEventDiv.resize_snap,scroll:$('weekly_grid'),starteffect:Prototype.K,endeffect:Prototype.K});Object.extend(this.resizer,WeeklyEventDiv.resize_draggable);},stop_listening:function(){this.resize_div.onmousedown=this.onmousedown=null;if(this.mover)this.mover.destroy();if(this.resizer)this.resizer.destroy();this.mover=this.resizer=null;FE.setOpacity(this,1.0);return this;},edit_event:function(event){if((new Date()-(this.last_dragged_time||0))<500)return false;Event.stop(event);_option={allday:false,repeat_event_start_at:event.start_at,offset_x:300,offset_y:200,parent:this,event:this.event,method:'put'};EventPopup.attach(this.event,_option);},show_event:function(event){var event=event||this.event;this.url='/events/'+this.event.id;var title=event.get_view_title();var event_title_decoration=this.event.completed_at?'text-decoration:line-through;':'';this.title_div.innerHTML='<a href="javascript:;" style="'+event_title_decoration+'">'+title.unescapeHTML()+'</a>';this.title=event.get_view_title_description();this.show_time();this.normal_color_divs.each(function(div){Element.setBgColor(div,event.color());});var header_color=event.color().multiply_color(0.8);this.header_color_divs.each(function(div){Element.setBgColor(div,header_color);});this.locate_cell();return this;},show_time:function(time){var time=(time||this.event.start_at).format('#{kp} #{I}:#{MM}');if(this.event.has_alarm())time+=DwmView.alarm_img;if(this.event.end_at-this.event.start_at<=1800000)time+=' '+this.event.get_view_title();if(this.event.url)time+="<img src='http://mimg.daum-img.net/dcal_2/01_common/icon_link.gif' width='13' height='8' title='"+this.event.url.gsub(/\"|\'/,'')+" 으로 이동하기' class='link_to_url' style='padding-left:5px;' onclick='calendar.link_to_url(event, \""+escape(this.event.url)+"\");' />";this.time_dt.innerHTML=time;return this;},deactivate:function(){this.stop_listening();FE.remove(this);this.title_div=null;},set_level_and_depth:function(level,depth){this.level=level||1;this.depth=depth||1;},move_to_snapped_time:function(){this.event.move_start_at(this.snapped_time);this.show_event();},copy_to_snapped_time:function(){this.copy_event(this.event,this.snapped_time);this.show_event();},copy_event:function(event,new_at){new Ajax.Request('/event/copy_to_start_at/'+event.id,{parameters:'start_at='+new_at.to_param(),onFailure:function(){calendar.notify('일정 드래그 복사에 실패했습니다.');}});},resize_to_resized_time:function(){var e=this.event;e.set_at(e.start_at,this.resized_time.next_minute(30));this.show_event();},set_height:function(h){FE.setHeight(this.body_div,h-4);FE.setPosition(this.resize_div,0,h-15);},rollback_event_move:function(){this.event.revert_set_at();this.owner.move_event(this.event);this.show_event().start_listening();},locate_cell:function(){this.start_cell=$('wv_container').get_cell_of_date(this.event.start_at);this.end_cell=$('wv_container').get_cell_of_date(this.event.end_at.prev_minute());this.positioned_time=this.event.start_at;if(this.before_start_at&&this.before_end_at&&(!this.before_start_at.equal(this.event.start_at)||!this.before_end_at.equal(this.event.end_at))){this.stop_listening();this.owner.move_event(this.event);var self=this;var _url=self.event.is_memorial()?'/memorials/'+self.event.id:'/events/'+self.event.id;var _params=$H({'event[start_at]':self.event.start_at.to_param(),'event[end_at]':self.event.end_at.to_param()});if(self.event.is_lunar())_params.merge({'meta[date_format]':'solar_to_lunar'});if(self.event.is_repeating()&&!self.event.is_memorial()){var _options={callbackObj:self,start_at:self.event.before_start_at,onCancelFunc:'rollback_event_move'};var r=new RepeatEventAlert(_url,_params,'put',self.event,_options);}else{var self=this;new Ajax.Request(_url,{method:'put',parameters:_params,onFailure:function(t){calendar.notify("읽기 전용 일정입니다.");self.rollback_event_move();}});}}else{this.before_start_at=this.event.start_at;this.before_end_at=this.event.end_at;}
this.on_resize();},_on_resize:function(start_cell,end_cell,start_at,end_at){var s_ofs=start_cell.cell_offset();var e_ofs=end_cell.cell_offset();var w=(start_cell.cell_width()-1)*1.0/this.depth;this.cell_h=this.start_cell.cell_height();var start_rel_y=start_at.getMinutes()*1.0/60*this.cell_h;var end_rel_y=((end_at.getMinutes()+59)%60+1)*1.0/60*this.cell_h;this.relative_x=w*(this.level-1)+1;this.relative_y=start_rel_y+2;if(this.level==1)this.relative_x+=4;FE.setWidth(FE.setPosition(this,s_ofs[0]+this.relative_x,s_ofs[1]+this.relative_y),w-((this.level==1)?5:1));this.set_height(e_ofs[1]+end_rel_y-(s_ofs[1]+this.relative_y));},on_resize:function(){var self=this;setTimeout(function(){self._on_resize(self.start_cell,self.end_cell,self.event.start_at,self.event.end_at);},100);}};var WeeklyEventsOwner=Class.create();WeeklyEventsOwner.prototype={initialize:function(){this._do_not_resize=0;},_deactivate_children:function(){FE.childElements(this).invoke('deactivate');},deactivate:function(){this._deactivate_children();},clear:function(){this._deactivate_children();this.owners=$R(0,6).collect(function(){return new EventDrawGroupOwner(function(event){return[event.start_at.getTime()/1000,event.end_at.getTime()/1000];});});this.owner_map=$H();},get_owner:function(event){return this.owners[event.start_at.prev_hour().getDay()];},expanded_add_event:function(event){var wv=$FE('wv_container');this.resize_once(function(self){model.event.expand_event(event,wv.start_at,wv.end_at).each(function(e){self.add_event(e);});});},add_event:function(event){var div=WeeklyEventDiv.make_element(this,event);var owner=this.get_owner(event);owner.add_event(event);this.owner_map.set(event.id,this.owner_map.get(event.id)||[]);this.owner_map.get(event.id).push([owner,div]);this.on_resize();},remove_event:function(event){var entries=this.owner_map.get(event.id);if(entries){entries.each(function(e){e[0].remove_event(event);e[1].deactivate();});this.owner_map.unset(event.id);this.on_resize();}},move_event:function(event){var entries=this.owner_map.get(event.id);if(entries){var the_owner=entries.find(function(e){return e[1].event.r_id()==event.r_id();});if(the_owner)the_owner[0].remove_event(event);}},resize_once:function(callback){this._do_not_resize++;try{callback(this);}finally{this._do_not_resize--;this.on_resize();}},on_resize:function(){if(this._do_not_resize>0)return;var self=this;if(!self.owners)return;self.owners.invoke('arrange');FE.childElements(self).each(function(div){if(div.on_resize){var owner=self.get_owner(div.event);var edg=owner.find_event_group(div.event);if(edg){div.set_level_and_depth(edg.event_level(div.event),edg.tree_depth());div.on_resize();}}});}};var WeeklyEventAdder=Class.create();WeeklyEventAdder.prototype=Object.extend({start_drag:function(event){if(!this.view.drag_area.inside_area(event))return false;var pos=this.view.drag_area.event_position_in_view(event);this.start_date=this.view.drag_area.get_date_of_position(pos[0],pos[1]);this.start_x=pos[0];this.view.drag_area.show_drag_area(this.start_date,this.start_date);this.last_date=this.start_date;return true;},move_drag:function(event){var pos=this.view.drag_area.event_position_in_view(event);var cur_date=this.view.drag_area.get_date_of_position(this.start_x,pos[1]);var minimum_1_hour=this.start_date.next_hour();var self=this;if(this.last_date!=cur_date){self.view.drag_area.show_drag_area(self.start_date,cur_date);this.last_date=cur_date;}},finish_drag:function(event){if(!this.view.drag_area.inside_area(event))return this.cancel_drag(event);var pos=this.view.drag_area.event_position_in_view(event);this.end_date=this.view.drag_area.get_date_of_position(this.start_x,pos[1]);var minimum_1_hour=this.start_date.next_hour();this.view.drag_area.popup_new_event(this.start_date,this.end_date);return false;},cancel_drag:function(event){this.view.drag_area.clear_drag_area();return false;}},AbstractEventAdder.prototype);var WeeklyCell=Class.create();WeeklyCell.prototype={initialize:function(cell,idx){this.index=idx;this.top_cell=FE.down(FE.down(cell));this.bottom_cell=FE.next(this.top_cell);var self=this;[this.top_cell,this.bottom_cell].each(function(c){c.show_drag_area=self._show_drag_area;c.clear_drag_area=self._clear_drag_area;c.cell_height=function(){return cell.cell_height()/2.0;};c.parent=cell;});this.top_cell.cell_offset=function(){return this.parent.cell_offset();};this.bottom_cell.cell_offset=function(){if(this._offset_cache)return this._offset_cache;var plus=this.parent.cell_height()/2.0;var ofs=this.parent.cell_offset();return(this._offset_cache=[ofs[0],ofs[1]+plus]);};this_today_on=false;},clear_cache:function(){this._offset_cache=this._height_cache=this._width_cache=this.bottom_cell._offset_cache=null;},today_on:function(){if(this._today_on)return;FE.addClassName(this,'today');this._today_on=true;},today_off:function(){if(!this._today_on)return;FE.removeClassName(this,'today');this._today_on=false;},set_date:function(date){this.date=date;this.top_cell.date=date;this.bottom_cell.date=date.next_minute(30);},cell_offset:function(){return this._offset_cache||(this._offset_cache=FE.relative_offset($FE('weekly_grid'),this));},cell_x:function(){return this.cell_offset()[0];},cell_width:function(){return this._width_cache||(this._width_cache=FE.getDimensions(this).width);},cell_height:function(){return this._height_cache||(this._height_cache=FE.getDimensions(this).height);},mini_cell_of_y:function(y){return(y<(this.cell_offset()[1]+this.cell_height()/2))?this.top_cell:this.bottom_cell;},mini_cell_of_date:function(date){return date.getMinutes()<30?this.top_cell:this.bottom_cell;},_show_drag_area:function(){if(!this.show_dragging){this.show_dragging=true;FE.addClassName(this,'on_drag');}},_clear_drag_area:function(){if(this.show_dragging){this.show_dragging=false;FE.removeClassName(this,'on_drag');}},show_drag_area:function(){this.top_cell.show_drag_area();this.bottom_cell.show_drag_area();},clear_drag_area:function(){this.top_cell.clear_drag_area();this.bottom_cell.clear_drag_area();}};var WeeklyRow=Class.create();WeeklyRow.prototype={initialize:function(row){var days=FE.childElements(row).slice(1);this.days=days.collect(function(day,idx){return Object.extend(day,new WeeklyCell(day,idx));});},get_cell_of_date:function(date){return this.days.find(function(day){return date.equal_date(day.date);});},clear_cache:function(){this._row_y_cache=null;this.days.invoke('clear_cache');},row_y:function(){return this._row_y_cache||(this._row_y_cache=FE.relative_offset($FE('weekly_grid'),this)[1]);},row_height:function(){return FE.getHeight(this);},show_drag_area:function(idx){this.days[idx].show_drag_area();},clear_drag_area:function(){this.days.invoke('clear_drag_area');}};var WeeklyViewEventReactor=Class.create();WeeklyViewEventReactor.prototype=Object.extend(new Reactor('wv_container'),{initialize:function(view){this.view=view;},created:function(event){if(event.visible()&&event.is_valid()&&event.in_range_for_dw($FE('wv_container').start_at,$FE('wv_container').end_at)){$FE('wv_container').resize_once(function(self){if(event.is_multiday()){$FE('weekly_allday_events_owner').add_event(event);}else{$FE('weekly_events_owner').expanded_add_event(event);}});}},updated:function(new_event,old_event){var self=this;$FE('wv_container').resize_once(function(){self.destroyed(old_event);self.created(new_event);});},destroyed:function(event){$FE('weekly_allday_events_owner').remove_event(event);$FE('weekly_events_owner').remove_event(event);}});var WeeklyViewCalendarReactor=Class.create();WeeklyViewCalendarReactor.prototype=Object.extend(new Reactor('wv_container'),{initialize:function(view){this.view=view;},created:function(calendar){},updated:function(new_calendar,old_calendar){this.view.cursor_updated(calendar.cursor,true);},destroyed:function(calendar){this.view.cursor_updated(calendar.cursor,true);}});var WeeklyDayCells=Class.create();WeeklyDayCells.prototype={initialize:function(day){this.cells=this.rows.collect(function(row){return row.days[day];});}};var WeeklyDragArea=Class.create();WeeklyDragArea.prototype={initialize:function(view){this.view=view;this.first_row=this.view.rows.first();this.last_row=this.view.rows.last();},start:function(){return this;},deactivate:function(){this.view=null;},on_resize:function(){this._grid_min_x=this.first_row.days.first().cell_x();var last_cell=this.first_row.days.last();this._grid_max_x=last_cell.cell_x()+last_cell.cell_width();this._row_height=this.last_row.row_height();this._grid_min_y=this.first_row.row_y();this._grid_max_y=this.last_row.row_y()+this.row_height;this._offset=Position.cumulativeOffset(this.first_row);var lro=Position.cumulativeOffset(this.last_row);this._dimension=[this._offset,[lro[0]+FE.getWidth(this.last_row),lro[1]+FE.getHeight(this.last_row)]];},get_row_of_position:function(y){if(y<=this._grid_min_y+this._row_height)return this.first_row;if(y>=this._grid_max_y-this._row_height)return this.last_row;var result_row=this.first_row;this.view.rows.find(function(row){var below=row.row_y()>y;if(!below)result_row=row;});return result_row;},get_cell_of_position:function(x,y){var row=this.get_row_of_position(y);if(x<=this._grid_min_x)return row.days.first();if(x>=this._grid_max_x)return row.days.last();var result_cell=row.days.first();row.days.find(function(day){var before=day.cell_x()>x;if(!before)result_cell=day;});return result_cell;},get_mini_cell_of_position:function(x,y){var cell=this.get_cell_of_position(x,y);if(!cell)return null;return cell.mini_cell_of_y(y);},get_date_of_position:function(x,y){return this.get_cell_of_position(x,y).mini_cell_of_y(y).date;},event_position_in_view:function(event){return this.position_in_view([Event.pointerX(event),Event.pointerY(event)]);},position_in_view:function(pointer){return[pointer[0]-this._offset[0],pointer[1]-this._offset[1]+$('weekly_grid').scrollTop];},inside_area:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var dim=this._dimension;return(dim[0][0]<=pointer[0]&&dim[1][0]-16>=pointer[0])&&(dim[0][1]<=pointer[1]&&dim[1][1]>=pointer[1]);},show_drag_area:function(date1,date2){var dv=1000;var times=[date1.getTime()/dv,date2.getTime()/dv].sort();var show_or_clear=function(cell){var ct=cell.date.getTime()/dv;(times[0]<=ct&&times[1]>=ct)?cell.show_drag_area():cell.clear_drag_area();};this.view.cells_of_index(date1.prev_hour(6).getDay()).each(function(c){show_or_clear(c.top_cell);show_or_clear(c.bottom_cell);});},clear_drag_area:function(day_index){if(!day_index)
this.view.rows.invoke('clear_drag_area');else{this.view.cells_of_index(day_index).invoke('clear_drag_area');if(day_index>0)this.view.cells_of_index(day_index-1).invoke('clear_drag_area');}},popup_new_event:function(date1,date2){var self=this;var dates=[date1,date2].sortBy(function(d){return d.getTime();});dates[1]=dates[1].next_minute(30);if(dates[0].next_hour().after(dates[1]))dates[1]=dates[0].next_hour();var _option={allday:false,offset_x:350,offset_y:200,parent:$('wv_container'),startAt:dates[0],endAt:dates[1],category_id:model.calendar.get_default().id,on_detach:function(){self.clear_drag_area(date1.getDay());}};EventPopup.attach(null,_option);}};var WeeklyView=Class.create();WeeklyView.prototype={initialize:function(){var header_tr=FE.down(FE.down($FE('weekly_header_table')));this.headers=FE.childElements(header_tr).slice(1);var header_row=FE.next(header_tr);this.header_row=Object.extend(header_row,new WeeklyAlldayRow(header_row));this.rows=FE.childElements(FE.down($FE('weekly_grid_table'))).collect(function(row,idx){row.hours=(idx+6)%24;return Object.extend(row,new WeeklyRow(row));});this.daily_cells=[];},start:function(){this.reactor=new WeeklyViewEventReactor(this);actor.event.add_reactor(this.reactor);this.reactor_calendar=new WeeklyViewCalendarReactor(this);actor.calendar.add_reactor(this.reactor_calendar);$('layout_main').register_deactivator(this);calendar.cursor.add_listener(this);if(!calendar.preview){this.drag_area=new WeeklyDragArea(this).start();Draggables.addObserver(Object.extend({element:$('wv_container')},AbstractDragObserver.prototype));this.event_adder=new WeeklyEventAdder(this).start();this.allday_event_adder=new WeeklyAlldayEventAdder(this).start();}
this.cursor_updated(calendar.cursor);this.daily_cells=[];$('contentNavigation').set_view('weekly');},deactivate:function(){actor.event.remove_reactor(this.reactor);actor.calendar.remove_reactor(this.reactor_calendar);Draggables.removeObserver($('wv_container'));calendar.cursor.remove_listener(this);this.allday_event_adder&&this.allday_event_adder.deactivate();this.event_adder&&this.event_adder.deactivate();this.drag_area&&this.drag_area.deactivate();$FE('weekly_allday_events_owner').deactivate();$FE('weekly_events_owner').deactivate();this.daily_cells=null;$FE('layout_main').style.overflowY="auto";},set_header:function(){var aday=this.date.prev_day(this.date.getDay());this.headers.each(function(header){header.innerHTML=aday.format('#{m}월 #{d}일(#{ka})');aday=aday.next_day();});},clear_events:function(){$FE('weekly_allday_events_owner').clear_events();$FE('weekly_events_owner').clear();},add_event:function(event){if(event.visible()&&event.is_valid()&&event.in_range_for_dw(this.start_at,this.end_at)){if(event.is_multiday()){$FE('weekly_allday_events_owner').add_event(event);}else{$FE('weekly_events_owner').add_event(event);}}},add_events:function(events){this.resize_once(function(self){events.each(function(event){self.add_event(event);});});},draw_events:function(){var self=this;var events_owner=$FE('weekly_events_owner');var s_at=self.start_at.clear_time();var e_at=self.end_at;this.resize_once(function(self){model.event.async_expanded_list(s_at,e_at,function(events){self.add_events(events);});self.add_events(model.special_event.expanded_list(s_at,e_at));});},get_cell_of_date:function(date){var cell=null;var row=this.rows.find(function(row){return row.hours==date.getHours();});if(row){return row.get_cell_of_date(date);}
return cell;},cells_of_index:function(idx){if(this.daily_cells[idx])return this.daily_cells[idx];this.daily_cells[idx]=this.rows.collect(function(row){return row.days[idx];});return this.daily_cells[idx];},offset_caching:function(){var first_row=this.rows[0];var lefts=first_row.days.collect(function(cell){cell.clear_cache();return cell.cell_x();});var first_cell=this.rows[0].days[0];var first_offset=first_cell.cell_offset();this.half_cell_width=first_cell.cell_width()/2;this.half_cell_height=first_cell.cell_height()/2;this.rows.slice(1).each(function(row,ridx){var top=first_offset[1]+(ridx+1)*first_cell.cell_height();row.days.each(function(cell,cidx){cell._height_cache=first_cell.cell_height();cell._width_cache=first_cell.cell_width();cell._offset_cache=[lefts[cidx],top];});});},resize_once:function(callback){this._do_not_resize=(this._do_not_resize||0)+1;var value;try{value=callback(this);}finally{this._do_not_resize--;this.on_resize();}
return value;},on_resize:function(){if((this._do_not_resize||0)>0)return;var self=this;loading.draw(function(){self.offset_caching();$FE('weekly_allday_events_owner').on_resize();$FE('weekly_events_owner').on_resize();self.header_row.on_resize();self.drag_area&&self.drag_area.on_resize();});},cursor_updated:function(cursor,force){var self=this;$('contentNavigation').set_current_text(cursor.date.format("#{yy}년 #{m}월 #{d}일"));if(!cursor.date.equal_week(this.date)||force){self.clear_events();self.date=cursor.date.clear_time();self.start_at=self.date.firstday_of_week();self.start_at.setHours(6);self.end_at=self.date.lastday_of_week().next_day();self.end_at.setHours(6);self.header_row.set_dates(self.start_at);var t=self.start_at.clone();var today=new Date();t.setHours(6);var today_idx=-1;self.rows.each(function(row){var d=t;row.days.each(function(cell,idx){if(today_idx==-1&&d.equal_date(today))today_idx=idx;cell.set_date(d);if(today_idx==idx)cell.today_on();else cell.today_off();d=d.next_day();});t=t.next_hour();});self.set_header();loading.draw(function(){self.draw_events();});}}};Element.addMethods({setWidth:FE.setWidth,setHeight:FE.setHeight,setDimension:FE.setDimension,setPosition:FE.setPosition,setColor:FE.setColor,getColor:FE.getColor,setBgColor:FE.setBgColor,getBgColor:FE.getBgColor,setVisible:function(e,visible){(visible?Element.show:Element.hide)(e);}});Object.extend(progress,{show:function(){if($FE('statusBar')){Element.show('statusBar');}},hide:function(){if($FE('statusBar')){Element.hide('statusBar');}}});Ajax.Responders.register({onCreate:function(){progress.acquire();},onComplete:function(xhr){progress.release();if(!xhr.success())console.log('ajax call error');}});calendar.cursor=new Cursor('main_cursor',new Date());var model={calendar:new CalendarModel(),todo:new TodoModel(),todo_store:new TodoStoreModel(),lunar:new LunarModel(),event:PartitionManager,special_event:new SpecialPartitionModel("special_event",true,false,false),user:new UserModel(),alarm:new AlarmModel()};var event_bucket=new EventBucket();var special_event_bucket=new EventBucket();calendar.partition=false;if(calendar.partition){model.event.add_model("user_event",false,false,true);model.event.add_model("user_revent",false,true,true);}else{model.event.add_model("common",false,false,true);}
var actor={calendar:new Actor(model.calendar),todo:new Actor(model.todo),todo_store:new Actor(model.todo_store),event:new Actor(model.event),special_event:new Actor(model.special_event),alarm:new Actor(model.alarm)};var Deactivable=Class.create();Deactivable.prototype={initialize:function(element){this.deactivators=[];this.element_update=$(element).update;Object.extend(element,this);},update:function(content){this.deactivators.each(function(object){try{if(object.deactivate){object.deactivate();}else{console.log('the object above has no deactivate() method');}}catch(e){console.log(["error on calling deactivate for ",object]);console.log(e);}});this.deactivators=[];this.on_resize=null;this.element_update(content);},register_deactivator:function(object){this.deactivators.push(object);}};function remote_main_function(url,options){var opts=Object.extend({asynchronous:true,evalScripts:true,method:'get'},options||{});return new Ajax.Updater('layout_main',url,opts);};$j.jGrowl.defaults.position='bottom-right';calendar.notify=function(msg,options){$j.jGrowl(msg,Object.extend({lifeTime:5000},options||{}));};calendar.link_to_url=function(event,url){Event.stop(event);window.open(unescape(url));};calendar.history_back=function(previous,type){if(previous){history_controller.go(previous.split("#")[1]);}else{history_controller.go(type);}};calendar.preview=false;calendar.preview_calendar=function(calendar_id,options){var options=Object.extend({title:'캘린더 미리보기'},options||{});var params=$H(options).toQueryString();$('popup_frame').load('/preview/calendars/'+calendar_id+"?preview=1&"+params,options);};calendar.inside_preview_calendar=function(calendar_id){$('popup_frame').load('/calendar/preview/'+calendar_id);};calendar.add_preview_categories=function(element){if(!element.has_clicked){element.has_clicked=true;var calendar_ids=model.calendar.list().collect(function(c){return c.source_id?c.source_id:c.id;}).join(',');new Ajax.Request('/calendar/add_category',{method:'post',parameters:{id:calendar_ids}});}
element.has_clicked=false;};calendar.yearly_to_monthly=function(date){calendar.cursor.update_date(date);history_controller.go('monthly_view');};hanmail={getAdvHeight:function(){var h=0;if(navigator.userAgent.indexOf("SV1")>0){h=14;}
else if(navigator.userAgent.indexOf("MSIE 7")>0){h=45;}
else if(navigator.userAgent.indexOf("Gecko")>0&&navigator.userAgent.indexOf("Firefox")<=0&&navigator.userAgent.indexOf("Netscape")<=0){h=22;}
else if(navigator.userAgent.indexOf("Firefox")>0){h=18;}
else if(navigator.userAgent.indexOf("Netscape")>0){h=-2;}
else{h=0;}
return parseInt(h);},OpenWindowWithoutReturn:function(p_sURL,p_sName,p_iTopMargin,p_iLefMargin,p_bScrollBars,p_statusbar,p_bResizable,p_iWidth,p_iHeight){p_iHeight=parseInt(p_iHeight);p_iHeight+=parseInt(hanmail.getAdvHeight());l_sSpecialty='topmargin='+p_iTopMargin;l_sSpecialty=l_sSpecialty+', leftmargin='+p_iLefMargin;l_sSpecialty=l_sSpecialty+', scrollbars='+p_bScrollBars;l_sSpecialty=l_sSpecialty+', status='+p_statusbar;l_sSpecialty=l_sSpecialty+', resizable='+p_bResizable;l_sSpecialty=l_sSpecialty+', width='+p_iWidth;l_sSpecialty=l_sSpecialty+', height='+p_iHeight;window.open(p_sURL,p_sName,l_sSpecialty);},insertAddrbook3:function(email,w,h){OpenWindowWithoutReturn('/test/address/?uri=%2Fhanmail%2Fmail%2FCalendarAddAddrbook.daum%3Fpopup%3D1%26addrlist%3D'+email+'%26_top_hm%3Dv_add_addrlist','addr_list',0,0,'no','yes','no',w,h);return true;},FFlexInput:function(obj,bufId){if(!IsIE()){flexInput(obj,bufId);}},flexInput:function(obj,bufId){var valu=obj.value;var curWidth=obj.offsetWidth;var curHeight=obj.offsetHeight;var buffer=document.getElementById(bufId);buffer.style.width=curWidth+"px";var tmpText=document.createTextNode(valu);buffer.innerHTML="";buffer.appendChild(tmpText);if(buffer.offsetHeight>=105){obj.style.height="105px";obj.style.overflowY="auto";}else if(buffer.offsetHeight<=19){obj.style.height="19px";obj.style.overflowY="hidden";}else{obj.style.height=buffer.offsetHeight;obj.style.overflowY="hidden";}}}
var h_suggest={dataSet:function(){},util:function(){String.prototype.addslashes=function(){return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g,'\\$1');}
String.prototype.trim=function(){return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1");}
String.prototype.replaceAll=function(searchStr,replaceStr){var tmp=this;while(tmp.indexOf(searchStr)!=-1)
tmp=tmp.replace(searchStr,replaceStr);return tmp;}},h_ajax:function(funcOnSuccess,funcOnFailure,funcOnLoading){if(window.XMLHttpRequest){this.XHR=new XMLHttpRequest();}else if(window.ActiveXObject){try{this.XHR=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{this.XHR=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){this.XHR=null;}}}else{this.XHR=null;}
if(this.XHR==null){return;}
this.onSuccess=(funcOnSuccess!=null)?funcOnSuccess:function(){};this.onFailure=(funcOnFailure!=null)?funcOnFailure:function(){};this.onLoading=(funcOnLoading!=null)?funcOnLoading:function(){};},h_event:function(){}}
h_suggest.h_event.prototype={eventModel:(document.addEventListener)?"w3c":(document.attachEvent)?"bubble":"noObserve",addEvent:function(targetObject,eventType,eventHandler,isCapture){if(isCapture==null)var isCapture=false;if(this.eventModel=="w3c"){targetObject.addEventListener(eventType.replace(/on/,""),eventHandler,isCapture);}else if(this.eventModel=="bubble"){targetObject.attachEvent(eventType,eventHandler);}else{return;}},removeEvent:function(targetObject,eventType,eventHandler,isCapture){if(isCapture==null)var isCapture=false;if(this.EventModel=="w3c"){targetObject.removeEventListener(eventType.replace(/on/,""),eventHandler,isCapture);}else if(this.eventModel=="bubble"){targetObject.detachEvent(eventType,eventHandler);}else{return;}},stopEvent:function(e){if(!e)var e=window.event;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();}}
if(!hanEvent){var hanEvent=new h_suggest.h_event();}
h_suggest.dataSet.prototype={actb_curr:null,actb_pos:0,actb_kwcount:0,actb_timeOut:5000,actb_cid:0,tabC:0,actb_bgColor:'#ffffff',actb_textColor:'#000000',actb_hColor:'#efece5',actb_fFamily:'돋움',actb_fSize:'12px',actb_hStyle:'line-height:14px,text-decoration:underline,font-weight:bold',areaHeight:365,areaWidth:390,btnAreaHeight:23,prefixHeight:0,suggestPanel:null,defaultDocument:null,suggestFrame:null,suggestFrameDocument:null,suggestBodyPanel:null,suggestFrameUse:true,recentAddrArea:null,listArea:null,btnArea:null,preWord:"",getSuggestUse:"Y",prevActb_curr:null,prevWord:"",suggestFields:new Array(),recentMail_cid:0,callbackList:new Object,fieldTrickDB:"",fieldWidthDB:0,isPort:false,kTimer:null,cur_left:0,defCallBack:function(){}}
h_suggest.util.prototype={getCurrentStyle:function(elm,cssProperty,mozCssProperty){if(arguments.length<3)var mozCssProperty=cssProperty;if(elm.currentStyle)
return elm.currentStyle[cssProperty];else
return document.defaultView.getComputedStyle(elm,null).getPropertyValue(mozCssProperty);},fHeightStep:null,fMaxHeight:null,FFlexInput:function(obj,bufferID){if(obj.type=="text"){return;}
if(window.navigator.appVersion.toLowerCase().indexOf("msie")==-1){this.flexInput(obj,bufferID);}},flexInput:function(obj,bufferID){if(obj.type=="text"){return;}
var objValue=obj.value;var curWidth=obj.offsetWidth;var curHeight=obj.offsetHeight||this.getCurrentStyle(obj,"height");curHeight=parseInt(curHeight,10)-2;if(this.fHeightStep==null&&this.fMaxHeight==null){this.fHeightStep=curHeight;this.fMaxHeight=(this.fHeightStep*6);}
if(!(document.getElementById(obj.id+"_buffer"))){return;}
var buffer=document.getElementById(obj.id+"_buffer");buffer.style.width=curWidth+"px";var tmpText=document.createTextNode(objValue);buffer.innerHTML="";buffer.appendChild(tmpText);var bufferHeight=buffer.offsetHeight||this.getCurrentStyle(buffer,"height");bufferHeight=parseInt(bufferHeight,10)-2;if(bufferHeight>=this.fMaxHeight){obj.style.height=this.fMaxHeight+"px";obj.style.overflowY="auto";}else if(bufferHeight<=this.fHeightStep){obj.style.height=this.fHeightStep+"px";obj.style.overflowY="hidden";}else{obj.style.height=bufferHeight+"px";obj.style.overflowY="hidden";}
if(typeof(uiConfig)!="undefined"){if(uiConfig.mostContacted)changeAddrlist(obj);}},flexInputX:function(e){if(!e)var e=window.event;var obj=e.srcElement||e.target;if(obj.type=="text"){return;}
if(!(document.getElementById(obj.id+"_buffer"))){return;}
var objValue=obj.value;var curWidth=obj.offsetWidth;var curHeight=obj.offsetHeight||this.getCurrentStyle(obj,"height");curHeight=parseInt(curHeight,10)-4;if(this.fHeightStep==null&&this.fMaxHeight==null){this.fHeightStep=curHeight;this.fMaxHeight=(this.fHeightStep*6);}
var buffer=document.getElementById(obj.id+"_buffer");buffer.style.width=curWidth+"px";var tmpText=document.createTextNode(objValue);buffer.innerHTML="";buffer.appendChild(tmpText);var bufferHeight=buffer.offsetHeight||this.getCurrentStyle(buffer,"height");bufferHeight=parseInt(bufferHeight,10)-2;obj.style.lineHeight=this.fHeightStep+"px";buffer.style.lineHeight=this.fHeightStep+"px";if(bufferHeight>=this.fMaxHeight){obj.style.height=this.fMaxHeight+"px";obj.style.overflowY="auto";}else if(bufferHeight<=this.fHeightStep){obj.style.height=this.fHeightStep+"px";obj.style.overflowY="hidden";}else{obj.style.height=bufferHeight+"px";obj.style.overflowY="hidden";}},jasoSplit:function(str){var hanTable=new Array();hanTable[0]="ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ";hanTable[1]="ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ";hanTable[2]=" ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ";var doubleTable=new Object();doubleTable["ㅘ"]="ㅗㅏ";doubleTable["ㅙ"]="ㅗㅐ";doubleTable["ㅚ"]="ㅗㅣ";doubleTable["ㅝ"]="ㅜㅓ";doubleTable["ㅞ"]="ㅜㅔ";doubleTable["ㅟ"]="ㅜㅣ";doubleTable["ㅢ"]="ㅡㅣ";doubleTable["ㄳ"]="ㄱㅅ";doubleTable["ㄵ"]="ㄴㅈ";doubleTable["ㄶ"]="ㄴㅎ";doubleTable["ㄺ"]="ㄹㄱ";doubleTable["ㄻ"]="ㄹㅁ";doubleTable["ㄼ"]="ㄹㅂ";doubleTable["ㄽ"]="ㄹㅅ";doubleTable["ㄾ"]="ㄹㅌ";doubleTable["ㄿ"]="ㄹㅍ";doubleTable["ㅀ"]="ㄹㅎ";doubleTable["ㅄ"]="ㅂㅅ";var result=new Array();for(var i=0;i<str.length;i++){var uCode=str.charCodeAt(i);var hcode=uCode-0xAC00;var hcode2=hcode%588;var cho=new Array();cho[0]=parseInt(hcode/588);cho[1]=parseInt(hcode2/28);cho[2]=hcode2%28;var mun=new Array();mun[0]=hanTable[0].charAt(cho[0]);mun[1]=hanTable[1].charAt(cho[1]);mun[2]=hanTable[2].charAt(cho[2]);if(doubleTable[mun[0]])mun[0]=doubleTable[mun[0]];if(doubleTable[mun[1]])mun[1]=doubleTable[mun[1]];if(doubleTable[mun[2]])mun[2]=doubleTable[mun[2]];if(uCode>12592&&uCode<55204){if(mun.join("").trim()==""||mun.join("").trim()==null){mun[0]=hanTable[0].charAt(hanTable[0].indexOf(String.fromCharCode(uCode)));}
result[result.length]=mun.join("").trim();}else{result[result.length]=String.fromCharCode(uCode);}}
return result.join("");},getHashLen:function(obj){var c=0;for(var p in obj){c++;}
return c;},getFrameDocumentById:function(objId){var objFrame=document.getElementById(objId);return this.getFrameDocumentByObject(objFrame);},getFrameDocumentByObject:function(objFrame){var returnDoc=(objFrame.contentWindow||objFrame.contentDocument);if(returnDoc.document)returnDoc=returnDoc.document;return returnDoc;},isIE:function(){if(window.navigator.appVersion.toLowerCase().indexOf("msie")!=-1)
return true;else
return false;},getUserAgent:function(){return window.navigator.userAgent.toLowerCase();},fieldTrickster:function(dObj,fObj){dObj.innerHTML=dObj.innerHTML+fObj.value;},getCoords:function(element){var _element=(typeof(element)=="string")?document.getElementById(element):element;var coords={left:0,top:0,right:0,bottom:0,width:_element.offsetWidth,height:_element.offsetHeight};while(_element){coords.left+=_element.offsetLeft;coords.top+=_element.offsetTop;_element=_element.offsetParent;}
coords.right=coords.left+coords.width;coords.bottom=coords.top+coords.height;return coords;}}
h_suggest.h_ajax.prototype={open:function(method,url,isAsync,paramString){this.XHR.open(method,url,isAsync);var refObj=this;this.XHR.onreadystatechange=function(){switch(refObj.XHR.readyState){case 4:if(refObj.XHR.status==200||refObj.XHR.status==304){refObj.onSuccess();}else if(this.XHR.status>=400){refObj.onFailure();}
break;case 1:refObj.onLoading();break;}}
if(method=="POST"){this.XHR.send(paramString)}else{this.XHR.send(null);}},setAllHandler:function(funcOnSuccess,funcOnLoading,funcOnFailure){this.setOnSuccess(funcOnSuccess);this.setOnLoading(funcOnLoading);this.setOnFailure(funcOnFailure);},setOnSuccess:function(funcOnSuccess){this.onSuccess=(funcOnSuccess!=null)?funcOnSuccess:function(){};},setOnLoading:function(funcOnLoading){this.onLoading=(funcOnLoading!=null)?funcOnLoading:function(){};},setOnFailure:function(funcOnFailure){this.onFailure=(funcOnFailure!=null)?funcOnFailure:function(){};},responseText:function(){if(this.XHR.responseText){return this.XHR.responseText;}else{alert("결과 Text가 없습니다");return false;}},responseXML:function(){if(this.XHR.responseXML){return this.XHR.responseXML;}else{alert("결과 XML이 없습니다");return false;}}}
var peopleAddrList=null;var GrpAddrList=null;var peopleAddrHash=null;var GrpAddrHash=null;var sAjax=null;var sUtil=new h_suggest.util();var sData=new h_suggest.dataSet();if(!sUtil.isIE())sData.prefixHeight=sData.prefixHeight+2;function getCaretEnd(obj){if(typeof obj.selectionEnd!="undefined"){return obj.selectionEnd;}else if(document.selection&&document.selection.createRange){var M=document.selection.createRange();var Lp=obj.createTextRange();Lp.setEndPoint("EndToEnd",M);var rb=Lp.text.length;if(rb>obj.value.length){return-1;}
return rb;}}
function getCaretStart(obj){if(typeof obj.selectionStart!="undefined"){return obj.selectionStart;}else if(document.selection&&document.selection.createRange){var M=document.selection.createRange();var Lp=obj.createTextRange();Lp.setEndPoint("EndToStart",M);var rb=Lp.text.length;if(rb>obj.value.length){return-1;}
return rb;}}
function setCaret(obj,l){obj.focus();if(obj.setSelectionRange){obj.setSelectionRange(l,l);}else if(obj.createTextRange){m=obj.createTextRange();m.moveStart('character',l);m.collapse();m.select();}}
function openRecentMail(){var tmp=document.getElementById('recentMailAddress');if(tmp.style.display=='block'){tmp.style.display='none';}else{tmp.style.display='';if(Hanmail){if(arguments[0]){var linker=arguments[0];var crds=Hanmail.getCoords(linker);tmp.style.top=crds.bottom+2+"px";tmp.style.left=crds.right-tmp.offsetWidth+"px";}}}
window.clearTimeout(sData.recentMail_cid);sData.recentMail_cid=window.setTimeout('closeRecentMail()',3000);}
function closeRecentMail(){window.clearTimeout(sData.recentMail_cid);document.getElementById('recentMailAddress').style.display='none';}
function suggest_use(){var obj=document.getElementById('suggestBtnText');var obj1=sData.suggestFrameDocument.getElementById('suggestBtnText_in_auto');var call=document.getElementById('suggestUseCall');var s_to=document.getElementById('S_TO');if(sData.getSuggestUse=='Y'){sData.getSuggestUse='N';call.src='/hanmail/mail/MailSuggest.daum?mode=suggest&use=N';if(obj)obj.innerHTML='켜기';if(obj1)obj1.innerHTML='켜기';window.clearTimeout(sData.actb_cid);closeRecentAddrArea();window.clearTimeout(sData.recentMail_cid);sData.recentMail_cid=window.setTimeout('closeRecentMail()',1000);keyPressed=function(){};suggestDisable();}else{sData.getSuggestUse='Y';call.src='/hanmail/mail/MailSuggest.daum?mode=suggest&use=Y';if(obj)obj.innerHTML='끄기';if(obj1)obj1.innerHTML='끄기';window.clearTimeout(sData.recentMail_cid);sData.recentMail_cid=window.setTimeout('closeRecentMail()',1000);keyPressed=function(){if(sData.fieldTrickDB!=sData.actb_curr.value){sData.fieldTrickDB=sData.actb_curr.value;if(sData.actb_curr.value.substring(sData.actb_curr.value.length-1)==","&&sUtil.getUserAgent().indexOf("safari")!=-1){writeAddr(",");}
updateSuggest();}else{}
sData.kTimer=setTimeout("keyPressed();",100);}}}
function recentAddrListItemOver(obj){obj.style.backgroundColor='#e9e9e9';sData.actb_pos=parseInt(obj.id.substr(17,2));updateCurrentPosition();}
function recentAddrListItemClick(){writeAddr();}
function deleteItem(aItem,aAddr){var tmp=new Array();var j=0;for(var i=0;i<recent_addr.length;i++){if(recent_addr[i].item!=aItem&&recent_addr[i].addr!=aAddr){tmp[j]=recent_addr[i];j++;}}
return tmp;}
function recentAddrDelete(aItem,aAddr){delete peopleAddrHash[aItem];searchList();var call=document.getElementById("suggestUseCall");if(call)call.src='/hanmail/filter/AutoAddrDel.daum?addr='+aItem;}
function updateCurrentPosition(){var tmp;for(var i=0;i<sData.actb_kwcount;i++){sData.suggestFrameDocument.getElementById('recentAddrItemDiv'+i).style.backgroundColor='#ffffff';}
tmp=sData.suggestFrameDocument.getElementById('recentAddrItemDiv'+sData.actb_pos);tmp.style.backgroundColor='#e9e9e9';if(tmp.getBoundingClientRect&&window.event){var t=tmp.getBoundingClientRect();if(t.bottom>0+sData.areaHeight-sData.btnAreaHeight)sData.listArea.doScroll('scrollbarDown');if(t.top<0)sData.listArea.doScroll('pageUp');}else{}}
function setSuggestLocation(){sData.suggestFrame.style.top=eval(curTop()+sData.actb_curr.offsetHeight+1)+'px';sData.suggestFrame.style.left=curLeft()+'px';}
function searchList(){var lastWord=getLastWord();var lastWordLen=lastWord.length;var jasoWord=sUtil.jasoSplit(lastWord);if(jasoWord.trim().length==0||jasoWord.trim().length=="")jasoWord=lastWord;var highlightWord=lastWord;var highlightWordLen=highlightWord.length;var maxLength=50;var htmlArray=new Array();var searchedHashLen=0;if(lastWord.substring(lastWord.length-1).charCodeAt(0)>12592&&lastWord.substring(lastWord.length-1).charCodeAt(0)<55204){highlightWord=lastWord.substring(0,lastWord.length-1);highlightWordLen=highlightWord.length;}
sData.actb_kwcount=0;searchedHash=null;searchedHash=new Object();var jasoFlag=false;if(jasoWord.charCodeAt(0)>12592&&jasoWord.charCodeAt(0)<55204){jasoFlag=true;}else{jasoFlag=false;}
for(var addr in peopleAddrHash){if(jasoFlag){if(peopleAddrHash[addr].jaso.indexOf(jasoWord)>-1||peopleAddrHash[addr].addr.indexOf(lastWord)==0){searchedHash[addr]=peopleAddrHash[addr];}}else{if((peopleAddrHash[addr].jaso.indexOf("#")==-1&&peopleAddrHash[addr].jaso.indexOf(jasoWord)==0)||(peopleAddrHash[addr].jaso.indexOf("#")==0&&peopleAddrHash[addr].jaso.indexOf(jasoWord)==1)||peopleAddrHash[addr].addr.indexOf(lastWord)==0){searchedHash[addr]=peopleAddrHash[addr];}}}
for(var addr in GrpAddrHash){if(jasoFlag){if(GrpAddrHash[addr].jaso.indexOf(jasoWord)>-1||GrpAddrHash[addr].addr.indexOf(lastWord)==0){searchedHash[addr]=GrpAddrHash[addr];}}else{if((GrpAddrHash[addr].jaso.indexOf("#")==0&&GrpAddrHash[addr].jaso.indexOf(jasoWord)==0)||(GrpAddrHash[addr].jaso.indexOf("#")==0&&GrpAddrHash[addr].jaso.indexOf(jasoWord)==1)||GrpAddrHash[addr].addr.indexOf(lastWord)==0){searchedHash[addr]=GrpAddrHash[addr];}}}
searchedHashLen=sUtil.getHashLen(searchedHash);if(searchedHashLen<=0){frameHidden();return;}
setSuggestLocation();var j=0;for(var addr in searchedHash){htmlArray[htmlArray.length]='<div id="recentAddrItemDiv'+sData.actb_kwcount+'" style="width:'+sData.areaWidth+'px;cursor:pointer;overflow:hidden;height:20px;color:'+sData.actb_textColor+';font-family:'+sData.actb_fFamily+';font-size:'+sData.actb_fSize+';" onmouseover="window.parent.recentAddrListItemOver(this);">';htmlArray[htmlArray.length]='<div style="width:'+(sData.areaWidth-53)+'px;float:left;padding:4px 0 0 10px;overflow:hidden;text-overflow:ellipsis;" onclick="window.parent.recentAddrListItemClick();"><nobr>';var tmpItem=searchedHash[addr].name;var tmpItemLen=tmpItem.length;var lwIndex=tmpItem.indexOf(lastWord);var hwIndex=tmpItem.indexOf(highlightWord);if(lastWord.substr(0,1)!="#"){tmpItem=tmpItem.replaceAll("#","");}
if(lastWord.charCodeAt(0)>12592&&lastWord.charCodeAt(0)<55204){if(tmpItem.indexOf(lastWord)>-1){htmlArray[htmlArray.length]=tmpItem.substr(0,tmpItem.indexOf(lastWord));htmlArray[htmlArray.length]='<span style="color:#eb550c;">'+tmpItem.substr(tmpItem.indexOf(lastWord),lastWordLen)+'</span>';htmlArray[htmlArray.length]=tmpItem.substr((tmpItem.indexOf(lastWord)+lastWordLen),tmpItem.length);}else if(tmpItem.indexOf(highlightWord)>-1){htmlArray[htmlArray.length]=tmpItem.substr(0,tmpItem.indexOf(highlightWord));htmlArray[htmlArray.length]='<span style="color:#eb550c;">'+tmpItem.substr(tmpItem.indexOf(highlightWord),highlightWordLen)+'</span>';htmlArray[htmlArray.length]=tmpItem.substr((tmpItem.indexOf(highlightWord)+highlightWordLen),tmpItem.length);}else{htmlArray[htmlArray.length]=tmpItem;}}else{if(tmpItem.indexOf(lastWord)==0){htmlArray[htmlArray.length]='<span style="color:#eb550c;">'+tmpItem.substr(0,lastWordLen)+'</span>';htmlArray[htmlArray.length]=tmpItem.substr((tmpItem.indexOf(lastWord)+lastWordLen),tmpItem.length);}else if(tmpItem.indexOf(highlightWord)==0){htmlArray[htmlArray.length]='<span style="color:#eb550c;">'+tmpItem.substr(0,highlightWordLen)+'</span>';htmlArray[htmlArray.length]=tmpItem.substr((tmpItem.indexOf(highlightWord)+highlightWordLen),tmpItem.length);}else{htmlArray[htmlArray.length]=tmpItem;}}
var tmpAddr=searchedHash[addr].addr;var tmpAddrlwIndex=tmpAddr.indexOf(lastWord);if(tmpAddr.trim().length>0){tmpAddr=tmpAddr.replaceAll("#","");if(tmpAddrlwIndex==0){htmlArray[htmlArray.length]='<span style="margin-left:15px;" class="d_11_666666">&lt;';htmlArray[htmlArray.length]='<span style="color:#eb550c;">'+tmpAddr.substr(0,lastWordLen)+'</span>'+tmpAddr.substr(lastWordLen)+'&gt;</span>';}else{htmlArray[htmlArray.length]='<span style="margin-left:15px;" class="d_11_666666">&lt;'+tmpAddr+'&gt;</span>';}}
htmlArray[htmlArray.length]='</nobr>';var tmpEmail=searchedHash[addr].addr;var tmpName=searchedHash[addr].name;var tmpIsGrp="0";htmlArray[htmlArray.length]="<input type=\"hidden\" id=\"recentAddrNameHidden"+sData.actb_kwcount+"\" name=\"recentAddrNameHidden"+sData.actb_kwcount+"\" value='"+tmpName+"'>";htmlArray[htmlArray.length]="<input type=\"hidden\" id=\"recentAddrItemHidden"+sData.actb_kwcount+"\" name=\"recentAddrItemHidden"+sData.actb_kwcount+"\" value='"+tmpEmail+"'>";htmlArray[htmlArray.length]="<input type=\"hidden\" id=\"recentAddrItemIsGrpHidden"+sData.actb_kwcount+"\" name=\"recentAddrItemIsGrpHidden"+sData.actb_kwcount+"\" value='"+tmpIsGrp+"'>";htmlArray[htmlArray.length]='</div>';if(tmpName.substr(0,1)!="#"){htmlArray[htmlArray.length]='<div style="float:left;width:10px;padding-top:5px;margin-left:10px;"><img src="http://mailimg.hanmail.net/05mail/i_search_del.gif" width="10" height="9" alt="삭제" onclick="window.parent.recentAddrDelete(\''+addr+'\',\''+searchedHash[addr].addr+'\');"></div>';}
htmlArray[htmlArray.length]='</div>';sData.actb_kwcount++;if(j>=maxLength){break;}else{j++;}}
var offHTML='<a href="javascript:;" onclick="window.parent.suggest_use();" class="d_11_333333" id="suggestBtnText_in_auto">'+(sData.getSuggestUse=='Y'?'끄기':'켜기')+'</a><span style="color:#cccccc;margin:0 5px;">|</span>';if(typeof(uiConfig)!="undefined"){offHTML=''}
sData.listArea.innerHTML=htmlArray.join("");var helperHTML='<div style="float:left;font-size:11px;color:#999999;padding-left:5px;letter-spacing:-1px;">해당이름을 선택 후 <span style="color:#4c5fe2;">Enter</span>키를 넣으면 바로 추가됩니다.</div>'
sData.btnArea.innerHTML=helperHTML+'<a href="javascript:;" onclick="window.parent.closeRecentAddrArea();" class="d_11_333333" style="margin-right:5px;">닫기</a>';if(sData.actb_kwcount<17){var minus=20*(17-sData.actb_kwcount)
sData.suggestPanel.style.height=(sData.areaHeight-minus)+'px';sData.listArea.style.height=(sData.areaHeight-sData.btnAreaHeight-minus)+'px';sData.btnArea.style.top=(sData.areaHeight-sData.btnAreaHeight-1-minus)+'px';if(sData.actb_kwcount<=1){var helperHTML='<div style="float:left;font-size:11px;color:#999999;padding-left:5px;letter-spacing:-1px;"><span style="color:#4c5fe2;">Enter</span>키를 넣으면 바로 추가됩니다.</div>'
sData.btnArea.innerHTML=helperHTML+offHTML+'<a href="javascript:;" onclick="window.parent.closeRecentAddrArea();" class="d_11_333333">닫기</a>';}}else{sData.suggestPanel.style.height=(sData.areaHeight)+'px';sData.listArea.style.height=(sData.areaHeight-sData.btnAreaHeight)+'px';sData.btnArea.style.top=(sData.areaHeight-sData.btnAreaHeight-1)+'px';}}
function frameHidden(){clearTimeout(sData.actb_cid);sData.suggestFrame.style.top="-10000000px";}
function frameDisplay(){clearTimeout(sData.actb_cid);sData.actb_cid=setTimeout("hideRecentAddrList()",sData.actb_timeOut);sData.suggestFrame.style.top=eval(curTop()+sData.actb_curr.offsetHeight-1)+'px';}
function createRecentAddrAreaDiv(){sData.tabC=0;if(top!=self){top.location=self.location;s}
sData.suggestFrame=document.createElement("div");with(sData.suggestFrame.style){position="absolute";top='-100000px';left=curLeft()+'px';border='solid 1px #ccc6bf';width=sData.areaWidth+'px';height=sData.areaHeight+'px';zIndex='3000000';textAlign='left';}
sData.suggestFrame.onmouseover=function(){clearTimeout(sData.actb_cid);}
sData.suggestFrame.onmouseout=function(){clearTimeout(sData.actb_cid);sData.actb_cid=setTimeout("hideRecentAddrList()",sData.actb_timeOut);}
$("layout_main").appendChild(sData.suggestFrame);sData.suggestPanel=sData.suggestFrame;frameHidden();sData.recentAddrArea=document.createElement('div');with(sData.recentAddrArea.style){position='relative';border='none';width=sData.areaWidth+'px';backgroundColor='#ffffff';}
sData.btnArea=document.createElement('div');with(sData.btnArea.style){position='absolute';zIndex='9';top=(sData.areaHeight-sData.btnAreaHeight-1)+'px';width='100%';height=sData.btnAreaHeight+'px';borderTop='solid 1px #ccc6bf';textAlign='right';lineHeight=sData.btnAreaHeight+'px';verticalAlign='middle';fontSize='12px';color='#333';}
if(sData.isPort){sData.btnArea.innerHTML='<div style="margin:5px 7px 0 0;"><span style="cursor:pointer;" onclick="window.parent.refreshSuggest();">Refresh</span> | <a href="javascript:;" onclick="window.parent.closeRecentAddrArea();">닫기</a></div>';}else{sData.btnArea.innerHTML='<div style="margin:5px 7px 0 0;"><a href="javascript:;" onclick="window.parent.suggest_use();" id="suggestBtnText_in_auto">'+(sData.getSuggestUse=='N'?'켜기':'끄기')+'</a> | <a href="javascript:;" onclick="window.parent.closeRecentAddrArea();" >닫기</a></div>';}
sData.listArea=document.createElement('div');with(sData.listArea.style){width=sData.areaWidth+'px';height=(sData.areaHeight-sData.btnAreaHeight)+'px';overflowX='hidden';overflowY='scroll';}
sData.recentAddrArea.appendChild(sData.listArea);sData.recentAddrArea.appendChild(sData.btnArea);sData.suggestFrame.appendChild(sData.recentAddrArea);}
function createRecentAddrArea(){var defaultCss="<style type=\"text/css\">\n body { margin:0; padding:0; background-color:#ffffff; border:solid 1px #cacaca; padding-right:2px; }\n div,font { font-size:12px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n .d_12_333333 { font-size:12px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n .d_11_333333 { font-size:11px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n .d_11_666666 { font-size:11px; color:#666666; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n a.d_12_333333:link { font-size:12px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n a.d_12_333333:visited { font-size:12px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n a.d_12_333333:hover { font-size:12px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n div { scrollbar-3dlight-color:#F7F7F7;scrollbar-arrow-color:#696969;scrollbar-base-color:#F7F7F7;scrollbar-darkshadow-color:#F7F7F7;scrollbar-face-color:#E6E6E6;scrollbar-highlight-color:#F7F7F7;scrollbar-shadow-color:#696969; }\n"+"a.d_11_333333:link,a.d_11_333333:visited { font-size:11px; color:#333333; font-weight:normal; text-decoration:none; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n a.d_11_333333:hover { font-size:11px; color:#333333; font-weight:normal; text-decoration:underline; font-family:돋움,dotum,Apple Gothic,sans-serif; }\n</style>\n";var documentStr="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"+defaultCss+"</head>\n<body>\n</body>\n</html>";sData.tabC=0;sData.suggestFrame=null;sData.suggestFrame=document.createElement("iframe");sData.suggestFrame.id="suggestFrame";sData.cur_left=sData.cur_left||curLeft();with(sData.suggestFrame.style){position="absolute";top='-100000px';left=sData.cur_left+'px';left='100px';width=sData.areaWidth+'px';height=sData.areaHeight+'px';zIndex='3000000';if(!sUtil.isIE()){borderRight='solid 1px #cacaca';borderBottom='solid 1px #cacaca';}}
sData.suggestFrame.setAttribute("frameBorder","0");sData.suggestFrame.setAttribute("scrolling","no");sData.suggestFrame.onmouseover=function(){clearTimeout(sData.actb_cid);}
sData.suggestFrame.onmouseout=function(){clearTimeout(sData.actb_cid);sData.actb_cid=setTimeout("hideRecentAddrList()",sData.actb_timeOut);}
$("layout_main").appendChild(sData.suggestFrame);sData.suggestPanel=sData.suggestFrame;frameHidden();sData.suggestFrameDocument=sUtil.getFrameDocumentByObject(sData.suggestFrame);sData.suggestFrameDocument.open();sData.suggestFrameDocument.write(documentStr);sData.suggestFrameDocument.close();sData.defaultDocument=sData.suggestFrameDocument;sData.recentAddrArea=sData.defaultDocument.createElement('div');with(sData.recentAddrArea.style){position='relative';border='0 none';width=sData.areaWidth+'px';height=sData.areaHeight+'px';backgroundColor='#ffffff';}
sData.btnArea=sData.defaultDocument.createElement('div');with(sData.btnArea.style){position='absolute';zIndex='9';top=(sData.areaHeight-sData.btnAreaHeight-1)+'px';width="100%";height=sData.btnAreaHeight-5+'px';borderTop='solid 1px #ccc6bf';padding="5px 7px 0 0";textAlign='right';}
sData.btnArea.className='d_12_333333';var offHTML='<a href="javascript:;" onclick="window.parent.suggest_use();" class="d_11_333333" id="suggestBtnText_in_auto">'+(sData.getSuggestUse=='Y'?'끄기':'켜기')+'</a><span style="color:#cccccc;margin:0 5px;">|</span>';if(typeof(uiConfig)!="undefined"){offHTML=''}
var helperHTML='<div style="float:left;font-size:11px;color:#999999;padding-left:5px;letter-spacing:-1px;">해당이름을 선택 후 <span style="color:#4c5fe2;">Enter</span>키를 넣으면 바로 추가됩니다.</div>'
sData.btnArea.innerHTML=helperHTML+offHTML+'<a href="javascript:;" onclick="window.parent.closeRecentAddrArea();" class="d_11_333333">닫기</a>';sData.listArea=sData.defaultDocument.createElement('div');with(sData.listArea.style){width=sData.areaWidth+'px';height=(sData.areaHeight-sData.btnAreaHeight)+'px';overflowX='hidden';overflowY='scroll';}
sData.recentAddrArea.appendChild(sData.listArea);sData.recentAddrArea.appendChild(sData.btnArea);sData.defaultDocument.body.appendChild(sData.recentAddrArea);}
function curTop(){actb_toreturn=0;obj=sData.actb_curr;while(obj){actb_toreturn+=obj.offsetTop;obj=obj.offsetParent;}
return actb_toreturn-107;}
function curLeft(){actb_toreturn=0;obj=sData.actb_curr;while(obj){actb_toreturn+=obj.offsetLeft;obj=obj.offsetParent;}
return actb_toreturn-203;}
function updateList(){if(sData.getSuggestUse=='N')return;window.clearTimeout(sData.actb_cid);sData.actb_cid=window.setTimeout('hideRecentAddrList()',sData.actb_timeOut);sData.actb_pos=0;if(sData.suggestFrame&&sData.recentAddrArea){searchList();}
if(sData.actb_kwcount>0){frameDisplay();updateCurrentPosition();}else{frameHidden();}}
function hideRecentAddrList(){if(sData.suggestFrame){frameHidden();}}
function checkDupEmail(strNewAddr,strPrevAddr){var newMailAddr=strNewAddr.split(",");var newMailAddrLen=newMailAddr.length;strPrevAddr=strPrevAddr.trim();if(strPrevAddr.substr(strPrevAddr.length-1,1)==','){strPrevAddr=strPrevAddr.substr(0,strPrevAddr.length-1);}
var prevMailAddr=strPrevAddr.split(",");var prevMailAddrLen=prevMailAddr.length;for(var i=0;i<prevMailAddrLen;i++){for(var j=0;j<newMailAddrLen;j++){if(prevMailAddr[i]==newMailAddr[j]){delete newMailAddr[j];}}}
var nonDupNewMailAddr=new Array();var l=0;for(var k in newMailAddr){if(newMailAddr[k]!=null||newMailAddr[k].trim()!=""){nonDupNewMailAddr[l]=newMailAddr[k];l++;}}
if(l==0)
return"";else
return nonDupNewMailAddr.join()+', ';}
function getLastWord(){try{var strValue=sData.actb_curr.value;strValue=strValue.replaceAll("'","`");strValue=strValue.replaceAll('"','“');var fieldAllValue=strValue.split(",");return fieldAllValue.pop().trim();}catch(e){return"";}}
function writeAddr_bak(){if(sData.getSuggestUse=="N")return;window.clearTimeout(sData.kTimer);sData.kTimer=null;var preInput=getLastWord();var suggestTop=(sData.actb_kwcount>0)?true:false;var email,isGroup;if(suggestTop){userName=sData.suggestFrameDocument.getElementById('recentAddrNameHidden'+sData.actb_pos).value;userEmailList=sData.suggestFrameDocument.getElementById('recentAddrItemHidden'+sData.actb_pos).value.split(",");if(userEmailList.length>1){email=getSelectGrpList(userName);}else{email=sData.suggestFrameDocument.getElementById('recentAddrItemHidden'+sData.actb_pos).value;if(userName.indexOf('#')==0){userName=userName.substring(1,userName.length).trim();}}}else{email="";}
var flag=(suggestTop)?1:0;var s_to=sData.actb_curr;var s_to_value=s_to.value.trim();var curWord="";if(arguments.length>0&&arguments[0]==","&&suggestTop){var tmpArr=s_to_value.split(",");tmpArr.pop();s_to_value=s_to_value.substr(0,s_to_value.length-tmpArr.pop().length-1);s_to_value=s_to_value.trim();}else{s_to_value=s_to_value.substr(0,s_to_value.length-preInput.length);s_to_value=s_to_value.trim();}
if(flag){s_to.value="d1528";if(s_to_value.length==0&&userName.trim().indexOf('#')==-1){s_to.value="\""+userName+"\" "+"<"+email+">,";}else if(s_to_value.substr(s_to_value.length-1,1)==','&&userName.trim().indexOf('#')==-1){s_to.value=s_to_value+' '+"\""+userName+"\" "+"<"+email+">,";}else if(userName.trim().indexOf('#')==-1){s_to.value=s_to_value+' , '+"\""+userName+"\" "+"<"+email+">,";}else{s_to.value=s_to_value+email;}}
sData.actb_kwcount=0;sData.actb_pos=0;frameHidden();setCaret(sData.actb_curr,s_to.value.length);sUtil.flexInput(sData.actb_curr,sData.actb_curr.id+'_Buffer');if(sData.callbackList[s_to.id])sData.callbackList[s_to.id]();sData.fieldTrickDB=sData.actb_curr.value;}
function writeAddr(){if(sData.getSuggestUse=="N")return;window.clearTimeout(sData.kTimer);sData.kTimer=null;var preInput=getLastWord();var suggestTop=(sData.actb_kwcount>0)?true:false;var email,isGroup;var emails=new Array();if(suggestTop){userName=sData.suggestFrameDocument.getElementById('recentAddrNameHidden'+sData.actb_pos).value;userEmailList=sData.suggestFrameDocument.getElementById('recentAddrItemHidden'+sData.actb_pos).value.split(",");if(userEmailList.length>1){for(var i=0;i<userEmailList.length;i++){email=userEmailList[i].split("@");emails.push({"addr":email[0],"domain":email[1]});}}else{email=userEmailList[0].split("@");emails=[{"addr":email[0],"domain":email[1]}];}}else{}
var flag=(suggestTop)?1:0;if(flag){buddyController.input_buddy_list(emails,"latest");}
sData.actb_kwcount=0;sData.actb_pos=0;frameHidden();sData.fieldTrickDB=sData.actb_curr.value;}
function closeRecentAddrArea(){try{sData.actb_curr.onkeydown=null;sData.actb_curr.onkeyup=null;frameHidden();}catch(e){}}
function updateSuggest(){if(getLastWord().length>0){updateList();}else{hideRecentAddrList();}}
function FFUpdate(){if(sData.fieldTrickDB!=sData.actb_curr.value){sData.fieldTrickDB=sData.actb_curr.value;updateSuggest();}else{}}
function resizeUpdate(){if(sData.fieldWidthDB!=sData.actb_curr.offsetWidth){sData.fieldWidthDB=sData.actb_curr.offsetWidth;sUtil.FFlexInput(sData.actb_curr,sData.actb_curr.id+'_Buffer');sData.actb_curr.value=sData.actb_curr.value;}}
function keyPressed(){if(sData.kTimer==null){sData.kTimer=setInterval("FFUpdate();",100);}else{FFUpdate();}}
function keyEvent_bak(e){if(!e)var e=window.event;var code=document.all?e.keyCode:e.which;var isDisplay=sData.suggestFrame.style.top==eval(curTop()+sData.actb_curr.offsetHeight-1)+"px";if(code==13&&isDisplay){writeAddr();}else if(code==188&&!e.shiftKey){writeAddr(",");}else if(code!=38&&code!=40&&code!=9){if(sUtil.isIE()||(sUtil.getUserAgent().indexOf("mac")!=-1&&sUtil.getUserAgent().indexOf("firefox")!=-1)){if(getLastWord().length>0){updateList();}else{hideRecentAddrList();}}
if(sData.actb_curr.id=='S_TO')check_myid();}}
function keyEvent(e){if(!e)var e=window.event;var code=document.all?e.keyCode:e.which;var isDisplay=sData.suggestFrame.style.top==eval(curTop()+sData.actb_curr.offsetHeight-1)+"px";if(code==13&&isDisplay){writeAddr();}else if(code!=38&&code!=40&&code!=9){if(sUtil.isIE()||(sUtil.getUserAgent().indexOf("mac")!=-1&&sUtil.getUserAgent().indexOf("firefox")!=-1)){if(getLastWord().length>0){updateList();}else{hideRecentAddrList();}}}}
function moveCurrent(e){sUtil.FFlexInput(sData.actb_curr,sData.actb_curr.id+'_Buffer');if(!e)var e=window.event;var code=document.all?e.keyCode:e.which;if(code==13){e.returnValue=false;if(e.preventDefault)e.preventDefault();}
if(sData.actb_kwcount<1)return;var suggestTop=parseInt(sData.suggestFrame.style.top,10);if(suggestTop>0){window.clearTimeout(sData.actb_cid);sData.actb_cid=window.setTimeout('hideRecentAddrList()',sData.actb_timeOut);if(code==38){e.returnValue=false;if(e.preventDefault)e.preventDefault();(sData.actb_pos>0)?sData.actb_pos--:0;updateCurrentPosition();}else if(code==40||code==9){e.returnValue=false;if(e.preventDefault)e.preventDefault();if(code==9&&sData.actb_kwcount==1){writeAddr();return;}
(sData.actb_pos<sData.actb_kwcount-1)?sData.actb_pos++:sData.actb_kwcount-1;updateCurrentPosition();}}}
function suggestDisable(){sData.actb_curr.onkeydown=null;sData.actb_curr.onkeyup=null;sData.actb_curr.onkeypress=null;window.clearTimeout(sData.kTimer);sData.kTimer=null;}
function checkValidSuggest(){if(sData.getSuggestUse=="N"){closeRecentAddrArea();return false;}
if(navigator.userAgent.indexOf("MSIE 5.0")!=-1){return false;}
if(peopleAddrHash==null||sUtil.getHashLen(peopleAddrHash)==0){return false;}else{return true;}
return true;}
function actb(e){window.clearTimeout(sData.kTimer);if(sData.actb_curr==null)return;if(!checkValidSuggest()){suggestDisable();return false;}
var e=window.event||e;var obj=e.srcElement||e.target;if(obj){sData.actb_curr=obj;}else{return;}
if(typeof(uiConfig)!="undefined"){if(uiConfig.mostContacted)setFocusMostContacted(sData.actb_curr.id,true);}
hanEvent.removeEvent(sData.actb_curr,"onkeyup",moveCurrent);hanEvent.addEvent(sData.actb_curr,"onkeyup",moveCurrent);hanEvent.removeEvent(sData.actb_curr,"onkeyup",keyEvent);hanEvent.addEvent(sData.actb_curr,"onkeyup",keyEvent);hanEvent.removeEvent(window,"onresize",resizeUpdate);hanEvent.addEvent(window,"onresize",resizeUpdate);if(!sUtil.isIE()){hanEvent.removeEvent(sData.actb_curr,"onkeypress",keyPressed);hanEvent.addEvent(sData.actb_curr,"onkeypress",keyPressed);}
keyPressed();hideRecentAddrList();if(getLastWord().length>0&&sData.prevWord!=getLastWord().length){updateList();sData.prevWord=getLastWord();}
sData.prevActb_curr=obj;}
function portableSuggestStart(obj){sData.isPort=true;sData.getSuggestUse="Y";peopleAddrHash=new Object();GrpAddrHash=new Object();peopleAddrList=partition(obj.peopleAddrList);for(var i=0;i<peopleAddrList.length;i++){if(peopleAddrHash[peopleAddrList[i].addr]==null){peopleAddrHash[peopleAddrList[i].addr]=peopleAddrList[i];}else if(peopleAddrList[i].name.charCodeAt(1)>12592&&peopleAddrList[i].name.charCodeAt(1)<55204||peopleAddrList[i].name.indexOf('#')==0){delete peopleAddrHash[peopleAddrList[i].addr];peopleAddrHash[peopleAddrList[i].addr]=peopleAddrList[i];}}
for(var j=0;j<obj.GrpAddrList.length;j++){GrpAddrHash[obj.GrpAddrList[j].name]=obj.GrpAddrList[j];}
try{sData.actb_curr.value+="";}catch(e){}
return;}
var refreshSuggest=function(){document.getElementById("daumSuggest").src=document.getElementById("daumSuggest").src;}
function initSuggestData(){peopleAddrHash=new Object();GrpAddrHash=new Object();peopleAddrHash=peopleAddrHash;GrpAddrHash=GrpAddrHash;}
function setDefaultCallBack(funcCallBack){sData.defCallBack=funcCallBack;}
function suggest_Success(){var result=sAjax.responseText();eval(result);sData.actb_curr=sData.suggestFields[0];if(sData.suggestFrameUse){createRecentAddrArea();}else{createRecentAddrAreaDiv();sData.suggestFrameDocument=document;}
if(!h_suggest.tome){sData.suggestFields[0].blur();sData.suggestFields[0].focus();}
sData.defCallBack();return;}
function suggest_Fail(){alert("초기화에 실패하였습니다");return false;}
function suggest_Loading(){}
function setWriteCallBack(destField,callbackFunc){sData.callbackList[destField]=callbackFunc;}
function initPortableSuggest(){if(sData.suggestFrameUse){createRecentAddrArea();}else{createRecentAddrAreaDiv();sData.suggestFrameDocument=document;}
if(arguments.length>0){for(var i=0;i<arguments.length;i++){var curFieldIndex=sData.suggestFields.length;sData.suggestFields[curFieldIndex]=document.getElementById(arguments[i]);hanEvent.removeEvent(sData.suggestFields[curFieldIndex],"onfocus",actb);hanEvent.addEvent(sData.suggestFields[curFieldIndex],"onfocus",actb);hanEvent.removeEvent(sData.suggestFields[curFieldIndex],"onblur",clearKtimer);hanEvent.addEvent(sData.suggestFields[curFieldIndex],"onblur",clearKtimer);var currentBufferId=sData.suggestFields[curFieldIndex].id+"_buffer";if(!document.getElementById(currentBufferId)){var tmp=document.createElement("div");tmp.id=currentBufferId;with(tmp.style){position="absolute";width="0px";top="-100000px";left="-100000px";border="solid 1px Red";wordBreak="break-all";lineHeight=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"lineHeight","line-height");fontFamily=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"fontFamily","font-family");fontSize=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"fontSize","font-size");padding="0px";}
if(sData.suggestFields[curFieldIndex].className!="")tmp.className=sData.suggestFields[curFieldIndex].className;$("layout_main").appendChild(tmp);}
if(!(sData.suggestFields[curFieldIndex].onpropertychange)){sData.suggestFields[curFieldIndex].onpropertychange=sUtil.flexInputX;}}
sData.actb_curr=sData.suggestFields[0];}else{return;}}
function clearKtimer(){if(typeof(uiConfig)!="undefined"){if(uiConfig.mostContacted)setFocusMostContacted(sData.actb_curr.id,false);}
window.clearTimeout(sData.kTimer);sData.kTimer=null;}
function setSuggestField(){if(arguments.length>0){for(var i=0;i<arguments.length;i++){var curFieldIndex=sData.suggestFields.length;sData.suggestFields[curFieldIndex]=document.getElementById(arguments[i]);hanEvent.removeEvent(sData.suggestFields[curFieldIndex],"onfocus",actb);hanEvent.addEvent(sData.suggestFields[curFieldIndex],"onfocus",actb);hanEvent.removeEvent(sData.suggestFields[curFieldIndex],"onblur",clearKtimer);hanEvent.addEvent(sData.suggestFields[curFieldIndex],"onblur",clearKtimer);var currentBufferId=sData.suggestFields[curFieldIndex].id+"_buffer";if(!document.getElementById(currentBufferId)){var tmp=document.createElement("div");with(tmp.style){position="absolute";width="0px";top="-100000px";left="-100000px";border="solid 1px Red";wordBreak="break-all";lineHeight=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"lineHeight","line-height");fontFamily=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"fontFamily","font-family");fontSize=sUtil.getCurrentStyle(sData.suggestFields[curFieldIndex],"fontSize","font-size");padding="0px";}
if(sData.suggestFields[curFieldIndex].className!="")tmp.className=sData.suggestFields[curFieldIndex].className;$("layout_main").appendChild(tmp);}
if(!(sData.suggestFields[curFieldIndex].onpropertychange)){sData.suggestFields[curFieldIndex].onpropertychange=sUtil.flexInputX;}}
if(sData.actb_curr==null)sData.actb_curr=document.getElementById(arguments[0]);}else{alert("대상 입력필드를 지정하세요!");return;}}
function resetSuggestField(){if(arguments.length>0){for(var i=0;i<arguments.length;i++){var obj=document.getElementById(arguments[i]);if(obj){obj.onfocus=null;for(var j in sData.suggestFields){if(obj==sData.suggestFields[j]){delete sData.suggestFields[j];}}}
var objBuffer=document.getElementById(arguments[i]+"_buffer");if(objBuffer){$("layout_main").removeChild(objBuffer);}}}}
function init_suggest(isAsync,url){if(!isAsync)var isAsync=true;if(arguments.length>2){for(var i=2;i<arguments.length;i++){sData.suggestFields[i-2]=document.getElementById(arguments[i]);hanEvent.removeEvent(sData.suggestFields[i-2],"onfocus",actb);hanEvent.addEvent(sData.suggestFields[i-2],"onfocus",actb);hanEvent.removeEvent(sData.suggestFields[i-2],"onblur",clearKtimer);hanEvent.addEvent(sData.suggestFields[i-2],"onblur",clearKtimer);try{var tmp=document.createElement("div");tmp.id=sData.suggestFields[i-2].id+"_buffer";with(tmp.style){position="absolute";width="0px";top="-100000px";left="-100000px";border="solid 1px Red";wordBreak="break-all";lineHeight=sUtil.getCurrentStyle(sData.suggestFields[i-2],"lineHeight","line-height");fontFamily=sUtil.getCurrentStyle(sData.suggestFields[i-2],"fontFamily","font-family");fontSize=sUtil.getCurrentStyle(sData.suggestFields[i-2],"fontSize","font-size");padding="0px";}
if(sData.suggestFields[i-2].className!="")tmp.className=sData.suggestFields[i-2].className;$("layout_main").appendChild(tmp);if(!(sData.suggestFields[i-2].onpropertychange)){sData.suggestFields[i-2].onpropertychange=sUtil.flexInputX;}}catch(e){}}}else{alert("대상 입력필드를 지정하세요!");return;}
sAjax=new h_suggest.h_ajax(suggest_Success,suggest_Fail,suggest_Loading);if(!sAjax.XHR)return false;sAjax.open("GET",url,isAsync);}
function initAddrData(isAsync,url){if(!isAsync)var isAsync=true;var oAjax=new h_suggest.h_ajax(function(){var result=oAjax.responseText();eval(result);});oAjax.open("GET",url,isAsync);}
function getSelectGrpList(getText){var grpEmailList=GrpAddrHash[getText].addr.split(',');var grpEmailListLen=grpEmailList.length;var toMailList="";for(var i=0;i<grpEmailListLen;i++){var pName=(peopleAddrHash[grpEmailList[i]]==null||peopleAddrHash[grpEmailList[i]].item)?"":peopleAddrHash[grpEmailList[i]].name;if(grpEmailList[i].trim().indexOf("#")!=0&&grpEmailList[i].trim()!=""){if(pName.indexOf('#')==0){toMailList+="\""+pName.substring(1,pName.length)+"\" <"+grpEmailList[i]+">, ";}else{toMailList+="\""+pName+"\" <"+grpEmailList[i]+">, ";}}}
return toMailList;}
function partition(thisObject){var hanArray=new Array();var engArray=new Array();var numArray=new Array();var etcArray=new Array();var h_index=0;var e_index=0;var n_index=0;var etc_index=0;for(var i=0;i<thisObject.length;i++){if(thisObject[i].name.charCodeAt(1)>12592&&thisObject[i].name.charCodeAt(1)<55204){hanArray[h_index]=thisObject[i];h_index++;}else if(thisObject[i].name.charCodeAt(1)>=65&&thisObject[i].name.charCodeAt(1)<=90||thisObject[i].name.charCodeAt(1)>=97&&thisObject[i].name.charCodeAt(1)<=122){engArray[e_index]=thisObject[i];e_index++;}else if(thisObject[i].name.charCodeAt(1)>=48&&thisObject[i].name.charCodeAt(1)<=57){numArray[n_index]=thisObject[i];n_index++;}else{etcArray[etc_index]=thisObject[i];etc_index++;}}
hanArray.sort(sortNameAscending);engArray.sort(sortNameAscending);numArray.sort(sortNameAscending);etcArray.sort(sortNameAscending);thisObject=mergeArray(hanArray,engArray,numArray,etcArray);return thisObject;}
function sortNameAscending(thisObject,thatObject){if(thisObject.jaso===undefined){if(thisObject.name>thatObject.name){return 1;}
else if(thisObject.name<thatObject.name){return-1;}
return 0;}else{if(thisObject.jaso>thatObject.jaso){return 1;}
else if(thisObject.jaso<thatObject.jaso){return-1;}
return 0;}}
function mergeArray(firArray,senArray,thiArray,forArray){var s_index=0;var t_index=0;var f_index=0;var mergeArray=new Array();for(var i=0;i<firArray.length;i++){mergeArray[i]=firArray[i];}
for(var j=i;j<i+senArray.length;j++){mergeArray[j]=senArray[s_index];s_index++;}
for(var k=j;k<j+thiArray.length;k++){mergeArray[k]=thiArray[t_index];t_index++;}
for(var l=k;l<k+forArray.length;l++){mergeArray[l]=forArray[f_index];f_index++;}
return mergeArray;}
function Log_Suggest(){var service=document.URL.split('/');var url="";switch(service[3]){case"hanmail":url="http://tiara.daum.net/tiara.front/front/click?url=http://mail.daum.net/?t__nil_hanmail=suggest";break;case"hanmailex":url="http://tiara.daum.net/tiara.front/front/click?url=http://mail.daum.net/?t__nil_hanmail_express=suggest";break;default:break;}
if(!sUtil.isIE()){var log_buffer=document.logBuffer;log_buffer=document.createElement('iframe');log_buffer.setAttribute('id','log_buffer');log_buffer.setAttribute('name','log_buffer');log_buffer.setAttribute('style','position:absolute;top:-5000px;left:-5000px;');document.body.appendChild(log_buffer);}else{var log_buffer=document.createElement("iframe");log_buffer.id="log_buffer";log_buffer.style.width='0px';log_buffer.style.height='0px';document.body.appendChild(log_buffer);window.frames["log_buffer"].name='log_buffer';}
var form=document.log_form;form=document.createElement('form');form.setAttribute('id','log_form');form.setAttribute('name','log_form');form.setAttribute('method','POST');form.setAttribute('target','log_buffer');form.setAttribute('style','margin:0px;padding:0px;');var log_input=document.createElement('input');log_input.setAttribute('id','log_input');log_input.setAttribute('name','log_input');log_input.setAttribute('type','hidden');form.appendChild(log_input);form.action=url;document.body.appendChild(form);form.submit();}
var history_listener=function(before_key,after_key){var after_id;var index=after_key.indexOf(":");if(index!=-1){after_id=after_key.substr(index+1);after_key=after_key.substr(0,index);}
switch(after_key){case'#monthly_view':LayoutGenerator.launch('monthly');break;case'#toolbar_monthly_view':var winsize=calendar.util.getWindowSize();default_start_at=new Date();if(default_start_at.getMinutes()<30){default_start_at.setMinutes(30);}else{default_start_at=default_start_at.next_hour().clear_minute();}
$j(function(){calendar.dom_loaded=true;EventPopup.attach(null,{startAt:default_start_at,endAt:default_start_at.next_hour(),offset_x:winsize.x/2-170,offset_y:winsize.y/2-100,allday:true});});LayoutGenerator.launch('monthly');break;case'#weekly_view':LayoutGenerator.launch('weekly');break;case'#daily_view':if(after_id){var selectedDate=new Date(after_id.substr(0,4),((after_id.substr(4,2)-1)<10?"0"+(after_id.substr(4,2)-1):(after_id.substr(4,2)-1)),after_id.substr(6,2));calendar.cursor.update_date(selectedDate);}
LayoutGenerator.launch('daily');break;case'#agenda_view':LayoutGenerator.launch('agenda');break;case'#yearly_view':$FE('layout_main').style.overflowY="auto";if(after_id)calendar.year=parseInt(after_id);remote_main_function('/calendar/yearly/'+calendar.year);gnb_controller.handle_style({id:"gnbMenu0"});break;case'#event_new':remote_main_function('/events/new.html');gnb_controller.handle_style({id:"gnbMenu0"});break;case'#popup_event_new':remote_main_function('/events/new.html?render=popup');gnb_controller.handle_style({id:"gnbMenu0"});break;case'#event_edit':remote_main_function('/events/'+after_id+'/edit.html');gnb_controller.handle_style({id:"gnbMenu0"});break;case'#memorial_view':var memorial=model.calendar.get_memorial();remote_main_function('/calendars/'+(memorial||{id:0}).id+'/memorials.html');gnb_controller.handle_style({id:"gnbMenu2"});break;case'#memorial_new':var memorial=model.calendar.get_memorial();remote_main_function('/calendars/'+(memorial||{id:0}).id+'/memorials/new.html',{method:'get'});gnb_controller.handle_style({id:"gnbMenu2"});break;case'#memorial_edit':var memorial=model.calendar.get_memorial();remote_main_function('/calendars/'+(memorial||{id:0}).id+'/memorials/'+after_id+'/edit.html');gnb_controller.handle_style({id:"gnbMenu2"});break;case'#todo_view':var _value=CalCookie.get_hashed_cookie('todoStatus','todo_table');var _toggle=(_value&&_value.show_completed_todo)?true:false;remote_main_function('/todos.html?toggle='+_toggle,{parameters:{todo_store:after_id}});gnb_controller.handle_style({id:"gnbMenu1"});break;case'#category_new':remote_main_function('/calendars/new.html');break;case'#today_schedule':remote_main_function('/miscellany/today_schedule.html');break;case'#receive_invitation':remote_main_function('/receive_invitation/list.html');break;case'#calendar_setting':remote_main_function('/miscellany/calendar_setting.html');break;case'#outlook_sync':remote_main_function('/miscellany/outlook_sync.html');break;case'#import_export':remote_main_function('/miscellany/import_export.html');break;case'#share_send_invitation':remote_main_function('/share/send_invitation.html');break;case'#share_receive_invitation':remote_main_function('/share/receive_invitation.html');break;case'#share':remote_main_function('/calendar_recommend');break;case'#calendar_outgoing':remote_main_function('/miscellany/calendar_outgoing.html');break;}
console.log("[history_controller] "+before_key+" -> "+after_key);}
MvRow=Class.create();MvRow.prototype={initialize:function(parent,container,idx,from){this.dates=new Array(7);this.parent=parent;this.from=from;for(var i=0;i<7;i++){this.dates[i]=from.next_day(i);}
this.idx=idx;this.container=$(container);this.draw_events();},deactivate:function(){this.events_div_id=null;this.events_more_div_id=null;this.occupied_cell=null;this.from=null;this.dates=null;this.data=null;},draw_events:function(){this.today=new Date().to_date_param();this.events_div_id=$A();this.events_more_div_id=$A();this.make_cell_class();var tags=new Array();this.occupied_cell=new Array(7);this.make_cell_tag(tags);tags.push("<table cellspacing='0' cellpadding='0' class='mv_content_row'><tbody>");this.make_date_tag(tags);for(var i=0;i<this.parent.max_level;i++){this.make_event_tag(tags,i);}
tags.push("</tbody></table>");this.container.innerHTML=tags.join("");var self=this;setTimeout(function(){(self.events_div_id||[]).each(function(div_id){Event.observe(div_id,'mousedown',calendar.mv.add_handler);});(self.events_more_div_id||[]).each(function(div_id){Event.observe(div_id[0],'mousedown',calendar.mv.add_handler_for_more.bindAsEventListener(self,div_id[1]));});},10);},make_cell_class:function(){this.classes=new Array(7);var parent_month=this.parent.date.getMonth();for(var i=0;i<7;i++){var class_name=[];if(this.dates[i].getMonth()!=parent_month)class_name.push("other_month");if(this.dates[i].getDay()==0)class_name.push("holiday");if(this.today==this.dates[i].to_date_param())class_name.push("today");this.classes[i]=class_name.join(" ");}},make_cell_tag:function(tags){tags.push("<table cellspacing='0' cellpadding='0' class='mv_bg_row'><tbody><tr>");for(var i=0;i<7;i++){tags.push("<td id='mv_bg_",this.idx,"_",i,"' class='mv_bg_cell ",this.classes[i]," pos_",this.idx,"_",i,"'>&nbsp;</td>");}
tags.push("</tr></tbody></table>");return tags;},make_date_tag:function(tags){if(this.content_row)this.content_row.remove();tags.push("<tr>");for(var i=0;i<7;i++){var special_event=this.parent.special_events.get(this.dates[i].to_date_param());var lunar=model.lunar.get(this.dates[i].format("#{yy}#{mm}#{dd}"));tags.push("<td id='mv_dc_",this.idx,"_",i,"' class='mv_date_cell ",this.classes[i]," pos_",this.idx,"_",i,"'>","<span class='mv_dc_date ");(special_event&&special_event.holiday)?tags.push('holiday'):tags.push('unholiday');tags.push("' onmousedown='calendar.mv.move_daily_view(event, "+this.dates[i].to_date_param()+");'>",this.dates[i].getDate(),"</span>");if(special_event){(special_event.holiday)?tags.push("<span class='mv_holiday'>"):tags.push("<span class='mv_unholiday'>");tags.push(special_event.title,"</span>");}
if(lunar)tags.push("<span class='mv_lunar'>-",lunar.month,".",lunar.day,((lunar.code==9)?"(윤)</span></td>":"</span></td>"));tags.push("</td>");}
tags.push("</tr>");return tags;},make_event_tag:function(tags,row_idx){this.data=this.parent.owners[this.idx].data_structure;this.cell_width=Math.floor(this.parent.get_dimension()[0]/7);var max_level=this.parent.max_level;if(this.data[row_idx]){tags.push("<tr>");for(var i=0;i<7;i++){var data=this.data[row_idx][i];var more_cnt=0;if(data)for(var j=0;j<data[1];j++)this.occupied_cell[i+j]=(this.occupied_cell[i+j]||0)+1;if(row_idx==max_level-1){var date_model=model.event.date_model.get(this.dates[i].to_date_param());var events=(date_model)?date_model.values():$A();var events_cnt=events.select(function(e){return e.visible()}).size();var drown_cnt=this.occupied_cell[i]||0;more_cnt=events_cnt-drown_cnt;}
var common_class=["mv_event_cell "," pos_",this.idx,"_",i].join("");if(more_cnt>0){var more_id="mv_more_"+this.idx+"_"+i;tags.push("<td class='",common_class,"'><div id='",more_id,"' class='mv_more'><a class='more' href='javascript:;'>+ ",(more_cnt+1),"</a></div></td>");this.events_more_div_id.push([more_id,this.dates[i]]);}else if(data){var event=data[0];var link_on=(event.url)?'':'display:none;';tags.push("<td class='",common_class,"' colspan='",data[1],"'>");var div_id=null;var event_title_decoration=event.completed_at?'text-decoration:line-through;':'';var event_url=event.url?event.url:'';if(event.is_monthly_multiday()){var left_on=(data[2])?'':'display:none;';var right_on=(data[3])?'':'display:none;';var event_width=(event.url)?80-((right_on=='')?5:0):'';var event_title=event.get_view_title();if(!event.allday)event_title=event.start_at.format('(#{kp}#{II}:#{MM})')+event_title;div_id='event_'+event.r_id()+'_multi_'+this.idx;tags.push("<div id='",div_id,"' class='mv_multi_event' style='background-color: ",event.color(),";'><img src='http://mimg.daum-img.net/dcal_2/01_common/d_category_v2.gif' width='1' height='15' class='round_left'/>");tags.push("<img src='http://mimg.daum-img.net/dcal_2/01_common/d_category_v2.gif' width='1' height='15' class='round_right'/><a class='left_on' style='",left_on,"'>L</a>","<a class='title ");if(event.is_memorial())tags.push(event.get_memorial_class_by_classtype());tags.push("' title='",event.get_view_title_description().gsub(/\'/,'\\\"'),"' style='",event_title_decoration,"width:",event_width,"%;' href='javascript:;'>");tags.push(event_title.unescapeHTML(),"</a><a class='right_on' style='",right_on,"'>R</a><a class='link_on' title='",event_url.gsub(/\"|\'/,''));tags.push(" 으로 이동하기' style='",link_on,"' onmousedown='calendar.link_to_url(event, \"",escape(event_url),"\");'>링크</a></div>");}else{div_id='event_'+event.r_id()+'_single_'+this.idx;var event_width=(event.url)?this.cell_width-23:'';tags.push("<div id='",div_id,"' class='mv_single_event'><a class='mv_single_event' title='",event.get_view_title_description());tags.push("' style='display:inline-block; color: ",event.color(),"; width:",event_width,"px;",event_title_decoration);tags.push("' href='javascript:;'><strong>",event.start_at.format('#{kp}#{I}:#{MM}'),"</strong> ");tags.push(event.get_view_title().unescapeHTML(),"</a><a class='link_on' title='",event_url.gsub(/\"|\'/,'')," 으로 이동하기' style='",link_on,"' onmousedown='calendar.link_to_url(event, \"",escape(event_url),"\");'>링크</a></div>");}
this.events_div_id.push(div_id);tags.push("</td>");if(data[1]>1)i=i+data[1]-1;}else{tags.push("<td class='",common_class,"'></td>");}}
tags.push("</tr>");}
return tags;},temp:function(){}}
MvManager=Class.create();MvManager.prototype={initialize:function(el){this.container=$(el);this.readonly_mode=false;this.prepare();this.bind_resize();$FE('layout_main').register_deactivator(this);this.reactor=new MvReactor(this);actor.event.add_reactor(this.reactor);this.reactor_calendar=new MvCalendarReactor(this);actor.calendar.add_reactor(this.reactor_calendar);calendar.cursor.add_listener(this);if(!calendar.preview)this.event_adder=new MvEventAdder(this.container,this).start();this.more_init();},clear:function(){calendar.mv=this;this.rows.invoke('deactivate');this.owners.invoke('deactivate');if(!calendar.preview)Draggables.removeObserver(this.container);},prepare:function(){this.date=calendar.cursor.date.clone();this.special_events=$H();this.lunars=$H();},get_events_count:function(){if(!this.from||!this.to)this.set_dates();var dt=this.from.clone();var max=1;for(var i=0;i<42;i++){var date_model=model.event.date_model.get(dt.next_day(i).to_date_param());var events=(date_model)?date_model.values():$A();var events_cnt=events.select(function(e){return e.visible()}).size();if(events_cnt>=max)max=events_cnt;}
return max;},set_level:function(){var max_level=Math.floor((calendar.height-(Prototype.Browser.IE?60:36)-22)/6/15-1);if(calendar.expand_height)max_level=this.get_events_count();if(!this.max_level)this.max_level=max_level;if(this.max_level!=max_level){this.max_level=max_level;if(this.owners&&!this.owners[0].deactivated){this.owners.invoke('arrange');this.rows.invoke('draw_events');}}},on_resize:function(){$FE('main_container').style.height=calendar.height-(Prototype.Browser.IE?60:36)+"px";this.clear_cache();this.set_level();if(calendar.expand_height)$FE('main_container').style.height=(15+18*this.max_level)*6+60+"px";},clear_cache:function(){this._dimension=null;this._offset=null;},bind_resize:function(){var self=this;$FE('layout_main').on_resize=function(){this.style.overflowY="hidden";if(calendar.mv){calendar.mv.on_resize();}else{console.log('[WARN] $FE("monthly_table") is not available yet');}};},start:function(){this.set_dates();this.set_level();$FE('layout_main').on_resize();this.reset_events_owner();this.draw_special_events();this.draw_events();if(!calendar.preview)Draggables.addObserver(Object.extend({element:this.container},AbstractDragObserver.prototype));},more_init:function(){this.more_div=new MvMoreDiv();this.more_div.draggable=new Draggable(this.more_div.popWin,{starteffect:DwmView.starteffect,endeffect:DwmView.endeffect});},set_dates:function(){var first=this.date.firstday_of_month().clear_time();this.from=first.prev_day(first.getDay()).clear_time();this.to=this.from.next_day(42);if($('contentNavigation'))$('contentNavigation').set_current_text(this.date.format("#{yy}년 #{m}월"));},build_row:function(){var self=this;this.rows=[];var rows=FE.childElements(this.container);rows.each(function(row,idx){var from=self.from.next_day(idx*7);self.rows.push(new MvRow(self,row,idx,from,self.owners[idx]));});},draw_events:function(){var self=this;model.event.async_expanded_list(this.from,this.to,function(events){self.add_events(events,self.readonly_mode);self.build_row();});},draw_special_events:function(){var self=this;model.special_event.expanded_list(this.from,this.to).each(function(event){var start_at=event.start_at;var end_at=event.end_at.next_day();if(event.start_at.before(self.from))start_at=self.from;if(event.end_at.after(self.to))end_at=self.to;$R(start_at,end_at,true).each(function(date){self.special_events.set(date.to_date_param(),event);});});},cursor_updated:function(cursor,force){var self=this;if(!cursor.date.equal_month(self.date)||force){ActivePopup.close_all();self.date=cursor.date.clear_time();calendar.mv.clear();calendar.mv.start();}},reset_events_owner:function(){var self=this;if(!this.owners){this.owners=$R(0,5).collect(function(n){return new MvEventSorter();});}else{this.owners.each(function(owner){owner.clear();});}
var d=this.from;self.owners.each(function(owner,idx){if(self.to.after(d,true)){owner.start_at=d;owner.end_at=d.next_week().clear_time();owner.last_day=d.next_week().clear_time().prev_day();owner.idx=idx;owner.event_divs=$H();}
d=d.next_week().clear_time();});},mapper:function(event){if(event._mapper)return event._mapper;var start_at=event.start_at.clear_time().getTime()/1000;var end_at=(event.end_at.clear_time().getTime()/1000)+Date.DAY_IN_SEC;event._mapper=[start_at,end_at];return event._mapper;},_conflicting:function(r1,r2){return r1[1]>r2[0]&&r1[0]<r2[1];},_get_owners:function(event){var self=this;var range=(event._mapper)?event._mapper:this.mapper(event);return this.owners.select(function(owner){if(!owner.start_at||!owner.end_at)return false;return self._conflicting([owner.start_at.getTime()/1000,owner.end_at.getTime()/1000],range);});},rearrange_owner:function(event){this._get_owners(event).invoke('arrange');},expanded_add_event:function(event){var self=this;var owners=[];model.event.date_model.created(event);model.event.expand_event(event,self.from,self.to).each(function(e){owners.push(self._get_owners(e));self.abstract_event_add(e);});owners=owners.flatten();owners.each(function(owner){owner.arrange();self.rows[owner.idx].draw_events();});},add_events:function(events){var self=this;events.each(function(event){self.abstract_event_add(event);});self.owners.invoke('arrange');},abstract_event_add:function(event){if(event.visible()&&event.is_valid()&&event.in_range(this.from,this.to)){this._get_owners(event).each(function(owner){owner.add_event(event);});}},remove_event:function(event){var self=this;model.event.date_model.destroyed(event);var owners=[];var owners=this.owners.select(function(owner){return owner.find_event_by_event_id(event);});owners.each(function(owner){owner.remove_event(event);owner.arrange();self.rows[owner.idx].draw_events();});},move_event:function(event,new_at){if(event._mapper)event._mapper=null;event.move_start_at(new_at);this.remove_event(event);this.expanded_add_event(event);var _url='/calendars/'+event.calendar_id+(event.is_memorial()?'/memorials/'+event.id:'/events/'+event.id);var _params=$H({'event[start_at]':event.start_at.to_param(),'event[end_at]':event.end_at.to_param()});if(event.is_lunar())_params.merge({'meta[date_format]':'solar_to_lunar'});var self=this;if(event.is_repeating()&&!event.is_memorial()){var _options={callbackObj:this,start_at:event.before_start_at,onCancelFunc:'rollback_move'};var r=new RepeatEventAlert(_url,_params,'put',event,_options);}else{new Ajax.Request(_url,{method:'put',parameters:_params,onFailure:function(t){calendar.notify("읽기 전용 일정입니다.");self.rollback_move(event);}});}},rollback_move:function(event){if(event._mapper)event._mapper=null;event.revert_set_at();this.remove_event(event);this.expanded_add_event(event);},copy_event:function(event,new_at){new Ajax.Request('/event/copy_to_start_at/'+event.id,{parameters:'start_at='+new_at.to_param(),onFailure:function(){calendar.notify('일정 드래그 복사에 실패했습니다.');}});},deactivate:function(){this.clear();calendar.cursor.remove_listener(this);this.rows=null;this.owners=null;calendar.mv=null;},add_handler:function(event){event=event||window.event;var element=MvMultidayEventDiv.start(this,calendar.mv,calendar.mv.container);element.start_listening(event);Event.stop(event);},add_handler_for_more:function(event,date){event=event||window.event;var date_model=model.event.date_model.get(date.to_date_param());var events=(date_model)?date_model.values():$A();calendar.mv.more_div.attach(events,date,event);Event.stop(event);},get_date_by_offset:function(pos){return this.rows[pos[0]].from.next_day(pos[1]);},get_dimension:function(){if(this._dimension)return this._dimension;this._dimension=[this.container.getWidth(),this.container.getHeight()];return this._dimension;},get_view_offset:function(){if(this._offset)return this._offset;this._offset=this.container.cumulativeOffset();return this._offset;},popup_position:function(cell){var view_offset=this.get_view_offset();var view_dimension=this.get_dimension();var cell_x=Math.ceil(cell[1]*view_dimension[0]/7);var cell_y=Math.ceil(cell[0]*view_dimension[1]/6);var nep=$FE('edit_event_popup');var width=0;var height=0;if(nep){nep.select('.writer')[0].hide();width=nep.getWidth();height=nep.getHeight();}
point_x=[[(view_offset[0]+cell_x)-(width/2),view_offset[0]].max(),view_dimension[0]+view_offset[0]-width].min();if(cell[0]>2){point_y=view_offset[1]+cell_y-height;}else{point_y=view_offset[1]+cell_y+(view_dimension[1]/6);}
return[point_x,point_y];},calendar_color_updated:function(calendar){this.owners.each(function(owner,idx){owner.events.values().each(function(event){if(event.calendar_id==calendar.id||event.calendar_id==calendar.source_id){if(event.is_monthly_multiday()){var element=$('event_'+event.r_id()+'_multi_'+idx);if(element)FE.setBgColor(element,calendar.color);}else{var element=$('event_'+event.r_id()+'_single_'+idx);if(element)FE.setColor(element.down(0),calendar.color);}}});});},move_daily_view:function(event,date){event=event||window.event;history_controller.go("daily_view:"+date);Event.stop(event);},temp:function(){}}
var MvEventAdder=Class.create();MvEventAdder.prototype=Object.extend({get_cell:function(arr){return $FE('mv_bg_'+arr[0]+'_'+arr[1]);},get_date_cell:function(arr){return $FE('mv_dc_'+arr[0]+'_'+arr[1]);},set_cache:function(){this._view_pos=this.view.cumulativeOffset();this._cell_size=[Math.floor(calendar.mv.get_dimension()[0]/7),Math.floor(calendar.mv.get_dimension()[1]/6)];},clear_cache:function(){this._view_pos=null;this._cell_size=null;},verify_cache:function(){if(!this._view_pos||!this._cell_size)this.set_cache();},get_matrix_by_event:function(event){this.set_cache();var mouse_pos=Event.pointer(event);var relative_pos=[mouse_pos.x-this._view_pos[0],mouse_pos.y-this._view_pos[1]];var x=Math.floor(relative_pos[0]/this._cell_size[0]);var y=Math.floor(relative_pos[1]/this._cell_size[1]);if((x<0||x>6)||(y<0||y>5))return null;return[y,x];},start_drag:function(event){var start_pos=this.get_matrix_by_event(event);if(!start_pos)return false;this.start_pos=start_pos;this._show_drag_area(this.start_pos,this.start_pos);this.last_pos=this.start_pos;this.canceled=false;return true;},move_drag:function(event){this.canceled=false;var pos=this.get_matrix_by_event(event);if(!pos)return;if(this.get_cell(this.last_pos)!=this.get_cell(pos)){this._show_drag_area(this.start_pos,pos);this.last_pos=pos;}},finish_drag:function(event){if(this.canceled)return false;var pos=this.get_matrix_by_event(event);if(!pos)return this.cancel_drag(event);this.end_pos=pos;this.popup_new_event(this.start_pos,this.end_pos);return false;},cancel_drag:function(event){this.canceled=true;this._clear_drag_area();return false;},_show_drag_area:function(pos1,pos2){var range=[pos1,pos2];if(pos1.join("")>pos2.join(""))range=[pos2,pos1];var dragging=false;for(var i=0;i<6;i++){for(var j=0;j<7;j++){if(i==range[0][0]&&j==range[0][1])dragging=true;if(dragging){FE.addClassName(this.get_cell([i,j]),'on_drag');FE.addClassName(this.get_date_cell([i,j]),'on_drag');}else{FE.removeClassName(this.get_cell([i,j]),'on_drag');FE.removeClassName(this.get_date_cell([i,j]),'on_drag');}
if(i==range[1][0]&&j==range[1][1])dragging=false;}}
return;},_clear_drag_area:function(){this.view.select('td.on_drag').each(function(cell){FE.removeClassName(cell,'on_drag');});},popup_new_event:function(pos1,pos2){var range=[pos1,pos2];if(pos1.join("")>pos2.join(""))range=[pos2,pos1];var self=this;var start_at=this.parent.get_date_by_offset(range[0]);var end_at=this.parent.get_date_by_offset(range[1]);var now_dt=new Date();var popup_offset=this.parent.popup_position(range[1]);if(now_dt.getHours()>=22){start_at.setHours(22);start_at.setMinutes(30);}else{start_at.setHours(now_dt.getHours());if(now_dt.getMinutes()<30){start_at.setMinutes(30);}else{start_at=start_at.next_hour();}}
end_at.setHours(start_at.getHours());end_at.setMinutes(start_at.getMinutes());end_at=end_at.next_hour();var _option={allday:true,offset_x:popup_offset[0],offset_y:popup_offset[1],parent:this.view,startAt:start_at,endAt:end_at,category_id:model.calendar.get_default().id,on_detach:function(){self._clear_drag_area();}};EventPopup.attach(null,_option);}},AbstractEventAdder.prototype);var MvReactor=Class.create();MvReactor.prototype=Object.extend(new Reactor('mv_event_container'),{initialize:function(view){this.view=view;},created:function(event){if(event.visible()&&event.is_valid()){this.view.expanded_add_event(event);}},updated:function(new_event,old_event){this.destroyed(old_event);this.created($E(new_event));},destroyed:function(event){this.view.remove_event(event);}});var MvCalendarReactor=Class.create();MvCalendarReactor.prototype=Object.extend(new Reactor('mv_event_container'),{initialize:function(view){this.view=view;},updated:function(new_calendar,old_calendar){if(new_calendar.visible!=old_calendar.visible){this.view.cursor_updated(calendar.cursor,true);}else if(new_calendar.color!=old_calendar.color){this.view.calendar_color_updated(new_calendar);}},destroyed:function(calendar){this.view.cursor_updated(calendar.cursor,true);}});var MvEventUpdater=Class.create();MvEventUpdater.prototype=Object.extend(Object.extend({},MvEventAdder.prototype),{initialize:function(div,view){this.div=div;this.view=view;},deactivate:function(){this.div=null;},edit_event:function(event,cell){var popup_offset=this.popup_position(cell,event.writable(),event.is_shared());var _option={offset_x:popup_offset[0],offset_y:popup_offset[1],event:event,parent:this.div,method:'put'};EventPopup.attach(event,_option);},popup_position:function(cell,writable,is_shared){var view_offset=calendar.mv.get_view_offset();var view_dimension=calendar.mv.get_dimension();var cell_x=Math.ceil(cell[1]*view_dimension[0]/7);var cell_y=Math.ceil(cell[0]*view_dimension[1]/6);var point_x,point_y;if(calendar.preview){popupManager.load('preview_event_popup','/popup/preview_event_popup.html');var nep=$('preview_event_popup');var width=nep.getWidth();var height=nep.getHeight();point_x=[[(view_offset[0]+cell_x)-(width/2),view_offset[0]].max(),view_dimension[0]+view_offset[0]-width].min();point_y=[[(view_offset[1]+cell_y),view_offset[1]].max(),view_dimension[1]+view_offset[1]-height].min();}else if(writable){var nep=$FE('edit_event_popup');(is_shared)?nep.select('.writer')[0].show():nep.select('.writer')[0].hide();var width=nep.getWidth();var height=nep.getHeight();point_x=[[(view_offset[0]+cell_x)-(width/2),view_offset[0]].max(),view_dimension[0]+view_offset[0]-width].min();if(cell[0]>2){point_y=view_offset[1]+cell_y-height;}else{point_y=view_offset[1]+cell_y+(view_dimension[1]/6);}}else{popupManager.load('view_event_popup','/popup/readonly_event_popup.html');var nep=$('view_event_popup');var width=nep.getWidth();var height=nep.getHeight();point_x=[[(view_offset[0]+cell_x)-(width/2),view_offset[0]].max(),view_dimension[0]+view_offset[0]-width].min();point_y=[[(view_offset[1]+cell_y),view_offset[1]].max(),view_dimension[1]+view_offset[1]-height].min();}
return[point_x,point_y];}});var MvMultidayEventDiv=Class.create();Object.extend(MvMultidayEventDiv,{start:function(element,view,container){var div=new MvMultidayEventDiv(view,container);return Object.extend(element,div);},snap:function(x,y,draggable){var snap_width=30;var snap_height=16;var dims=calendar.mv.get_dimension();var sx=[0,x].max();sx=[(dims[0]-snap_width),sx].min();var sy=[22,y].max();sy=[(dims[1]-snap_height),sy].min();return[sx,sy];},move_draggable:{drag_type:'monthly_allday_event_move',on_start:function(event){this.start_dragged_time=new Date();this.element.drag_cell_before=null;var origin_div=this.element.parent;var origin_cell=origin_div.origin_cell;var current_date=calendar.mv.rows[origin_cell[0]].dates[origin_cell[1]];this.element.diff_from_start=Date.diff_day(origin_div.event.start_at.clear_time(),current_date);this.element.event_range=origin_div.event.get_duration()+1;},on_drag:function(event){this.element.parent.style.visibility='hidden';var dragged_cell=this.element.parent.event_updater.get_matrix_by_event(event);if(!dragged_cell||(this.last_position&&this.last_position.inspect()==dragged_cell.inspect()))return;this.last_position=dragged_cell;var cell_by_date=(dragged_cell[0]*7+dragged_cell[1])-this.element.diff_from_start;var event_range=this.element.event_range;var pos_1=Math.floor(cell_by_date/7);var pos_2=cell_by_date%7;if(pos_1<0){event_range+=((pos_1+1)*7);pos_1=0;}
if(pos_2<0){event_range+=pos_2;pos_2=0;}
var cell=[pos_1,pos_2];var dragging=false;for(var i=0;i<6;i++){for(var j=0;j<7;j++){if(i==cell[0]&&j==cell[1])dragging=true;if(dragging&&--event_range<0)dragging=false;if(dragging){FE.addClassName($FE('mv_bg_'+i+'_'+j),'on_drag');FE.addClassName($FE('mv_dc_'+i+'_'+j),'on_drag');}else{FE.removeClassName($FE('mv_bg_'+i+'_'+j),'on_drag');FE.removeClassName($FE('mv_dc_'+i+'_'+j),'on_drag');}}}},on_end:function(event){event=event||window.event;var dragged_duration=new Date()-(this.start_dragged_time||0);var origin_div=this.element.parent;if(event.keyCode&&event.keyCode==Event.KEY_ESC){origin_div.style.visibility='visible';}else if(dragged_duration<200){origin_div.event_updater.edit_event(origin_div.event,origin_div.origin_cell);origin_div.style.visibility='visible';}else{var drag_div=this.element;drag_div.dragged_cell=origin_div.event_updater.get_matrix_by_event(event);if(origin_div.origin_cell&&drag_div.dragged_cell){if(origin_div.origin_cell.inspect()!=drag_div.dragged_cell.inspect()){var next_day=(drag_div.dragged_cell[0]*7)+drag_div.dragged_cell[1]-this.element.diff_from_start;var new_at=origin_div.view.from.next_day(next_day);if(!event.allday){new_at.setHours(origin_div.event.start_at.getHours());new_at.setMinutes(origin_div.event.start_at.getMinutes());}
if(origin_div.check_copy_mode(event)){calendar.mv.copy_event(origin_div.event,new_at);origin_div.style.visibility='visible';}else{calendar.mv.move_event(origin_div.event,new_at);}}else{origin_div.style.visibility='visible';}}else{origin_div.style.visibility='visible';}}
for(var i=0;i<6;i++){for(var j=0;j<7;j++){FE.removeClassName($FE('mv_bg_'+i+'_'+j),'on_drag');FE.removeClassName($FE('mv_dc_'+i+'_'+j),'on_drag');}}
this.element.hide();this.destroy();},draw_p:function(point){var pos=$('wv_container').drag_area.position_in_view(point);pos=this.options.snap(pos[0],pos[1],this);var cell=this.element.resized_cell;if(!this.element.before_cell||this.element.before_cell!=cell){this.element.before_cell=cell;var event_div=FE.up(FE.up(this.element));var half_hour_later=event_div.event.start_at.next_minute(30);event_div.resized_time=(cell.date.after(half_hour_later))?cell.date:half_hour_later;event_div.set_height(cell.cell_offset()[1]+cell.cell_height()-event_div.offsetTop);}}}});MvMultidayEventDiv.prototype={initialize:function(view,container){this.view=view;this.container=container;},check_copy_mode:function(event){event=event||window.event;return(event.ctrlKey||event.metaKey||false);},start_listening:function(event){event=event||window.event;this.event_updater=new MvEventUpdater(this,this.container);this.origin_cell=this.event_updater.get_matrix_by_event(event);this.r_id=parseInt(this.id.split('_')[1]);this.event=this.view.owners[this.origin_cell[0]].events.get(this.r_id);if(!this.event&&this.origin_cell[0]>=1){this.origin_cell[0]-=1;this.event=this.view.owners[this.origin_cell[0]].events.get(this.r_id);}
if(calendar.preview){this.event_updater.edit_event(this.event,this.origin_cell);}else{this.start_dragging(event);this.drag.eventMouseDown(event);this.drag.startDrag(event);}},start_dragging:function(event){var element=this.clone_for_drag(event);this.drag=new Draggable(element,{snap:MvMultidayEventDiv.snap,starteffect:DwmView.starteffect,endeffect:DwmView.endeffect});Object.extend(this.drag,MvMultidayEventDiv.move_draggable);},clone_for_drag:function(event){Element.extend(this);event=event||window.event;var n=this.cloneNode(true);Element.extend(n);n.id=this.id+"_drag";var orgin_offset=this.cumulativeOffset();var drag_container=$('mv_draggable_container');var drag_container_offset=drag_container.cumulativeOffset();var width=(calendar.mv.get_dimension()[0]/7)-7;n.onmousedown="";n.onclick="";n.setStyle({position:'absolute',left:(event.clientX-drag_container_offset[0]-width/2)+'px',top:(event.clientY-drag_container_offset[1]-7)+'px',width:width+'px',height:'13px',visibility:'hidden',overflow:'hidden'});n.parent=this;drag_container.update(n);return n;}};var MvMoreDiv=Class.create();MvMoreDiv.prototype=Object.extend(Object.extend({},MvEventUpdater.prototype),{allday:new Template('<div id="monthly_more_eventdiv_#{id}" class="mv_multi_event" style="background-color:#{color};"><img src="http://mimg.daum-img.net/dcal_2/01_common/d_category_v2.gif" width="1" height="15" class="round_left"/><img src="http://mimg.daum-img.net/dcal_2/01_common/d_category_v2.gif" width="1" height="15" class="round_right"/><a style="#{event_title_decoration};" title="#{event_title_description}" class="title" href="javascript:;">#{title}</a></div>'),non_allday:new Template('<div id="monthly_more_eventdiv_#{id}" class="mv_single_event"><a class="mv_single_event" style="display:inline-block;color:#{color};#{event_title_decoration};" title="#{event_title_description}" href="javascript:;"><strong>#{event_start_at}</strong> #{title}</a></div>'),initialize:function(){this.popWin=$('monthly_more');this.more_content=this.popWin.select('#monthly_more_content').first();this.more_date=this.popWin.select('#monthly_more_date').first();this.more_close=this.popWin.select('#monthly_more_close').first();var self=this;this.more_close.onmousedown=function(event){event=event||window.event;Event.stop(event);self.popWin.hide();};},attach:function(events,date,event){this.view=calendar.mv.container;this.parent_cell=this.get_matrix_by_event(event);this.more_date.update("<a href='javascript:;'>"+date.format("#{yy}.#{mm}.#{dd}")+"</a>");this.more_content.update("");events=events.sortBy(function(event){var start_at_time=(event.repeat)?new Date(date.getFullYear(),date.getMonth(),date.getDate(),event.start_at.getHours(),event.start_at.getMinutes()).getTime():event.start_at.getTime();return event.is_monthly_multiday()?(start_at_time/2):start_at_time;});var self=this;events.each(function(event){if(calendar.preview||event.visible()){var contents={id:event.r_id(),color:event.color(),title:event.get_view_title(),event_title_decoration:event.completed_at?'text-decoration:line-through':'',event_start_at:event.start_at.format('#{kp}#{I}:#{MM}'),event_title_description:event.get_view_title_description()}
self.more_content.insert({bottom:(event.is_monthly_multiday()?self.allday:self.non_allday).evaluate(contents)});Event.observe('monthly_more_eventdiv_'+contents.id,'mousedown',self.add_event_updater.bindAsEventListener(self,event,'monthly_more_eventdiv_'+contents.id,self.parent_cell));}});this.set_position();if(calendar.mv.event_adder)calendar.mv.event_adder.cancel_drag();Event.observe('monthly_more_date','mousedown',self.move_daily_view.bindAsEventListener(self,date));ActivePopup.register(this);},set_position:function(){var _dimension=calendar.mv.get_dimension();var positioned_offset=$(this.get_cell(this.parent_cell)).cumulativeOffset();var parent_offset=calendar.mv.get_view_offset();var top=positioned_offset[1]-parent_offset[1]+24;var left=positioned_offset[0]-parent_offset[0];var width=Math.floor(_dimension[0]/7);if((top+this.popWin.getHeight())>_dimension[1])top=_dimension[1]-this.popWin.getHeight()+24;if((left+width)>_dimension[0])left=_dimension[0]-width;var more_contents=this.more_content.getElementsByTagName("div");for(var i=0;i<more_contents.length;i++){more_contents[i].setStyle({width:width-11+'px'});}
this.popWin.setStyle({left:left+'px',top:top+'px',width:width+'px'});this.popWin.show();},detach:function(){this.popWin.hide();ActivePopup.unregister(this);},add_event_updater:function(event,e,div_id,cell){event=event||window.event;Event.stop(event);var popup_offset=this.popup_position(cell,e.writable(),e.is_shared());var _option={offset_x:popup_offset[0],offset_y:popup_offset[1],event:e,parent:$(div_id),method:'put'};EventPopup.attach(e,_option);},move_daily_view:function(event,date){event=event||window.event;history_controller.go("daily_view:"+date.to_date_param());Event.stop(event);}});var MvEventSorter=Class.create();MvEventSorter.tree=[10,11,20,12,21,30,13,22,31,40,14,23,32,41,50,15,24,33,42,51,60,16,25,34,43,52,61,70];MvEventSorter.prototype={initialize:function(){this.hashed=$H();this.clear();},clear:function(){this.data_structure=[];this.events=$H();this.arr_cache=$H();this.arr_events=$A();this.deactivated=false;},deactivate:function(){this.hashed=null;this.data_structure=null;this.events=null;this.arr_cache=null;this.arr_events=null;this.start_at=null;this.end_at=null;this.occupied_tree=null;this.deactivated=true;},add_event:function(event){this.events.set(event.r_id(),event);this.arr_events.push(event);},remove_event:function(event){this.arr_events=this.arr_events.reject(function(e){return e.id==event.id});var self=this;this.events.keys().each(function(key){var k=Math.floor(key/10000);if(k==event.id)self.events.unset(key);self.arr_cache.unset(key);});},reset:function(){this.hashed=$H();},get_range:function(event){var cache=this.arr_cache.get(event.r_id());if(cache)return cache;var left=false,right=false;var s_dt,e_dt;if(event.start_at<this.start_at){left=true;s_dt=this.start_at;}else{s_dt=event.start_at.clear_time();}
if(event.end_at>=this.end_at){right=true;e_dt=this.last_day;}else{_e_dt=event.end_at.clear_time();e_dt=(!event.allday&&event.end_at.equal(_e_dt))?_e_dt.prev_day():_e_dt;}
var range=[s_dt.clone(),e_dt.clone(),left,right];this.arr_cache.set(event.r_id(),range);return range;},get_weight:function(event){var range=this.get_range(event);return(range[1].getTime()-range[0].getTime())/8640000+10+range[0].getDay();},arrange:function(){var self=this;this.reset();var row_from=this.start_at;var row_to=this.end_at.prev_day();self.arr_events=self.arr_events.sortBy(function(event){var start_at_time=event.start_at.getTime();return event.is_monthly_multiday()?(start_at_time/2):start_at_time;});self.arr_events.each(function(event){var weight=self.get_weight(event);var _hashed=self.hashed.get(weight);(_hashed)?_hashed.push(event):_hashed=[event];self.hashed.set(weight,_hashed);});var keys=this.hashed.keys();self.occupied_tree=MvEventSorter.tree.select(function(k){return keys.include(k)});this.data_structure=new Array(calendar.mv.max_level);for(var i=0;i<calendar.mv.max_level;i++){var keys=[];var key=self.get_max();if(!key)break;keys.push(key);var cur=key;while(cur){cur=self.get_left(cur);if(cur)keys.push(cur);}
cur=key;while(cur){cur=self.get_right(cur);if(cur)keys.push(cur);}
if(keys.size()==0)break;this.make_row(i,keys,self.occupied_tree);}},get_max:function(){if(this.occupied_tree.size()==0)return;return this.occupied_tree.last();},get_left:function(key){var limit=key%10;var tree_len=this.occupied_tree.size();var result=null;for(var i=0;i<tree_len;i++){var k=this.occupied_tree[i];var buf=Math.floor(k/10)+(k%10);if(buf<=limit)
result=k;else
break;}
return result;},get_right:function(key){var limit=Math.floor(key/10)+(key%10);var tree_len=this.occupied_tree.size();var result=null;for(var i=0;i<tree_len;i++){var k=this.occupied_tree[i];if(k%10>=limit)result=k;}
return result;},make_row:function(idx,keys){this.data_structure[idx]=new Array(7);for(var i=0;i<keys.length;i++){var k=keys[i];var event=this.get_event(k);var range=this.get_range(event);this.data_structure[idx][k%10]=[event,Math.floor(k/10),range[2],range[3]];}},get_event:function(key){var _hashed=this.hashed.get(key);var event=_hashed.shift();if(_hashed.size()==0){this.occupied_tree=this.occupied_tree.without(key);this.hashed.unset(key);}
return event;},find_event_by_event_id:function(event){return this.events.keys().find(function(key){var k=Math.floor(key/10000);return k==event.id;});}}