
var Mohawk={version:'0.1',UI:{selection:false,selectables:[]},Utils:{},DOM:{},url:URL.js,XHR:function(){var XHR=null;if(window.XMLHttpRequest){XHR=new XMLHttpRequest();}else if(window.ActiveXObject){XHR=new ActiveXObject('Microsoft.XMLHTTP');}else{alert('XMLHttpRequest is disabled in your browser');return false;}
return XHR;}};var IE=typeof(window.ActiveXObject)!='undefined';var FF=navigator.userAgent.match('Gecko')!=null;var OPERA=typeof(window.opera)!='undefined';var WEBKIT=navigator.userAgent.match('WebKit')!=null;if(WEBKIT){FF=false;}
var BTN_LEFT=IE?1:0;var BTN_MIDDLE=IE?4:1;var BTN_RIGHT=2;function is_scalar(variable){return['number','string','boolean'].has(typeof(variable));}
function is_numeric(variable){return(typeof(variable)=='number')||(typeof(variable)=='string'&&variable*1+''==variable);}
function empty(variable){if(variable===0||variable==='0'||variable===''||variable===false||variable===null||typeof(variable)=='undefined'){return true;}
if(variable instanceof Array){return!variable.length;}
if(variable instanceof Object){return!variable.keys().length;}
return false;};function extend(target,source,directly){if(target.prototype&&!directly){extend(target.prototype,source);}else{if(typeof(target.base)=='undefined'){target.base={};}
for(var i in source){if(typeof(target[i])!='undefined'){if(typeof(target.base[i])=='undefined'){target.base[i]=target[i];}}
target[i]=source[i];}}};Function.prototype.parse=function(){var source=this.toSource instanceof Function?this.toSource():this.toString();var regex=new RegExp('\\(?\\s*function\\s*([a-z$_][a-z$_0-9]*)?\\s*\\(\\s*([^\\)]*)\\s*\\)\\s*\\{([^\x01]*)\\}\\s*\\)?\\s*','img');var m=null;if(m=regex.exec(source)){return{name:m[1],params:m[2].split(new RegExp('\\s*,\\s*')),body:m[3]};}else{return null;}};var ObjectInterface={exists:function(key){return typeof(this[key])!='undefined';},get:function(key,default_value){if(typeof(this[key])!='undefined'){return this[key];}else{return default_value?default_value:'';}},has:function(value){for(var i in this){if(value==this[i]){return true;}}
return false;},key:function(value){for(var i in this){if(value==this[i]){return i;}}
return false;},keys:function(){var keys=[];for(var i in this){if(typeof(Object.prototype[i])=='undefined'){keys.push(i);}}
return keys;},values:function(){var values=[];var obj=this;obj.forEach(function(){values.push(this);});return values;},forEach:function(action){for(var i in this){if(typeof(Object.prototype[i])=='undefined'){var value=action.call(this[i],i,this[i]);if(value===false){break;}}}},clone:function(){var clone={};var obj=this;this.forEach(function(key){clone[key]=obj[key];});return clone;}};var ArrayInterface={keys:function(){var keys=[];for(var i in this){if(typeof(Object.prototype[i])=='undefined'&&typeof(Array.prototype[i])=='undefined'){keys.push(i);}}
return keys;},last:function(){return this.slice(-1)[0];},pull:function(value){for(var i in this){if(value==this[i]){this.splice(i,1);}}},forEach:function(action){for(var i=0;i<this.length;i++){var value=action.call(this[i],i,this[i]);if(value===false){break;}}},binSearch:function(value){var l=0;var r=this.length-1;if(this[l]>value){return l;}
if(this[r]<value){return r+1;}
do{var m=Math.round((r+l)/2);if(m==l||m==r||this[m]==value){break;}else if(this[m]<value){l=m;}else{r=m;}}while(true);return m;},intersect:function(array,sorted){if(!sorted){this.sort();array.sort();}
var i=0,j=0;var unique=[];while(i<this.length&&j<array.length){if(this[i]<array[j]){i++;}else if(this[i]>array[j]){j++;}else{unique.push(this[i]);i++;j++;}}
return unique;},divide:function(num){var length=Math.ceil(this.length/num);var chunks=[];for(var i=0;i<num;i++){chunks.push(this.slice(i*length,(i+1)*length));}
return chunks;}};extend(Object,ObjectInterface);extend(Array,ArrayInterface);Object.combine=function(keys,values){var obj={};for(var i=0;i<keys.length;i++){obj[keys[i]]=values[i];}
return obj;};var MathInterface={sign:function(x){return x==0?0:(x>0?1:-1);},rand:function(min,max){if(!max){min=0;max=min;}
return Math.round(Math.random()*(max-min))+min;},round:function(num,precision){if(!precision||precision<0){return Math.base.round(num);}else{var base=Math.pow(10,precision);return Math.base.round(num*base)/base;}}};extend(Math,MathInterface);var NumberInterface={toHex:function(){if(this==0){return'0';}
var hex='';var digits=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];var d=this;var pow=Math.floor(Math.log(d)/Math.log(16));var base=Math.pow(16,pow);for(var i=pow;i>=0;i--){var q=Math.floor(d/base);d-=q*base;hex+=digits[q];base/=16;}
return hex;}};extend(Number,NumberInterface);RegExp.quote=function(str){var regexp=new RegExp('([\\<\\>\\/\\?\\.\\$\\^\\[\\]\\*\\+\\\\])','g');return str.replace(regexp,'\\$1');};var Class=function(object){return this.extend(object);};var Singletone=function(object){var class_interface=new Class(object);var instance=new class_interface();return instance;};Class.prototype={self:null,parent:null,extend:function(descendant){var child=Class.method(descendant.__construct||(this.prototype&&this.prototype.__construct?this.prototype.__construct:function(){}),'Class.setSelf(this); var self = this.self; var parent = this.parent; this.static = arguments.callee; var static = this.static; ');var methods=descendant.keys();child.prototype.parent={};for(var i in this.prototype){if(this.prototype[i]instanceof Function){child.prototype.parent[i]=Class.method(this.prototype[i]);}else{child.prototype.parent[i]=this.prototype[i];}
if(i!='parent'){if(this.prototype[i]instanceof Function){child.prototype[i]=Class.method(this.prototype[i],!methods.has(i)?'if (parent && parent.parent) {parent = parent.parent};'+Class.label:'');}else{child.prototype[i]=this.prototype[i];}}}
if(typeof(child.base)=='undefined'){child.base={};}
for(var i in this){if(typeof(child[i])=='undefined'){child[i]=this[i];}}
for(var i in descendant){if(descendant[i]instanceof Function){child.prototype[i]=Class.method(descendant[i],'var __function__ = "'+i+'"; var self = this.self; var parent = this.parent; var static = this.static; '+Class.label+'if (self) {try {parent.self = self} catch (e) {}}');}else{child.prototype[i]=descendant[i];}}
child.extend=this.extend;return child;}};Class.extend=Class.prototype.extend;Class.label='Class.here();';Class.here=function(){};Class.method=function(action,add){var source=action.parse();var f=function(){};if(source){if(source.body.indexOf(Class.label)>0){source.body=source.body.replace(Class.label,add||'');}else{source.body=(add||'')+source.body;}
var str='f = function ('+source.params.join(',')+') {'+source.body+'};';eval(str);}else{f=false;}
return f;};Class.setSelf=function(object){var base=object;do{object.self=base;object=object.parent;}while(object&&object.parent);};document.loaders=[];document.callLoaders=function(){if(document.loaded){while(document.loaders.length){var loader=document.loaders.shift();if(loader instanceof Function){loader.call(document);}}}};if(FF){document.addEventListener('DOMContentLoaded',function(){document.loaded=true;document.callLoaders.call(document);},false);}else if(WEBKIT){function callLoaders(){if(['loaded','complete'].has(document.readyState)){document.loaded=true;document.callLoaders.call(document);}else{setTimeout(callLoaders,0);}}
setTimeout(callLoaders,0);}else{document.onreadystatechange=function(){if(['loaded','complete'].has(document.readyState)){document.loaded=true;document.callLoaders();}};}
document.addLoader=function(action){if(document.loaded){action.call(document);}else{if(!document.loaders.has(action)){document.loaders.push(action);}}};Mohawk.included=[];function include(path){var first=path.substr(0,path.indexOf('.'));var url=Mohawk.url;if(typeof(URL[first])!='undefined'){url=URL[first];path=path.substr(path.indexOf('.')+1);}
var include_path=url+path.replace(new RegExp('\\.','g'),'/')+'.js';if(!Mohawk.included.has(include_path)){var XHR=Mohawk.XHR();XHR.open('GET',include_path,false);XHR.setRequestHeader('Pragma','no-cache');XHR.setRequestHeader('Expires','-1');XHR.send(null);eval(XHR.responseText);Mohawk.included.push(include_path);delete(XHR);}}
window.Pixel=new Class({x:0,y:0,__construct:function(x,y){if(typeof x!='undefined'){if(typeof y!='undefined'){self.x=x||0;self.y=y||0;}else{self.x=x.x;self.y=x.y;}}},inside:function(rect){return self.x>=rect.start.x&&self.x<=rect.end.x&&self.y>=rect.start.y&&self.y<=rect.end.y;},toString:function(){return[self.x,self.y].toString();}});window.Rect=new Class({start:null,end:null,__construct:function(start,end){if(start&&end){self.start=start;self.end=end;}else{self.start=new Pixel;self.end=new Pixel;}},toString:function(){return[self.start.toString(),self.end.toString()].toString();}});Rect.fromNode=function(node){var start=node.coordinates();return new Rect(start,new Pixel(start.x+node.offsetWidth,start.y+node.offsetHeight));}
Mohawk.Template=new Singletone({vars:{},keywords:['end','else'],assign:function(name,value){if(self.keywords.has(name)){alert(name+' is a keyword');}
self.vars[name]=value;},transform:function(text){var init='';self.vars.forEach(function(name){init+='var '+name+' = self.vars["'+name+'"];';});var variable='[a-z_][a-z_0-9]*(?:\\[[^\\]]*\\]|\\.[a-z_][a-z_0-9]*)*';var modifier='[a-z_][a-z_0-9]*(?:\\.[a-z_][a-z_0-9]*)*';var condition='[^\\}]+';text=text.replace(new RegExp('\"','g'),'\\\"');text=text.replace(new RegExp('\\n','g'),'\\n');text=text.replace(new RegExp('\\{%for\\s+('+variable+') in ('+variable+')\\}','gmi'),'"; for (var __k__ in $2) {'+'if (typeof Object.prototype[__k__] != \'undefined\' || typeof Array.prototype[__k__] != \'undefined\') continue; var $1 = $2[__k__]; __s__ += "');text=text.replace(new RegExp('\\{%for\\s+('+variable+') in ('+variable+')\\s+=>\\s+('+variable+')\\}','gmi'),'"; for (var $3 in $2) {'+'if (typeof Object.prototype[$3] != \'undefined\' || typeof Array.prototype[$3] != \'undefined\') continue; var $1 = $2[$3]; __s__ += "');text=text.replace(new RegExp('\\{%if\\s+('+condition+')\\}','gmi'),'"; if ($1) {__s__ += "');text=text.replace(new RegExp('\\{%elseif\\s+('+condition+')\\}','gmi'),'"; } else if ($1) {__s__ += "');text=text.replace(new RegExp('\\{%else\\}','gmi'),'"; } else { __s__ += "');text=text.replace(new RegExp('\\{%end\\}','gmi'),'"; } __s__ += "');text=text.replace(new RegExp('\\{%('+variable+')\\|('+modifier+')\\}','gmi'),'" + $2($1) + "');text=text.replace(new RegExp('\\{%('+variable+')\\}','gmi'),'" + $1 + "');eval(init+'__s__ = "'+text+'"');return __s__;}});Mohawk.NodeEffectInterface={show:function(effect){if(this.style.visibility=='hidden'){this.style.visibility='visible';if(effect instanceof Function){effect.call(this,this,this.show);}}},hide:function(effect){if(this.style.visibility!='hidden'){if(effect instanceof Function){effect.call(this,this,this.hide);}else{this.style.visibility='hidden';}}},display:function(effect,display){this.style.display=display?display:(this._display?this._display:'block');if(effect instanceof Function){effect.call(this,this,this.display);}},collapse:function(effect){if(this.style.display!='none'){if(effect instanceof Function){effect.call(this,this,this.collapse);}else{this._display=this.style.display;this.style.display='none';}}},toggleDisplay:function(effect){if(e.offsetWidth==0){this.display(effect);}else{this.collapse(effect);}},remove:function(effect){if(this.parentNode){if(effect instanceof Function){effect(this,this.remove);}else{this.parentNode.removeChild(this);}}},setOpacity:function(opacity){if(IE){this.style.filter='Alpha(Opacity="'+(opacity*100)+'")';}else{this.style.opacity=opacity;}},getOpacity:function(opacity){if(IE){}else{return this.style.opacity;}}};Mohawk.Effects=new Singletone({opacity_delay:10,opacity_step:0.025,blink_delay:100,blink_number:3,_stop:false,moving:null,opacity:function(object,start,end,finalize,current){self=Mohawk.Effects;if(typeof current=='undefined'){current=start;object._opacity=object.getOpacity();}
current+=self.opacity_step*Math.sign(end-start);object.setOpacity(current);if(Math.sign(end-start)!=0&&(Math.sign(end-start)==Math.sign(end-current)||!Math.sign(end-current))){setTimeout(function(){self.opacity(object,start,end,finalize,current)},self.opacity_delay);}else{object.setOpacity(end);if(finalize instanceof Function){finalize.call(object);object.setOpacity(object._opacity);}}},appear:function(object,finalize){Mohawk.Effects.opacity(object,0,1,finalize);},vanish:function(object,finalize){Mohawk.Effects.opacity(object,1,0,finalize);},blink:function(object,finalize,start,counter){self=Mohawk.Effects;if(typeof counter=='undefined'){counter=0;start=!['hidden','off'].has(object.style.visibility);}
counter++;if(counter<self.blink_number*2){object.style.visibility=(counter+start)%2?'hidden':'visible';setTimeout(function(){self.blink(object,finalize,start,counter)},self.blink_delay);}else{object.style.visibility=start?'visible':'hidden';if(finalize instanceof Function){finalize.call(object);}}},move:function(e,x,y,step_x,step_y,acc_x,acc_y,finalize,offset){var self=Mohawk.Effects;var cur_x=e.offsetLeft;var cur_y=e.offsetTop;if(!offset){var temp=document.createElement('DIV');temp.style.left='0px';temp.style.top='0px';temp.style.position='absolute';e.parentNode.appendChild(temp);offset=new Pixel(temp.offsetLeft,temp.offsetTop);temp.remove();}
if(!x&&x!==0){x=cur_x;}
if(!y&&y!==0){y=cur_y;}
if(!step_x){step_x=1;}
if(!step_y){step_y=1;}
if(!acc_x){acc_x=1;}
if(!acc_y){acc_y=1;}
self._move(e,x,y,step_x,step_y,acc_x,acc_y,finalize,offset);},_move:function(e,x,y,step_x,step_y,acc_x,acc_y,finalize,offset){var self=Mohawk.Effects;var cur_x=e.offsetLeft;var cur_y=e.offsetTop;var moved_x=false;if(Math.abs(cur_x-x)>=step_x){e.style.left=(cur_x+Math.sign(x-cur_x)*step_x)+'px';moved_x=true;}else{e.style.left=x-offset.x+'px';}
var moved_y=false;if(Math.abs(cur_y-y)>=step_y){e.style.top=(cur_y+Math.sign(y-cur_y)*step_y)+'px';moved_y=true;}else{e.style.top=y-offset.y+'px';}
if(moved_x||moved_y){self.moving=setTimeout(function(){self._move(e,x,y,step_x*acc_x,step_y*acc_y,acc_x,acc_y,finalize,offset)},1);}else{if(finalize instanceof Function){finalize.call(e);}}},stop:function(){clearTimeout(self.moving);}});Mohawk.EventInterface={preventDefault:function(){if(this.button==BTN_RIGHT){if(OPERA){no_ctmenu=window.no_ctmenu;if(!no_ctmenu){no_ctmenu=document.createElement('input');no_ctmenu.type='button';document.body.appendChild(no_ctmenu);}
no_ctmenu.style.position='fixed';no_ctmenu.style.top=this.clientY-2+'px';no_ctmenu.style.left=this.clientX-2+'px';no_ctmenu.style.width='5px';no_ctmenu.style.height='5px';no_ctmenu.style.opacity=0;no_ctmenu.style.zIndex=10000;}}
if(typeof this.returnValue!='undefined'){this.returnValue=false;}else{if(window._preventDefault instanceof Function){window._preventDefault.call(this);}}
return false;},stopPropagation:function(){if(typeof this.cancelBubble!='undefined'){this.cancelBubble=true;}else{if(window._stopPropagation instanceof Function){window._stopPropagation.call(this);}}
return false;},cursor:function(){var x=0,y=0;if(this.pageX||this.pageY){x=this.pageX;y=this.pageY;}else if(this.clientX||this.clientY){x=this.clientX+document.scrollLeft();y=this.clientY+document.scrollTop();}else if(this.screenX||this.screenY){x=this.screenX;y=this.screenY;}
return new Pixel(x,y);},wheel:function(){var delta=0;if(this.wheelDelta){delta=event.wheelDelta/120;}else if(this.detail){delta=-this.detail/3;}
return delta;},key:function(){return this.keyCode||this.which||null;},element:function(){return this.srcElement||this.currentTarget;}};if(window.Event){window._preventDefault=window.Event.prototype.preventDefault;window._stopPropagation=window.Event.prototype.stopPropagation;if(FF){delete(Mohawk.EventInterface.preventDefault);}
extend(window.Event,Mohawk.EventInterface);}
Mohawk.NodeClassInterface={getClasses:function(){return this.className?this.className.split(new RegExp('\\s+')):[];},hasClass:function(className){var classes=this.getClasses();for(var i=0;i<arguments.length;i++){if(classes.has(arguments[i])){return true;}}
return false;},addClass:function(className,test){for(var i=0;i<arguments.length;i++){if(!this.hasClass(arguments[i])){this.className+=' '+arguments[i];}}},removeClass:function(className){var classes=this.getClasses();for(var i=0;i<arguments.length;i++){classes.pull(arguments[i]);}
this.className=classes.join(' ');},replaceClass:function(find,replace){var classes=this.getClasses();if((key=classes.key(find))!==false){classes[key]=replace;this.className=classes.join(' ');}else{this.addClass(replace);}},flipClass:function(className){for(var i=0;i<arguments.length;i++){if(this.hasClass(arguments[i])){this.removeClass(arguments[i]);}else{this.addClass(arguments[i]);}}},copyClassesTo:function(element){var classes=this.getClasses();classes.forEach(function(){element.addClass(this);});},setClassesTo:function(element){element.className=this.className;}};Mohawk.NodeEventInterface={_events:null,addEvent:function(event,action,useCapture){var source=action.parse();var $event=source.params[0]||'event';source.body='if (IE) {extend('+$event+', Mohawk.EventInterface)};'+source.body;action=new Function(source.params,source.body);var hash=action.toString();if(!this._events){this._events=new Object;}
if(!this._events[event]){this._events[event]=[];}
if(!this._events[event][hash]){this._events[event][hash]=action;if(!useCapture){useCapture=false;}
if(this.addEventListener){this.addEventListener(event,action,useCapture);}else if(this.attachEvent){this.attachEvent('on'+event,action);}}
return action;},removeEvent:function(event,action,useCapture){var source=action.parse();var $event=source.params[0]||'event';source.body='if (IE) {extend('+$event+', Mohawk.EventInterface)};'+source.body;action=new Function(source.params,source.body);var hash=action.toString();if(this._events[event]&&this._events[event][hash]){action=this._events[event][hash];}
if(!useCapture){useCapture=false;}
if(this.removeEventListener){this.removeEventListener(event,action,useCapture);}else if(this.detachEvent){this.detachEvent('on'+event,action);}
if(this._events[event]&&this._events[event][hash]){delete(this._events[event][hash]);}}};Mohawk.NodeStructureInterface={coordinates:function(){var x=0,y=0;var element=this;while(element){x+=element.offsetLeft;y+=element.offsetTop;element=element.offsetParent;}
return new Pixel(x,y);},isDescendantOf:function(node){var parent=this.parentNode;while(parent){if(parent==node){return true;}
parent=parent.parentNode;}
return false;},isAncestorOf:function(node){var parent=node.parentNode;while(parent){if(parent==this){return true;}
parent=parent.parentNode;}
return false;},removeChildren:function(){while(this.firstChild){this.removeChild(this.firstChild);}},firstTag:function(tag){if(typeof tag=='undefined'){tag=false;}
var current=this.firstChild;while(current&&(!current.tagName||(tag&&current.tagName.toLowerCase()!=tag.toLowerCase()))){current=current.nextSibling;}
return current;},nextTag:function(tag){if(typeof tag=='undefined'){tag=false;}
var current=this.nextSibling;while(current&&(!current.tagName||(tag&&current.tagName.toLowerCase()!=tag.toLowerCase()))){current=current.nextSibling;}
return current;},ancestorTag:function(tag){if(typeof tag=='undefined'){tag=false;}
var current=this.parentNode;while(current&&(!current.tagName||(tag&&current.tagName.toLowerCase()!=tag.toLowerCase()))){current=current.parentNode;}
return current;},previousTag:function(tag){if(typeof tag=='undefined'){tag=false;}
var current=this.previousSibling;while(current&&(!current.tagName||(tag&&current.tagName.toLowerCase()!=tag.toLowerCase()))){current=current.previousSibling;}
return current;},replace:function(node){this.parentNode.replaceChild(node,this);},insertFirst:function(node){this.insertBefore(node,this.firstChild);},insertAfter:function(node,before){this.insertBefore(node,before.nextSibling);},getElementsByClassName:function(class_name){var elements=this.getElementsByTagName('*');var found=[];for(var i=0;i<elements.length;i++){if(elements[i].hasClass&&elements[i].hasClass(class_name)){found.push(elements[i]);}}
return found;},getElementsByLang:function(lang){var elements=this.getElementsByTagName('*');var found=[];for(var i=0;i<elements.length;i++){if(elements[i].lang==lang){found.push(elements[i]);}}
return found;},setHTML:function(html){this.innerHTML=html;Mohawk.DOM.enchaseDocumentNodes(this);},prependHTML:function(html){this.innerHTML=html+this.innerHTML;Mohawk.DOM.enchaseDocumentNodes(this);},appendHTML:function(html){this.innerHTML+=html;Mohawk.DOM.enchaseDocumentNodes(this);}};Mohawk.DOM=new Singletone({ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,DOCUMENT_NODE:9,enchaseNode:function(node){if(![self.ELEMENT_NODE,self.DOCUMENT_NODE].has(node.nodeType)){return;}
if(node._enchased instanceof Function&&node._enchased()===true){return;}
node._cloneNode=node.cloneNode;node.cloneNode=function(flag){var clone=this._cloneNode(flag);self.enchaseNode(clone);return clone;};node._getElementsByTagName=node.getElementsByTagName;node.getElementsByTagName=function(tag){var collection=node._getElementsByTagName(tag);collection.forEach=ObjectInterface.forEach;return collection;};switch(node.nodeName.toUpperCase()){case'TABLE':node._insertRow=node.insertRow;node.insertRow=function(index){var row=IE?this._insertRow(index):HTMLTableElement.prototype.insertRow.call(this,index);self.enchaseNode(row);return row;};node._createTHead=node.createTHead;node.createTHead=function(){var thead=IE?this._createTHead():HTMLTableElement.prototype.createTHead.call(this);self.enchaseNode(thead);return thead;};node._createTFoot=node.createTFoot;node.createTFoot=function(){var tfoot=IE?this._createTFoot():HTMLTableElement.prototype.createTFoot.call(this);self.enchaseNode(tfoot);return tfoot;};break;case'TR':node._insertCell=node.insertCell;node.insertCell=function(index){var cell=IE?this._insertCell(index):HTMLTableRowElement.prototype.insertCell.call(this,index);self.enchaseNode(cell);return cell;};break;case'FORM':if(typeof Mohawk.FormsInterface!='undefined'){extend(node,Mohawk.FormsInterface);}
break;}
extend(node,Mohawk.NodeClassInterface);extend(node,Mohawk.NodeEventInterface);extend(node,Mohawk.NodeStructureInterface);if(Mohawk.NodeEffectInterface instanceof Object){extend(node,Mohawk.NodeEffectInterface);}
node._enchased=function(){return true;};},enchaseDocument:function(){if(document._document_enchased){return;}
document._document_enchased=true;document._createElement=document.createElement;document.createElement=function(tag_name){if(typeof Document=='undefined'){var element=document._createElement(tag_name);}else{var element=(Document.prototype.createElement||document._createElement).call(document,tag_name);}
self.enchaseNode(element);return element;};document._getElementById=document.getElementById;document.getElementById=function(id){if(typeof Document=='undefined'){var element=document._getElementById(id);}else{var element=(Document.prototype.getElementById||document._getElementById).call(document,id);}
if(element){self.enchaseDocumentNodes(element);}
return element;};document.scrollLeft=function(){return self.pageXOffset||(document.documentElement&&document.documentElement.scrollLeft)||(document.body&&document.body.scrollLeft);};document.scrollTop=function(){return self.pageYOffset||(document.documentElement&&document.documentElement.scrollTop)||(document.body&&document.body.scrollTop);};document.size=function(){var w=0,h=0;var win=window.window;if(win.self.innerHeight){w=win.self.innerWidth;h=win.self.innerHeight;}else if(win.document.documentElement&&win.document.documentElement.clientWidth){w=win.document.documentElement.clientWidth;h=win.document.documentElement.clientHeight;}else if(win.document.body){w=win.document.body.clientWidth;h=win.document.body.clientHeight;}
return{width:w,height:h};};self.enchaseNode(document);if(typeof document.defaultView=='undefined'){document.defaultView={};}
if(typeof document.defaultView.getComputedStyle=='undefined'){document.defaultView.getComputedStyle=function(element,pseudoElement){return element.currentStyle;};}},enchaseDocumentNodes:function(node){if(node){self.enchaseNode(node);}
var all=(node||document.body).getElementsByTagName('*');if(all.forEach instanceof Function){all.forEach(function(){self.enchaseNode(this);});}else{for(var i=0;i<all.length;i++){self.enchaseNode(all[i]);}}}});Mohawk.DOM.event=function(event){event=event||window.event;extend(event,Mohawk.EventInterface);return event;};Mohawk.DOM.enchaseDocument();document.addLoader(function(){Mohawk.DOM.enchaseDocumentNodes();});window.ID=function(id){return document.getElementById(id);};Mohawk.Utils.IniParser=new Class({parse:function(source){source=source+'\n';var pos=0;var data={};var buffer='';var status=static.STAT_NL;var key='';while(pos<source.length){var cur=source.slice(pos,pos+1);switch(status){case static.STAT_NL:if(cur==';'){status=static.STAT_COM;}else if(cur.match(new RegExp('\\w'))){status=static.STAT_KEY;buffer+=cur;}else if(cur.match(new RegExp('\\s'))){}else{status=static.STAT_ERR;buffer='';}
break;case static.STAT_COM:case static.STAT_ERR:if(cur.match(new RegExp('\\r\\n|\\n|\\r'))){status=static.STAT_NL;}else{}
break;case static.STAT_KEY:if(cur.match(new RegExp('\\w'))){buffer+=cur;}else if(cur==' '||cur==' '){status=static.STAT_END_KEY;key=buffer;buffer='';}else if(cur=='='){status=static.STAT_VAL;key=buffer;buffer='';}else{status=static.STAT_ERR;key='';buffer='';}
break;case static.STAT_END_KEY:if(cur=='='){status=static.STAT_VAL;}else if(cur==' '||cur==' '){}else{status=static.STAT_ERR;key='';}
break;case static.STAT_VAL:if(cur==' '){if(buffer){buffer+=cur;}else{}}else if(cur.match(new RegExp('\\r\\n|\\n|\\r'))){status=static.STAT_NL;if(buffer){data[key]=buffer.rtrim();buffer='';}
key='';}else if(cur=='"'){status=static.STAT_STR;}else if(cur==';'){status=static.STAT_COM;if(buffer){data[key]=buffer;buffer='';}
key='';}else{buffer+=cur;}
break;case static.STAT_STR:if(cur=='"'){status=static.STAT_END_VAL;data[key]=buffer;}else if(cur=='\\'){status=static.STAT_ESC;}else{buffer+=cur;}
break;case static.STAT_ESC:status=static.STAT_STR;if(cur.match(new RegExp('["\\\\]'))){buffer+=cur;}else{buffer+='\\'+cur;}
break;case static.STAT_END_VAL:if(cur.match(new RegExp('\\r\\n|\\n|\\r'))){status=static.STAT_NL;data[key]=buffer;buffer='';key='';}else if(cur==';'){status=static.STAT_COM;data[key]=buffer;buffer='';key='';}else if(cur==' '||cur==' '){}else{status=static.STAT_ERR;buffer='';key='';}
break;default:self.error('Unknown status = '+status);}
if(typeof(Console)!=='undefined'){Console.log([cur,status,pos]);}
pos++;}
return data;},error:function(str){alert(str);}});Mohawk.Utils.IniParser.STAT_KEY='key';Mohawk.Utils.IniParser.STAT_VAL='value';Mohawk.Utils.IniParser.STAT_END_KEY='endkey';Mohawk.Utils.IniParser.STAT_END_VAL='endvalue';Mohawk.Utils.IniParser.STAT_STR='string';Mohawk.Utils.IniParser.STAT_ESC='escape';Mohawk.Utils.IniParser.STAT_COM='comment';Mohawk.Utils.IniParser.STAT_ERR='error';Mohawk.Utils.IniParser.STAT_NL='newline';var StringInterface={trim:function(){return this.rtrim().ltrim();},ltrim:function(){return this.replace(new RegExp('^\\s+'),'');},rtrim:function(){return this.replace(new RegExp('\\s+$'),'');},pad:function(length,chr,right){var str=this;var size=length-this.length;chr=chr||' ';for(var i=0;i<size;i++){str=right?str.concat(chr):chr.concat(str);}
return str;},ucfirst:function(){if(!this.length){return'';}
var first=this.slice(0,1);return first.toUpperCase()+this.slice(1,this.length);},htmlspecialchars:function(){var str=this.valueOf();str=str.replace(/&/g,'&amp;');str=str.replace(/</g,'&lt;');str=str.replace(/>/g,'&gt;');return str;},nl2br:function(){return this.replace(/\r\n|\n\r|\n|\r/g,'<br />');},wordwrap:function(width,str){var len=0;var wrapped='';if(str==undefined){str='\n';}
for(var i=0;i<this.length;i++){var char=this.substr(i,1);if(char.match(/\s/)){len=0;}else{len++;}
if(len>width){wrapped=wrapped.concat(str);len=1;}
wrapped=wrapped.concat(char);}
return wrapped;}};extend(String,StringInterface);Mohawk.Loader=new Singletone({css:[],css_default_url:URL.css+'mohawk/',addCss:function(url){if(!url.match(new RegExp('^(http://|/)','i'))){url=self.css_default_url+url;}
if(document.loaded){self.importCss(url);}else{if(!self.css.has(url)){self.css.push(url);}}},loadCss:function(){self.css.forEach(function(){self.importCss(this);});},importCss:function(src){var link=document.createElement('LINK');link.href=src;link.type='text/css';link.rel='stylesheet';document.getElementsByTagName('HEAD')[0].appendChild(link);},js:[],js_default_url:URL.home+'system/js/',addJs:function(url){url=url||'';if(!url.match(new RegExp('^(http://|/)','i'))){url=Mohawk.js_url+url;}
if(document.loaded){self.loadJs(url);}else{if(!self.js.has(url)){self.js.push(url);}}},loadJs:function(){self.js.forEach(function(){var script=document.createElement('SCRIPT');script.type='text/javascript';script.src=this;document.getElementsByTagName('HEAD')[0].appendChild(script);});},extendLanguage:function(lng){lng.keys().forEach(function(){var key=this.toString();var str=lng[key].toString();lng[key.ucfirst()]=str.ucfirst();lng[key.toUpperCase()]=str.toUpperCase();lng[key.toLowerCase()]=str.toLowerCase();});extend(window.LNG,lng);},includeLanguage:function(path){var include_path=URL.lang+ENV.language+'/'+path+'.ini';if(!Mohawk.included.has(include_path)){var XHR=Mohawk.XHR();XHR.open('GET',include_path,false);XHR.send(null);try{var parser=new Mohawk.Utils.IniParser();var lng=parser.parse(XHR.responseText);self.extendLanguage(lng);}catch(e){alert(e.message);}
Mohawk.included.push(include_path);delete(XHR);}},includeTemplate:function(path){var include_path=URL.html+path.replace(new RegExp('\\.','g'),'/')+'.tmpl';if(!Mohawk.included.has(include_path)){var XHR=Mohawk.XHR();XHR.open('GET',include_path,false);XHR.send(null);var str=XHR.responseText;str=str.replace(new RegExp('"','g'),'\\"');str=str.replace(new RegExp('([\n\r]+)','g'),'" + "\\n');str='"'+str+'"';var name=path.substr(path.lastIndexOf('.')+1).toUpperCase();name=name.replace(new RegExp('\\W','g'),'_');eval('window.'+name+' = '+str);Mohawk.included.push(include_path);delete(XHR);}}});window.LNG={};document.addLoader(function(){Mohawk.Loader.loadCss();Mohawk.Loader.loadJs();});Mohawk.Observer=new Singletone({events:{},add:function(type,action){if(!(self.events[type]instanceof Array)){self.events[type]=[];}
self.events[type].push(action);},remove:function(type,action){if(self.events[type]instanceof Array){var source=action.toString();var i=0;while(i<self.events[type].length){if(self.events[type][i].toString()==source){self.events[type].pull(self.events[type][i]);}else{i++;}}}},fire:function(type){if(!self.events[type]){return;}
var args=[];for(i=1;i<arguments.length;i++){args.push(arguments[i]);}
if(self.events[type]instanceof Array){self.events[type].forEach(function(){this.apply(null,args);});}}});var DOM=Mohawk.DOM;var Loader=Mohawk.Loader;var Template=Mohawk.Template;Template.assign('URL',URL);var Effects=Mohawk.Effects;var Observer=Mohawk.Observer;
Mohawk.FormsInterface={getData:function(){var data={};for(var i=0;i<this.elements.length;i++){var element=this.elements[i];if(element&&element.name){if(!element.disabled){switch(element.type){case'checkbox':case'radio':if(!element.checked){break;}
default:switch(element.tagName.toLowerCase()){case'select':if(element.multiple){if(data.exists(element.name)){if(!(data[element.name]instanceof Array)){data[element.name]=[data[element.name]];}}else{data[element.name]=[];}
for(var j=0;j<element.options.length;j++){if(element.options[j].selected){data[element.name].push(element.options[j].value);}}
break;}
default:if(data.exists(element.name)){if(!(data[element.name]instanceof Array)){data[element.name]=[data[element.name]];}
data[element.name].push(element.value);}else{data[element.name]=element.value;}}}}}}
return data;},setData:function(data,name){var form=this;var changed=[];if(typeof name=='undefined'){name='';}
function set_data(data,name,keys){if(data instanceof Object){if(data instanceof Array){for(var i=0;i<data.length;i++){set_data(data[i],name?name:i,name?(keys?keys.concat(i):[i]):[]);}}else{for(var i in data){if(typeof Object.prototype[i]!='undefined'){continue;}
set_data(data[i],name?name:i,name?(keys?keys.concat(i):[i]):[]);}}}else{var element_name=name+(keys.length?'['+keys.join('][')+']':'');if(typeof form[element_name]=='undefined'){element_name=name+(keys.length>1?'['+keys.slice(0,-1).join('][')+']':'')+'[]';if(typeof form[element_name]=='undefined'){return false;}}
var element=form[element_name];if(!element.length||element.tagName){element=[element];}
for(var i=0;i<element.length;i++){if(!element[i].tagName){continue;}
switch(element[i].tagName.toLowerCase()){case'select':if(element[i].multiple){for(var j=0;j<element[i].options.length;j++){if(element[i].options[j].value==data){element[i].options[j].selected=true;changed.push(element[i].options[j]);}else if(!changed.has(element[i].options[j])){element[i].options[j].selected=false;}}
break;}
case'input':if(element[i].type=='checkbox'||element[i].type=='radio'){if(element[i].value==data){element[i].checked=true;changed.push(element[i]);}else if(!changed.has(element[i])){element[i].checked=false;}
break;}
default:element[i].value=data;}
if(typeof(element[i].onchange)!='undefined'&&element[i].onchange instanceof Function){element[i].onchange();}}}
return true;}
set_data(data,name,[]);},createInput:function(type,name,value,options){switch(type){default:case'hidden':case'text':case'password':case'checkbox':if(IE){var input=document.createElement('<input name="'+name+'">');}else{var input=document.createElement('INPUT');input.name=name;}
input.type=type;input.value=value;break;case'textarea':if(IE){var input=document.createElement('<textarea name="'+name+'">');}else{var input=document.createElement('TEXTAREA');input.name=name;}
input.value=value;break;case'select':if(IE){var input=document.createElement('<select name="'+name+'">');}else{var input=document.createElement('SELECT');input.name=name;}
options.forEach(function(i){if(typeof(options[i])=='undefined'){return;}
var option=document.createElement('OPTION');option.value=i;option.innerHTML=options[i];if(value==option.value){option.selected=true;}
input.appendChild(option);});break;}
return input;}};window.FormsInterface=Mohawk.FormsInterface;Mohawk.XML=new Singletone({empty_elements:['br','img','link','meta','input','hr'],inline_elements:['a','abbr','acronym','b','basefont','bdo','big','br','cite','code','dfn','em','font','i','img','input','kbd','label','q','s','samp','select','small','span','strike','strong','sub','sup','textarea','tt','u','var','applet','button','del','iframe','ins','map','object','script'],toObject:function(node){switch(node.nodeType){case Mohawk.DOM.TEXT_NODE:case Mohawk.DOM.CDATA_SECTION_NODE:return node.nodeValue;case Mohawk.DOM.ELEMENT_NODE:var data=null;for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].nodeName!='_key'){data[node.attributes[i].nodeName]=node.attributes[i].nodeValue;}}
var allow_text_nodes=true;node.normalize();for(var i=0;i<node.childNodes.length;i++){var child=self.toObject(node.childNodes[i]);if(child instanceof Object){if(!(data instanceof Object)){data={};}
if(data.exists(child.name)){if(!(data[child.name]instanceof Array)){data[child.name]=[data[child.name]];}
data[child.name].push(child.content);}else if(node.childNodes[i].getAttribute('_key')!=null){data[child.name]=[child.content];}else{data[child.name]=child.content;}
allow_text_nodes=false;}else if(allow_text_nodes){data=child;}}
return{name:node.nodeName,content:data};case Mohawk.DOM.DOCUMENT_NODE:var data=self.toObject(node.documentElement);return data.content;default:}},escape:function(str){str=str.replace('&','&amp;');var table={62:'gt',60:'lt',160:'nbsp',169:'copy',8212:'mdash',8482:'trade',8482:'trade',8222:'bdquo',171:'laquo',8220:'ldquo',8222:'lsaquo',8249:'lsquo',187:'raquo',8221:'rdquo',8250:'rsaquo',8217:'rsquo',8218:'sbquo'};table.forEach(function(code){str=str.replace(new RegExp(String.fromCharCode(code),'g'),'&'+this+';');});return str;},clean:function(str){str=str.replace(new RegExp('^[\\s]+','gm'),' ');str=str.replace(new RegExp('[\\s]+$','gm'),' ');return str;},toHtml:function(node,padding,pad_with,exclude_name,first){if(!padding){padding='\n';}
if(!pad_with){pad_with='\t';}
switch(node.nodeType){case Mohawk.DOM.TEXT_NODE:case Mohawk.DOM.CDATA_SECTION_NODE:var value=self.escape(node.nodeValue);value=self.clean(value);return value;case Mohawk.DOM.ELEMENT_NODE:var tag=node.nodeName.toLowerCase();var str='';if(!exclude_name){var str=(!first&&!self.inline_elements.has(tag)?padding:'')+'<'+tag;for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].nodeValue==''||node.attributes[i].nodeValue==null){continue;}
if(node.attributes[i].nodeValue.toString().match(new RegExp('^(_moz|apple|contentEditable)','i'))){continue;}
if(node.attributes[i].nodeName.match(new RegExp('^(_moz|apple|contentEditable)','i'))){continue;}
var value=self.escape(node.attributes[i].nodeValue.toString());str+=' '+node.attributes[i].nodeName+'="'+value+'"';}
if(!node.childNodes.length&&self.empty_elements.has(tag)){str+=' />';}else{str+='>';}}
var padding_closing='';if(tag=='pre'){str+=node.innerHTML;}else{node.normalize();var padding_children=!exclude_name?padding+pad_with:padding;var first_child=true;for(var i=0;i<node.childNodes.length;i++){var child=node.childNodes[i];var value=self.toHtml(child,padding_children,pad_with,false,exclude_name&&first_child);str+=value;if(value){first_child=false;}
if(![Mohawk.DOM.TEXT_NODE,Mohawk.DOM.CDATA_SECTION_NODE].has(child.nodeType)&&child.nodeName&&!self.inline_elements.has(child.nodeName.toLowerCase())){padding_closing=padding;}}}
if(node.childNodes.length||!self.empty_elements.has(tag)){str+=!exclude_name?(padding_closing+'</'+tag+'>'):'';}
return str;case Mohawk.DOM.DOCUMENT_NODE:return self.toHtml(node.documentElement,padding,pad_with,exclude_name,not_first);default:return'XML: unsupported type of node '+node.nodeType;}}});window.XML=Mohawk.XML;Mohawk.Ajax=new Class({XHR:null,caller:null,url:'',method:'',overwrite_method:true,data:'',charset:'UTF-8',sync:true,xml:'',text:'',type:'',data:{},__construct:function(url,method){self.url=url;self.method=method||static.METHOD_GET;self.type=static.TYPE_XML;self.XHR=Mohawk.XHR();},responseHandler:function(){},errorHandler:function(){},send:function(data){if(typeof self.XHR=='object'){self.XHR.onreadystatechange=function(){self.procedure.apply(self);};self.method=self.method.toUpperCase()
switch(self.method){default:case static.METHOD_GET:var url_with_data=self.url+(self.url.match(new RegExp('\\?'))?'&':'?')+static.prepare(data);self.XHR.open(static.METHOD_GET,url_with_data,self.sync);var get=true;break;case static.METHOD_POST:case static.METHOD_PUT:case static.METHOD_DELETE:case static.METHOD_OPTIONS:case static.METHOD_HEAD:self.XHR.open(self.overwrite_method?static.METHOD_POST:self.method,self.url,self.sync);var get=false;break;}
self.XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset='+self.charset);self.XHR.setRequestHeader('X-Request-Method',self.method);self.XHR.setRequestHeader('Accept',self.type);if(get){if(window.XMLHttpRequest){self.XHR.send(null);}else{self.XHR.send();}}else{var query=static.prepare(data);self.XHR.send(query);}
if(window.Console){var hash=window.Console.hash(data);hash=hash.replace(new RegExp('<','g'),'&lt;');hash=hash.replace(new RegExp('>','g'),'&gt;');var report='Ajax query : '+self.method+' <a href="'+self.url+'">'+self.url+'</a><br />'
+'Data: <pre>'+hash+'</pre>'
+'Query: '+query;window.Console.log(report);}}else{self.error('XMLHttpRequest is not initialized');}},procedure:function(){var error=false;switch(self.XHR.readyState){case static.STATE_UNINITIALIZED:break;case static.STATE_LOADED:if(self.XHR.status==static.HTTP_OK){if(self.XHR.responseXML){self.xml=self.XHR.responseXML;}else{if(self.type==static.TYPE_XML&&self.errorHandler instanceof Function){error=true;self.errorHandler.call(self);}}}else{if(self.errorHandler instanceof Function){error=true;self.errorHandler(self);}}
self.text=self.XHR.responseText;if(window.Console){var data=self.XHR.responseText;data=data.replace(new RegExp('<','g'),'&lt;');data=data.replace(new RegExp('>','g'),'&gt;');var report='Ajax query received from: <a href="'+self.url+'">'+self.url+'</a>';window.Console.log(report);window.Console.log2('Data',data);}
switch(self.type){case static.TYPE_JSON:eval('self.data = '+self.text);break;case static.TYPE_XML:self.data=Mohawk.XML.toObject(self.xml);break;}
if(!error){self.responseHandler(self);}
break;default:}},error:function(message){if(window.Console){window.Console.log(message,'error');}}});Mohawk.Ajax.HTTP_OK=200;Mohawk.Ajax.HTTP_NOT_FOUND=404;Mohawk.Ajax.STATE_UNINITIALIZED=0;Mohawk.Ajax.STATE_OPEN=1;Mohawk.Ajax.STATE_SENT=2;Mohawk.Ajax.STATE_RECEIVING=3;Mohawk.Ajax.STATE_LOADED=4;Mohawk.Ajax.METHOD_GET='GET';Mohawk.Ajax.METHOD_POST='POST';Mohawk.Ajax.METHOD_PUT='PUT';Mohawk.Ajax.METHOD_DELETE='DELETE';Mohawk.Ajax.METHOD_HEAD='HEAD';Mohawk.Ajax.METHOD_OPTIONS='OPTIONS';Mohawk.Ajax.TYPE_XML='text/xml';Mohawk.Ajax.TYPE_JSON='text/json';Mohawk.Ajax.TYPE_TEXT='text/text';Mohawk.Ajax.escape=function(str){if(typeof str=='string'){if(OPERA){str=str.replace(new RegExp('\r','g'),'');}
str=str.replace(new RegExp('%','g'),'%'+'25');str=str.replace(new RegExp('\n','g'),'%'+'0A');str=str.replace(new RegExp('\r','g'),'%'+'0D');str=str.replace(new RegExp('&','g'),'%'+'26');str=str.replace(new RegExp('#','g'),'%'+'23');str=str.replace(new RegExp('\\+','g'),'%'+'2B');}
return str;};Mohawk.Ajax.prepare=function(data,prefix){var query='';switch(typeof data){case'object':if(data instanceof Array){for(var i=0;i<data.length;i++){if(typeof Array.prototype[i]!='undefined'){continue;}
query+=(query.length?'&':'');switch(typeof data[i]){case'object':query+=Mohawk.Ajax.prepare(data[i],prefix?prefix+'['+i+']':i);break;case'string':case'number':case'boolean':query+=(prefix?prefix+(!prefix.match(new RegExp('\\[\\]$'))?'[]':'')+'=':i+'=')+Mohawk.Ajax.prepare(data[i],prefix?prefix+'['+i+']':i);break;}}}else{for(var i in data){if(typeof Object.prototype[i]!='undefined'){continue;}
query+=(query.length?'&':'');switch(typeof data[i]){case'object':if(data[i]==null){query+=prefix?prefix+(!prefix.match(new RegExp('\\[\\]$'))?'['+i+']':'')+'=':i+'=';}else{query+=Mohawk.Ajax.prepare(data[i],prefix?prefix+(!prefix.match(new RegExp('\\[\\]$'))?'['+i+']':''):i);}
break;case'string':case'number':case'boolean':query+=(prefix?prefix+(!prefix.match(new RegExp('\\[\\]$'))?'['+i+']':'')+'=':i+'=')+Mohawk.Ajax.prepare(data[i],prefix?prefix+'['+i+']':i);break;}}}
break;case'string':case'number':case'boolean':query=prefix?Mohawk.Ajax.escape(data):data;break;}
return query;};Mohawk.Ajax.parse_url=function(url){var chunks=url.split('&');var data={};chunks.forEach(function(){var tuple=this.split('=');var m;if(m=tuple[0].match(new RegExp('([a-z][a-z_0-9]*)((?:\\[[a-z_0-9]*\\])*)','i'))){var rec=data;var last=m[1].toString();if(m[2]){var keys=m[2].slice(1,-1).split('][');keys.unshift(m[1]);last=keys.pop();var prev_rec,prev_key;keys.forEach(function(){var key=this.toString();if(!(rec[key]instanceof Object)){rec[key]={};}
prev_rec=rec;prev_key=key;rec=rec[key];});}
if(last==''){if(!(rec instanceof Array)){prev_rec[prev_key]=[];}
prev_rec[prev_key].push(tuple[1]);}else{rec[last]=tuple[1];}}});return data;};window.Ajax=Mohawk.Ajax;Mohawk.Loader.extendLanguage({"authorization":"авторизация","remember_me":"запомнить меня","log_in":"войти","logout":"выйти","logging_in":"выполняется вход","logged_in":"вход выполнен, перенаправление","error_login":"неверный логин или пароль","logging_out":"выполняется выход","logged_out":"перенаправление","confirm_logout":"выйти из системы?"})
window.Authorization=new Class({login:function(form){var req=new Mohawk.Ajax(URL.home+'api/login/',Mohawk.Ajax.METHOD_POST);req.responseHandler=function(req){if(req.data.ok){Progress.load(LNG.Logged_in);if(req.data.remember){window.location=URL.sso+'setcookie/'+req.data.sid+'/?redirect='+escape(window.location);}else{window.location=URL.sso+'setsession/'+req.data.sid+'/?redirect='+escape(window.location);}}else{Progress.done(LNG.Error_login);}};req.send(form.getData());Progress.load(LNG.Logging_in);},logout:function(sid){if(sid){window.location=URL.sso+'deletecookie/'+sid+'/?redirect='+escape(window.location);}else{var req=new Mohawk.Ajax(URL.home+'api/login/',Mohawk.Ajax.METHOD_DELETE);req.responseHandler=function(req){Progress.load(LNG.Logged_out);window.location.reload();};req.send();Progress.load(LNG.Logging_out);}}});Mohawk.Dragdrop=new Singletone({css_class:'draggable',max_index:1000,dragged:false,caller:null,target:{elements:[],x_boxes:{},x_delim:[],y_boxes:{},y_delim:[]},over:[],events:[],reset:function(){self.target={elements:[],x_boxes:{},x_delim:[],y_boxes:{},y_delim:[]};self.over=[];self.events=[];self.dragged=false;self.caller=null;},dragging:function(){return!!self.events.length;},createTargetObjectElement:function(target,element,i,last){self=Mohawk.Dragdrop;var n=target.elements.length;var box=Rect.fromNode(element[i]);var start_x=target.x_delim.binSearch(box.start.x);if(typeof target.x_boxes[box.start.x]=='undefined'){target.x_boxes[box.start.x]=typeof target.x_delim[start_x-1]!='undefined'&&typeof target.x_boxes[target.x_delim[start_x-1]]!='undefined'?target.x_boxes[target.x_delim[start_x-1]].concat([]):[];target.x_delim.splice(start_x,0,box.start.x);}
var end_x=target.x_delim.binSearch(box.end.x);if(typeof target.x_boxes[box.end.x]=='undefined'){target.x_boxes[box.end.x]=typeof target.x_boxes[target.x_delim[end_x-1]]!='undefined'?target.x_boxes[target.x_delim[end_x-1]].concat([]):[];target.x_delim.splice(end_x,0,box.end.x);}
for(var j=start_x;j<end_x;j++){if(typeof target.x_boxes[target.x_delim[j]]=='undefined'){target.x_boxes[target.x_delim[j]]=[];}
target.x_boxes[target.x_delim[j]].push(n);}
var start_y=target.y_delim.binSearch(box.start.y);if(typeof target.y_boxes[box.start.y]=='undefined'){target.y_boxes[box.start.y]=typeof target.y_delim[start_y-1]!='undefined'&&typeof target.y_boxes[target.y_delim[start_y-1]]!='undefined'?target.y_boxes[target.y_delim[start_y-1]].concat([]):[];target.y_delim.splice(start_y,0,box.start.y);}
var end_y=target.y_delim.binSearch(box.end.y);if(typeof target.y_boxes[box.end.y]=='undefined'){target.y_boxes[box.end.y]=typeof target.y_boxes[target.y_delim[end_y-1]]!='undefined'?target.y_boxes[target.y_delim[end_y-1]].concat([]):[];target.y_delim.splice(end_y,0,box.end.y);}
for(var j=start_y;j<end_y;j++){if(typeof target.y_boxes[target.y_delim[j]]=='undefined'){target.y_boxes[target.y_delim[j]]=[];}
target.y_boxes[target.y_delim[j]].push(n);}
var actions=['ondragover','ondragout','ondrop'];for(var k=0;k<actions.length;k++){var action=element[i][actions[k]]||element[i].getAttribute(actions[k]);try{element[i][actions[k]]=action instanceof Function?new Function(['event'],action.parse().body):false;}catch(e){}}
target.elements[n]=element[i];if(++i<element.length){setTimeout(function(){self.createTargetObjectElement(target,element,i,last);},0);}else if(last){}},createTargetObject:function(element){var target={elements:[],x_boxes:{},x_delim:[],y_boxes:{},y_delim:[]};for(var n=0;n<arguments.length;n++){self.createTargetObjectElement(target,arguments[n],0,n==arguments.length-1);}
return target;},setTarget:function(element){self.target=self.createTargetObject.call(self,arguments);},setTargetObject:function(object){self.target=object;},getDraggable:function(node){if(node.hasClass(self.css_class)){return node;}else{if(node.parentNode){return self.getDraggable(node.parentNode);}else{return null;}}},pick:function(event,elements){self=Mohawk.Dragdrop;event=Mohawk.DOM.event(event);var caller=event.currentTarget||event.srcElement;self.caller=caller;if(!elements||!elements.length){elements=[caller];}
document.addEvent('mousemove',self.drag);document.addEvent('mouseup',self.release);if(IE){document.body.focus();}
document.addEvent('selectstart',self.returnFalse);caller.addEvent('dragstart',self.returnFalse);document.addEvent('dragstart',self.returnFalse);document.body.onselectstart=self.returnFalse;self.events=[];var cur=event.cursor();elements.forEach(function(i){var action=this.onpick||this.getAttribute('onpick');if(action instanceof Function){var handler=new Function(['event'],action.parse().body);handler.call(this,event);}
var draggable=self.getDraggable(this);if(draggable){var evt={element:this,draggable:draggable,position:draggable.style.position||'static',offset:new Pixel(draggable.offsetLeft,draggable.offsetTop),start:new Pixel(cur.x,cur.y),ondrag:handler instanceof Function?handler:false};var actions=['ondrag','ondrop','onrelease'];for(var k=0;k<actions.length;k++){var action=this[actions[k]]||this.getAttribute(actions[k]);evt[actions[k]]=action instanceof Function?new Function(['event'],action.parse().body):false;}
self.events.push(evt);draggable.style.position='absolute';if(draggable.dragFront!==false){self.bringToFront(draggable);}}});event.stopPropagation();return false;},drag:function(event){self=Mohawk.Dragdrop;event=Mohawk.DOM.event(event);if(!self.dragged){document.removeEvent('mouseup',self.release);document.addEvent('mouseup',self.drop);}
self.dragged=true;var cur=event.cursor();for(var i=0;i<self.events.length;i++){var evt=self.events[i];var new_pix=new Pixel(evt.offset.x+cur.x-evt.start.x,evt.offset.y+cur.y-evt.start.y);var move=true;if(evt.ondrag){if(evt.ondrag.call(evt.element,event,new_pix)===false){move=false;}}
if(move){if(evt.draggable.dragX!==false){evt.draggable.style.left=new_pix.x+'px';}
if(evt.draggable.dragY!==false){evt.draggable.style.top=new_pix.y+'px';}}}
if(self.target.elements.length){var x_boxes=self.target.x_boxes[self.target.x_delim[self.target.x_delim.binSearch(cur.x)-1]];var y_boxes=self.target.y_boxes[self.target.y_delim[self.target.y_delim.binSearch(cur.y)-1]];if(x_boxes&&y_boxes){var boxes=x_boxes.intersect(y_boxes,true);for(var z=0;z<boxes.length;z++){if(cur.inside(Rect.fromNode(self.target.elements[boxes[z]]))){if(!self.over.has(self.target.elements[boxes[z]])){self.over.push(self.target.elements[boxes[z]]);}
if(self.target.elements[boxes[z]].ondragover){self.target.elements[boxes[z]].ondragover.call(self.target.elements[boxes[z]],event);}}}}}
if(self.over.length){for(var i=0;i<self.over.length;i++){var over=self.over[i];var bound=Rect.fromNode(over);if(!cur.inside(bound)){if(over.ondragout){over.ondragout.call(over,event);}
self.over.pull(over);}}}
return false;},drop:function(event){self=Mohawk.Dragdrop;event=Mohawk.DOM.event(event);document.removeEvent('mousemove',self.drag);document.removeEvent('mouseup',self.drop);self.caller.removeEvent('dragstart',self.returnFalse);document.removeEvent('selectstart',self.returnFalse);document.removeEvent('dragstart',self.returnFalse);document.body.onselectstart=null;var cur=event.cursor();if(self.over.length){for(var i=0;i<self.over.length;i++){var over=self.over[i];var bound=Rect.fromNode(over);if(cur.inside(bound)){if(over.ondrop){over.ondrop.call(over,event);}}}}
for(var i=0;i<self.events.length;i++){var evt=self.events[i];if(evt.ondrop){evt.element.ondrop.call(evt.element,event);}}
self.reset();},release:function(event){self=Mohawk.Dragdrop;event=Mohawk.DOM.event(event);document.removeEvent('mousemove',self.drag);document.removeEvent('mouseup',self.release);self.caller.removeEvent('dragstart',self.returnFalse);document.removeEvent('selectstart',self.returnFalse);document.removeEvent('dragstart',self.returnFalse);document.body.onselectstart=null;for(var i=0;i<self.events.length;i++){var evt=self.events[i];if(evt.element.onrelease){evt.element.onrelease.call(evt.element,event);}}
self.reset();},bringToFront:function(element){element.style.zIndex=self.max_index;self.max_index++;},getDragObjects:function(){var objects=[];for(var i=0;i<self.events.length;i++){objects.push(self.events[i].draggable);}
return objects;},returnFalse:function(){return false;}});window.Dragdrop=Mohawk.Dragdrop;Mohawk.Loader.addCss('console.css');Mohawk.UI.Console=new Class({element:null,content:null,hidden:true,__construct:function(){var element=document.createElement('DIV');element.addClass('console');self.element=element;var content=document.createElement('UL');element.appendChild(content);element.collapse();self.content=content;var btn_clear=document.createElement('A');btn_clear.href='#clear';btn_clear.innerHTML='clear';btn_clear.object=self;btn_clear.addClass('clear');btn_clear.onclick=function(){this.object.clear();return false;};self.element.appendChild(btn_clear);var btn_hide=document.createElement('A');btn_hide.href='#hide';btn_hide.innerHTML='hide';btn_hide.object=self;btn_hide.addClass('hide');btn_hide.onclick=function(){this.object.hide();return false;};self.element.appendChild(btn_hide);var form=document.createElement('FORM');form.action='#';form.history=[];form.current=0;form.onsubmit=function(){return false;};form.onclick=function(){form.elements[0].focus();}
self.element.appendChild(form);var input=document.createElement('INPUT');input.history=[];input.current=0;input.onkeydown=function(event){event=Mohawk.DOM.event(event);var key_code=event.keyCode?event.keyCode:event.which?event.which:null;switch(key_code){case 38:if(this.current>0){this.current--;this.value=this.history[this.current];}
break;case 40:if(this.current<this.history.length-1){this.current++;this.value=this.history[this.current];}
break;case 13:try{var val=eval(this.value);self.log(val);}catch(e){self.log('Error occured: '+self.hash(e),'error');}
this.history.push(this.value);this.current=this.history.length;this.value='';return false;}}
input.onfocus=function(){input.addClass('onfocus');}
input.onblur=function(){input.removeClass('onfocus');}
form.appendChild(input);self.input=input;},append:function(){document.body.appendChild(self.element);},log:function(text,type){var now=new Date;var line=document.createElement('LI');line.innerHTML=IE?'<pre>'+text+'</pre>':text;if(type){line.addClass(type);}
var date=document.createElement('SPAN');date.innerHTML=now.toLocaleString();line.appendChild(date);self.content.appendChild(line);self.content.scrollTop=self.content.scrollHeight;},log2:function(title,text){var line=self.content.lastChild?self.content.lastChild:document.createElement('LI');var p=document.createElement('P');var toggle=document.createElement('A');var container=document.createElement('DIV');p.innerHTML=title+': ';toggle.innerHTML='+';toggle.href='#toggle';toggle.onclick=function(){if(toggle.innerHTML=='+'){container.display();toggle.innerHTML='-';}else{container.collapse();toggle.innerHTML='+';}
return false;};container.collapse();container.innerHTML=text;line.appendChild(p);p.appendChild(toggle);line.appendChild(container);self.content.appendChild(line);self.content.scrollTop=self.content.scrollHeight;},error:function(text){self.log(text,'error');},clear:function(){self.content.removeChildren();},hide:function(){self.hidden=true;self.element.collapse();},show:function(){self.hidden=false;self.element.display();self.element.scrollTop=self.element.scrollHeight;self.input.focus();Mohawk.Dragdrop.bringToFront(self.element);},toggle:function(){if(self.hidden){self.show();}else{self.hide();}},hash:function(data){var hash='';switch(typeof data){case'object':if(data==null){hash+='NULL';}else{if(data.forEach){data.forEach(function(i){hash+='\n'+i+':'+this;});}else{for(var i in data){hash+='\n'+i+':'+data[i];};}}
break;case'function':hash+='\n'+i+'()';break;case'string':hash+='"'+data+'"';break;case'number':hash+=data;break;case'boolean':hash+=data?'TRUE':'FALSE';break;case'undefined':hash+='UNDEFINED';break;default:hash+=typeof data;}
return hash;},describe:function(data){self.log(self.hash(data));},regKey:function(){document.console=self;document.addEvent('keydown',function(event){if(window.event){event=window.event;}
if(event.ctrlKey){var code=event.keyCode?event.keyCode:event.which?event.which:null;switch(code){case 96:if(!OPERA){break;}
case 192:document.console.toggle();break;}}});},handleErrors:function(flag){try{if(flag=='undefined'){flag=true;}
if(flag){if(!window.Console){window.Console=self;}
window._onerror=window.onerror;window.onerror=function(message,url,line){window.Console.error(message+' (<a href="'+url+'">'+url+'</a> #'+line+')');return false;}}else{if(window._onerror instanceof Function){window.onerror=window._onerror;}}}catch(e){}}});document.addLoader(function(){window.Console=new Mohawk.UI.Console();window.Console.append();window.Console.regKey();window.Console.handleErrors(true);});Mohawk.Loader.addCss('progress.css');Mohawk.UI.Progress=new Class({element:null,text:null,loading:false,__construct:function(){var element=document.createElement('DIV');element.addClass('loading');self.element=element;self.element.onmouseover=function(){if(!self.loading){self.element.collapse(Mohawk.Effects.vanish);}}
var text=document.createElement('P');element.appendChild(text);self.text=text;self.element.collapse();},appendTo:function(node){node.appendChild(self.element);},append:function(){self.appendTo(document.body);},load:function(text){self.element.display();Mohawk.Dragdrop.bringToFront(self.element);self.text.innerHTML=text;self.text.addClass('active');self.loading=true;},done:function(text,hide){self.element.display();Mohawk.Dragdrop.bringToFront(self.element);self.text.setHTML(text);self.text.removeClass('active');if(hide){self.element.collapse(Mohawk.Effects.vanish);}
self.loading=false;}});document.addLoader(function(){window.Progress=new Mohawk.UI.Progress;Progress.append();});var Auth=new Authorization;
Mohawk.Utils.Cookie=new Singletone({STORAGE_DOCUMENT_COOKIE:'document.cookie',STORAGE_WINDOW_NAME:'window.name',storage:null,__construct:function(){self.storage=self.STORAGE_DOCUMENT_COOKIE;},set:function(name,value,expires,path,domain,secure){var cookie=name+'='+escape(Ajax.prepare(value));if(expires){cookie+='; max-age='+expires;}
cookie+='; path='+(path||'/');if(domain){cookie+='; domain='+domain;}
if(secure){cookie+='; secure';}
switch(self.storage){case self.STORAGE_DOCUMENT_COOKIE:document.cookie=cookie;break;case self.STORAGE_WINDOW_NAME:top.name=cookie;break;}},get:function(name){var cookie='';switch(self.storage){case self.STORAGE_DOCUMENT_COOKIE:cookie=document.cookie;break;case self.STORAGE_WINDOW_NAME:cookie=top.name;break;}
var tuples=cookie.split(';');var value=null;for(var i=0;i<tuples.length;i++){var tuple=tuples[i].toString().trim().split('=');if(tuple[0].toString().trim()==name){value=Ajax.parse_url('data='+unescape(tuple[1]));break;}};return value==null||value.data==null?null:value.data;}});window.htmlspecialchars=function(str){str=String(str);str=str.replace(/&/g,'&amp;');str=str.replace(/</g,'&lt;');str=str.replace(/>/g,'&gt;');return str;};window.nl2br=function(str){return str.replace(/\r\n|\n\r|\n|\r/g,'<br />');};function calculate_time_zone(){var now=new Date();var jan1=new Date(now.getFullYear(),0,1,0,0,0,0);var temp=jan1.toGMTString();var jan2=new Date(temp.substring(0,temp.lastIndexOf(' ')-1));return(jan1-jan2)/1000/3600;}
function showLogin()
{try{ID('login-form').removeClass('hidden');ID('login-form').style.left=(document.size().width-ID('login-form').offsetWidth)/2+'px';ID('login-form').style.marginLeft='0px';ID('reg-form-container').addClass('hidden');ID('confirm-form-container').addClass('hidden');ID('recovery-form-container').addClass('hidden');}finally{}}
function showConfirmation()
{try{ID('confirm-form-container').removeClass('hidden');ID('confirm-form-container').style.left=(document.size().width-ID('confirm-form-container').offsetWidth)/2+'px';ID('confirm-form-container').style.marginLeft='0px';ID('login-form').addClass('hidden');ID('reg-form-container').addClass('hidden');}finally{}}
function showRecovery()
{try{ID('recovery-form-container').removeClass('hidden');ID('recovery-form-container').style.left=(document.size().width-ID('recovery-form-container').offsetWidth)/2+'px';ID('recovery-form-container').style.marginLeft='0px';ID('login-form').addClass('hidden');}finally{}}
function showRegistration()
{try{ID('reg-form-container').removeClass('hidden');ID('reg-form-container').style.left=(document.size().width-ID('reg-form-container').offsetWidth)/2+'px';ID('reg-form-container').style.marginLeft='0px';ID('login-form').addClass('hidden');ID('confirm-form-container').addClass('hidden');ID('recovery-form-container').addClass('hidden');var select=ID('reg-timezone');if(select.value===''){var zone=calculate_time_zone();for(var i=0;i<select.options.length;i++){if(select.options[i].value==zone){select.options[i].selected=true;break;}}}}finally{}}
function hideLogin()
{try{ID('login-form').addClass('hidden');}finally{}}
function hideRegistration()
{try{ID('reg-form-container').addClass('hidden');}finally{}}
function hideConfirmation()
{try{ID('confirm-form-container').addClass('hidden');}finally{}}
function hideRecovery()
{try{ID('recovery-form-container').addClass('hidden');}finally{}}
function showSettings()
{try{ID('settings-form').removeClass('hidden');ID('settings-form').style.left=(document.size().width-ID('settings-form').offsetWidth)/2+'px';ID('settings-form').style.marginLeft='0px';var select=ID('field-timezone');if(select.value===''){var zone=calculate_time_zone();for(var i=0;i<select.options.length;i++){if(select.options[i].value==zone){select.options[i].selected=true;break;}}}}finally{}}
function hideSettings()
{try{ID('settings-form').addClass('hidden');}finally{}}
function showCategories()
{try{ID('categories-form-container').removeClass('hidden');ID('categories-form-container').style.left=(document.size().width-ID('categories-form-container').offsetWidth)/2+'px';ID('categories-form-container').style.marginLeft='0px';}finally{}}
function hideCategories()
{try{ID('categories-form-container').addClass('hidden');}finally{}}
function demo(email)
{showLogin();var form=ID('login-form');form.setData({email:email,password:'demo'});form.onsubmit();}
function hideAnnouncement()
{ID('announcement').addClass('hidden');Mohawk.Utils.Cookie.set('tip-2',1);}
document.addLoader(function(){if(ENV.user&&ENV.user.comments=='off'){ID('menu-log').addClass('hidden');}
if(ID('announcement')){var announcement=ID('announcement');if(!Mohawk.Utils.Cookie.get('tip-2')){ID('announcement').removeClass('hidden');}}});
Date.DAY=3600*24*1000;Date.fromString=function(str){var datetime=str.trim().split(' ');var date=datetime[0].split('-');if(datetime.length>1){var time=datetime[1].split(':');}else{var time=[0,0,0];}
return new Date(date[0],date[1]-1,date[2],time[0]||0,time[1]||0,time[2]||0);};Date.prototype.getWeek=function(dowOffset){dowOffset=typeof(dowOffset)=='int'?dowOffset:0;var newYear=new Date(this.getFullYear(),0,1);var day=newYear.getDay()-dowOffset;day=(day>=0?day:day+7);var daynum=Math.floor((this.getTime()-newYear.getTime()-(this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000)+1;var weeknum;if(day<4){weeknum=Math.floor((daynum+day-1)/7)+1;if(weeknum>52){nYear=new Date(this.getFullYear()+1,0,1);nday=nYear.getDay()-dowOffset;nday=nday>=0?nday:nday+7;weeknum=nday<4?1:53;}}else{weeknum=Math.floor((daynum+day-1)/7);}
return weeknum;};Date.isLeapYear=function(year){return year%4?false:(year%100?true:(year%400?false:true));};Date.getWeekday=function(d,m,y){var date=new Date(y,m-1,d);var wd=date.getDay()||7;return wd;};Date.prototype.addDay=function(num){if(typeof(num)=='undefined'){num=1;}
var date=new Date(this.valueOf()+num*Date.DAY);return date;};Date.prototype.daysFrom=function(date){return Math.round((this.valueOf()-date.valueOf())/Date.DAY);};Date.prototype.getMonthWeek=function(){var first_date=new Date(this);first_date.setDate(1);return this.getWeek(1)-first_date.getWeek(1)+1;};Date.isTimeValid=function(str){var time_regexp=new RegExp('^(\\d{1,2})[\.-:](\\d{1,2})(?:[\.-:](\\d{1,2}))?$');return!!time_regexp.exec(str);};Date.parseTime=function(str){var time_regexp=new RegExp('^(\\d{1,2})[\.-:](\\d{1,2})(?:[\.-:](\\d{1,2}))?$');var hour='',mins='',secs='';if(time=time_regexp.exec(str)){hour=time[1];mins=time[2];secs=time[3];}else{hour='00';mins='00';secs='00';}
return{hour:hour,mins:mins,secs:secs};};window.Multicolor=new Class({pool:{},ready:true,to_load:0,onready:null,__construct:function(colors){self.ready=false;colors.forEach(function(key){self.setPool(key,this);});if(self.to_load==0){self.ready=true;}},setPool:function(pool,color){var frame=document.createElement('IFRAME');frame.poolName=pool;frame.obj=self;frame.src=static.api+color+'/';frame.addEvent('load',function(){var frame=window.event?window.event.srcElement:this;var doc=frame.contentDocument||frame.contentWindow.document;eval('var o = '+(doc.body.innerText||doc.body.textContent));frame.obj.pool[frame.poolName]=o.result;frame.obj.to_load--;if(frame.obj.to_load==0){frame.obj.ready=true;if(frame.obj.onready instanceof Function){frame.obj.onready.call();}}});frame.collapse();document.body.appendChild(frame);self.to_load++;},getFromPool:function(pool){var arr=self.pool[pool];var rnd=Math.rand(0,arr.length-1);return arr[rnd];}});window.Multicolor.api=URL.main+'api/multicolor/';Mohawk.Loader.addCss('calendar.css');Mohawk.Loader.extendLanguage({"today":"сегодня","working":"сейчас будет готово","error":"произошла ошибка","done":"готово","done_error":"что-то пошло не так","set_view":"установить","switch_view":"переключить вид","simple_view":"простой","calendar_view":"календарный","view_type":"вид","no_comments":"нет записей","code_for_blog":"код для блога","my_productivity":"моя продуктивность","calendar_description":"это ваш календарь на один год с момента регистрации, заполняйте каждый день в зависимости от того был ли день продуктивным","empty_cell_description":"пустая клетка означает, что вы еще не заполнили этот день","idle_cell_description":"день был не особо продуктивен","full_cell_description":"вы ударно поработали","empty_status":"пусто","idle_status":"непродуктивно","full_status":"продуктивно","day_was":"было","go_back":"назад","legend":"обозначения","date":"дата","status":"статус","comment":"комментарий","save":"сохранить","planning":"список дел","add_task":"добавить","for_today":"на сегодня","for_tomorrow":"на завтра","for_next_day":"на следующий день","for_date":"на","for_future":"на будущее","loading_images":"изображения загружаются","loaded_images":"изображения загружены","month":"месяц","year":"год","January":"Январь","February":"Февраль","March":"Март","April":"Апрель","May":"Май","June":"Июнь","July":"Июль","August":"Август","September":"Сентябрь","October":"Октябрь","November":"Ноябрь","December":"Декабрь","Jan":"Янв","Feb":"Фев","Mar":"Мар","Apr":"Апр","Jun":"Июн","Jul":"Июл","Aug":"Авг","Sep":"Сен","Oct":"Окт","Nov":"Ноя","Dec":"Дек","of_January":"Января","of_February":"Февраля","of_March":"Марта","of_April":"Апреля","of_May":"Мая","of_June":"Июня","of_July":"Июля","of_August":"Августа","of_September":"Сентября","of_October":"Октября","of_November":"Ноября","of_December":"Декабря","monday":"понедельник","tuesday":"вторник","wednesday":"среда","thursday":"четверг","friday":"пятница","saturday":"суббота","sunday":"воскресенье","mo":"пн","tu":"вт","we":"ср","th":"чт","fr":"пт","sa":"сб","su":"вс"})
Mohawk.UI.Calendar=new Class({element:null,input:null,date:null,__construct:function(){var today=new Date();self.today=new Date(today.getFullYear(),today.getMonth(),today.getDate());},build:function(year,month){var months=[{name:LNG.January,days:31},{name:LNG.February,days:Date.isLeapYear(year)?29:28},{name:LNG.March,days:31},{name:LNG.April,days:30},{name:LNG.May,days:31},{name:LNG.June,days:30},{name:LNG.July,days:31},{name:LNG.August,days:31},{name:LNG.September,days:30},{name:LNG.October,days:31},{name:LNG.November,days:30},{name:LNG.December,days:31}];var today=self.today;var cur=self.parse(self.input.value);var cur_date=new Date(cur.year,cur.month-1,cur.day);var table=document.createElement('TABLE');table.addClass('date-picker');table.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();return false;};var caption=document.createElement('CAPTION');var prev=document.createElement('a');prev.addClass('prev');prev.setHTML('&larr;');prev.href='#prev-month';prev.onclick=function(){if(month==1){month=12;year--;}else{month--;}
self.showDate(year,month);return false;};var next=document.createElement('a');next.addClass('next');next.setHTML('&rarr;');next.href='#next-month';next.onclick=function(){if(month==12){month=1;year++;}else{month++;}
self.showDate(year,month);return false;};var b=document.createElement('b');b.setHTML(months[month-1].name+' '+year);caption.appendChild(prev);caption.appendChild(b);caption.appendChild(next);table.appendChild(caption);var thead=document.createElement('THEAD');table.appendChild(thead);var thead_row=document.createElement('TR');thead.appendChild(thead_row);for(var i=0;i<static.weekdays.length;i++){var cell=document.createElement('TH');cell.setHTML(static.weekdays[i].name);cell.addClass(static.weekdays[i].holiday?'holiday':'');thead_row.appendChild(cell);}
var tbody=document.createElement('TBODY');table.appendChild(tbody);var day_of_week=self.weekday(1,month,year);var days_in_month=months[month-1].days;var row=document.createElement('TR');tbody.appendChild(row);for(var i=1;i<day_of_week;i++){var cell=document.createElement('TD');row.appendChild(cell);}
var i=1;for(;i<=days_in_month;i++){if((i+day_of_week-1)%7==1){row=document.createElement('TR');tbody.appendChild(row);}
var date=new Date(year,month-1,i);var cell=self.createCell(date);if(date.toString()==today.toString()){cell.addClass('today');}
if(date.toString()==cur_date.toString()){cell.addClass('current');}
row.appendChild(cell);}
i=(days_in_month+day_of_week-1)%7;if(!i){i=7;}
for(;i<7;i++){var cell=document.createElement('TD');row.appendChild(cell);}
return table;},createCell:function(day){var cell=document.createElement('TD');cell.data={date:day};cell.onmouseover=function(){cell.addClass('over');};cell.onmouseout=function(){cell.removeClass('over');};cell.onclick=function(){self.input.value=self.getDateId(cell.data.date);if(self.input.onchange instanceof Function){self.input.onchange.apply(self.input);}
self.hide();};cell.innerHTML=day.getDate();return cell;},weekday:function(d,m,y){var date=new Date(y,m-1,d);var wd=date.getDay()||7;return wd;},getDateId:function(date){var year=date.getFullYear();var month=date.getMonth()+1;var day=date.getDate();return''+year+'-'+(month<10?'0':'')+month+'-'+(day<10?'0':'')+day;},parse:function(str){var date_regexp=new RegExp('([0-9]{1,4})[\.\/-]([0-9]{1,2})[\.\/-]([0-9]{2}|\d{2})');if(date=date_regexp.exec(str)){var year=parseInt(date[1]);var month=date[2]*1;var day=date[3]*1;year=(year.toString().length==2)?(year<50?'20':'19').toString()+year:year;}else{var today=new Date;var day=today.getDate();var month=today.getMonth()+1;var year=today.getFullYear();}
return{day:day,month:month,year:year};},showDate:function(year,month){var table=self.build(year,month);if(self.element){self.element.replace(table);self.element=table;}else{self.element=table;self.append();}
self.show();},set:function(input){self.input=input;input._onfocus=input.onfocus;input.onfocus=function(){if(input._onfocus instanceof Function){input._onfocus.call(input);}
var date=self.parse(input.value);self.showDate(date.year,date.month,date.day);};input.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();return false;};},show:function(){if(document._ObjectToHide&&document._ObjectToHide!=self){document._ObjectToHide.doc_hide();}
document._ObjectToHide=self;self.element.style.left='-1000px';self.element.display();var left=self.input.coordinates().x;var pad=20;if(left+self.element.offsetWidth>document.size().width-pad){left=document.size().width-pad-self.element.offsetWidth;}
self.element.style.left=left+'px';self.element.style.top=self.input.coordinates().y+self.input.offsetHeight+'px';Dragdrop.bringToFront(self.element);document.addEvent('click',self.doc_hide);},doc_hide:function(){document._ObjectToHide.hide();document.removeEvent('click',document._ObjectToHide.doc_hide);},hide:function(){self.element.collapse();},append:function(element){(element||document.body).appendChild(self.element);}});Mohawk.UI.Calendar.set=function(element){var Calendar=new Mohawk.UI.Calendar();Calendar.set(element);return Calendar;};Mohawk.UI.Calendar.weekdays=[{name:LNG.mo,holiday:false},{name:LNG.tu,holiday:false},{name:LNG.we,holiday:false},{name:LNG.th,holiday:false},{name:LNG.fr,holiday:false},{name:LNG.sa,holiday:true},{name:LNG.su,holiday:true}];Mohawk.UI.List=new Class({name:'',element:null,onchange:function(){},toString:function(){return'List';},__construct:function(name,structure){self.name=name;self.element=document.createElement('UL');self.element.id=name;self.element.object=self;self.setChildren(structure);},setChildren:function(structure){self.element.removeChildren();for(var i=0;i<structure.length;i++){var node=self.createNode(structure[i]);if(i==(structure.length-1)){node.setLast();}
self.element.appendChild(node);}},createNode:function(data){var node=document.createElement('LI');node.id=self.getId(data.id);node.data=data;node.parent=self.element;node.innerHTML=data.title;node.getId=function(){return this.id;};node.isLast=function(){return node.hasClass('last');};node.setLast=function(){node.addClass('last');};node.notLast=function(){node.removeClass('last');};node.onmouseover=function(event){node.addClass('over');};node.onmouseout=function(event){node.removeClass('over');};return node;},getId:function(id){return self.name+'-'+id;},getNode:function(id){return ID(self.getId(id));},addNode:function(data){var node=self.createNode(data);self.element.appendChild(node);if(node.previousSibling){node.previousSibling.notLast();}
node.setLast();return node;},editNode:function(node,data){var node_data=node.data;data.forEach(function(i){node_data[i]=data[i];});var new_node=self.createNode(node_data);node.setClassesTo(new_node);node.replace(new_node);return new_node;},removeNode:function(node){if(node.isLast()){if(node.previousSibling){node.previousSibling.setLast();}}
node.remove();},appendTo:function(node){node.appendChild(self.element);}});Mohawk.UI.SortableList=Mohawk.UI.List.extend({node_margin:new Pixel(0,0),marker_size:{width:16,height:16},orientation:'vertical',target:null,__construct:function(name,data){parent.__construct(name,data);self.element.ondragover=function(event){event=Mohawk.DOM.event(event);var marker=this.object.findMarker(event);if(marker===false){this.object.removeMarker();}else{if(marker.after===true){this.object.setMarkerAfter(marker.node);}else{this.object.setMarkerBefore(marker.node);}}};self.element.ondragout=function(event){this.object.removeMarker();};self.element.ondrop=function(event){var self=this.object;var marker=self.findMarker(event);if(marker){if(marker.after===true){self.element.insertBefore(self.target,marker.node.nextSibling);}else{self.element.insertBefore(self.target,marker.node);}}
self.removeMarker();return marker;};},createNode:function(data){var node=parent.createNode(data);node.onmousedown=function(event){event=Mohawk.DOM.event(event);self.target=node;var clone=self.createClone(node);Dragdrop.setTarget(self.element);self.element.appendChild(clone);Dragdrop.pick(event,[clone]);return false;};return node;},createClone:function(node){var clone=node.cloneNode(true);clone.addClass(Dragdrop.css_class);clone.ondrop=function(){this.remove();};clone.onrelease=function(event){this.remove();};clone.dragX=false;clone.style.position='absolute';clone.style.left=node.offsetLeft-self.node_margin.x+'px';clone.style.top=node.offsetTop-self.node_margin.y+'px';clone.style.width=node.offsetWidth+'px';clone.style.height=node.offsetHeight+'px';clone.setOpacity(0.75);clone.cloned=true;clone.proto=node;return clone;},findMarker:function(event){event=Mohawk.DOM.event(event);var marker=true;var last=false;var prev=false;var cur=event.cursor();for(var i=0;i<self.element.childNodes.length;i++){var child=self.element.childNodes[i];if(!child.cloned){last=child;var coord=child.coordinates();if(cur.y>coord.y-child.offsetHeight/2){prev=child;}else{return prev?{node:prev,after:false}:false;}}}
return{node:last,after:cur.y>last.coordinates().y};},createMarker:function(x,y){if(!self.marker){var marker=document.createElement('DIV');marker.addClass('marker');marker.style.position='absolute';document.body.appendChild(marker);Dragdrop.bringToFront(marker);self.marker=marker;}
self.marker.style.left=x+'px';self.marker.style.top=y+'px';},setMarkerBefore:function(node){var x=node.coordinates().x-self.node_margin.x-self.marker_size.width/2;var y=node.coordinates().y-self.marker_size.height/2;self.createMarker(x,y);},setMarkerAfter:function(node){var x=node.coordinates().x+self.node_margin.x-self.marker_size.width/2;var y=node.coordinates().y+node.offsetHeight-self.marker_size.height/2;self.createMarker(x,y);},removeMarker:function(){if(self.marker){self.marker.remove();self.marker=null;}}});window.TaskList=Mohawk.UI.SortableList.extend({node_margin:new Pixel(0,0),today:null,date:null,api:null,createNode:function(data){if(typeof(data.title)=='undefined'){data.title='';}
if(typeof(data.text)=='undefined'){data.text='';}
var node=parent.createNode(data);node.setHTML('');if(data.text.match(/!/)){node.addClass('important');}
var input_id=Mohawk.FormsInterface.createInput('hidden','task['+data.id+'][id]',data.id);node.appendChild(input_id);var textarea=Mohawk.FormsInterface.createInput('textarea','task['+data.id+'][text]',data.text||'');textarea.updateHeight=function(){textarea.style.height='0px';textarea.style.height=textarea.scrollHeight-2+'px';};textarea.onkeydown=function(event){event=Mohawk.DOM.event(event);var key_code=event.key();switch(key_code){case 38:if(node.previousSibling){node.previousSibling.getElementsByTagName('textarea')[0].focus();}
break;case 40:if(node.nextSibling){node.nextSibling.getElementsByTagName('textarea')[0].focus();}
break;case 13:var new_node=self.createNode({id:'new'+Math.rand(1e9,1e12),title:''});self.element.insertAfter(new_node,node);node.notLast();new_node.getElementsByTagName('textarea')[0].focus();return false;break;}
textarea.updateHeight();};textarea.onchange=function(){textarea.updateHeight();};textarea.onfocus=function(){textarea.addClass('focus');};textarea.onblur=function(){textarea.removeClass('focus');};node.appendChild(textarea);var sort_btn=document.createElement('IMG');sort_btn.src=URL.img+'site/sort.png';sort_btn.addClass('sort');sort_btn.onmousedown=node.onmousedown;sort_btn.ondragstart=function(event){event=Mohawk.DOM.event(event);event.preventDefault();return false;};node.appendChild(sort_btn);node.onmousedown=null;var del_btn=document.createElement('IMG');del_btn.src=URL.img+'site/trash.png';del_btn.addClass('delete');del_btn.onclick=function(){node.remove();};node.appendChild(del_btn);return node;},createClone:function(node){var clone=parent.createClone(node);clone.getElementsByTagName('textarea')[0].value=node.getElementsByTagName('textarea')[0].value;return clone;},add:function(data){var focus=false;if(typeof(data)=='undefined'){focus=true;data={};}
if(typeof(data.id)=='undefined'){data.id='new'+Math.rand(1e9,1e12);}
var node=self.addNode(data);if(focus){node.getElementsByTagName('textarea')[0].focus();}
node.getElementsByTagName('textarea')[0].updateHeight();},setChildren:function(structure){parent.setChildren(structure);var textarea=self.element.getElementsByTagName('TEXTAREA');for(var i=0;i<textarea.length;i++){if(textarea[i].updateHeight instanceof Function){textarea[i].updateHeight();}}}});window.MOVE_TASK="<ul class=\"fields\">"+"\n    <li>"+"\n        <input type=\"radio\" name=\"task[{%id}][move-date]\" id=\"task-{%id}-same\" value=\"same\"{%if default_value == 'same'} checked=\"checked\"{%end} />"+"\n        <label for=\"task-{%id}-same\">{%if today == date}{%LNG.for_today}{%else}{%if ENV.language != 'kr'}{%LNG.for_date} {%date}{%else}{%date}{%LNG.for_date}{%end}{%end}</label>"+"\n    </li>"+"\n    <li>"+"\n        <input type=\"radio\" name=\"task[{%id}][move-date]\" id=\"task-{%id}-next\" value=\"next\" />"+"\n        <label for=\"task-{%id}-next\">{%if today == date}{%LNG.for_tomorrow}{%else}{%LNG.for_next_day}{%end}</label>"+"\n    </li>"+"\n    <li>"+"\n        <input type=\"radio\" name=\"task[{%id}][move-date]\" id=\"task-{%id}-future\" value=\"future\"{%if default_value == 'future'} checked=\"checked\"{%end} />"+"\n        <label for=\"task-{%id}-future\">{%LNG.for_future}</label>"+"\n    </li>"+"\n    <li>"+"\n        <input type=\"radio\" name=\"task[{%id}][move-date]\" id=\"task-{%id}-date\" value=\"date\" />"+"\n        {%if ENV.language != 'kr'}"+"\n        <label for=\"task-{%id}-input-date\">{%LNG.for_date}:</label>"+"\n        {%end}"+"\n        <input type=\"text\" id=\"task-{%id}-input-date\" name=\"task[{%id}][input-date]\" class=\"date\" onfocus=\"ID('task-{%id}-date').checked = true\" value=\"{%date}\" />"+"\n        {%if ENV.language == 'kr'}"+"\n        <label for=\"task-{%id}-input-date\">{%LNG.for_date}</label>"+"\n        {%end}"+"\n    </li>"+"\n</ul>";window.TodoList=TaskList.extend({date:null,default_value:'same',__construct:function(id,structure,date){self.date=date;parent.__construct(id,structure);},createNode:function(data){var node=parent.createNode(data);var checkbox=Mohawk.FormsInterface.createInput('checkbox','task['+data.id+'][status]','done');checkbox.addClass('done');checkbox.onclick=function(){if(checkbox.checked){node.addClass('checked');}else{node.removeClass('checked');}};node.insertFirst(checkbox);checkbox.checked=data.status=='done';checkbox.onclick();var div;window.hideTaskMover=function(){if(document.taskMover){document.taskMover.addClass('hidden');document.taskMover.btn.removeClass('move-clicked');document.taskMover=null;}
document.removeEvent('click',window.hideTaskMover);};var move_btn=document.createElement('IMG');move_btn.src=URL.img+'site/move.png';move_btn.addClass('move');move_btn.onclick=function(event){event=Mohawk.DOM.event(event);var btn=null;if(document.taskMover){btn=document.taskMover.btn;document.taskMover.addClass('hidden');document.taskMover.btn.removeClass('move-clicked');document.taskMover=null;}
if(btn==null||btn!=move_btn){div.removeClass('hidden');var x=move_btn.offsetLeft;if(OPERA||(IE&&document.documentMode>=8)){x-=1;}
if(x+div.offsetWidth>document.size().width){x=move_btn.offsetLeft+move_btn.offsetWidth-div.offsetWidth;x+=2;}
var y=move_btn.offsetTop;if(IE&&(typeof(document.documentMode)=='undefined'||document.documentMode<8)){y=move_btn.coordinates().y-move_btn.ancestorTag('UL').firstTag('LI').coordinates().y;}
if(OPERA||(IE&&document.documentMode>=8)){y-=1;}
div.style.top=y+move_btn.offsetHeight+'px';div.style.left=x+'px';move_btn.addClass('move-clicked');document.taskMover=div;document.taskMover.btn=move_btn;document.addEvent('click',window.hideTaskMover);}
event.stopPropagation();};node.appendChild(move_btn);Template.assign('id',data.id);Template.assign('today',Data.today);Template.assign('date',self.date);Template.assign('default_value',self.default_value);div=document.createElement('DIV');div.addClass('move-task','hidden');div.setHTML(Template.transform(MOVE_TASK));div.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();};Mohawk.UI.Calendar.set(div.getElementsByClassName('date')[0]);node.appendChild(div);return node;},createClone:function(node){var clone=parent.createClone(node);clone.getElementsByTagName('textarea')[0].value=node.getElementsByTagName('textarea')[0].value;return clone;}});window.CalendarForm=new Class({api:'',__construct:function(api){self.api=api;self.EVENT_SAVED=api+'-saved';},create:function(item){var date=item.date;var format=ENV.language=='ru'?'l, j F Y':'l, F j, Y';item.comment=item.comment||'';item.date=Format.date(date,'Y-m-d');Template.assign('date_localized',Format.date(date,format));var div=ID('comment-form-container');if(!div){var div=document.createElement('DIV');div.id='comment-form-container';div.addClass('common-form-container');div.addClass('draggable');document.body.appendChild(div);div.style.left=(document.size().width-div.offsetWidth)/2+'px';}else{}
div.setHTML(Template.transform(CALENDAR_COMMENT));if(date>Date.fromString(Data.today)){div.getElementsByClassName('status')[0].addClass('hidden');}else{div.getElementsByClassName('status')[0].removeClass('hidden');}
if(ENV.user.planning=='on'){self.Todo=new TodoList('task-list',[],item.date);ID('task-list').replace(self.Todo.element);item.tasks.forEach(function(){self.Todo.add(this);});}
var form=div.getElementsByTagName('FORM')[0];form.Form=self;form.setData(item,'data');},hide:function(){try{var container=ID('comment-form-container');container.remove();}finally{}},save:function(form){var req=new Ajax(self.api,Ajax.METHOD_POST);req.responseHandler=function(req){if(req.data.error){Progress.load(LNG.Error_calendar);}else{try{var item=req.data.item;if(form.getData()['data[date]']==item.date){self.hide();}
if(!Data.calendar[item.date]){Data.calendar[item.date]=item;}else{extend(Data.calendar[item.date],item);}
var tasks=req.data.task;if(typeof(tasks)!='undefined'){if(empty(tasks)){tasks=[];}else{if(typeof(tasks[0])=='undefined'){tasks=[tasks];}else{tasks=tasks.values();}}
Data.calendar[item.date].tasks=[];tasks.forEach(function(){if(this.date!='NULL'){if(!Data.calendar[this.date]){Data.calendar[this.date]={date:this.date,tasks:[]};}
Data.calendar[this.date].tasks.push(this);}else{Data.tasks.push(this);}});}
Observer.fire(self.EVENT_SAVED,item,tasks);Progress.done(LNG.Done,true);}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send(form.getData());Progress.load(LNG.Working);}});Mohawk.Loader.extendLanguage({"reminder":"напоминание","reminders":"напоминания","remind_to":"на","remind_before":"за","to_beginning":"до начала","add_reminder":"добавить напоминание","_1_minute":"1 минуту","_5_minutes":"5 минут","_10_minutes":"10 минут","_15_minutes":"15 минут","_20_minutes":"20 минут","_25_minutes":"25 минут","_30_minutes":"30 минут","_45_minutes":"45 минут","_1_hour":"1 час","_2_hours":"2 часа","_3_hours":"3 часа","_4_hours":"4 часа","_5_hours":"5 часов","_6_hours":"6 часов","_12_hours":"12 часов","_1_day":"1 день","_2_days":"2 дня","_3_days":"3 дня","_4_days":"4 дня","_5_days":"5 дней","_6_days":"6 дней","_1_week":"1 неделю","_2_weeks":"2 недели","_3_weeks":"3 недели","_1_month":"1 месяц"})
window.Reminders=Mohawk.UI.List.extend({createNode:function(data){data.title='';var node=parent.createNode(data);var input_id=FormsInterface.createInput('hidden','reminder['+data.id+'][id]',data.id);node.appendChild(input_id);var text_to=document.createTextNode(LNG.remind_to);var options_transport={'email':LNG.to_email};if(ENV.user.jabber){options_transport['jabber']=LNG.to_jabber;}
if(ENV.user.icq){options_transport['icq']=LNG.to_icq;}
if(ENV.user.msn){options_transport['msn']=LNG.to_msn;}
if(ENV.user.yahoo){options_transport['yahoo']=LNG.to_yahoo;}
if(ENV.user.phone){options_transport['sms']=LNG.to_sms;}
var select_transport=FormsInterface.createInput('select','reminder['+data.id+'][transport]',data.transport,options_transport);node.appendChild(text_to);node.appendChild(document.createTextNode(' '));node.appendChild(select_transport);var text_before=document.createTextNode(LNG.remind_before);var options_offset={'1_minute':LNG._1_minute,'5_minutes':LNG._5_minutes,'10_minutes':LNG._10_minutes,'15_minutes':LNG._15_minutes,'20_minutes':LNG._20_minutes,'25_minutes':LNG._25_minutes,'30_minutes':LNG._30_minutes,'45_minutes':LNG._45_minutes,'1_hour':LNG._1_hour,'2_hours':LNG._2_hours,'3_hours':LNG._3_hours,'4_hours':LNG._4_hours,'5_hours':LNG._5_hours,'6_hours':LNG._6_hours,'12_hours':LNG._12_hours,'1_day':LNG._1_day,'2_days':LNG._2_days,'3_days':LNG._3_days,'4_days':LNG._4_days,'5_days':LNG._5_days,'6_days':LNG._6_days,'1_week':LNG._1_week,'2_weeks':LNG._2_weeks,'3_weeks':LNG._3_weeks,'1_month':LNG._1_month};var select_offset=FormsInterface.createInput('select','reminder['+data.id+'][offset]',data.offset,options_offset);var text_beginning=document.createTextNode(LNG.to_beginning);node.appendChild(document.createTextNode(' '));node.appendChild(text_before);node.appendChild(document.createTextNode(' '));node.appendChild(select_offset);node.appendChild(document.createTextNode(' '));node.appendChild(text_beginning);var img_delete=document.createElement('IMG');img_delete.src=URL.img+'site/trash.png';img_delete.addClass('delete');img_delete.onclick=function(){node.remove();};node.appendChild(img_delete);return node;},add:function(data){if(!data){data={};}
if(typeof(data.id)=='undefined'){data.id='new'+Math.rand(1e9,1e12);}
self.addNode(data);}});Mohawk.Loader.addCss('calendar.css');Mohawk.UI.TimePicker=new Class({display_seconds:false,className:'time',__construct:function(input,display_seconds){self.display_seconds=!!display_seconds;self.input=input;input.onfocus=function(){self.show();};if(input.onchange){input._onchange=input.onchange;}
input.onchange=function(){if(input.value.length){var time=self.parse(input.value);input.value=self.format(time.hour,time.mins,time.secs);}else{input.value='';}
if(typeof(input._onchange)!='undefined'&&input._onchange instanceof Function){input._onchange.call(input);}};input.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();return false;};},show:function(){if(document._ObjectToHide&&document._ObjectToHide!=self){document._ObjectToHide.doc_hide();}
document._ObjectToHide=self;var list=document.createElement('UL');list.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();return false;};list.addClass('time-picker');for(var h=0;h<=23;h++){for(var m=0;m<60;m+=30){var time=self.format(h,m);var item=document.createElement('LI');item.time=time;item.setHTML(time);item.onmouseover=function(){this.addClass('over');};item.onmouseout=function(){this.removeClass('over');};item.onmousedown=function(){self.input.value=this.time;if(typeof(self.input._onchange)!='undefined'&&self.input._onchange instanceof Function){self.input._onchange.call(self.input);}
self.hide();};list.appendChild(item);}}
list.style.left=self.input.coordinates().x+'px';list.style.top=self.input.coordinates().y+self.input.offsetHeight+'px';document.body.appendChild(list);Dragdrop.bringToFront(list);document.addEvent('click',self.doc_hide);self.element=list;},doc_hide:function(){document._ObjectToHide.hide();document.removeEvent('click',document._ObjectToHide.doc_hide);},hide:function(){if(self.element){self.element.remove();}},format:function(hour,mins,secs){var hour=hour.toString().pad(2,'0');var mins=mins.toString().pad(2,'0');if(self.display_seconds){var secs=secs.toString().pad(2,'0');}
return hour+':'+mins+(self.display_seconds?':'+secs:'');},parse:function(str){var time_regexp=new RegExp('^(\\d{1,2})[\.-:](\\d{1,2})(?:[\.-:](\\d{1,2}))?$');var hour='',mins='',secs='';if(time=time_regexp.exec(str)){hour=time[1];mins=time[2];secs=time[3];}else{hour='00';mins='00';secs='00';}
return{hour:hour,mins:mins,secs:secs};}});Mohawk.UI.TimePicker.set=function(input,display_seconds){return new Mohawk.UI.TimePicker(input,display_seconds);};Mohawk.Loader.addCss('color-picker.css');Mohawk.UI.ColorPicker=new Class({element:null,indicator:null,input:null,color:false,__construct:function(colorset){self.element=document.createElement('TABLE');self.element.addClass('color-picker');self.hide();if(!(colorset[0]instanceof Array)){colorset=[colorset];}
for(var i=0;i<colorset.length;i++){var row=self.element.insertRow(self.element.rows.length);for(var j=0;j<colorset[i].length;j++){var cell=row.insertCell(row.cells.length);cell.value=colorset[i][j];cell.object=self;cell.style.backgroundColor='#'+colorset[i][j];cell.onmouseover=function(){this.addClass('over');};cell.onmouseout=function(){this.removeClass('over');};cell.onmousedown=function(){self.input.value=this.value;self.input.onchange();self.hide();};cell.title=cell.value;}}
self.indicator=document.createElement('SPAN');self.indicator.setHTML('&nbsp;');self.indicator.addClass('color-indicator');},set:function(input){self.input=input;input.onfocus=function(event){self.show();};input.onclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();return false;};input.onblur=function(){self.hide();};input.onchange=function(){if(input.value.length){self.indicator.style.backgroundColor='#'+this.value;}};self.indicator.onclick=function(event){self.show();event=Mohawk.DOM.event(event);event.stopPropagation();return false;};input.onchange();},show:function(){if(document._ObjectToHide&&document._ObjectToHide!=self){document._ObjectToHide.doc_hide();}
document._ObjectToHide=self;self.element.display();var x=self.indicator.coordinates().x;if(document.size().width<x+self.element.offsetWidth){x-=self.element.offsetWidth-self.indicator.offsetWidth;}
self.element.style.left=x+'px';self.element.style.top=self.indicator.coordinates().y+self.indicator.offsetHeight+'px';Dragdrop.bringToFront(self.element);document.addEvent('click',self.doc_hide);},hide:function(){self.element.collapse();},doc_hide:function(){document._ObjectToHide.hide();document.removeEvent('click',document._ObjectToHide.doc_hide);},append:function(element){(element||document.body).appendChild(self.element);self.input.parentNode.insertAfter(self.indicator,self.input);}});Mohawk.UI.ColorPicker.generate=function(n){var colorset=[];var color=[];for(var r=-1;r<256;r+=n){var row=[];color[0]=(r>0?r:0).toHex().pad(2,'0',false);for(var g=-1;g<256;g+=n){color[1]=(g>0?g:0).toHex().pad(2,'0',false);for(var b=-1;b<256;b+=n){color[2]=(b>0?b:0).toHex().pad(2,'0',false);row.push(color.join(''));}}
colorset.push(row);}
return colorset;};Mohawk.UI.ColorPicker.set=function(input,colors){var picker=new Mohawk.UI.ColorPicker(colors);picker.set(input);picker.append();return picker;};Mohawk.Loader.addCss('tabset.css');Mohawk.UI.Tabset=new Class({element:null,current:null,tabs:[],__construct:function(tabs,attributes){self.element=document.createElement('DL');if(!IE&&attributes&&attributes.length){for(var i=0;i<attributes.length;i++){self.element.setAttribute(attributes[i].nodeName,attributes[i].nodeValue);}}
self.element.addClass.call(self.element,'tabset');self.element.object=self;var max_height=0;self.tabs=[];for(var i=0;i<tabs.length;i++){var tab={title:self.createTabTitle(i,tabs[i].title),content:self.createTabContent(i,tabs[i].content)};self.tabs.push(tab);if(i){self.element.insertBefore(tab.title,self.tabs[i-1].title.nextTag('DD'));}else{self.element.appendChild(tab.title);}
self.element.appendChild(tab.content);tab.content.collapse();}
self.tabs[0].title.open();},createTabTitle:function(index,title){var node=document.createElement('DT');node.setHTML(title);node.addClass('tab');node.data={index:index,title:title};node.getContent=function(){return self.tabs[node.data.index].content;};node.onclick=function(){node.open();};node.open=function(){if(self.current){self.current.close();}
self.current=node;node.addClass('active');node.getContent().display();};node.close=function(){node.removeClass('active');node.getContent().collapse();};return node;},createTabContent:function(index,content){var node=document.createElement('DD');node.setHTML(content);node.addClass('tab');node.data={index:index,content:content};node.getTitle=function(){return self.tabs[node.data.index].title;};return node;}});Mohawk.UI.Tabset.fromElement=function(element){var tabs=[];var last_dt=0;var last_dd=0;for(var i=0;i<element.childNodes.length;i++){if(element.childNodes[i].tagName){switch(element.childNodes[i].tagName.toUpperCase()){case'DT':if(!tabs[last_dt]){tabs[last_dt]={};}
tabs[last_dt].title=element.childNodes[i].innerHTML;last_dt++;break;case'DD':if(!tabs[last_dd]){tabs[last_dd]={};}
tabs[last_dd].content=element.childNodes[i].innerHTML;last_dd++;break;}}}
var tabset=new Mohawk.UI.Tabset(tabs,element.attributes);return tabset;};window.EVENT_FORM="<form id=\"event-form\" class=\"common-form window draggable w-draggable\" action=\"{%URL.self}\" method=\"post\" onsubmit=\"this.Form.save(this); return false;\">"+"\n    <div class=\"top\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n    <div class=\"middle\">"+"\n        <div class=\"left\">"+"\n            <div class=\"right\">"+"\n                <div class=\"center\">"+"\n                    <div class=\"drag\" onmousedown=\"Dragdrop.pick(event)\"></div>"+"\n                    <fieldset class=\"content\">"+"\n                        <dl class=\"tabset\">"+"\n                            <dt>{%LNG.Event}</dt>"+"\n                            <dd>"+"\n                                <fieldset>"+"\n                                    <input type=\"hidden\" name=\"id\" />"+"\n                                    <ul class=\"fields fields-column\">"+"\n                                        <li>"+"\n                                            <label for=\"field-title\">{%LNG.Title}:</label>"+"\n                                            <input id=\"field-title\" class=\"text long\" name=\"data[title]\" />"+"\n                                        </li>"+"\n                                        <li>"+"\n                                            <label for=\"field-recurrence\">{%LNG.Repeat}:</label>"+"\n                                            <select id=\"field-recurrence\" class=\"long\" name=\"data[recurrence]\" onchange=\"this.form.Form.setRecurrence(this.options[this.selectedIndex].value)\">"+"\n                                                <option value=\"none\">{%LNG.dont_repeat}</option>"+"\n                                                <option value=\"daily\">{%LNG.daily}</option>"+"\n                                                <option value=\"weekly\">{%LNG.weekly}</option>"+"\n                                                <option value=\"monthly\">{%LNG.monthly}</option>"+"\n                                                <option value=\"yearly\">{%LNG.yearly}</option>"+"\n                                            </select>"+"\n                                        </li>"+"\n                                    </ul>"+"\n                                    <ul class=\"fields fields-column\">"+"\n                                        <li>"+"\n                                            <label for=\"field-startdate\">{%LNG.Date}:</label>"+"\n                                            <input id=\"field-startdate\" class=\"date\" name=\"data[startdate]\" />"+"\n                                            <input id=\"field-starttime\" class=\"time\" name=\"data[starttime]\" />"+"\n                                            <label for=\"field-enddate\" class=\"inline\">&mdash;</label>"+"\n                                            <input id=\"field-enddate\" class=\"date\" name=\"data[enddate]\" />"+"\n                                            <input id=\"field-endtime\" class=\"time\" name=\"data[endtime]\" />"+"\n                                        </li>"+"\n                                        <li>"+"\n                                            <label for=\"field-category\">{%LNG.Category}:</label>"+"\n                                            <select id=\"field-category\" class=\"long\" name=\"data[category]\">"+"\n                                                <option value=\"0\">{%LNG.no_category}</option>"+"\n                                                {%for category in categories}"+"\n                                                <option value=\"{%category.i}\">{%category.t}</option>"+"\n                                                {%end}"+"\n                                            </select>"+"\n                                        </li>"+"\n                                    </ul>"+"\n                                    <ul class=\"fields\">"+"\n                                        <li id=\"event-recurrence\">"+"\n                                            <fieldset class=\"hidden\" id=\"recurrence-daily\">"+"\n                                                <ul class=\"fields\">"+"\n                                                    <li>"+"\n                                                        <label for=\"field-period\" class=\"inline\">{%LNG.Every_day}</label>"+"\n                                                        <select id=\"field-period\" name=\"data[period]\">"+"\n                                                            {%for i in periods}<option value=\"{%i}\">{%i}</option>{%end}"+"\n                                                        </select>"+"\n                                                        <span>{%LNG.days}</span>"+"\n                                                    </li>"+"\n                                                </ul>"+"\n                                            </fieldset>"+"\n                                            <fieldset class=\"hidden\" id=\"recurrence-weekly\">"+"\n                                                <ul class=\"fields\">"+"\n                                                    <li>"+"\n                                                        <label for=\"field-period\" class=\"inline\">{%LNG.Every_week}</label>"+"\n                                                        <select id=\"field-period\" name=\"data[period]\">"+"\n                                                            {%for i in periods}<option value=\"{%i}\">{%i}</option>{%end}"+"\n                                                        </select>"+"\n                                                        <span>{%LNG.weeks}</span>"+"\n                                                    </li>"+"\n                                                    <li>"+"\n                                                        <label for=\"field-weekday\" class=\"inline\">{%LNG.On_weekdays}:</label>"+"\n                                                        {%for day in weekdays}"+"\n                                                        <input id=\"field-weekday-{%day.n}\" type=\"checkbox\" value=\"1\" name=\"data[weekday][{%day.n}]\" />"+"\n                                                        <label for=\"field-weekday-{%day.n}\" class=\"inline\">{%day.t}</label>"+"\n                                                        {%end}"+"\n                                                    </li>"+"\n                                                </ul>"+"\n                                            </fieldset>"+"\n                                            <fieldset class=\"hidden\" id=\"recurrence-monthly\">"+"\n                                                <ul class=\"fields\">"+"\n                                                    <li>"+"\n                                                        <label for=\"field-period\" class=\"inline\">{%LNG.Every_month}</label>"+"\n                                                        <select id=\"field-period\" name=\"data[period]\">"+"\n                                                            {%for i in periods}<option value=\"{%i}\">{%i}</option>{%end}"+"\n                                                        </select>"+"\n                                                        <span>{%LNG.months}</span>"+"\n                                                    </li>"+"\n                                                    <li>"+"\n                                                        <input id=\"field-monthly-option-date\" type=\"radio\" value=\"date\" name=\"data[monthly_option]\" />"+"\n                                                        <label for=\"field-monthly-option-date\" class=\"inline\">{%LNG.monthly_by_date}: <span>&nbsp;</span></label>"+"\n                                                    </li>"+"\n                                                    <li>"+"\n                                                        <input id=\"field-monthly-option-weekday\" type=\"radio\" value=\"weekday\" name=\"data[monthly_option]\" />"+"\n                                                        <label for=\"field-monthly-option-weekday\" class=\"inline\">{%LNG.monthly_by_weekday}: <span>&nbsp;</span></label>"+"\n                                                    </li>"+"\n                                                    <li>"+"\n                                                        <input id=\"field-monthly-option-weekday2\" type=\"radio\" value=\"lastweek\" name=\"data[monthly_option]\" />"+"\n                                                        <label for=\"field-monthly-option-weekday2\" class=\"inline\">{%LNG.monthly_by_weekday}: <span>&nbsp;</span></label>"+"\n                                                    </li>"+"\n                                                </ul>"+"\n                                            </fieldset>"+"\n                                            <fieldset class=\"hidden\" id=\"recurrence-yearly\">"+"\n                                                <ul class=\"fields\">"+"\n                                                    <li>"+"\n                                                        <label for=\"field-period\" class=\"inline\">{%LNG.Every_year}</label>"+"\n                                                        <select id=\"field-period\" name=\"data[period]\">"+"\n                                                            {%for i in periods}<option value=\"{%i}\">{%i}</option>{%end}"+"\n                                                        </select>"+"\n                                                        <span>{%LNG.years}</span>"+"\n                                                    </li>"+"\n                                                </ul>"+"\n                                            </fieldset>"+"\n                                            <fieldset class=\"hidden\" id=\"recurrence-ends\">"+"\n                                                <ul class=\"fields\">"+"\n                                                    <li>"+"\n                                                        <input id=\"field-repeat-till-check\" type=\"checkbox\" value=\"1\" name=\"data[repeat_till_check]\" onclick=\"ID('field-repeat-till').disabled = !this.checked\" />"+"\n                                                        <label for=\"field-repeat-till-check\" class=\"inline\">{%LNG.Repeat_till}</label>"+"\n                                                        <input id=\"field-repeat-till\" class=\"date\" name=\"data[repeat_till]\" onfocus=\"ID('field-repeat-till-check').checked = true\" />"+"\n                                                    </li>"+"\n                                                </ul>"+"\n                                            </fieldset>"+"\n                                        </li>"+"\n                                        <li>"+"\n                                            <label for=\"field-text\">{%LNG.Text}:</label>"+"\n                                            <textarea id=\"field-text\" name=\"data[text]\" rows=\"4\" cols=\"10\"></textarea>"+"\n                                        </li>"+"\n                                    </ul>"+"\n                                </fieldset>"+"\n                            </dd>"+"\n                            <dt>{%LNG.Tasks}</dt>"+"\n                            <dd>"+"\n                                <fieldset>"+"\n                                    <input type=\"hidden\" name=\"task-enabled\" value=\"true\" />"+"\n                                    <div id=\"task-list\"></div>"+"\n                                    <div class=\"button\"><a href=\"#add\" class=\"script\" onclick=\"this.ancestorTag('FORM').Form.Todo.add(); return false;\">+ {%LNG.add_task}</a></div>"+"\n                                </fieldset>"+"\n                            </dd>"+"\n                            <dt>{%LNG.Reminders}</dt>"+"\n                            <dd>"+"\n                                <fieldset>"+"\n                                    <input type=\"hidden\" name=\"reminders-enabled\" value=\"true\" />"+"\n                                    <div id=\"reminder-list\"></div>"+"\n                                    <div class=\"button\"><a href=\"#add\" class=\"script\" onclick=\"this.ancestorTag('FORM').Form.Reminders.add(); return false;\">+ {%LNG.add_reminder}</a></div>"+"\n                                </fieldset>"+"\n                            </dd>"+"\n                        </dl>"+"\n                        <div class=\"submit\">"+"\n                            <button type=\"submit\">{%LNG.Save}</button>"+"\n                            {%LNG.or}"+"\n                            <button type=\"button\" onclick=\"this.ancestorTag('FORM').Form.del(this.form)\">{%LNG.Delete_event}</button>"+"\n                        </div>"+"\n                    </fieldset>"+"\n                    <a href=\"#close\" class=\"close\" onclick=\"this.ancestorTag('FORM').Form.hide(); return false;\"><img src=\"{%URL.img}site/w/x.gif\" alt=\"&times;\" /></a>"+"\n                </div>"+"\n            </div>"+"\n        </div>"+"\n    </div>"+"\n    <div class=\"bottom\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n</form>";window.EventForm=new Class({api:'',__construct:function(api){self.api=api;self.EVENT_SAVED=self.api+'-saved';self.EVENT_DELETED=self.api+'-deleted';},create:function(id,init_data){var div=ID('event-form-container');var data=id?Data.event[id].clone():init_data;if(!div){var div=document.createElement('DIV');div.id='event-form-container';div.addClass('common-form-container');div.addClass('draggable');var range=[];for(var i=1;i<=30;i++){range.push(i);}
var days=['mo','tu','we','th','fr','sa','su'];var weekdays=[];days.forEach(function(key){weekdays.push({n:key+1,t:LNG[ENV.language=='en'?this.toString().ucfirst():this.toString()]});});var categories=[];Data.category.forEach(function(){categories.push({i:this.id,t:this.title});});Template.assign('categories',categories);Template.assign('periods',range);Template.assign('weekdays',weekdays);div.setHTML(Template.transform(EVENT_FORM));div.getElementsByClassName('drag')[0].onmousedown=Dragdrop.pick;document.body.appendChild(div);div.style.left=(document.size().width-div.offsetWidth)/2+'px';var tabs=div.getElementsByTagName('DL')[0];var tabset=Mohawk.UI.Tabset.fromElement(tabs);tabs.parentNode.replaceChild(tabset.element,tabs);ID('field-startdate').onchange=function(){this.form.Form.setMonthlyOptions(this.value);var startdate=Date.fromString(this.value).valueOf();var enddate=Date.fromString(this.form['data[enddate]'].value).valueOf();if(enddate!=NaN&&startdate!=NaN){var date=this.value;if(this.prev_value){var days=Math.round((enddate-Date.fromString(this.prev_value).valueOf())/3600/24/1000);if(days>0){var date=Format.date(Date.fromString(date).addDay(days),'Y-m-d');}}
this.form['data[enddate]'].value=date;}
this.prev_value=this.value;};ID('field-starttime').onchange=function(){var time=false;if(Date.isTimeValid(this.value)){if(Date.isTimeValid(this.form['data[endtime]'].value)){if(this.prev_value){}else if(this.form['data[endtime]'].value<this.value){time=this.value;}}else{time=this.value;}}
if(time){this.form['data[endtime]'].value=time;}
this.prev_value=this.value;};Mohawk.UI.TimePicker.set(ID('field-starttime'));Mohawk.UI.TimePicker.set(ID('field-endtime'));Mohawk.UI.Calendar.set(ID('field-startdate'));Mohawk.UI.Calendar.set(ID('field-enddate'));Mohawk.UI.Calendar.set(ID('field-repeat-till'));}
var form=div.getElementsByTagName('FORM')[0];form.Form=self;var weekday={};if(typeof(data.weekday)!='undefined'){for(var i=1;i<=7;i++){if(data.weekday&Math.pow(2,i-1)){weekday[i]=1;}}}
data.weekday=weekday;data.repeat_till_check=!!data.repeat_till;form.reset();form.setData(data,'data');if(typeof(id)!='undefined'&&id){form.setData({id:id});}else{form.setData({id:''});}
self.setRecurrence(data.recurrence||'none');var tasklist=ID('task-list');var tasks=[];if(data.tasks){data.tasks.forEach(function(){tasks.push(this);});}
tabset.element.getElementsByTagName('DT')[1].open();self.Todo=new TaskList('task-list',[]);tasklist.replace(self.Todo.element);tasks.forEach(function(){self.Todo.add(this);});tabset.element.getElementsByTagName('DT')[0].open();var reminders=[];if(data.reminders){data.reminders.forEach(function(){reminders.push(this);});}
var reminderslist=ID('reminder-list');self.Reminders=new Reminders('reminder-list',reminders);reminderslist.replace(self.Reminders.element);},hide:function(){var container=ID('event-form-container');if(container){container.remove();}},setRecurrence:function(option){var options=['daily','weekly','monthly','yearly'];options.forEach(function(){var fieldset=ID('recurrence-'+this);fieldset.addClass('hidden');fieldset.getElementsByTagName('INPUT').forEach(function(){this.disabled=true;});fieldset.getElementsByTagName('SELECT').forEach(function(){this.disabled=true;});});var fieldset=ID('recurrence-'+option);if(fieldset){fieldset.removeClass('hidden');fieldset.getElementsByTagName('INPUT').forEach(function(){this.disabled=false;});fieldset.getElementsByTagName('SELECT').forEach(function(){this.disabled=false;});}
if(option=='none'){ID('recurrence-ends').addClass('hidden');ID('field-repeat-till').disabled=true;}else{ID('recurrence-ends').removeClass('hidden');ID('field-repeat-till').disabled=!ID('field-repeat-till-check').checked;}},setMonthlyOptions:function(date){var date=Date.fromString(date);var option_date=ID('field-monthly-option-date').nextTag('LABEL');option_date.getElementsByTagName('SPAN')[0].setHTML(date.getDate());var option_weekday=ID('field-monthly-option-weekday').nextTag('LABEL');var option_weekday2=ID('field-monthly-option-weekday2').nextTag('LABEL');var day=date.getDay();var weekdays=['sunday','monday','tuesday','wednesday','thursday','friday','saturday'];var weekday=weekdays[day];if(ENV.language=='en'){weekday=weekday.ucfirst();}
var weekday_name=LNG[weekday];var month=date.getMonth();var first_date=new Date(date);first_date.setDate(1);var weeknum=date.getWeek(1)-first_date.getWeek(1)+((first_date.getDay()||7)<=day);var num_names=['first','second','third','fourth'];var num_name='';var num_name2='';if(weeknum>4){num_name2='last';}else{num_name=num_names[weeknum-1];if(weeknum==4){num_name2='last';}}
if(num_name&&ENV.language=='ru'){if(day==0){num_name+='_n';}else if([3,5,6].has(day)){num_name+='_f';}}
if(num_name2&&ENV.language=='ru'){if(day==0){num_name2+='_n';}else if([3,5,6].has(day)){num_name2+='_f';}}
var weeknum_name=num_name?LNG[num_name+'_week']:false;var weeknum2_name=num_name2?LNG[num_name2+'_week']:false;if(weeknum_name){option_weekday.ancestorTag('LI').removeClass('hidden');option_weekday.getElementsByTagName('SPAN')[0].setHTML(weeknum_name+' '+weekday_name);}else{option_weekday.ancestorTag('LI').addClass('hidden');}
if(weeknum2_name){option_weekday2.ancestorTag('LI').removeClass('hidden');option_weekday2.getElementsByTagName('SPAN')[0].setHTML(weeknum2_name+' '+weekday_name);}else{option_weekday2.ancestorTag('LI').addClass('hidden');}},save:function(form){var data=form.getData();var req;if(data.id){req=new Ajax(self.api+data.id+'/',Ajax.METHOD_PUT);}else{req=new Ajax(self.api+'new/',Ajax.METHOD_POST);}
var weekdays=0;for(var i=1;i<=7;i++){if(data['data[weekday]['+i+']']){weekdays+=Math.pow(2,i-1);}
delete(data['data[weekday]['+i+']']);}
data['data[weekday]']=weekdays;req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error,true);var error=req.data.error;error.forEach(function(name){var input=form['data['+name+']'];if(name=='weekday'){input=form['data[weekday][7]'];}
if(!input){return true;}
var error=input.nextTag('STRONG');if(!error||!error.hasClass('for-'+name)){error=document.createElement('STRONG');error.addClass('error','for-'+name);input.parentNode.appendChild(error);}
error.innerHTML=this;});}else{try{var item=req.data.item;if(Data.event[item.id]){item.forEach(function(key){Data.event[item.id][key]=this!=window?this.valueOf():null;});}else{Data.event[item.id]=item;}
var tasks=req.data.tasks||[];if(tasks.id){tasks=[tasks];}
Data.event[item.id].tasks=tasks;var reminders=req.data.reminders||[];if(reminders.id){reminders=[reminders];}
Data.event[item.id].reminders=reminders;Observer.fire(self.EVENT_SAVED,item);self.hide();Progress.done(LNG.Done,true);}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send(data);Progress.load(LNG.Working);form.getElementsByClassName('error').forEach(function(){this.remove();});},del:function(form){if(!confirm(LNG.Confirm_delete)){return false;}
var data=form.getData();req=new Ajax(self.api+data.id+'/',Ajax.METHOD_DELETE);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{try{var id=req.data.id;Observer.fire(self.EVENT_DELETED,id);delete(Data.event[id]);self.hide();Progress.done(LNG.Done,true);}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send();Progress.load(LNG.Working);}});window.CheckList=new Class({api:'',__construct:function(api){self.api=api;},setData:function(){var status=Data.task_status;Data.task_status={};status.forEach(function(key){Data.task_status[key]=this.values();});},isMarked:function(task,date){return Data.task_status[task]&&Data.task_status[task].has(date);},mark:function(checkbox,date){var form_data=checkbox.form.getData();var id=checkbox.value;var data={date:date||form_data.date,status:checkbox.checked?'done':'todo'};var req=new Ajax(self.api+'task/'+id+'/',Ajax.METHOD_PUT);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{try{var item=req.data.item;checkbox.removeClass('hidden');checkbox.nextTag('IMG').addClass('hidden');if(item.status=='done'){checkbox.parentNode.addClass('checked');}else{checkbox.parentNode.removeClass('checked');}
if(item.status=='todo'){if(Data.task_status[item.task]){Data.task_status[item.task].pull(item.date);}}else{if(!Data.task_status[item.task]){Data.task_status[item.task]=[];}
Data.task_status[item.task].push(item.date);}}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send(data);checkbox.addClass('hidden');checkbox.nextTag('IMG').removeClass('hidden');}});window.Timeline=new Class({cell_width:111,flag_width:10,data:{},dragStart:0,dragOffset:0,earliest:null,latest:null,build:function(){var frame=document.createElement('DIV');self.frame=frame;frame.Timeline=self;var table=document.createElement('TABLE');self.table=table;table.Timeline=self;table.onmousedown=self.pick;frame.onmousewheel=function(event){event=Mohawk.DOM.event(event);var frame=this;var self=frame.Timeline;var delta=event.wheel();var x=self.table.offsetLeft+delta*self.cell_width;if(x>0){x=0;}
if(x<-self.table.offsetWidth+frame.offsetWidth){x=-self.table.offsetWidth+frame.offsetWidth;}
self.table.style.left=x+'px';try{event.preventDefault();}catch(e){Console.describe(e);}
return false;};if(FF){frame.addEvent('DOMMouseScroll',frame.onmousewheel);}
var thead=document.createElement('THEAD');table.appendChild(thead);var head_row=document.createElement('TR');thead.appendChild(head_row);var tbody=document.createElement('TBODY');table.appendChild(tbody);var body_row=document.createElement('TR');tbody.appendChild(body_row);var oneday=3600*24*1000;var row=null;var today=Date.fromString(Data.today);var max_days=self.latest.daysFrom(self.earliest);var per_row=30;var i=0;var day=self.earliest;var prev=null;var _sub=function(){if(i<max_days){for(var j=1;j<=per_row&&i<max_days;j++,i++,day=day.addDay()){if(prev&&prev.getDate()==day.getDate()){day=new Date(day.valueOf()+3600*1000);}
if(prev&&prev.getHours()!=day.getHours()){day.setHours(prev.getHours());};var head_cell=self.createHeadCell(day,today);head_row.appendChild(head_cell);var body_cell=self.createDataCell(day,today);body_row.appendChild(body_cell);prev=new Date(day.valueOf());}
setTimeout(_sub);}else{self.setData();Progress.done(LNG.Done,true);self.moveTo(today,true);}};Progress.load(LNG.Loading);_sub();frame.appendChild(table);ID('planning').replace(frame);frame.id='planning';},pick:function(event){event=Mohawk.DOM.event(event);var self=this.Timeline;var table=self.table;self.dragStart=event.cursor().x;self.dragOffset=table.offsetLeft;document.Timeline=self;self.frame.addEvent('mousemove',self.drag);self.frame.addEvent('mouseup',self.drop);return false;},drag:function(event){event=Mohawk.DOM.event(event);var self=document.Timeline;var table=self.table;var cur=event.cursor().x;var x=self.dragOffset+(cur-self.dragStart);if(x>0){x=0;}
if(x<-table.offsetWidth+self.frame.offsetWidth){x=-table.offsetWidth+self.frame.offsetWidth;}
table.style.left=x+'px';},drop:function(event){event=Mohawk.DOM.event(event);var self=document.Timeline;self.frame.removeEvent('mousemove',self.drag);self.frame.removeEvent('mouseup',self.drop);},moveTo:function(date,no_animation){var cell=self.getCell(date);if(!cell){return;}
var x=-cell.offsetLeft+(self.frame.offsetWidth-cell.offsetWidth)/2;if(x>0){x=0;}
if(x<-self.table.offsetWidth+self.frame.offsetWidth){x=-self.table.offsetWidth+self.frame.offsetWidth;}
if(typeof(no_animation)!='undefined'&&no_animation){self.table.style.left=x+'px';}else{Mohawk.Effects.move(self.table,x,null,FF?self.cell_width:1,null,1.1);}},startMoveBack:function(){Mohawk.Effects.move(self.table,0,null,FF?Math.round(self.cell_width/3):2,null,1.005);},startMoveForward:function(){Mohawk.Effects.move(self.table,-self.table.offsetWidth+self.frame.offsetWidth,null,FF?Math.round(self.cell_width/3):2,null,1.005);},stopMove:function(){Mohawk.Effects.stop();},createHeadCell:function(day,today){var cell=document.createElement('TH');var date=Format.date(day,ENV.language=='ru'?'j F':'F j');var week=Format.date(day,'l');var is_today=day.toString()==today.toString();cell.setHTML('<b>'+week+(is_today?' &darr;':'')+'</b>'+date);if(is_today){cell.addClass('today');}
var w=day.getDay();if(w==0||w==6){cell.addClass('weekend');}
return cell;},createDataCell:function(day,today){var cell=document.createElement('TD');cell.id=self.getId(day);cell.data={date:day};cell.ondragover=function(){this.addClass('over');};cell.ondragout=function(){this.removeClass('over');};cell.ondrop=function(){this.removeClass('over');};if(day.toString()==today.toString()){cell.addClass('today');}
if([0,6].has(day.getDay())){cell.addClass('weekend');}
var list=document.createElement('UL');cell.appendChild(list);cell.list=list;return cell;},setData:function(){var data=Data.event;Data.event={};data.forEach(function(i,item){Data.event[item.id]=item;self.placeMarker(item);});},createMarker:function(data){var marker=document.createElement('DIV');marker.id=self.frame.id+'-'+data.id;marker.addClass('event');marker.data={id:data.id,startdate:Date.fromString(data.startdate),enddate:Date.fromString(data.enddate)};return marker;},placeMarker:function(item){var oneday=3600*24*1000;var startdate=Date.fromString(item.startdate);var enddate=Date.fromString(item.enddate);if(startdate<self.earliest){if(enddate>=self.earliest){startdate=self.earliest;}else{return;}}
if(enddate>self.latest){if(startdate<=self.latest){enddate=self.latest;}else{return;}}
var days=Math.round((enddate-startdate)/oneday);var id=self.frame.id+'-'+item.id;var marker=ID(id);if(!marker){marker=self.createMarker(item);}
var width=days*self.cell_width+self.flag_width;if(typeof(item.title)!='undefined'){var title=item.title;marker.style.width=width+'px';if(item.category){if(marker.data.category){marker.removeClass('category-'+marker.data.category);}
marker.data.category=item.category;marker.addClass('category-'+item.category);}
marker.title=item.title;var max_chars=Math.max(width,self.cell_width)/9;if(title.length>max_chars){title=title.substring(0,max_chars)+'&hellip;';}
marker.setHTML('<small>'+title+'</small>');}
if(typeof(marker.data.n)!='undefined'){var start=marker.ancestorTag('TD').data.date;for(var j=0;j<=marker.data.days;j++){var day=new Date(start.valueOf()+j*oneday);var cell=self.getCell(day);if(!cell){break;}
var list=cell.list;if(list.childNodes.length>marker.data.n){list.childNodes[marker.data.n].removeClass('occupied');}}}
var cell=self.getCell(startdate);var li=null;var n=-1;var i=0;while(true){n=i;var child=cell.list.childNodes[i];if(i+1>cell.list.childNodes.length){child=document.createElement('LI');cell.list.appendChild(child);}
if(!child.hasClass('occupied')){var ok=true;for(var j=0;j<days;j++){var day=new Date(startdate.valueOf()+(j+1)*oneday);var c=self.getCell(day);if(!c){return;}
var list=c.list;if(list.childNodes.length>i){if(list.childNodes[i].hasClass('occupied')){ok=false;break;}}}
if(ok){li=child;break;}}
i++;}
marker.data.days=days;marker.data.n=n;li.appendChild(marker);li.addClass('occupied');for(var i=0;i<days;i++){var day=new Date(startdate.valueOf()+(i+1)*oneday);var list=self.getCell(day).list;if(list.childNodes.length<n+1){for(var j=list.childNodes.length;j<=n;j++){var child=document.createElement('LI');list.appendChild(child);}}
list.childNodes[n].addClass('occupied');}},removeMarker:function(id){var marker=ID(self.frame.id+'-'+id);if(!marker){return;}
var start=marker.ancestorTag('TD').data.date;for(var j=0;j<=marker.data.days;j++){var day=start.addDay(j);var list=self.getCell(day).list;if(list.childNodes.length>marker.data.n){list.childNodes[marker.data.n].removeClass('occupied');}}
marker.remove();},getId:function(date){return'day-'+(date instanceof Date?self.getDateId(date):date);},getDateId:function(date){var year=date.getFullYear();var month=date.getMonth()+1;var day=date.getDate();return''+year+'-'+(month<10?'0':'')+month+'-'+(day<10?'0':'')+day;},getCell:function(date){return ID(self.getId(date));}});window.Format=new Singletone({months:['January','February','March','April','May','June','July','August','September','October','November','December'],weekdays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],date:function(date,format){if(!(date instanceof Date)){date=Date.fromString(date);}
var D={j:date.getDate(),w:date.getDay(),n:date.getMonth()+1,Y:date.getFullYear()};D.d=D.j.toString().pad(2,'0');D.m=D.n.toString().pad(2,'0');D.F=LNG['of_'+self.months[D.m-1]];D.l=LNG[self.weekdays[D.w]];if(ENV.language=='ru'){D.l=D.l.toLowerCase();D.F=D.F.toLowerCase();}
var formatted='';for(var i=0;i<format.length;i++){var chr=format.substr(i,1);formatted=formatted.concat(D[chr]!=undefined?D[chr]:chr);}
return formatted;},time_parse:function(str){var time_regexp=new RegExp('^(\\d{1,2})[\.-:](\\d{1,2})(?:[\.-:](\\d{1,2}))?$');var hour='',mins='',secs='';if(time=time_regexp.exec(str)){hour=time[1];mins=time[2];secs=time[3];}else{hour='00';mins='00';secs='00';}
return{hour:hour,mins:mins,secs:secs};},time:function(str){var time=Date.parseTime(str);var hour=time.hour;var mins=time.mins;var secs=time.secs;var hour=hour.toString().pad(2,'0');var mins=mins.toString().pad(2,'0');if(secs!=undefined){var secs=secs.toString().pad(2,'0');}
return hour+':'+mins;}});window.EVENT_TIP="<form class=\"common-form window w-draggable\">"+"\n    <div class=\"top\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n    <div class=\"middle\">"+"\n        <div class=\"left\">"+"\n            <div class=\"right\">"+"\n                <div class=\"center\">"+"\n                    <div class=\"drag\" onmousedown=\"Dragdrop.pick()\"><h3>{%data.title}</h3></div>"+"\n                    <fieldset class=\"content\">"+"\n                        <input type=\"hidden\" name=\"id\" value=\"{%data.id}\" />"+"\n                        <input type=\"hidden\" name=\"date\" value=\"{%data.startdate}\" />"+"\n                        <p class=\"time\">{%data.date}</p>"+"\n                        {%if data.text}"+"\n                        <p class=\"text\">{%data.text}</p>"+"\n                        {%end}"+"\n                        {%if tasks.length}"+"\n                        <div class=\"todo\">"+"\n                            <strong>{%LNG.Tasks}:</strong>"+"\n                            <ul class=\"fields\">"+"\n                                {%for task in tasks}"+"\n                                <li{%if Planner.CheckList.isMarked(task.id, data.startdate)} class=\"checked\"{%end}>"+"\n                                    <input id=\"event-task-{%task.id}\" type=\"checkbox\" value=\"{%task.id}\" name=\"task[{%task.id}]\" onclick=\"Planner.CheckList.mark(this)\" {%if Planner.CheckList.isMarked(task.id, data.startdate)} checked=\"checked\"{%end}/>"+"\n                                    <img src=\"{%URL.img}site/loading.gif\" class=\"hidden\" />"+"\n                                    <label for=\"event-task-{%task.id}\" class=\"inline\">{%task.text|htmlspecialchars}</label>"+"\n                                </li>"+"\n                                {%end}"+"\n                            </ul>"+"\n                        </div>"+"\n                        {%end}"+"\n                        {%if reminders.length}"+"\n                        <div class=\"reminders\">"+"\n                            <strong>{%LNG.Reminders}:</strong>"+"\n                            <ul class=\"fields\">"+"\n                                {%for reminder in reminders}"+"\n                                <li class=\"{%reminder.transport}\">"+"\n                                    {%reminder.time}</label>"+"\n                                </li>"+"\n                                {%end}"+"\n                            </ul>"+"\n                        </div>"+"\n                        {%end}"+"\n                        <div class=\"buttons\">"+"\n                            <a href=\"#\" onclick=\"Planner.Form.create('{%data.id}'); Planner.hideTip(); return false;\" class=\"script\">{%LNG.Edit_event}</a>"+"\n                            {%LNG.or}"+"\n                            <button type=\"button\" onclick=\"Planner.Form.del(this.form);\">{%LNG.Delete}</button>"+"\n                        </div>"+"\n                    </fieldset>"+"\n                    <a href=\"#close\" class=\"close\" onclick=\"Planner.hideTip(); return false;\"><img src=\"{%URL.img}site/w/x.gif\" alt=\"&times;\" /></a>"+"\n                </div>"+"\n            </div>"+"\n        </div>"+"\n    </div>"+"\n    <div class=\"bottom\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n</form>";Mohawk.Loader.extendLanguage({"title":"событие","date":"дата","color":"цвет","text":"комментарий","repeat":"повторять","daily":"ежедневно","weekly":"еженедельно","monthly":"ежемесячно","yearly":"ежегодно","dont_repeat":"нет","repeat_till":"до","every_day":"каждый","every_week":"каждую","every_month":"каждый","every_year":"каждый","on_weekdays":"по","monthly_by_date":"по дате","monthly_by_weekday":"по дню недели","first_week":"первый","second_week":"второй","third_week":"третий","fourth_week":"четвертый","last_week":"последний","first_f_week":"первая","second_f_week":"вторая","third_f_week":"третья","fourth_f_week":"четвертая","last_f_week":"последняя","first_n_week":"первое","second_n_week":"второе","third_n_week":"третье","fourth_n_week":"четвертое","last_n_week":"последнее","days":"день","weeks":"неделю","months":"месяц","years":"год","confirm_delete":"удалить?","add_category":"новая категория","save":"сохранить","add_task":"добавить задание","edit_event":"редактировать событие","add_event":"добавить событие","delete_event":"удалить событие","delete":"удалить","loading":"загрузка","categories":"категории","category":"категория","no_category":"без категории","event":"событие","tasks":"список дел","or":"или","error_empty_title":"введите название события","error_invalid_startdate":"неправильная начальная дата","error_wrong_time_startdate":"дата начала должна быть раньше даты окончания","error_invalid_starttime":"неправильное начальное время","error_invalid_enddate":"неправильная конечная дата","error_invalid_endtime":"неправильное конечное время","error_invalid_repeat_till":"неправильная дата окончания повтора","error_mismatch_weekday":"выбранные дни недели не совпадают с начальной датой","error_wrong_weekly_recurrence":"укажите дни недели для повторения","error_wrong_monthly_recurrence":"выберите вариант повторения","error_wrong_length_recurrence":"период повторения меньше продолжительности события"})
window.Planning=Timeline.extend({api:'',copies:{},status:{},__construct:function(api){self.api=api;self.Form=new EventForm(self.api);self.CheckList=new CheckList(self.api);self.CheckList.setData();self.DailyForm=new CalendarForm(URL.home+'api/calendar/');Observer.add(self.DailyForm.EVENT_SAVED,function(item,tasks){if(typeof(tasks)!='undefined'){if(item){var span=ID('hday-'+item.date).link.span;span.unmarkTasks();span.removeClass('tasks-done','tasks-todo');}
tasks.forEach(function(){var task_cell=ID('hday-'+this.date);if(task_cell==undefined){return;}
if(task_cell.link.span.hasClass('tasks-todo')||this.status=='todo'){task_cell.link.span.markTasks();}else{task_cell.link.span.markDone();}});}});Observer.add(self.Form.EVENT_SAVED,function(item){self.placeMarker(item);});Observer.add(self.Form.EVENT_DELETED,function(id){if(self.copies[id]&&self.copies[id].length){self.copies[id].forEach(function(){parent.removeMarker(this);});}else{parent.removeMarker(id);}
self.hideTip();});},build:function(year){if(!year){self.earliest=Date.fromString(ENV.user.registered);self.latest=self.earliest.addDay(364);}else{self.earliest=Date.fromString(year+'-01-01');self.latest=Date.fromString(year+'-12-31');}
parent.build();self.table.ondragover=function(event){if(!Dragdrop.dragged){return;}
var table=this;var evt=Dragdrop.events[0];var x=evt.offset.x+event.cursor().x-evt.start.x;if(FF){x-=table.offsetLeft;}
var cells=table.getElementsByTagName('TD');var width=table.Timeline.cell_width;var which=Math.floor(x/width);if(table.hovered){for(var i=0;i<=table.hovered[1];i++){cells[table.hovered[0]+i].removeClass('over');}}
for(var i=0;i<=evt.draggable.data.days;i++){cells[which+i].addClass('over');}
table.hovered=[which,evt.draggable.data.days];};self.table.ondrop=function(event){var table=this;var evt=Dragdrop.events[0];var x=evt.offset.x+event.cursor().x-evt.start.x;if(FF){x-=table.offsetLeft;}
var cells=table.getElementsByTagName('TD');var width=table.Timeline.cell_width;var which=Math.floor(x/width);if(table.hovered){for(var i=0;i<=table.hovered[1];i++){cells[table.hovered[0]+i].removeClass('over');}}
var marker=evt.draggable;if(cells[which]!=marker.ancestorTag('TD')){table.Timeline.move(table.Timeline.getMarkerRealId(marker.data.id),cells[which].data.date,marker.data.days);}else{marker.style.left='inherit';marker.style.top='inherit';window._clicked=true;}};},getMarkerRealId:function(id){var i=id.toString().indexOf('-');if(i>0){id=id.toString().substr(0,i);}
return id;},createMarker:function(data){var marker=parent.createMarker(data);marker.ondblclick=function(event){event=Mohawk.DOM.event(event);event.stopPropagation();var id=self.getMarkerRealId(marker.data.id);self.createForm(id);return false;};marker.onclick=function(event){if(!window._clicked){return;}
event=Mohawk.DOM.event(event);event.stopPropagation();self.showTip(marker);return false;};marker.addClass('draggable');marker.dragFront=false;marker.onmousedown=function(event){if(marker.data.id!=self.getMarkerRealId(marker.data.id)){window._clicked=true;return false;}
event=Mohawk.DOM.event(event);var target=Dragdrop.createTargetObject([self.table]);Dragdrop.setTargetObject(target);Dragdrop.pick(event,[marker]);window._clicked=false;event.stopPropagation();return false;};marker.onrelease=function(){window._clicked=true;};return marker;},placeMarker:function(item){parent.removeMarker(item.id);if(self.copies[item.id]){self.copies[item.id].forEach(function(){parent.removeMarker(this);});}
self.copies[item.id]=[];var placeCopy=function(item,day,i){var copy=item.clone();var days=Date.fromString(item.enddate).daysFrom(Date.fromString(item.startdate));copy.startdate=self.getDateId(day);copy.enddate=self.getDateId(day.addDay(days));copy.id=item.id+'-'+i;parent.placeMarker(copy);self.copies[item.id].push(copy.id);};recurrence(item,Date.fromString(ENV.user.registered).addDay(365),placeCopy);},createHeadCell:function(day,today){var cell=parent.createHeadCell(day,today);cell.id='hday-'+Format.date(day,'Y-m-d');cell.data={date:day};var date=Format.date(day,'Y-m-d');var item=Data.calendar[date];if(item==undefined){item={date:date,status:'empty',comment:'',tasks:[]};}
item.status=item.status||'empty';if(empty(item.tasks)){item.tasks=[];}else{if(typeof(item.tasks[0])=='undefined'){item.tasks=[item.tasks];}else{item.tasks=item.tasks.values();}}
var title=cell.innerHTML;cell.setHTML('');var span=document.createElement('SPAN');span.setHTML('&nbsp;');span.addClass('status');span.markTasks=function(){if(!span.pin){var image=document.createElement('IMG');image.addClass('pin');span.pin=image;span.removeChildren();span.appendChild(image);}
span.pin.src=URL.img+'site/pin.png';span.removeClass('tasks-todo','tasks-done');span.addClass('tasks-todo');};span.markDone=function(){if(!span.pin){var image=document.createElement('IMG');image.addClass('pin');span.pin=image;span.removeChildren();span.appendChild(image);}
span.pin.src=URL.img+'site/tick.png';span.removeClass('tasks-todo','tasks-done');span.addClass('tasks-done');};span.unmarkTasks=function(){try{if(span.pin){span.pin.remove();delete(span.pin);}
span.removeClass('tasks-todo','tasks-done');}catch(e){Console.describe(e);}};var todo=false;item.tasks.forEach(function(){if(this.status=='todo'){todo=true;return 0;}});if(item.tasks.length){if(todo){span.markTasks();}else{span.markDone();}}else{span.unmarkTasks();}
var link=document.createElement('A');link.href='#form';link.onclick=function(){var item=Data.calendar[date];if(item==undefined){item={date:date,status:'empty',comment:'',tasks:[]};}
item.status=item.status||'empty';if(empty(item.tasks)){item.tasks=[];}else{if(typeof(item.tasks[0])=='undefined'){item.tasks=[item.tasks];}else{item.tasks=item.tasks.values();}}
self.DailyForm.create(item);return false;};link.setHTML(title);link.cell=cell;link.span=span;link.appendChild(span);cell.appendChild(link);cell.link=link;return cell;},createDataCell:function(day,today){var cell=parent.createDataCell(day,today);cell.ondblclick=function(){var data={startdate:self.getDateId(cell.data.date),starttime:'',enddate:self.getDateId(cell.data.date),endtime:'',title:'',text:''};self.Form.create(null,data);};return cell;},add:function(){var data={startdate:Data.today,starttime:'00:00',enddate:Data.today,endtime:'00:00',title:'',text:''};self.Form.create(null,data);},showTip:function(marker){var id=self.getMarkerRealId(marker.data.id);var data=Data.event[id].clone();var div=ID('event-tip');if(!div){var div=document.createElement('DIV');div.id='event-tip';div.addClass('common-form-container','draggable');document.body.appendChild(div);div.style.left=(document.size().width-div.offsetWidth)/2+'px';}
var text=String(data.text||'');text=text.htmlspecialchars();text=text.nl2br();data.text=text;data.title=data.title.htmlspecialchars();var date='';var format='j F';if(data.startdate.valueOf()==data.enddate.valueOf()){date=Format.date(marker.data.startdate,format);if(data.starttime){if(data.starttime==data.endtime){date+=' '+Format.time(data.starttime);}else{date+=' '+Format.time(data.starttime)+' &ndash; '+Format.time(data.endtime);}}}else{if(!data.starttime){date+=Format.date(marker.data.startdate,format)+' &ndash; '+Format.date(marker.data.enddate,format);}else{date+=Format.date(marker.data.startdate,format)+', '+Format.time(data.starttime)+' &ndash; '+Format.date(marker.data.enddate,format)+', '+Format.time(data.endtime);}}
data.date=date;data.startdate=self.getDateId(marker.data.startdate);data.enddate=self.getDateId(marker.data.enddate);Template.assign('data',data);var tasks=[];data.tasks.forEach(function(){tasks.push(this);});Template.assign('tasks',tasks);Template.assign('task_status',Data.task_status);var offsets={'1_minute':60,'5_minutes':60*5,'10_minutes':60*10,'15_minutes':60*15,'20_minutes':60*20,'25_minutes':60*25,'30_minutes':60*30,'45_minutes':60*45,'1_hour':60*60,'2_hours':60*60*2,'3_hours':60*60*3,'4_hours':60*60*4,'5_hours':60*60*5,'6_hours':60*60*6,'12_hours':60*60*12,'1_day':60*60*24,'2_days':60*60*24*2,'3_days':60*60*24*3,'4_days':60*60*24*4,'5_days':60*60*24*5,'6_days':60*60*24*6,'1_week':60*60*24*7,'2_weeks':60*60*24*7*2,'3_weeks':60*60*24*7*3,'1_month':60*60*24*7*30};var reminders=[];data.reminders.forEach(function(){var reminder=this;if(offsets[reminder.offset]){var date=new Date(Date.fromString(data.startdate+' '+(data.starttime||'00:00:00')).valueOf()-offsets[reminder.offset]*1000);var time=date.getHours()+':'+date.getMinutes()+':00';reminder.time=Format.date(date,format)+', '+Format.time(time);}
reminders.push(reminder);});Template.assign('reminders',reminders);div.setHTML(Template.transform(EVENT_TIP));div.getElementsByClassName('drag')[0].onmousedown=Dragdrop.pick;},hideTip:function(){var container=ID('event-tip');if(container){container.remove();}},move:function(id,date,days){var oneday=3600*24*1000;var data={startdate:self.getDateId(date),enddate:self.getDateId(new Date(date.valueOf()+oneday*days))};var req=new Ajax(self.api+id+'/',Ajax.METHOD_PUT);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{try{var item=req.data.item;if(Data.event[item.id]){item.forEach(function(key){Data.event[item.id][key]=this.valueOf();});}
var marker=ID(self.frame.id+'-'+item.id);marker.style.left='inherit';marker.style.top='inherit';self.placeMarker(Data.event[item.id]);Progress.done(LNG.Done,true);}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send({data:data});Progress.load(LNG.Working);}});window.recurrence=function(item,limit,action){var start=Date.fromString(item.startdate);var end=item.repeat_till?Date.fromString(item.repeat_till):limit;var days=Date.fromString(item.enddate).daysFrom(start);switch(item.recurrence){case'daily':var i=0;var day=start;while(day.addDay(days)<end){action(item,day,i);i+=parseInt(item.period);day=start.addDay(i);}
break;case'weekly':var intervals={};var last=0;var first=0;for(var i=1;i<=7;i++){if(item.weekday&Math.pow(2,i-1)){if(!first){first=i;}
if(last){intervals[last]=i-last;}
last=i;}}
intervals[last]=item.period*7-last+first;var i=0;var day=start;while(day.addDay(days)<end){action(item,day,i);var weekday=day.getDay();if(weekday==0){weekday=7;}
i+=intervals[weekday];day=start.addDay(i);}
break;case'monthly':if(item.monthly_option=='date'){var i=0;var day=start.addDay(0);while(day.addDay(days)<end){action(item,day,i);i++;var month=day.getMonth();var feb_days=Date.isLeapYear(day.getFullYear())?29:28;if(month==0&&day.getDate()>feb_days){day.setDate(feb_days);}else{day.setDate(start.getDate());}
if(month==11){day.setMonth(0);day.setYear(day.getFullYear()+1);}else{day.setMonth(month+1);}}}else{var i=0;var day=start.addDay(0);var weeknum=start.getMonthWeek();if(weeknum>4){weeknum=4;}
var first_day=start.addDay(-start.getDate()+1);if(weeknum>1&&(first_day.getDay()||7)>(start.getDay()||7)){weeknum--;}
var weekday=start.getDay()||7;while(day.addDay(days)<end){action(item,day,i);i++;day.setDate(1);var month=day.getMonth();if(month==11){month=0;day.setMonth(0);day.setYear(day.getFullYear()+1);}else{day.setMonth(month+1);}
var w=day.getDay()||7;var pad=weekday>=w?weekday-w:7+weekday-w;day=day.addDay(7*(weeknum-1)+pad);if(item.monthly_option=='lastweek'){var lastweek=day.addDay(7);if(lastweek.getMonth()==day.getMonth()){day=lastweek;}}}}
break;default:action(item,start,0);}}
Mohawk.UI.SelectableList=Mohawk.UI.List.extend(Mohawk.UI.SelectableListInterface={selected:[],last_selected:null,last_click:null,multiple:true,__construct:function(id,structure){parent.__construct(id,structure);Mohawk.UI.selectables.push(self);self.EVENT_SELECTED=id+'-selected';self.element.onmousedown=function(){return false;};},createNode:function(data){var node=parent.createNode(data);node.select=function(){node.addClass('selected');if(!node.isSelected()){self.selected.push(node);}};node.unselect=function(){node.removeClass('selected');self.selected.pull(node);};node.isSelected=function(){return self.selected.has(node);};node.onclick=function(event){Mohawk.DOM.event(event);if(event.button==BTN_LEFT){if(node.isSelected()&&!event.ctrlKey){self.select(event,node);}
if(node.ondblclick instanceof Function){var now=new Date;if(node.last_click instanceof Date&&!OPERA){if(now.getTime()-node.last_click.getTime()<1000){node.ondblclick();}}
node.last_click=now;}
event.stopPropagation();self.select(event,node);}};return node;},select:function(event,node){Mohawk.DOM.event(event);if(event.ctrlKey&&self.multiple){if(self.selected.has(node)){node.unselect();}else{node.select();self.last_selected=node;}}else if((event.shiftKey&&self.last_selected&&self.multiple)||Mohawk.UI.selection){if(Mohawk.UI.selection&&!self.last_selected){self.last_selected=node;}
var last=0;var cur=0;for(var i=0;i<self.element.childNodes.length;i++){if(self.element.childNodes[i]==self.last_selected){last=i;}
if(self.element.childNodes[i]==node){cur=i;}
if(cur&&last){break;}}
while(self.selected.length){self.selected[0].unselect();}
if(cur>last){for(var i=last;i<cur;i++){self.element.childNodes[i].select();}}else{for(var i=cur;i<=last;i++){self.element.childNodes[i].select();}}
if(!node.isSelected()){node.select();}}else{self.unselectAll();node.select();self.last_selected=node;}
Observer.fire(self.EVENT_SELECTED);},unselectAll:function(){while(self.selected.length){self.selected[0].unselect();}
self.last_selected=null;},isSelected:function(node){return self.selected.has(node);}});window.YearSwitcher=Mohawk.UI.SelectableList.extend({selected:[],multiple:false,createNode:function(data){var node=parent.createNode(data);node.id=self.getId(data);node.setHTML(data);return node;}});window.CALENDAR_COMMENT="<form id=\"comment-form\" class=\"common-form window draggable w-draggable\" action=\"{%URL.self}\" method=\"post\" onsubmit=\"this.Form.save(this); return false;\">"+"\n    <div class=\"top\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n    <div class=\"middle\">"+"\n        <div class=\"left\">"+"\n            <div class=\"right\">"+"\n                <div class=\"center\">"+"\n                    <div class=\"drag\" onmousedown=\"Dragdrop.pick(event)\"><h3>{%date_localized}</h3></div>"+"\n                    <fieldset class=\"content\">"+"\n                        <input type=\"hidden\" name=\"data[date]\" />"+"\n                        <ul class=\"fields\">"+"\n                            <li class=\"status\">"+"\n                                <label>{%LNG.Status}:</label>"+"\n                                <ul class=\"status-list\">"+"\n                                    <li>"+"\n                                        <label for=\"status-empty\" class=\"empty\">&nbsp;</label>"+"\n                                        <input type=\"radio\" id=\"status-empty\" value=\"empty\" name=\"data[status]\" />"+"\n                                    </li>"+"\n                                    <li>"+"\n                                        <label for=\"status-idle\" class=\"idle\">&nbsp;</label>"+"\n                                        <input type=\"radio\" id=\"status-idle\" value=\"idle\" name=\"data[status]\" />"+"\n                                    </li>"+"\n                                    <li>"+"\n                                        <label for=\"status-full\" class=\"full\">&nbsp;</label>"+"\n                                        <input type=\"radio\" id=\"status-full\" value=\"full\" name=\"data[status]\" />"+"\n                                    </li>"+"\n                                </ul>"+"\n                            </li>"+"\n                            {%if ENV.user.planning == 'on'}"+"\n                            <li class=\"planning\">"+"\n                                <input type=\"hidden\" name=\"task-enabled\" value=\"true\" />"+"\n                                <label>{%LNG.Planning}:</label>"+"\n                                <div class=\"container\">"+"\n                                    <div id=\"task-list\"></div>"+"\n                                    <div class=\"button\"><a href=\"#add\" class=\"script\" onclick=\"this.ancestorTag('FORM').Form.Todo.add(); return false;\">+ {%LNG.add_task}</a></div>"+"\n                                </div>"+"\n                            </li>"+"\n                            {%end}"+"\n                            {%if ENV.user.comments == 'on'}"+"\n                            <li>"+"\n                                <label for=\"field-comment\">{%LNG.Comment}:</label>"+"\n                                <textarea id=\"field-comment\" name=\"data[comment]\" rows=\"4\" cols=\"10\"></textarea>"+"\n                            </li>"+"\n                            {%end}"+"\n                        </ul>"+"\n                        <div class=\"submit\">"+"\n                            <button type=\"submit\">{%LNG.Save}</button>"+"\n                        </div>"+"\n                    </fieldset>"+"\n                    <a href=\"#close\" class=\"close\" onclick=\"this.ancestorTag('FORM').Form.hide(); return false;\"><img src=\"{%URL.img}site/w/x.gif\" alt=\"&times;\" /></a>"+"\n                </div>"+"\n            </div>"+"\n        </div>"+"\n    </div>"+"\n    <div class=\"bottom\">"+"\n        <div class=\"left\"></div>"+"\n        <div class=\"right\"></div>"+"\n        <div class=\"center\"></div>"+"\n    </div>"+"\n</form>";window.CALENDAR_TIP="<div class=\"top\">"+"\n    <div class=\"left\"></div>"+"\n    <div class=\"right\"></div>"+"\n    <div class=\"center\"></div>"+"\n</div>"+"\n<div class=\"middle\">"+"\n    <div class=\"left\">"+"\n        <div class=\"right\">"+"\n            <div class=\"center\">"+"\n                <h3>{%data.date}</h3>"+"\n                {%if data.tasks && data.tasks.length != 0}"+"\n                <ol class=\"tasks\">"+"\n                    {%for task in data.tasks}"+"\n                    <li{%if task.status == 'done'} class=\"done\"{%end}>"+"\n                        {%task.text|htmlspecialchars}"+"\n                    </li>"+"\n                    {%end}"+"\n                </ol>"+"\n                {%end}"+"\n                {%if data.comment}"+"\n                <p class=\"comment\">{%data.comment}</p>"+"\n                {%end}"+"\n                {%if image}<p class=\"image\"><a href=\"{%image.link}\"><img src=\"{%image.src}\" /></a></p>{%end}"+"\n                "+"\n                {%if events.length}"+"\n                <ul class=\"events\">"+"\n                    {%for event in events}"+"\n                    <li class=\"event\">"+"\n                        <big class=\"{%if event.category}category-{%event.category}{%end}\">{%if event.starttime}{%event.starttime|format_time}{%else}--:--{%end}</big>"+"\n                        <h3>{%event.title|format_title}</h3>"+"\n                        <small>{%LNG.event_till} {%event.enddate|format_date}, {%event.endtime|format_time}</small>"+"\n                        "+"\n                        {%if event.text}<p class=\"comment\">{%event.text|format_text}</p>{%end}"+"\n                        "+"\n                        {%if event.tasks}"+"\n                        <ol class=\"tasks\">"+"\n                            {%for task in event.tasks}"+"\n                            <li{%if Pinarik.CheckList.isMarked(task.id, event.startdate)} class=\"done\"{%end}>{%task.text|format_text}</li>"+"\n                            {%end}"+"\n                        </ol>"+"\n                        {%end}"+"\n                    </li>"+"\n                    {%end}"+"\n                </ul>"+"\n                {%end}"+"\n            </div>"+"\n        </div>"+"\n    </div>"+"\n</div>"+"\n<div class=\"bottom\">"+"\n    <div class=\"left\"></div>"+"\n    <div class=\"right\"></div>"+"\n    <div class=\"center\"></div>"+"\n</div>";window.Calendar=new Class({element:null,api:'',__construct:function(element,api,type){self.element=element;self.api=api;self.type=type;self.Form=new CalendarForm(api);self.CheckList=new CheckList(api);self.CheckList.setData();Observer.add(self.Form.EVENT_SAVED,function(item,tasks){self.setItem(item,tasks);});Data.calendar.forEach(function(){if(empty(this.tasks)){this.tasks=[];}else{if(typeof(this.tasks[0])=='undefined'){this.tasks=[this.tasks];}else{this.tasks=this.tasks.values();}}});Data.event_by_date={};Data.event.forEach(function(){var setEvents=function(item,day,i){var days=Date.fromString(item.enddate).daysFrom(Date.fromString(item.startdate));var start=day;var end=day.addDay(days);for(var i=0;i<=days;i++,day=day.addDay(1)){var date=self.getDateId(day);if(Data.event_by_date[date]==undefined){Data.event_by_date[date]=[];}
Data.event_by_date[date].push({id:item.id,start:start,end:end});}};recurrence(this,Date.fromString(ENV.user.registered).addDay(365),setEvents);});},build:function(year){var max_days=365;var start=Date.fromString(ENV.user.registered);var oneday=3600*24*1000;if(self.type=='calendar'){if(year){start=Date.fromString(year+'-01-01');}
var table=self.createCalendarTable(max_days,start);}else{var days_from_reg=Date.fromString(Data.today).daysFrom(start);if(days_from_reg>max_days){max_days=days_from_reg+7;}
var table=self.createSimpleTable(max_days,start);}
ID('calendar').replace(table);table.id='calendar';},setData:function(){Data.calendar.forEach(function(){var cell=self.getCell(this.date);if(cell){cell._setStatus(this.status);var todo=false;this.tasks.forEach(function(){if(this.status=='todo'){todo=true;return 0;}});if(this.tasks.length){if(todo){cell.markTasks();}else{cell.markDone();}}else{cell.unmarkTasks();}}});},getId:function(date){return'day-'+(date instanceof Date?self.getDateId(date):date);},getDateId:function(date){return Format.date(date,'Y-m-d');},getCell:function(date){return ID(self.getId(date));},getItem:function(date){var id=date instanceof Date?self.getDateId(date):date;var item=Data.calendar[id];if(!item){item={date:date,status:'idle',comment:'',tasks:[]};}
return item;},switchView:function(type){if(self.type==type){return;}
self.type=type;self.build();if(type=='calendar'){ID('simple-view').removeClass('active');ID('calendar-view').addClass('active');ID('pick-date').removeClass('hidden');}else{ID('simple-view').addClass('active');ID('calendar-view').removeClass('active');ID('pick-date').addClass('hidden');}},createCalendarTable:function(max_days,start){var today=Date.fromString(Data.today);var per_row=document.size().width<1200?3:4;var cur_month=Math.floor(start.getMonth()/per_row)*per_row+1;var cur_year=start.getFullYear();var table=document.createElement('TABLE');var tbody=document.createElement('TBODY');table.appendChild(tbody);table.addClass('monthly');var row=null;var i=0;var days=0;var max_i=20;var _sub=function(){if(days<max_days&&i<max_i){var cell=document.createElement('TD');if((i+1)%per_row==1){row=document.createElement('TR');tbody.appendChild(row);cell.addClass('first');}
var res={};var month_table=self.createCalendarMonth(cur_month,cur_year,today,res);month_table.addClass('month');cell.appendChild(month_table);row.appendChild(cell);days+=res.days;cur_month++;if(cur_month==13){cur_month=1;cur_year++;}
i++;setTimeout(_sub);}else{self.setData();Progress.done(LNG.Done,true);}};Progress.load(LNG.Working);_sub();return table;},createCalendarMonth:function(month,year,today,res){var week_days=[{name:LNG.mo,holiday:false},{name:LNG.tu,holiday:false},{name:LNG.we,holiday:false},{name:LNG.th,holiday:false},{name:LNG.fr,holiday:false},{name:LNG.sa,holiday:true},{name:LNG.su,holiday:true}];var months=[{name:LNG.January,days:31},{name:LNG.February,days:Date.isLeapYear(year)?29:28},{name:LNG.March,days:31},{name:LNG.April,days:30},{name:LNG.May,days:31},{name:LNG.June,days:30},{name:LNG.July,days:31},{name:LNG.August,days:31},{name:LNG.September,days:30},{name:LNG.October,days:31},{name:LNG.November,days:30},{name:LNG.December,days:31}];var table=document.createElement('TABLE');table.addClass('big');var caption=document.createElement('CAPTION');caption.setHTML(months[month-1].name);table.appendChild(caption);var thead=document.createElement('THEAD');table.appendChild(thead);var thead_row=document.createElement('TR');thead.appendChild(thead_row);for(var i=0;i<week_days.length;i++){var cell=document.createElement('TH');cell.setHTML(week_days[i].name);cell.addClass(week_days[i].holiday?'holiday':'');thead_row.appendChild(cell);}
var tbody=document.createElement('TBODY');table.appendChild(tbody);var day_of_week=Date.getWeekday(1,month,year);var days_in_month=months[month-1].days;res.days=days_in_month;var row=document.createElement('TR');tbody.appendChild(row);for(var i=1;i<day_of_week;i++){var cell=document.createElement('TD');cell.addClass('none');row.appendChild(cell);}
var i=1;for(;i<=days_in_month;i++){if((i+day_of_week-1)%7==1){row=document.createElement('TR');tbody.appendChild(row);}
var cell=self.createCell(new Date(year,month-1,i),today,true);row.appendChild(cell);}
i=(days_in_month+day_of_week-1)%7;if(!i){i=7;}
for(;i<7;i++){var cell=document.createElement('TD');cell.addClass('none');row.appendChild(cell);}
return table;},createSimpleTable:function(max_days,start){var oneday=3600*24*1000;var table=document.createElement('TABLE');var tbody=document.createElement('TBODY');table.appendChild(tbody);table.addClass('big');var row=null;var today=Date.fromString(Data.today);var i=0;var day=start;var per_row=document.size().width<1200?24:30;var prev=null;var _sub=function(){if(i<max_days){for(var j=1;j<=per_row&&i<max_days;j++,i++,day=new Date(day.valueOf()+oneday)){if(prev&&prev.getDate()==day.getDate()){day=new Date(day.valueOf()+3600*1000)}
if(prev&&prev.getHours()!=day.getHours()){day.setHours(prev.getHours());};if((i+1)%per_row==1){row=document.createElement('TR');tbody.appendChild(row);}
var cell=self.createCell(day,today);row.appendChild(cell);prev=new Date(day.valueOf());}
setTimeout(_sub);}else{self.setData();Progress.done(LNG.Done,true);}};Progress.load(LNG.Working);_sub();return table;},createCell:function(day,today,not_empty){var cell=document.createElement('TD');cell.id=self.getId(day);cell.data={date:day};if(day.toString()==today.toString()){cell.addClass('today');}else if(day>today){cell.addClass('future');}
cell._setStatus=function(status){this.data.status=status;this.removeClass('full','idle','empty');this.addClass(status);if(ENV.user.multicolor=='on'){if(self.Multicolor.ready){switch(status){case'full':var image=self.Multicolor.getFromPool('full');this.link.image.src=image[1];this.link.image.link=image[2];break;case'idle':var image=self.Multicolor.getFromPool('idle');this.link.image.src=image[1];this.link.image.link=image[2];break;default:this.link.image.src=URL.img+'site/1x1.gif';this.link.image.link=null;break;}}}else{this.link.image.src=URL.img+'site/1x1.gif';}};cell.markTasks=function(){if(!cell.pin){var image=document.createElement('IMG');image.addClass('pin');cell.pin=image;cell.link.appendChild(image);}
cell.pin.src=URL.img+'site/pin.png';cell.removeClass('tasks-todo','tasks-done');cell.addClass('tasks-todo');};cell.markDone=function(){if(!cell.pin){var image=document.createElement('IMG');image.addClass('pin');cell.pin=image;cell.link.appendChild(image);}
cell.pin.src=URL.img+'site/tick.png';cell.removeClass('tasks-todo','tasks-done');cell.addClass('tasks-done');};cell.unmarkTasks=function(){try{if(cell.pin){cell.pin.remove();delete(cell.pin);}
cell.removeClass('tasks-todo','tasks-done');}catch(e){Console.describe(e);}};var link=self.createLink(not_empty?day.getDate():null);cell.link=link;link.cell=cell;cell.appendChild(link);return cell;},createLink:function(i){var link=document.createElement('A');if(true){link.setHTML('<img src="'+URL.img+'site/1x1.gif" />'+(i?'<small>'+i+'</small>':''));link.image=link.getElementsByTagName('img')[0];}else{link.setHTML(i?'<small>'+i+'</small>':'&nbsp;');}
link.href='#set';link.onclick=function(){self.set(this.cell.data.date);return false;};var setTip=function(tip,cursor){var offset={x:10,y:10};var padding={x:10,y:10};var x_limit=document.size().width+document.scrollLeft()-tip.offsetWidth-padding.x*2;if(cursor.x+offset.x<x_limit){tip.style.left=cursor.x+offset.x+'px';}else{tip.style.left=x_limit+'px';}
var y_limit=document.size().height+document.scrollTop()-tip.offsetHeight-padding.y*2;if(cursor.y+offset.y<y_limit){tip.style.top=cursor.y+offset.y+'px';}else{tip.style.top=y_limit+'px';}};link.onmouseover=function(event){event=Mohawk.DOM.event(event);var cursor=event.cursor();var link=this;self.t=setTimeout(function(){var div=document.createElement('DIV');div.addClass('tip','window');var data=self.getItem(link.cell.data.date);var comment=String(data.comment||'');comment=comment.htmlspecialchars();comment=comment.nl2br();var format=ENV.language=='ru'?'l, j F Y':'l, F j, Y';Template.assign('data',{date:Format.date(link.cell.data.date,format),comment:comment,tasks:data.tasks});var events=Data.event_by_date[self.getDateId(link.cell.data.date)]||[];var event_data=[];events.forEach(function(){var event=Data.event[this.id].clone();event.startdate=self.getDateId(this.start);event.enddate=self.getDateId(this.end);event_data.push(event);});Template.assign('events',event_data);if(ENV.user.multicolor=='on'&&self.Multicolor.ready&&typeof(link.image)!=='undefined'&&(data.status=='full'||data.status=='idle')){Template.assign('image',{src:link.image.src,link:link.image.link});}else{Template.assign('image',false);}
Template.assign('format_time',Format.time);Template.assign('format_date',function(date){var format='';switch(ENV.language){case'ru':format='j F, l';break;default:case'en':format='l, F j';break;}
return Format.date(date,format);});Template.assign('format_text',function(str){var str=str||'';str=String(str);str=str.trim();str=htmlspecialchars(str);str=nl2br(str);return str;});Template.assign('format_title',function(str){var str=str||'';str=String(str);str=str.wordwrap(20,'\n');str=htmlspecialchars(str);str=nl2br(str);return str;});div.setHTML(Template.transform(CALENDAR_TIP));document.body.appendChild(div);setTip(div,cursor);link.tip=div;},300);};link.onmousemove=function(event){event=Mohawk.DOM.event(event);if(this.tip){setTip(this.tip,event.cursor());}};link.onmouseout=function(event){clearTimeout(self.t);if(this.tip){this.tip.remove();this.tip=null;}};link.onmousedown=function(event){event=Mohawk.DOM.event(event);if(ENV.user.multicolor=='on'&&self.Multicolor.ready&&typeof(link.image)!=='undefined'&&(link.cell.data.status=='full'||link.cell.data.status=='idle')){if(event.button==BTN_MIDDLE||event.button==BTN_RIGHT){window.open(link.image.link);event.preventDefault();return false;}}};link.onmouseup=function(event){event=Mohawk.DOM.event(event);if(event.button==BTN_MIDDLE||event.button==BTN_RIGHT){event.preventDefault();return false;}};return link;},openForm:function(date){if(true){var item=self.getItem(date);self.Form.create(item);}else{var req=new Ajax(self.api,Ajax.METHOD_GET);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{try{self.Form.create(req.data.item);Progress.done(LNG.Done,true);}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send({date:(date instanceof Date?self.getDateId(date):date)});Progress.load(LNG.Working);}},setItem:function(item,tasks){var cell=self.getCell(item.date);cell._setStatus(item.status);if(typeof(tasks)!='undefined'){cell.unmarkTasks();cell.removeClass('tasks-done','tasks-todo');tasks.forEach(function(){var task_cell=self.getCell(this.date);if(task_cell==undefined){return;}
if(task_cell.hasClass('tasks-todo')||this.status=='todo'){task_cell.markTasks();}else{task_cell.markDone();}});}},setStatus:function(date,status){var req=new Ajax(self.api,Ajax.METHOD_POST);var cell=self.getCell(date);if(!status){if(cell.hasClass('idle')){status='full';}else if(cell.hasClass('full')){status='empty';}else{status='idle';}}
req.responseHandler=function(req){if(req.data.error){Progress.load(LNG.Error_calendar);}else{try{self.setItem(req.data.item);Progress.done(LNG.Done,true);}catch(e){Progress.done(LNG.Done_error);}}};req.send({data:{date:self.getDateId(date),status:status}});Progress.load(LNG.Working);},set:function(date){if(ENV.user.comments=='on'||ENV.user.planning=='on'){self.openForm(date);}else{self.setStatus(date);}}});window.CommentList=Mohawk.UI.List.extend({createNode:function(data){var node=parent.createNode(data);var span=document.createElement('SPAN');span.setHTML(node.innerHTML);span.addClass(data.status);node.setHTML('');node.appendChild(span);return node;}});document.addLoader(function(){if(ID('calendar')){var today=Date.fromString(Data.today);var year=today.getFullYear();window.Pinarik=new Calendar(ID('calendar'),URL.home+'api/calendar/',ENV.user.calendar_type);if(ENV.user.multicolor=='on'){setMulticolor();}
years=[];for(var y=parseInt(ENV.user.registered.substr(0,4));y<=year+1;y++){years.push(y);}
window.Year=new YearSwitcher('year-switcher',years);ID('year-switcher').replace(Year.element);Year.element.addClass('date-switcher');if(Pinarik.type!='calendar'){ID('pick-date').addClass('hidden');}
Observer.add(Year.EVENT_SELECTED,function(){Pinarik.build(Year.selected[0].data);Pinarik.setData();});Pinarik.build(year);Pinarik.setData();Year.getNode(year).select();if(ID('future-tasks-list')){window.FutureTasks=new FutureTaskList('future-tasks-list',[]);FutureTasks.api=URL.home+'api/tasks/';ID('future-tasks-list').replace(FutureTasks.element);FutureTasks.setChildren(Data.tasks.values());Observer.add(FutureTasks.EVENT_SAVED,function(tasks){tasks.forEach(function(){if(this.date!='NULL'){var task_cell=ID('hday-'+this.date);if(task_cell==undefined){return;}
if(task_cell.link.span.hasClass('tasks-todo')||this.status=='todo'){task_cell.link.span.markTasks();}else{task_cell.link.span.markDone();}}});});}}});function setMulticolor()
{Pinarik.Multicolor=new Multicolor({'full':ENV.user.color_full||'66ff66','idle':ENV.user.color_idle||'ff6666'});Progress.load(LNG.Loading_images);Pinarik.Multicolor.onready=function(){Pinarik.setData();Progress.done(LNG.Loaded_images,true);};}
window.CSS=new Singletone({getRule:function(ruleName,deleteFlag){ruleName=ruleName.toLowerCase();if(document.styleSheets){for(var i=0;i<document.styleSheets.length;i++){try{var styleSheet=document.styleSheets[i];var j=0;var cssRule=false;do{if(styleSheet.cssRules){cssRule=styleSheet.cssRules[j];}else if(styleSheet.rules){cssRule=styleSheet.rules[j];}else{break;}
if(cssRule&&cssRule.selectorText){if(cssRule.selectorText.toLowerCase()==ruleName){if(deleteFlag=='delete'){if(styleSheet.cssRules){styleSheet.deleteRule(j);}else{styleSheet.removeRule(j);}
return true;}else{return cssRule;}}}
j++;}while(cssRule);}catch(e){continue;}}}
return false;},removeRule:function(ruleName){return self.getRule(ruleName,'delete');},addRule:function(ruleName){if(!!document.styleSheets){if(!self.getRule(ruleName)){if(document.styleSheets[0].addRule){document.styleSheets[0].addRule(ruleName,null,0);}else{document.styleSheets[document.styleSheets.length-1].insertRule(ruleName+' {}',0);}}}
return self.getRule(ruleName);}});window.Categories=Mohawk.UI.SortableList.extend({node_margin:new Pixel(0,0),today:null,date:null,api:null,createNode:function(data){if(typeof(data.title)=='undefined'){data.title='';}
var node=parent.createNode(data);node.setHTML('');var input_id=Mohawk.FormsInterface.createInput('hidden','category['+data.id+'][id]',data.id);node.appendChild(input_id);var checkbox=Mohawk.FormsInterface.createInput('checkbox','category['+data.id+'][visible]','yes');checkbox.addClass('done');checkbox.onclick=function(){if(checkbox.checked){node.addClass('checked');}else{node.removeClass('checked');}};node.appendChild(checkbox);checkbox.checked=data.visible=='yes';checkbox.onclick();var textarea=Mohawk.FormsInterface.createInput('textarea','category['+data.id+'][title]',data.title||'');textarea.updateHeight=function(){textarea.style.height='0px';textarea.style.height=textarea.scrollHeight-2+'px';};textarea.onkeydown=function(event){event=Mohawk.DOM.event(event);var key_code=event.key();switch(key_code){case 38:if(node.previousSibling){node.previousSibling.getElementsByTagName('textarea')[0].focus();}
break;case 40:if(node.nextSibling){node.nextSibling.getElementsByTagName('textarea')[0].focus();}
break;case 13:var new_node=self.createNode({id:Math.rand(1e9,1e12),title:''});self.element.insertAfter(new_node,node);node.notLast();new_node.getElementsByTagName('textarea')[0].focus();return false;break;}
textarea.updateHeight();};textarea.onchange=function(){textarea.updateHeight();};textarea.onfocus=function(){textarea.addClass('focus');};textarea.onblur=function(){textarea.removeClass('focus');};node.appendChild(textarea);var input_color=Mohawk.FormsInterface.createInput('text','category['+data.id+'][color]',data.color||'');input_color.addClass('color');node.appendChild(input_color);var pallete=[['cc0000','ff1a00','ff7400','008c00','006e2e','4096ee','36393d'],['b02b2c','d15600','c79810','73880a','6bba70','356aa0','3f4c6b']];Mohawk.UI.ColorPicker.set(input_color,pallete);var sort_btn=document.createElement('IMG');sort_btn.src=URL.img+'site/sort.png';sort_btn.addClass('sort');sort_btn.onmousedown=node.onmousedown;sort_btn.ondragstart=function(event){event=Mohawk.DOM.event(event);event.preventDefault();return false;};node.appendChild(sort_btn);node.onmousedown=null;var del_btn=document.createElement('IMG');del_btn.src=URL.img+'site/trash.png';del_btn.addClass('delete');del_btn.onclick=function(){node.remove();};node.appendChild(del_btn);return node;},setChildren:function(structure){self.element.getElementsByTagName('LI').forEach(function(){if(!this.data){return;}
CSS.removeRule('#planning td .category-'+this.data.id);});structure.forEach(function(){var rule=CSS.addRule('#planning td .category-'+this.id);if(true){var css='';if(this.color){css='background-color: #'+this.color+' !important;';}
css+='display: '+(this.visible=='yes'?'block':'none')+';';rule.style.cssText=css;}else{if(this.color){rule.style.backgroundColor='#'+this.color+' !important';}
rule.style.display=this.visible=='yes'?'block':'none';}});parent.setChildren(structure);},createClone:function(node){var clone=parent.createClone(node);clone.getElementsByTagName('textarea')[0].value=node.getElementsByTagName('textarea')[0].value;return clone;},add:function(data){var focus=false;if(typeof(data)=='undefined'){focus=true;data={};}
if(typeof(data.id)=='undefined'){data.id='new'+Math.rand(1e9,1e12);}
data.visible='yes';var node=self.addNode(data);if(focus){node.getElementsByTagName('textarea')[0].focus();}
node.getElementsByTagName('textarea')[0].updateHeight();},save:function(form){var req=new Ajax(self.api,Ajax.METHOD_POST);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{Progress.done(LNG.Done,true);var items=req.data.item;if(items.id){items=[items];}
self.setChildren(items);Data.category=items;}};req.send(form.getData());Progress.load(LNG.Working);},hideForm:function(){var container=ID('categories-form');container.addClass('hidden');},showForm:function(){var container=ID('categories-form');container.removeClass('hidden');container.style.left=(document.size().width-container.offsetWidth)/2+'px';},toggle:function(){var container=ID('categories-form');if(container.hasClass('show')){container.removeClass('show');}else{container.addClass('show');}}});window.FutureTaskList=TodoList.extend({api:null,default_value:'future',__construct:function(id,structure){self.date=null;parent.__construct(id,structure,Data.today);self.EVENT_SAVED=self.api+'-saved';},save:function(form){var req=new Ajax(self.api,Ajax.METHOD_POST);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{Progress.done(LNG.Done,true);var items=req.data.item;if(empty(items)){items=[];}else if(items.id){items=[items];}else{items=items.values();}
var tasks=items.values();tasks.forEach(function(i){if(this.date!='NULL'){if(!Data.calendar[this.date]){Data.calendar[this.date]={date:this.date,tasks:[]};}
Data.calendar[this.date].tasks.push(this);tasks.splice(i,1);}});self.setChildren(tasks);Data.tasks=tasks;Observer.fire(self.EVENT_SAVED,items);}};req.send(form.getData());Progress.load(LNG.Working);}});window.MonthSwitcher=Mohawk.UI.SelectableList.extend({selected:[],multiple:false,__construct:function(id){var months=[{id:1,title:LNG.Jan},{id:2,title:LNG.Feb},{id:3,title:LNG.Mar},{id:4,title:LNG.Apr},{id:5,title:LNG.May},{id:6,title:LNG.Jun},{id:7,title:LNG.Jul},{id:8,title:LNG.Aug},{id:9,title:LNG.Sep},{id:10,title:LNG.Oct},{id:11,title:LNG.Nov},{id:12,title:LNG.Dec}];parent.__construct(id,months);},createNode:function(data){var node=parent.createNode(data);return node;}});var init_categories=function(){if(ID('category-list')){window.Cats=new Categories('category-list',Data.category.values());Cats.api=URL.home+'api/event-categories/';ID('category-list').replace(Cats.element);}};document.addLoader(function(){if(ID('planning')){var today=Date.fromString(Data.today);var year=today.getFullYear();var month=today.getMonth()+1;window.Planner=new Planning(URL.home+'api/planning/');years=[];for(var y=parseInt(ENV.user.registered.substr(0,4));y<=year+1;y++){years.push(y);}
window.Year=new YearSwitcher('year-switcher',years);ID('year-switcher').replace(Year.element);Year.element.addClass('date-switcher');Observer.add(Year.EVENT_SELECTED,function(){Planner.build(Year.selected[0].data);Month.unselectAll();Month.getNode(1).select();});window.Month=new MonthSwitcher('month-switcher');ID('month-switcher').replace(Month.element);Month.element.addClass('date-switcher');Observer.add(Month.EVENT_SELECTED,function(){var date=Year.selected[0].data+'-'+Month.selected[0].data.id.toString().pad(2,'0')+'-01';Planner.moveTo(date,true);});Planner.build(year);Year.getNode(year).select();Month.getNode(month).select();if(ID('future-tasks-list')){window.FutureTasks=new FutureTaskList('future-tasks-list',[]);FutureTasks.api=URL.home+'api/tasks/';ID('future-tasks-list').replace(FutureTasks.element);FutureTasks.setChildren(Data.tasks.values());Observer.add(Planner.DailyForm.EVENT_SAVED,function(item,tasks){if(typeof(tasks)!='undefined'){tasks.forEach(function(){if(this.date=='NULL'){FutureTasks.add(this);}});}});Observer.add(FutureTasks.EVENT_SAVED,function(tasks){tasks.forEach(function(){if(this.date!='NULL'){var task_cell=ID('hday-'+this.date);if(task_cell==undefined){return;}
if(task_cell.link.span.hasClass('tasks-todo')||this.status=='todo'){task_cell.link.span.markTasks();}else{task_cell.link.span.markDone();}}});});}}
if(!FF&&!OPERA){init_categories();}});if(FF||OPERA){window.onload=init_categories;}
window.Tasks=new Class({api:'',__construct:function(api){self.api=api;},mark:function(checkbox){var req=new Ajax(self.api+checkbox.value+'/',Ajax.METHOD_PUT);req.responseHandler=function(req){if(req.data.error){Progress.done(LNG.Error);}else{try{var item=req.data.item;checkbox.removeClass('hidden');checkbox.nextTag('IMG').addClass('hidden');if(item.status=='done'){checkbox.parentNode.addClass('checked');}else{checkbox.parentNode.removeClass('checked');}}catch(e){Console.describe(e);Progress.done(LNG.Done_error);}}};req.send({status:checkbox.checked?'done':'todo'});checkbox.addClass('hidden');checkbox.nextTag('IMG').removeClass('hidden');}});window.AGENDA="<h2>{%data.calendar.date|format_date}</h2>"+"\n{%if data.calendar.tasks.length == undefined || data.calendar.tasks.length}"+"\n<ul class=\"tasks fields\">"+"\n    {%for task in data.calendar.tasks}"+"\n    <li{%if task.status == 'done'} class=\"checked\"{%end}>"+"\n        <input id=\"calendar-task-{%task.id}\" type=\"checkbox\" value=\"{%task.id}\" onclick=\"Schedule.Tasks.mark(this)\" {%if task.status == 'done'} checked=\"checked\"{%end} />"+"\n        <img src=\"{%URL.img}site/loading.gif\" class=\"hidden\" />"+"\n        <label for=\"calendar-task-{%task.id}\" class=\"inline\">{%task.text|format_text}</label>"+"\n    </li>"+"\n    {%end}"+"\n</ul>"+"\n{%end}"+"\n{%if data.calendar.comment}"+"\n<p class=\"comment\">{%data.calendar.comment}</p>"+"\n{%end}"+"\n"+"\n{%if data.events.length == undefined || data.events.length}"+"\n<form>"+"\n    <input type=\"hidden\" name=\"date\" value=\"{%Data.today}\" />"+"\n    <ul class=\"events\">"+"\n        {%for event in data.events}"+"\n        <li class=\"event\">"+"\n            <big class=\"{%if event.category}category-{%event.category}{%end}\">{%if event.starttime}{%event.starttime|format_time}{%else}&ndash;&ndash;:&ndash;&ndash;{%end}</big>"+"\n            <h3>{%event.title}</h3>"+"\n            <small>{%LNG.event_till} {%event.enddate|format_date}{%if event.endtime}, {%event.endtime|format_time}{%end}</small>"+"\n            "+"\n            {%if event.text}<p class=\"comment\">{%event.text|format_text}</p>{%end}"+"\n            "+"\n            {%if event.tasks}"+"\n            <ul class=\"tasks fields\">"+"\n                {%for task in event.tasks}"+"\n                <li{%if Schedule.CheckList.isMarked(task.id, event.closestdate)} class=\"checked\"{%end}>"+"\n                    <input id=\"event-task-{%task.id}\" type=\"checkbox\" value=\"{%task.id}\" name=\"task[{%task.id}]\" onclick=\"Schedule.CheckList.mark(this, '{%event.closestdate}')\" {%if Schedule.CheckList.isMarked(task.id, event.closestdate)} checked=\"checked\"{%end}/>"+"\n                    <img src=\"{%URL.img}site/loading.gif\" class=\"hidden\" />"+"\n                    <label for=\"event-task-{%task.id}\" class=\"inline\">{%task.text|format_text}</label>"+"\n                </li>"+"\n                {%end}"+"\n            </ul>"+"\n            {%end}"+"\n        </li>"+"\n        {%end}"+"\n    </ul>"+"\n</form>"+"\n{%end}"+"\n"+"\n{%if (!data.calendar.tasks.length && data.calendar.tasks.length != undefined) && !data.calendar.comment && (!data.events.length && data.events.length != undefined)}"+"\n<p class=\"empty\">{%LNG.Agenda_empty_message}</p>"+"\n<p>{%LNG.Go_to} <a href=\"{%URL.home}calendar/\">{%LNG.calendar}</a> {%LNG.or} <a href=\"{%URL.home}planning/\">{%LNG.plan_something}</a>.</p>"+"\n{%end}";Mohawk.Loader.extendLanguage({"event_till":"до","agenda_empty_message":"Если здесь пусто, значит, на сегодня нет ни одного события или задания. Удачного дня!","go_to":"перейти в","plan_something":"запланировать что-нибудь"})
Mohawk.Loader.extendLanguage({"worktrek":"ворктрек","pinarik":"пинарик онлайн","statistics":"статистика","calendar":"календарь","agenda":"расписание","comics":"комикс","log":"журнал","planner":"планирование","mobile_version":"мобильная версия","help":"помощь","about_project":"о проекте","contact_us":"написать нам","powered_by":"работает на","cherokee":"чероки","have_idea":"есть идея","donate":"поддержать проект","designed_by":"дизайн","emuravjev":"Студия Евгения Муравьёва","or":"или","site_keywords":"пинарик онлайн, продуктивность, самомотивация, тайм-менеджмент, управление временем, список дел, органайзер, планирование времени","site_description":"Ворктрек - онлайн календарь для учета продуктивности и самомотивации","title_403":"Необходима авторизация","title_404":"Страница не найдена","error_403":"Для доступа к этой странице вам необходимо авторизоваться","error_404":"К сожалению, данная страница не найдена"})
window.Agenda=new Class({element:null,__construct:function(element){self.element=element;self.CheckList=new CheckList(URL.home+'api/planning/');self.CheckList.setData();self.Tasks=new Tasks(URL.home+'api/tasks/');},build:function(data){Template.assign('data',data);Template.assign('format_time',self.formatTime);Template.assign('format_date',self.formatDate);Template.assign('format_text',self.formatText);self.element.setHTML(Template.transform(AGENDA));},formatText:function(str){var str=str||'';str=String(str);str=str.trim();str=htmlspecialchars(str);str=nl2br(str);return str;},formatDate:function(date){if(!(date instanceof Date)){date=Date.fromString(date);}
var months=['January','February','March','April','May','June','July','August','September','October','November','December'];var weekdays=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];var j=date.getDate();var w=date.getDay();var m=date.getMonth();var Y=date.getFullYear();var F=LNG['of_'+months[m]];var l=LNG[weekdays[w]];var format='';switch(ENV.language){case'ru':format=j+' '+F.toLowerCase()+', '+l.toLowerCase();break;default:case'en':format=l+', '+F+' '+j;break;}
return format;},formatTime:function(time){var format=function(hour,mins,secs){var hour=hour.toString().pad(2,'0');var mins=mins.toString().pad(2,'0');if(self.display_seconds){var secs=secs.toString().pad(2,'0');}
return hour+':'+mins;};var parse=function(str){var time_regexp=new RegExp('^(\\d{1,2})[\.-:](\\d{1,2})(?:[\.-:](\\d{1,2}))?$');var hour='',mins='',secs='';if(time=time_regexp.exec(str)){hour=time[1];mins=time[2];secs=time[3];}else{hour='00';mins='00';secs='00';}
return{hour:hour,mins:mins,secs:secs};};var time=parse(time);return format(time.hour,time.mins);}});document.addLoader(function(){if(ID('agenda')){window.Schedule=new Agenda(ID('agenda'));Schedule.build(Data.agenda);}});
window.FormProcessor=new Class({api:false,method:false,form:false,submit:function(form){self.form=form;var req=new Ajax(self.api||form.action,self.method||Ajax.METHOD_POST);req.responseHandler=function(req){self.responseHandler.apply(self,[req]);};req.send(form.getData());self.doAfterSubmit(form);return false;},doAfterSubmit:function(){Progress.load(LNG.Submitting||'Submitting');},responseHandler:function(req){if(req.data.error){self.errorHandler.apply(self,[req]);}else{self.successHandler.apply(self,[req]);}},successHandler:function(req){Progress.done(LNG.Done||'Done');},errorHandler:function(req){Progress.done(LNG.Error||'Error',true);}});window.CommonFormProcessor=FormProcessor.extend({template:false,doAfterSubmit:function(){parent.doAfterSubmit();self.form.getElementsByClassName('error').forEach(function(){this.remove();});},successHandler:function(req){parent.successHandler(req);if(self.template){Template.assign('data',req.data.item);var div=document.createElement('DIV');div.className='wrapper';div.innerHTML=Template.transform(self.template);self.form.parentNode.replaceChild(div,self.form);}},errorHandler:function(req){parent.errorHandler(req);var error=req.data.error;error.forEach(function(name){var input=self.form['data['+name+']'];if(!input){return true;}
var error=input.nextTag('STRONG');if(!error){error=document.createElement('STRONG');error.addClass('error');input.parentNode.appendChild(error);}
error.innerHTML=this;});if(error.captcha&&ID('captcha')){var img=ID('captcha');var d=new Date;var uid=''+d.getHours()+d.getMinutes()+d.getSeconds()+d.getMilliseconds();img.src=img.src.replace(new RegExp('(\\?\\d+)?$'),'?'+uid);}}});Mohawk.Loader.extendLanguage({"email":"эл. почта","password":"пароль","timezone":"часовой пояс","comments":"комментарии","comments_off":"нет (простой интерфейс)","comments_on":"включить","planning":"список дел","planning_off":"нет (простой интерфейс)","planning_on":"включить","sidebar":"боковая панель","sidebar_off":"скрывать","sidebar_on":"показывать","color_idle":"непродуктивный цвет","color_full":"продуктивный цвет","multicolor":"изображение дня","multicolor_off":"выключить","multicolor_on":"использовать","language":"язык","reminder":"напоминание","calendar_type":"вид по умолчанию","calendar_simple":"простой","calendar_calendar":"календарный","jabber":"джаббер","icq":"icq","msn":"MSN","yahoo":"Yahoo","phone":"телефон","error_empty_name":"заполните имя","error_empty_email":"заполните эл. почту","error_invalid_email":"неправильная эл. почта","error_not_unique_email":"пользователь с такой эл. почтой уже зарегистрирован","error_empty_password":"заполните пароль","error_wrong_password2":"пароли не совпадают","error_invalid_jabber":"неправильный джаббер","error_invalid_icq":"неправильный номер ICQ","error_invalid_color_idle":"неправильный цвет, должен быть в виде 16-ричного числа: 123abc","error_invalid_color_full":"неправильный цвет, должен быть в виде 16-ричного числа: 123abc"})
Mohawk.Loader.extendLanguage({"settings":"настройки","account":"учетная запись","tuning":"тюнинг","appearance":"внешний вид","contacts":"контакты","email_change":"смена эл. почты","jabber_change":"смена джаббера","icq_change":"смена ICQ","msn_change":"смена MSN","yahoo_change":"смена Yahoo","never":"никогда","reminder_time":"время ежедневного напоминания","send_to":"выслать на","to_email":"эл. почту","to_jabber":"джаббер","to_icq":"ICQ","to_msn":"MSN","to_yahoo":"Yahoo","to_sms":"SMS","comments_hint":"если вы включите комментарии, то у вас появится возможность оставлять запись о каждом дне","planning_hint":"возможность составлять список дел на каждый день","reminder_hint":"укажите, в котором часу вы хотите получить письмо с напоминанием; если вы не хотите получать напоминания, выберите 'никогда'","jabber_hint":"вы можете указать свой джаббер или GTalk (например: your.name@gmail.com)","icq_hint":"напоминание придет от нашего робота с ICQ 585612392","msn_hint":"например, msn_id@hotmail.com","yahoo_hint":"например, yahoo_id","contacts_hint":"здесь вы можете указать ваши адреса, которые будут использоваться при рассылке напоминаний","contacts_beta_hint":"новые функции (в стадии беты, но вы можете их опробовать)","phone_hint":"сюда будут приходить смс с напоминанием","multicolor_hint":"при включении этой опции, на каждый день будет выбрано случайное изображение с подходящим цветом","multicolor_used":"работает при помощи","current_email":"текущая эл. почта","old_password":"старый пароль","new_password":"новый пароль","confirm_password":"и еще раз","new_email":"новая эл. почта","submit":"сохранить","submitting":"данные отправляются","done":"готово","error":"возникла ошибка","change_email":"если вы хотите изменить эл. почту, то на новый адрес будет выслан запрос с подтверждением","change_password":"чтобы поменять пароль, введите сперва текущий пароль","reloading":"страница обновляется","resend_confirmation":"нажмите, чтобы повторно отправить ссылку для подтверждения нового адреса","confirmation_sent":"ссылка для подтверждения отправлена на новый адрес","address_confirmed":"адрес подтвержден","confirmation_code":"код подтверждения","confirm":"подтвердить","error_wrong_password":"неправильный пароль","error_invalid_password1":"пароль не может совпадать с логином","error_invalid_new_email":"неправильная эл. почта","error_invalid_new_jabber":"неправильный джаббер","error_invalid_new_icq":"неправильная номер ICQ","error_invalid_new_msn":"неправильный адрес MSN","error_invalid_new_yahoo":"неправильная адрес Yahoo","error_empty_new_jabber":"укажите джаббер","error_empty_new_icq":"укажите номер ICQ","error_empty_new_msn":"укажите адрес MSN","error_empty_new_yahoo":"укажите адрес Yahoo","error_not_unique_new_email":"пользователь с такой эл. почтой уже зарегистрирован","error_not_unique_new_jabber":"пользователь с таким джаббером уже зарегистрирован","error_not_unique_new_icq":"пользователь с таким номером ICQ уже зарегистрирован","error_not_unique_new_msn":"пользователь с такой адресом MSN уже зарегистрирован","error_not_unique_new_yahoo":"пользователь с такой адресом Yahoo уже зарегистрирован"})
window.Settings=new(CommonFormProcessor.extend({template:false,successHandler:function(req){try{var new_data=req.data.item;var language_changed=ENV.user.language!=new_data.language;var colors_changed=ENV.user.color_idle!=new_data.color_idle||ENV.user.color_full!=new_data.color_full;var multicolor_changed=new_data.multicolor!=ENV.user.multicolor;parent.successHandler(req);if(language_changed||((colors_changed)&&IE)){Progress.load(LNG.Reloading);window.location.reload();}
var style=document.createElement('STYLE');style.type='text/css';if(new_data.color_idle){style.appendChild(document.createTextNode(' .idle {background: #'+req.data.item.color_idle+'}'));}
if(new_data.color_full){style.appendChild(document.createTextNode(' .full {background: #'+req.data.item.color_full+'}'));}
if(new_data.comments=='off'){ID('menu-log').addClass('hidden');}else{ID('menu-log').removeClass('hidden');}
new_data.forEach(function(key){ENV.user[key]=this;});if(typeof(Pinarik)!='undefined'&&multicolor_changed){if(ENV.user.multicolor=='on'){if(!Pinarik.Multicolor){setMulticolor();}else{Pinarik.setData();}}else{Pinarik.setData();}}
document.getElementsByTagName('HEAD')[0].appendChild(style);if(new_data.new_phone){ID('phone-confirmation').ancestorTag('LI').removeClass('hidden');var img=ID('phone-confirmation').ancestorTag('LI').previousTag('LI').firstTag('IMG');img.removeClass('hidden');}}catch(e){Console.describe(e);}}}));window.Settings.confirm=function(img,type){var req=new Ajax(URL.home+'api/settings/'+type+'/');req.responseHandler=function(req){if(!req.data.error){img.src=URL.img+'site/sent.png';img.title=LNG.Confirmation_sent;}else{img.src=URL.img+'site/error.png';img.title=LNG.Error;img.onclick=img._onclick;}};req.send();img.src=URL.img+'site/loading.gif';img._onclick=img.onclick;img.onclick=function(){};img.removeClass('click');img.title=LNG.Loading;};window.Settings.confirmPhone=function(){var field=ID('phone-confirmation');var code=field.value;var req=new Ajax(URL.home+'api/settings/phone-'+code+'/');var img=field.ancestorTag('LI').previousTag('LI').firstTag('IMG');req.responseHandler=function(req){if(!req.data.error){img.src=URL.img+'site/confirmed.png';img.title=LNG.Confirmation_sent;if(ENV.user.new_phone){ENV.user.phone=ENV.user.new_phone;ENV.user.new_phone=null;}}else{img.src=URL.img+'site/error.png';img.title=LNG.Error;img.onclick=img._onclick;}};req.send();img.src=URL.img+'site/loading.gif';img._onclick=img.onclick;img.onclick=function(){};img.removeClass('click');img.title=LNG.Loading;};document.addLoader(function(){if(ID('settings-form')){var tabs=ID('settings-form').getElementsByTagName('DL')[0];var tabset=Mohawk.UI.Tabset.fromElement(tabs);tabs.parentNode.replaceChild(tabset.element,tabs);}
if(ID('field-color-idle')){var pallete_idle=['ff0000','ff6666','ffaaaa','ffcccc','ffeeee'];var picker_idle=new Mohawk.UI.ColorPicker(pallete_idle);picker_idle.set(ID('field-color-idle'));picker_idle.append();}
if(ID('field-color-full')){var pallete_full=['00ff00','66ff66','aaffaa','ccffcc','eeffee'];var picker_full=new Mohawk.UI.ColorPicker(pallete_full);picker_full.set(ID('field-color-full'));picker_full.append();}});
window.REGISTRATION_SUCCESS="<p>"+"\n{%if ENV.language == 'ru'}"+"\n    Спасибо, Ваша регистрация прошла успешно."+"\n    <br />После подтверждения эл. почты, вы можете войти в свой кабинет."+"\n    <br />Проверьте почту: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%elseif ENV.language == 'en'}"+"\n    Thank you! Your registration is completed."+"\n    <br />After confirming your email, you can enter your account."+"\n    <br />Check your email: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%else}"+"\n    감사합니다! 귀하의 등록이 완료되었습니다."+"\n    <br />귀하의 이메일을 확인한 후, 귀하는 귀하의 계정으로 접속할 수 있습니다."+"\n    <br />귀하의 이메일을 확인하세요: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%end}"+"\n</p>";window.REGISTRATION_EMAIL="<p>"+"\n{%if ENV.language == 'ru'}"+"\n    Подтверждение адреса было повторно выслано на вашу почту: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>."+"\n    Если письма до сих пор нет, проверьте папку \"спам\"."+"\n{%elseif ENV.language == 'en'}"+"\n    We have resent you a confirmation letter to your email: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>."+"\n    If you have do not have it in your INBOX, try to check SPAM folder."+"\n{%else}"+"\n    우리는 귀하의 이메일로 확인 문자를 재발송하였습니다: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>."+"\n    만약 귀하의 받은 편지함에 저장되어있지 않다면, 스팸 메일함을 확인하세요."+"\n{%end}"+"\n</p>";Mohawk.Loader.extendLanguage({"register":"зарегистрироваться","registration":"регистрация","activation":"активация учетной записи","resend_confirmation":"подтверждение эл. почты","no_confirmation":"я не получил письмо для активации","confirmation_explain":"если вам не пришло письмо для подтверждения эл. почты, введите сюда адрес, указанный при регистрации","confirm_password":"и еще раз","control_digits":"введите цифры","submit":"отправить","submitting":"секундочку, мы быстро","done":"готово","error":"возникла ошибка","error_wrong_captcha":"неправильно введены контрольные цифры","error_wrong_email":"пользователь с такой эл. почтой не зарегистрирован","error_active_email":"вы уже активировали свой аккаунт"})
window.email_provider=function(email){return'http://'+email.substr(email.indexOf('@')+1);};window.Registration=new(CommonFormProcessor.extend({template:REGISTRATION_SUCCESS}));window.Confirmation=new(CommonFormProcessor.extend({method:Ajax.METHOD_PUT,template:REGISTRATION_EMAIL}));
window.RECOVERY_SUCCESS="<p>"+"\n{%if ENV.language == 'ru'}"+"\n    На вашу почту отправлено письмо для восстановления доступа к вашей учетной записи."+"\n    <br />Проверьте почту: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%elseif ENV.language == 'en'}"+"\n    We have sent you an email with instruction for your password recovery."+"\n    <br />Check your email: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%else}"+"\n    귀하의 비밀 번호 복구를 위한 지침을 이메일로 보냈습니다."+"\n    <br />귀하의 이메일을 확인하세요: <a href=\"{%data.email|email_provider}\">{%data.email|email_provider}</a>"+"\n{%end}"+"\n</p>";Mohawk.Loader.extendLanguage({"forgot_password":"я забыл свой пароль","recovery":"восстановление пароля","recovery_explain":"введите адрес эл. почты, указанной при регистрации","control_digits":"введите цифры","submit":"отправить","submitting":"секундочку, мы быстро","done":"готово","error":"возникла ошибка","error_inactive_email":"эл. почта еще не подтверждена","error_wrong_email":"пользователь с такой эл. почтой не зарегистрирован","error_wrong_captcha":"неправильно введены контрольные цифры"})
window.email_provider=function(email){return'http://'+email.substr(email.indexOf('@')+1);};window.Recovery=new(CommonFormProcessor.extend({template:RECOVERY_SUCCESS}));
