/**
 * @author Alexander Samilyak (aleksam@design.ru)
 * @author Stepan Reznikov (stepan@design.ru)
 * @author Dmitry Filatov 
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
 */

Function.prototype.extend=function(A){for(var B in A){if(A.hasOwnProperty(B)){this.prototype[B]=A[B]}}};Function.extend({inheritFrom:function(B,C){var D=function(){};D.prototype=B.prototype;this.prototype=new D();this.prototype.constructor=this;this.baseConstructor=B;this.superClass=B.prototype;if(C){for(var A in C){this.prototype[A]=C[A]}}}});Number.extend({between:function(B,A){return !!(this.valueOf()>=Math.min(B,A)&&this.valueOf()<=Math.max(B,A))},nice:function(I){var L=/^(\d+)([\.,](\d+))?$/;var C=Number(this);var G=String(C);var H;var B="";var A="&nbsp;";if((H=G.match(L))){var E=H[1];var J=H[3]?Number("0."+H[3]):0;if(J){var D=Math.pow(10,I?I:2);J=Math.round(J*D);B=J?","+J:""}if(Number(E)<10000){return E+B}else{var K="";var F;for(F=1;F*3<E.length;F++){K=A+E.substring(E.length-F*3,E.length-(F-1)*3)+K}return E.substr(0,3-F*3+E.length)+K+B}}else{return G}}});Array.extend({foreach:function(D){for(var C=0,B=this.length;C<B;C++){var A=D(this[C],C);if(A===false){break}}},contains:function(A){return $.inArray(A,this)>-1},remove:function(B){var A=this;this.foreach(function(D,C){if(D===B){A.splice(C,1);return false}})}});function Observable(){this.aObservers=[]}Observable.prototype={attachObserver:function(B,A){if(!(A instanceof Object)){return }if(!this.aObservers[B]){this.aObservers[B]=[]}this.aObservers[B].push(A)},detachObserver:function(B,A){if(this.aObservers[B]&&this.aObservers[B].contains(A)){this.aObservers[B].remove(A)}},notify:function(A){if(!this.aObservers[A]){return }this.aObservers[A].foreach(function(B){if(B instanceof Function){B(A,this)}else{if(B.update instanceof Function){B.update(A,this)}}})},clearObservers:function(){this.aObservers=[]}};var Hitek={msieVersion:$.browser.msie?parseInt(navigator.appVersion.match(/msie (\d+)/i)[1]):0,POPUP_DIMENSIONS:{width:600,height:600},init:function(){this.jGlobal=$("#outer");this.jMeasurer=$("#measurer");if($.browser.msie){if(this.msieVersion<=6){this.globalWidth()}this.pngFix();this.marginFix()}this.initReflow();this.initLoginForm();this.initContainers();this.initFooter();this.initPopups();this.initKeyboardNavigation();this.attachEvents()},globalWidth:function(){var B=this,A=this.jGlobal.css("min-width");if(this.jGlobal.css("width")=="auto"){$(window).resize(function(){if(B.jMeasurer[0].offsetWidth<A){B.jGlobal[0].style.width=A+"px"}else{B.jGlobal[0].style.width="100%"}})}},pngFix:function(C){var B=this,A=C?C.find("img.png"):$("img.png");A.each(function(){var E=$(this);if((B.msieVersion<=6&&!E.is(".fixed"))||E.is(".fixme")){var D=E.is(".scale")?"scale":"crop";this.style.filter+='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+this.src+'", sizingMethod="'+D+'")';this.src="/f/1/global/e.gif"}})},marginFix:function(){$("h2, h3, h4").each(function(){if(!this.previousSibling||(this.previousSibling&&this.previousSibling.nodeName.match(/^H[1-4]$/))){this.style.marginTop="0"}})},initReflow:function(){this.oReflow=new Reflow()},initLoginForm:function(){this.oLoginForm=new LoginForm()},initContainers:function(){$(".container_link").click(function(B){var C=this.id.match(/for_(\w+)/)[1],A=$("#"+C);if(A.size()){if(A.is(".hidden")){$(this).addClass("open");A.removeClass("hidden")}else{$(this).removeClass("open");A.addClass("hidden")}}B.preventDefault();return false})},initFooter:function(){var A=this;this.oFooter={jPtr:$("#footer"),bState:false};this.oReflow.attachObserver("layoutChange",function(){A.footerRefresh()})},footerRefresh:function(){if(this.oFooter.bState){this.oFooter.jPtr.removeClass("refresh")}else{this.oFooter.jPtr.addClass("refresh")}this.oFooter.bState=!this.oFooter.bState},initPopups:function(){var A=this;$("a.popup").each(function(){var C=this,B={};["width","height"].foreach(function(D){var E=C.className.match(new RegExp(D+"_(\d+)"));B[D]=E?E[1]:null});$(this).click(function(D){D.preventDefault();A.popup(this.href,B.width,B.height);return false})})},popup:function(E,C,B){var D=C||this.POPUP_DIMENSIONS.width,A=B||this.POPUP_DIMENSIONS.height;window.open(E,"",["width="+D,"height="+A,"left="+(screen.availWidth-D)/2,"top="+(screen.availHeight-A)/2,"menubar=no","toolbar=no","resizable=yes","scrollbars=yes","status=yes"].join(","))},initKeyboardNavigation:function(){var A=this;this.oKeyboardLinks={home:$("#HomeLink").attr("href"),parent:$("#ParentLink").attr("href")};$(document).keydown(function(B){A.keyboardNavigate(B)})},attachEvents:function(){var A=this;$(window).load(function(){A.preloadImages()})},cssLength:function(B){var A=B.match(/^(\+|\-)?(\d+\.?\d*)(px|em|%|pt)$/);return{iValue:(A?+((A[1]||"")+A[2]):0),iUnits:(A?A[3]:"px")}},cssUrl:function(A){return A.match(/url\((.+)\)/)[1]},pixelToEm:function(A){return A/this.oReflow.iFontSize},pixelToNormalEm:function(A){return A/this.oReflow.NORMAL_FONT_SIZE},getMouseCoords:function(A){return{abs:this.getAbsMouseCoords(A)||null,rel:this.getRelMouseCoords(A)||null}},getAbsMouseCoords:function(A){if($.browser.msie){return{x:A.pageX,y:A.pageY}}else{return{x:A.pageX,y:A.pageY}}},getRelMouseCoords:function(A){if(A.offsetX!==undefined&&A.offsetY!==undefined){return{x:A.offsetX,y:A.offsetY}}else{var B=$(A.target).offset();return{x:A.pageX-B.left,y:A.pageY-B.top}}},tween:function(C,A){for(var D in this.props){if(this.props.hasOwnProperty(D)){var B=this.props[D].s+(this.props[D].f-this.props[D].s)*this.position;if(A){A(D,B)}else{C.style[D]=Math.round(B)+"px"}}}},keyboardNavigate:function(A){if(A.ctrlKey){var B=null;switch(A.keyCode){case 36:B=this.oKeyboardLinks.home;break;case 38:B=this.oKeyboardLinks.parent;break}if(B){document.location=B}}},addAjaxUrl:function(B,A){if(!this.oAjaxUrls){this.oAjaxUrls={}}this.oAjaxUrls[B]=A},getAjaxUrl:function(A){return this.oAjaxUrls?this.oAjaxUrls[A]:null},addPreload:function(A){if(this.aPreloadImages){this.aPreloadImages.push(A)}else{this.aPreloadImages=[A]}},preloadImages:function(){if(this.aPreloadImages){var A=this;fEmpty=function(){},this.aPreloadImages.foreach(function(D,C){var B=document.createElement("img");B.src=D;B.onload=fEmpty;A.aPreloadImages[C]=B});$(window).unload(function(){A.aPreloadImages.foreach(function(B){A.purge(B)})})}},purge:function(A){if(A instanceof Array){A.foreach(function(B){this.purgeElement(B)})}else{this.purgeElement(A)}},purgeElement:function(C){var A=C.attributes,B;if(A){for(B=0,l=A.lengthl;B<l;B+=1){var D=A[B].name;if(typeof C[D]==="function"){C[D]=null}}}A=C.childNodes;if(A){for(B=0,l=A.length;B<l;B++){purge(C.childNodes[B])}}},each:function(A,B,C){C=C||[];A.foreach(function(D,E){C.unshift(E);return B.apply(D,C)})}};$(document).ready(function(){Hitek.init()});Reflow=function(){this.constructor.baseConstructor.call(this);this.domInit();this.startValuesInit();this.initHandlers();this.attachEvents()};Reflow.inheritFrom(Observable,{EVENTS:{reflow:1,windowResize:1,fontChange:1,layoutChange:1},NORMAL_FONT_SIZE:16,QUERY_INTERVAL:200,domInit:function(){this.eMeasurer=Hitek.jMeasurer[0];this.eGlobal=Hitek.jGlobal[0]},startValuesInit:function(){this.iFontSize=this.eMeasurer.offsetHeight;this.iLayoutHeight=this.eGlobal.offsetHeight},attachEvents:function(){this.attachResize();this.attachFontChange();this.attachLayoutChange()},attachResize:function(){var A=this;$(window).resize(function(){A.onWindowResize();A.onReflow()})},attachFontChange:function(){var A=this;setInterval(function(){var B=A.eMeasurer.offsetHeight;if(B!=A.iFontSize){A.iFontSize=B;A.onFontChange();A.onReflow()}},this.QUERY_INTERVAL)},attachLayoutChange:function(){var A=this;setInterval(function(){var B=A.eGlobal.offsetHeight;if(B!=A.iLayoutHeight){A.iLayoutHeight=B;A.onLayoutChange();A.onReflow()}},this.QUERY_INTERVAL)},initHandlers:function(){var B=this;for(var C in this.EVENTS){if(this.EVENTS.hasOwnProperty(C)){var A=C.substring(0,1).toUpperCase()+C.substring(1);this["on"+A]=function(D){return function(){B.notify(D)}}(C)}}}});function PopupBlock(B,A){this.jContainer=B;this.jLink=A;this.bOpened=!this.jContainer.is(".hidden");this.attachEvents()}PopupBlock.prototype={ESCAPE_KEY_CODE:27,attachEvents:function(){var A=this;this.jLink.click(function(B){if(A.toggle()){B.stopPropagation();B.preventDefault();return false}});this.jContainer.click(function(B){B.stopPropagation()});$(document).click(function(){A.hide()}).keydown(function(B){A.cancel(B)})},isInit:function(){if(!this.bInit){this.bInit=this.jContainer&&this.jLink}return this.bInit},toggle:function(){if(this.isInit()){if(!this.bOpened){this.show()}else{this.hide()}return true}else{return false}},show:function(){if(this.isInit()&&!this.bOpened){this.bOpened=true;this.jContainer.removeClass("hidden")}},hide:function(){if(this.isInit()&&this.bOpened){this.bOpened=false;this.jContainer.addClass("hidden")}},cancel:function(A){if(this.isInit()&&this.bOpened&&A.keyCode==this.ESCAPE_KEY_CODE){this.hide()}}};InputPlaceholder=function(C,B,A){this.jPtr=C;this.sEmptyValue=B||this.getValue();this.oClasses=A;this.init();this.attachEvents()};InputPlaceholder.prototype={init:function(){if(this.isEmpty()){this.jPtr.val(this.sEmptyValue)}if(this.isNotTouched()){this.jPtr.addClass(this.oClasses.sEmpty)}},attachEvents:function(){var A=this;this.jPtr.keyup(function(){A.inputKeyDown()}).focus(function(){A.inputFocus()}).blur(function(){A.inputBlur()})},inputKeyDown:function(){if(this.getValue()){this.makeFilled()}},inputFocus:function(){if(this.getValue()===this.sEmptyValue){this.jPtr.val("");this.jPtr.removeClass(this.oClasses.sEmpty)}else{this.makeFilled()}},inputBlur:function(){if(this.isNotTouched()){this.jPtr.val(this.sEmptyValue);this.makeEmpty()}else{this.makeFilled()}},makeFilled:function(){this.jPtr.removeClass(this.oClasses.sEmpty).addClass(this.oClasses.sFilled||"")},makeEmpty:function(){this.jPtr.removeClass(this.oClasses.sFilled||"").addClass(this.oClasses.sEmpty)},isEmpty:function(){return $.trim(this.getValue())===""},isNotTouched:function(){return(this.isEmpty()||this.getValue()===this.sEmptyValue)},getValue:function(){return this.jPtr.val()}};Form=function(A){this.jPtr=A;this.initFields();this.initSubmit();this.check();this.attachEvents()};Form.prototype={initFields:function(){var A=this;this.aFields=[];this.jPtr.find("dl.required").each(function(){A.aFields.push(A.makeInput($(this)))})},initSubmit:function(){this.jSubmit=this.jPtr.find("*:submit")},attachEvents:function(){var A=this;this.jPtr.submit(function(B){if(!A.bValid){B.preventDefault();return false}})},check:function(){var B=this,A=true;this.eachField(function(){if(!this.isValid()){A=false;return false}});this.bValid=A;this.updateSubmitButton();return A},updateSubmitButton:function(){if(this.bValid){this.enableSubmitButton()}else{this.disableSubmitButton()}},enableSubmitButton:function(){this.jSubmit.attr("disabled",false)},disableSubmitButton:function(){this.jSubmit.attr("disabled",true)},eachField:function(A,B){Hitek.each(this.aFields,A,B)},makeInput:function(A){if(A.is(".type_email")){return new FormEmail(A,this)}else{return new FormField(A,this)}}};$(document).ready(function(){$("form.check").each(function(){new Form($(this))})});FormField=function(A,B){this.jPtr=A;this.oForm=B;this.jInput=A.find("input, textarea").eq(0);this.check(true);this.attachEvents()};FormField.CLASS_VALID="required-ok";FormField.CLASS_INVALID="required";FormField.prototype={attachEvents:function(){var A=this;this.jInput.change(function(){A.check()}).blur(function(){A.check()}).keyup(function(){A.check()})},check:function(A){this.internalValidate()?this.makeValid():this.makeInvalid();if(!A&&this.isStateChanged()){this.oForm.check()}},internalValidate:function(){return(this.getValue()!=="")},getValue:function(){return $.trim(this.jInput.val())},isStateChanged:function(){return this.bValid!==this.bOldValid},isValid:function(){return this.bValid},makeValid:function(){this.saveOldState();this.bValid=true;this.jPtr.removeClass(FormField.CLASS_INVALID).addClass(FormField.CLASS_VALID)},makeInvalid:function(){this.saveOldState();this.bValid=false;this.jPtr.removeClass(FormField.CLASS_VALID).addClass(FormField.CLASS_INVALID)},saveOldState:function(){this.bOldValid=this.bValid}};FormEmail=function(A){this.constructor.baseConstructor.apply(this,arguments)};FormEmail.rePattern=/^[a-zA-Z0-9][a-zA-Z0-9\.\-\_\~]*\@[a-zA-Z0-9\.\-\_]+\.[a-zA-Z]{2,4}$/i;FormEmail.inheritFrom(FormField,{internalValidate:function(){return this.constructor.rePattern.test(this.getValue())}});TabSwitch=function(B,E){TabSwitch.baseConstructor.call(this);this.jSwitchItems=B;this.jContentAreas=E;var D=0,C=0,A=this.jSwitchItems.filter(".current");this.jSwitchItemSelected=A.size()?A.eq(0):null;this.attachEvents()};TabSwitch.inheritFrom(Observable,{attachEvents:function(){var A=this;this.jSwitchItems.each(function(){var C=$(this),B=C.find("span.link"),D=B.size()?B.eq(0):C;D.click(function(){A.switchTab(C)})})},switchTab:function(B){if(this.jSwitchItemSelected[0]!=B[0]){if(this.jSwitchItemSelected.size()){this.jSwitchItemSelected.removeClass("current")}B.addClass("current");this.jSwitchItemSelected=B;var A=B[0].className.match(/for_(\w+)/)[1];if(A=="all"){this.showAll()}else{this.hideAll();this.jContentAreas.filter("."+A).removeClass("hidden")}this.notify(A)}},hideAll:function(){this.jContentAreas.addClass("hidden")},showAll:function(){this.jContentAreas.removeClass("hidden")}});function LoginForm(){this.constructor.baseConstructor.call(this,$("#login_form"),$("#login_link a"));if(this.jContainer.size()){this.domInit();this.sAjaxUrl=Hitek.getAjaxUrl("login");this.attacSpecialhEvents()}}LoginForm.inheritFrom(PopupBlock,{SUCCESS_REDIRECT_URL:"/profile/",domInit:function(){this.jForm=this.jContainer.find("form").eq(0);this.jClose=$("#login_form_close");this.jUserNameInput=$("#j_username");this.jPasswordInput=$("#j_password");this.jProgress=$("#login_form_progress");this.jError=$("#login_form_error")},attacSpecialhEvents:function(){var A=this;if(this.jForm){this.jForm.submit(function(B){if(A.send()){B.preventDefault();return false}})}if(this.jClose){this.jClose.click(function(B){A.hide();B.preventDefault();return false})}$(window).load(function(B){A.intXFormCheck=setInterval(function(){A.xFormCheck()},100)})},initCapsLock:function(){this.jCapsLockWarning=$("#login_form_caps_lock_warning");if(this.jPasswordInput&&this.jCapsLockWarning){this.jPasswordInput.parent().before(this.jCapsLockWarning)}},isInit:function(){if(!this.bInit){this.bInit=this.jContainer&&this.jForm}return this.bInit},show:function(A){this.constructor.superClass.show.apply(this,arguments);if(this.isInit()&&this.jUserNameInput.size()){this.jUserNameInput[0].focus()}},send:function(){if(this.isInit()&&this.jProgress&&this.jError){this.jError.addClass("hidden");this.jProgress.removeClass("hidden");var C=this,B=this.jForm.find("input"),A={};B.each(function(){if(this.name&&(this.type!="checkbox"||this.checked)){A[this.name]=this.value}});$.post(this.sAjaxUrl,A,function(D){C.ajaxCallback(D)});return true}else{return false}},ajaxCallback:function(A){if(A.indexOf("request-uri:"+this.SUCCESS_REDIRECT_URL)!=-1){this.allow()}else{this.deny()}},allow:function(){if(this.isInit()){document.location.reload()}},deny:function(){if(this.isInit()&&this.jProgress&&this.jError){this.jProgress.addClass("hidden");this.jError.removeClass("hidden")}},xFormCheck:function(){if(this.isInit()&&this.jUserNameInput.size()){if(this.jUserNameInput.val()!==""&&window.xForm){xForm.init()}clearInterval(this.intXFormCheck)}},capsLockDetect:function(A){if(this.isInit()){var C=0;if(A.which){C=A.which}else{if(A.keyCode){C=A.keyCode}else{if(A.charCode){C=A.charCode}}}var B=false;if(A.shiftKey){B=A.shiftKey}else{if(A.modifiers){if(A.modifiers&4){B=true}}}if(C>64&&C<91&&!B){this.showCapsLockWarning()}else{if(C>96&&C<123&&B){this.showCapsLockWarning()}else{this.hideCapsLockWarning()}}}},showCapsLockWarning:function(){if(this.isInit()&&this.jCapsLockWarning){this.jCapsLockWarning.removeClass("hidden")}},hideCapsLockWarning:function(){if(this.isInit()&&this.jCapsLockWarning){this.jCapsLockWarning.addClass("hidden")}}});