mirror of
https://gitverse.ru/kpa39l/yaru.nixg.ru.git
synced 2026-09-29 18:05:05 +00:00
1 line
29 KiB
JavaScript
1 line
29 KiB
JavaScript
(function(){var Log=function(){};Log.prototype.error=function(message,source,line,type){message=message||"";source=source||"";if(source.indexOf("an.yandex.ru")>=0||source.indexOf("mc.yandex.ru")>=0||source.indexOf("chrome://")>=0){return}if(message==="Script error."&&source==""&&line==0){return}if(message.indexOf("Script error")>=0&&source.indexOf("yandex")<0){return}var query=["/favicon.ico?type=js."+(type||"common")];if(message){query.push("message="+escape(message))}if(source){if(typeof line==="undefined"){query.push("source="+escape(source))}else{query.push("source="+escape(source+":"+line))}}query.push("place="+escape(location.href));(new Image).src=query.join("&")};Fotki=window.Fotki||{};Fotki.log=new Log})();(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof options=="function"){options={success:options}}var action=this.attr("action");var url=typeof action==="string"?$.trim(action):"";if(url){url=(url.match(/^([^#]+)/)||[])[1]}url=url||window.location.href||"";options=$.extend(true,{url:url,success:$.ajaxSettings.success,type:this[0].getAttribute("method")||"GET",iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},options);var veto={};this.trigger("form-pre-serialize",[this,options,veto]);if(veto.veto){log("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(options.beforeSerialize&&options.beforeSerialize(this,options)===false){log("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var n,v,a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(n in options.data){if(options.data[n]instanceof Array){for(var k in options.data[n]){a.push({name:n,value:options.data[n][k]})}}else{v=options.data[n];v=$.isFunction(v)?v():v;a.push({name:n,value:v})}}}if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[a,this,options,veto]);if(veto.veto){log("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var q=$.param(a);if(options.type.toUpperCase()=="GET"){options.url+=(options.url.indexOf("?")>=0?"&":"?")+q;options.data=null}else{options.data=q}var $form=this,callbacks=[];if(options.resetForm){callbacks.push(function(){$form.resetForm()})}if(options.clearForm){callbacks.push(function(){$form.clearForm()})}if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){var fn=options.replaceTarget?"replaceWith":"html";$(options.target)[fn](data).each(oldSuccess,arguments)})}else if(options.success){callbacks.push(options.success)}options.success=function(data,status,xhr){var context=options.context||options;for(var i=0,max=callbacks.length;i<max;i++){callbacks[i].apply(context,[data,status,xhr||$form,$form])}};var fileInputs=$("input:file",this).length>0;var mp="multipart/form-data";var multipart=$form.attr("enctype")==mp||$form.attr("encoding")==mp;if(options.iframe!==false&&(fileInputs||options.iframe||multipart)){if(options.closeKeepAlive){$.get(options.closeKeepAlive,fileUpload)}else{fileUpload()}}else{$.ajax(options)}this.trigger("form-submit-notify",[this,options]);return this;function fileUpload(){var form=$form[0];if($(":input[name=submit],:input[id=submit]",form).length){alert('Error: Form elements must not have name or id of "submit".');return}var s=$.extend(true,{},$.ajaxSettings,options);s.context=s.context||s;var id="jqFormIO"+(new Date).getTime(),fn="_"+id;var $io=$('<iframe id="'+id+'" name="'+id+'" src="'+s.iframeSrc+'" />');var io=$io[0];$io.css({position:"absolute",top:"-1000px",left:"-1000px"});var xhr={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(status){var e=status==="timeout"?"timeout":"aborted";log("aborting upload... "+e);this.aborted=1;$io.attr("src",s.iframeSrc);xhr.error=e;s.error&&s.error.call(s.context,xhr,e,e);g&&$.event.trigger("ajaxError",[xhr,s,e]);s.complete&&s.complete.call(s.context,xhr,e)}};var g=s.global;if(g&&!$.active++){$.event.trigger("ajaxStart")}if(g){$.event.trigger("ajaxSend",[xhr,s])}if(s.beforeSend&&s.beforeSend.call(s.context,xhr,s)===false){if(s.global){$.active--}return}if(xhr.aborted){return}var timedOut=0,timeoutHandle;var sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){s.extraData=s.extraData||{};s.extraData[n]=sub.value;if(sub.type=="image"){s.extraData[n+".x"]=form.clk_x;s.extraData[n+".y"]=form.clk_y}}}function doSubmit(){var t=$form.attr("target"),a=$form.attr("action");form.setAttribute("target",id);if(form.getAttribute("method")!="POST"){form.setAttribute("method","POST")}if(form.getAttribute("action")!=s.url){form.setAttribute("action",s.url)}if(!s.skipEncodingOverride){$form.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"})}if(s.timeout){timeoutHandle=setTimeout(function(){timedOut=true;cb(true)},s.timeout)}var extraInputs=[];try{if(s.extraData){for(var n in s.extraData){extraInputs.push($('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />').appendTo(form)[0])}}$io.appendTo("body");io.attachEvent?io.attachEvent("onload",cb):io.addEventListener("load",cb,false);form.submit()}finally{form.setAttribute("action",a);if(t){form.setAttribute("target",t)}else{$form.removeAttr("target")}$(extraInputs).remove()}}if(s.forceSync){doSubmit()}else{setTimeout(doSubmit,10)}var data,doc,domCheckCount=50,callbackProcessed;function cb(e){if(xhr.aborted||callbackProcessed){return}if(e===true&&xhr){xhr.abort("timeout");return}var doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if(!doc||doc.location.href==s.iframeSrc){if(!timedOut)return}io.detachEvent?io.detachEvent("onload",cb):io.removeEventListener("load",cb,false);var ok=true;try{if(timedOut){throw"timeout"}var isXml=s.dataType=="xml"||doc.XMLDocument||$.isXMLDoc(doc);log("isXml="+isXml);if(!isXml&&window.opera&&(doc.body==null||doc.body.innerHTML=="")){if(--domCheckCount){log("requeing onLoad callback, DOM not available");setTimeout(cb,250);return}}xhr.responseText=doc.body?doc.body.innerHTML:doc.documentElement?doc.documentElement.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(isXml)s.dataType="xml";xhr.getResponseHeader=function(header){var headers={"content-type":s.dataType};return headers[header]};var scr=/(json|script|text)/.test(s.dataType);if(scr||s.textarea){var ta=doc.getElementsByTagName("textarea")[0];if(ta){xhr.responseText=ta.value}else if(scr){var pre=doc.getElementsByTagName("pre")[0];var b=doc.getElementsByTagName("body")[0];if(pre){xhr.responseText=pre.textContent}else if(b){xhr.responseText=b.innerHTML}}}else if(s.dataType=="xml"&&!xhr.responseXML&&xhr.responseText!=null){xhr.responseXML=toXml(xhr.responseText)}data=httpData(xhr,s.dataType,s)}catch(e){log("error caught:",e);ok=false;xhr.error=e;s.error&&s.error.call(s.context,xhr,"error",e);g&&$.event.trigger("ajaxError",[xhr,s,e])}if(xhr.aborted){log("upload aborted");ok=false}if(ok){s.success&&s.success.call(s.context,data,"success",xhr);g&&$.event.trigger("ajaxSuccess",[xhr,s])}g&&$.event.trigger("ajaxComplete",[xhr,s]);if(g&&!--$.active){$.event.trigger("ajaxStop")}s.complete&&s.complete.call(s.context,xhr,ok?"success":"error");callbackProcessed=true;if(s.timeout)clearTimeout(timeoutHandle);setTimeout(function(){$io.removeData("form-plugin-onload");$io.remove();xhr.responseXML=null},100)}var toXml=$.parseXML||function(s,doc){if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(s)}else{doc=(new DOMParser).parseFromString(s,"text/xml")}return doc&&doc.documentElement&&doc.documentElement.nodeName!="parsererror"?doc:null};var parseJSON=$.parseJSON||function(s){return window["eval"]("("+s+")")};var httpData=function(xhr,type,s){var ct=xhr.getResponseHeader("content-type")||"",xml=type==="xml"||!type&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.nodeName==="parsererror"){$.error&&$.error("parsererror")}if(s&&s.dataFilter){data=s.dataFilter(data,type)}if(typeof data==="string"){if(type==="json"||!type&&ct.indexOf("json")>=0){data=parseJSON(data)}else if(type==="script"||!type&&ct.indexOf("javascript")>=0){$.globalEval(data)}}return data}}};$.fn.ajaxForm=function(options){if(this.length===0){var o={s:this.selector,c:this.context};if(!$.isReady&&o.s){log("DOM not ready, queuing ajaxForm");$(function(){$(o.s,o.c).ajaxForm(options)});return this}log("terminating; zero elements found by selector"+($.isReady?"":" (DOM not ready)"));return this}return this.ajaxFormUnbind().bind("submit.form-plugin",function(e){if(!e.isDefaultPrevented()){e.preventDefault();$(this).ajaxSubmit(options)}}).bind("click.form-plugin",function(e){var target=e.target;var $el=$(target);if(!$el.is(":submit,input:image")){var t=$el.closest(":submit");if(t.length==0){return}target=t[0]}var form=this;form.clk=target;if(target.type=="image"){if(e.offsetX!=undefined){form.clk_x=e.offsetX;form.clk_y=e.offsetY}else if(typeof $.fn.offset=="function"){var offset=$el.offset();form.clk_x=e.pageX-offset.left;form.clk_y=e.pageY-offset.top}else{form.clk_x=e.pageX-target.offsetLeft;form.clk_y=e.pageY-target.offsetTop}}setTimeout(function(){form.clk=form.clk_x=form.clk_y=null},100)})};$.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};$.fn.formToArray=function(semantic){var a=[];if(this.length===0){return a}var form=this[0];var els=semantic?form.getElementsByTagName("*"):form.elements;if(!els){return a}var i,j,n,v,el,max,jmax;for(i=0,max=els.length;i<max;i++){el=els[i];n=el.name;if(!n){continue}if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el){a.push({name:n,value:$(el).val()});a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}continue}v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(j=0,jmax=v.length;j<jmax;j++){a.push({name:n,value:v[j]})}}else if(v!==null&&typeof v!="undefined"){a.push({name:n,value:v})}}if(!semantic&&form.clk){var $input=$(form.clk),input=$input[0];n=input.name;if(n&&!input.disabled&&input.type=="image"){a.push({name:n,value:$input.val()});a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}}return a};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic))};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n){return}var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++){a.push({name:n,value:v[i]})}}else if(v!==null&&typeof v!="undefined"){a.push({name:this.name,value:v})}});return $.param(a)};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=="undefined"||v.constructor==Array&&!v.length){continue}v.constructor==Array?$.merge(val,v):val.push(v)}return val};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(successful===undefined){successful=true}if(successful&&(!n||el.disabled||t=="reset"||t=="button"||(t=="checkbox"||t=="radio")&&!el.checked||(t=="submit"||t=="image")&&el.form&&el.form.clk!=el||tag=="select"&&el.selectedIndex==-1)){return null}if(tag=="select"){var index=el.selectedIndex;if(index<0){return null}var a=[],ops=el.options;var one=t=="select-one";var max=one?index+1:ops.length;for(var i=one?index:0;i<max;i++){var op=ops[i];if(op.selected){var v=op.value;if(!v){v=op.attributes&&op.attributes["value"]&&!op.attributes["value"].specified?op.text:op.value}if(one){return v}a.push(v)}}return a}return $(el).val()};$.fn.clearForm=function(){return this.each(function(){$("input,select,textarea",this).clearFields()})};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=="text"||t=="password"||tag=="textarea"){this.value=""}else if(t=="checkbox"||t=="radio"){this.checked=false}else if(tag=="select"){this.selectedIndex=-1}})};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||typeof this.reset=="object"&&!this.reset.nodeType){this.reset()}})};$.fn.enable=function(b){if(b===undefined){b=true}return this.each(function(){this.disabled=!b})};$.fn.selected=function(select){if(select===undefined){select=true}return this.each(function(){var t=this.type;if(t=="checkbox"||t=="radio"){this.checked=select}else if(this.tagName.toLowerCase()=="option"){var $sel=$(this).parent("select");if(select&&$sel[0]&&$sel[0].type=="select-one"){$sel.find("option").selected(false)}this.selected=select}})};function log(){if($.fn.ajaxSubmit.debug){var msg="[jquery.form] "+Array.prototype.join.call(arguments,"");if(window.console&&window.console.log){window.console.log(msg)}else if(window.opera&&window.opera.postError){window.opera.postError(msg)}}}})(jQuery);if(!Array.prototype.every){Array.prototype.every=function(fun){var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError}var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this&&!fun.call(thisp,this[i],i,this)){return false}}return true}}if(!Array.prototype.filter){Array.prototype.filter=function(fun){var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError}var res=[];var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this){var val=this[i];if(fun.call(thisp,val,i,this)){res.push(val)}}}return res}}if(!Array.prototype.forEach){Array.prototype.forEach=function(fun){var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError}var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this){fun.call(thisp,this[i],i,this)}}}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt){var len=this.length>>>0;var from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0){from+=len}for(;from<len;from++){if(from in this&&this[from]===elt){return from}}return-1}}if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(elt){var len=this.length;var from=Number(arguments[1]);if(isNaN(from)){from=len-1}else{from=from<0?Math.ceil(from):Math.floor(from);if(from<0){from+=len}else if(from>=len){from=len-1}}for(;from>-1;from--){if(from in this&&this[from]===elt){return from}}return-1}}if(!Array.prototype.map){Array.prototype.map=function(fun){var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError}var res=new Array(len);var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this){res[i]=fun.call(thisp,this[i],i,this)}}return res}}if(!Array.prototype.reduce){Array.prototype.reduce=function(fun){var len=this.length>>>0;var rv;if(typeof fun!="function"){throw new TypeError}if(len===0&&arguments.length==1){throw new TypeError}var i=0;if(arguments.length>=2){rv=arguments[1]}else{do{if(i in this){rv=this[i++];break}if(++i>=len){throw new TypeError}}while(true)}for(;i<len;i++){if(i in this){rv=fun.call(null,rv,this[i],i,this)}}return rv}}if(!Array.prototype.reduceRight){Array.prototype.reduceRight=function(fun){var len=this.length>>>0;var rv;if(typeof fun!="function"){throw new TypeError}if(len===0&&arguments.length===1){throw new TypeError}var i=len-1;if(arguments.length>=2){rv=arguments[1]}else{do{if(i in this){rv=this[i--];break}if(--i<0){throw new TypeError}}while(true)}for(;i>=0;i--){if(i in this){rv=fun.call(null,rv,this[i],i,this)}}return rv}}if(!Array.prototype.some){Array.prototype.some=function(fun){var i=0;var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError}var thisp=arguments[1];for(;i<len;i++){if(i in this&&fun.call(thisp,this[i],i,this)){return true}}return false}}(function(){var make_generic=function(static_holder,dynamic_holder,method_name){var dynamic_method=dynamic_holder[method_name];if(typeof dynamic_method!="function"&&static_holder[method_name]){return false}static_holder[method_name]=function(){return dynamic_method.call.apply(dynamic_method,arguments)};return static_holder[method_name]};["concat","every","filter","forEach","indexOf","lastIndexOf","map","reduce","reduceRight","some","pop"].forEach(function($1){make_generic(Array,Array.prototype,$1)});if(typeof[].unshift()=="undefined"){var _unshift=Array.prototype.unshift;Array.prototype.unshift=function(){_unshift.apply(this,arguments);return this.length}}})();if(!Function.prototype.bind){Function.prototype.bind=function(context){var that=this;var args=[];for(var j=0,l=arguments.length;j<l;j++){args.push(arguments[j])}return function(){var args2=[];for(var j=0,l=arguments.length;j<l;j++){args2.push(arguments[j])}return that.call.apply(that,args.concat(args2))}}}if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}}Array.shuffle=function(arr){var a=[arr[0]];for(var j=1,l=arr.length;j<l;j++){var i=Math.round(Math.random()*j);a[j]=a[i];a[i]=arr[j]}return a};(function($,win,doc){var $doc=$(doc);var normalizeSpaceRegexp=/[\s\xA0]{2,}/g;var $ta=$("<textarea/>");var Utils={};Utils.plural=function(num,forms,withoutNumber){var res=2;var num_10=num%10;var num_100=num%100;if(num===0){if(forms[3]){return forms[3]}}else{if(num_100<5||num_100>20){if(num_10===1){res=0}else{if(num_10>=2&&num_10<=4){res=1}}}}if(withoutNumber){return forms[res]}else{return num+" "+forms[res]}};Utils.normalizeSpace=function(str){return $.trim(str.replace(normalizeSpaceRegexp," "))};Utils.nc=function(prefix){return this.generateId(prefix)};Utils.generateId=function(prefix){return(prefix||"")+((new Date).getTime()+Math.round(Math.random()*1e4))};Utils.unique=function(array){var newArray=[];for(var i=0;i<array.length;i++){var element=array[i];if(newArray.indexOf(element)===-1){newArray.push(element)}}return newArray};Utils.capitalize=function(str){return str.charAt(0).toUpperCase()+str.substr(1).toLowerCase()};Utils.askPredicates=[];Utils.initPageUploadMessage=function(message,show_message_predicate){if(show_message_predicate){Utils.askPredicates.push(show_message_predicate)}win.onbeforeunload=win.onbeforeunload||function(evt){if(Utils.askPredicates.every(function(ask_check){return!ask_check()})){return}var e=evt||win.event;if(e){e.returnValue=message}return message}};Utils.serializeForm=function($form){var ar=$form.serializeArray();var obj={};var item;for(var i=0;i<ar.length;i++){item=ar[i];obj[item.name]=item.value}return obj};Utils.disableButton=function($input){$input.css("display","none").clone(true).insertAfter($input).attr("disabled","disabled").css("display","")};Utils.toArray=function(args){return Array.prototype.slice.call(args,0)};Utils.escape=function(str){return str.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")};Utils.unescape=function(str){var result=$ta.html(str||"").text();$ta.html("");return result};Utils.ellipsis=function(str,limit){if(!limit){limit=256}return str.length<limit?str:str.substring(0,limit-1)+"…"};Utils.buildQueryString=function(params){var query="";for(var name in params){if(typeof params[name]!==undefined){query+=(query?"&":"")+encodeURIComponent(name)+"="+encodeURIComponent(params[name])}}return query};Utils.buildUrl=function(scheme,hostAndPort,path,paramsMap){if(path.length===0||path.charAt(0)!="/"){path="/"+path}return scheme+"://"+hostAndPort+encodeURI(path)+"?"+this.buildQueryString(paramsMap)};Utils.appendUrlPathAndParams=function(url,path,queryParams){var sep="";if(url.charAt(url.length-1)!="/"){sep="/"}return url+sep+path+"?"+Utils.buildQueryString(queryParams)};Utils.getViewPort=function(){var doc_elem=doc.documentElement;var body=doc.getElementsByTagName("body")[0];if(typeof win.innerWidth!=="undefined"){return function(){return{w:win.innerWidth,h:win.innerHeight}}}if(typeof doc_elem!=="undefined"&&typeof doc_elem.clientWidth!=="undefined"&&doc_elem.clientWidth!==0){return function(){return{w:doc_elem.clientWidth,h:doc_elem.clientHeight}}}return function(){return{w:body.clientWidth,h:body.clientHeight}}}();Utils.getIncrementalIntervalGenerator=function(){return function(){var p0;var p1;var gen={reset:function(){p0=0;p1=1},get:function(){var n=p0+p1;p0=p1;p1=n;return p0<35?p0*100:3500}};gen.reset();return gen}()};if(!("Fotki"in win)){win.Fotki={}}Fotki.utils=Utils})(jQuery,window,document);(function($){if(!window.locale_text){window.locale_text={}}window.locale_text.upload_userpic_control={available_upload_types:"допустимые форматы: JPEG, GIF, PNG, BMP",limit_exceed:"у вас уже 12 картинок, поэтому при загрузке следующей картинки будет удалена самая старая из тех, что уже есть",limit:"можно загрузить до 12 картинок",from:"из"};var UserpicUploader=function(element,params){this.element=element;this.uploadUrl=params&¶ms.uploadUrl?params.uploadUrl:"http://avatars.yandex.net/modify";this.state={error:1,maxUserpics:2,info:3}};UserpicUploader.prototype.init=function(){this.$note=$("div.comment",this.element);this.$upload_button=$("input.upload-button",this.element);this.$upload_button.bind("click",this.upload.bind(this));this.upload_button=this.$upload_button.get(0);this.form=this.upload_button.form;this.$form=$(this.form);Fotki.events.bind("changeUserpicCount",this.onChangeUserpicCount.bind(this))};UserpicUploader.prototype.upload=function(evt){evt.preventDefault();this.setFormDisable(true);$(this.form.file_name).val(Fotki.utils.generateId());var $form=this.$form;var form_action=$form.attr("action");$form.attr("action",this.uploadUrl);$form.one("submit",function(evt){evt.preventDefault();$form.ajaxSubmit({iframe:true,success:this.onUploadSuccess.bind(this),error:this.onUploadError.bind(this)});$form.attr("action",form_action)}.bind(this));$form.trigger("submit")};UserpicUploader.prototype.onUploadSuccess=function(data,testStatus,jqXHR){var parent=this.form.file.parentNode;parent.innerHTML=parent.innerHTML;var id=$.trim(data);if(id){Fotki.events.trigger("addUserpic",[id])}else{this.updateNote(this.state.error)}this.setFormDisable(false)};UserpicUploader.prototype.onUploadError=function(jqXHR,textStatus,errorThrown){Fotki.log.error("Error loading picture ("+errorThrown+")");this.setFormDisable(false)};UserpicUploader.prototype.onChangeUserpicCount=function(evt,length){var state=this.state.info;if(length>=12){state=this.state.maxUserpics}this.updateNote(state)};UserpicUploader.prototype.updateNote=function(state){var text="";switch(state){case this.state.error:text=window.locale_text.upload_userpic_control.available_upload_types;break;case this.state.maxUserpics:text=window.locale_text.upload_userpic_control.limit_exceed;break;default:text=window.locale_text.upload_userpic_control.limit}this.$note.html(text)};UserpicUploader.prototype.setFormDisable=function(disable){this.upload_button.disabled=disable;this.form.submit_button.disabled=disable};Fotki=window.Fotki||{};Fotki.Classes=Fotki.Classes||{};Fotki.Classes.UserpicUploader=UserpicUploader})(jQuery);(function($){var Selector=function(selector,context,type,imageBase){this.selector=selector;this.$element=$(selector,context);this.element=this.$element.get(0);this.context=context;this.$image=$("img",this.element);this.type=type;this.imageBase=imageBase;this.enabled=true;this.create()};Selector.prototype.create=function(){this.images={over:this.imageBase+"control/userpic-"+this.type+"-hover.gif",out:this.imageBase+"control/userpic-"+this.type+".gif"};$(this.selector+":not(.disabled)",this.context).live("click.selector",this.onC.bind(this)).live("mouseover.selector",this.onMouseover.bind(this)).live("mouseout.selector",this.onMouseout.bind(this))};Selector.prototype.destructor=function(){$(this.selector+":not(.disabled)",this.context).unbind(".selector");this.element=null;this.$element=null;this.$image=null};Selector.prototype.onC=function(e){this.onClick(e)};Selector.prototype.onClick=function(){};Selector.prototype.onMouseover=function(){this.$image.attr("src",this.images.over)};Selector.prototype.onMouseout=function(){this.$image.attr("src",this.images.out)};Selector.prototype.setEnabled=function(enable){if(this.enabled===enable){return}var src=this.$image.attr("src");if(enable){this.$image.attr("src",src.replace(/-disabled/,""));this.$element.removeClass("disabled")}else{if(src.indexOf("-disabled")==-1){this.$image.attr("src",src.replace(/.gif/,"-disabled.gif"))}this.$element.addClass("disabled")}this.enabled=enable};var Userpic=function(element,params){this.element=element;this.userpics=[];this.active=0;this.imageBase=params.imageBase||"/i/";this.defaultUserpicSrc=params.defaultUserpicSrc;this.defaultUserpicText=params.defaultUserpicText||window.locale_text.common.fotki_files_no_avatar;this.userpicBase=params.userpicBase||"http://avatars.yandex.net/get/";this.create()};Userpic.prototype.create=function(){var _this=this;this.image=$("img.userpic",this.elemen).get(0);this.prevChooser=new Selector("td.prev",this.element,"prev",this.imageBase);this.prevChooser.onClick=function(){_this.changeActive(-1)};this.nextChooser=new Selector("td.next",this.element,"next",this.imageBase);this.nextChooser.onClick=function(){_this.changeActive(1)};this.chooserText=$("td.chooserText",this.element).get(0);var $removeText=$("a.delete",this.element);this.removeText=$removeText.get(0);if(this.removeText){$removeText.bind("click",function(evt){this.removeCurrentUserpic();evt.preventDefault()}.bind(this))}this.currentUserpic=$("input.input-userpic",this.element).get(0);this.userpicStorage=$("input.input-userpic-list",this.element).get(0);this.userName=$("input.input-user",this.element).get(0);Fotki.events.bind("addUserpic",function(evt,id){this.add(id)}.bind(this));$(window).bind("beforeunload",this.destructor.bind(this));this.loadUserpicsFromStorage();var id=this.currentUserpic.value;if(id){var index=this.userpics.indexOf(id);if(index!=-1){this.active=index}else{this.addUserpic(id);return}}this.update()};Userpic.prototype.destructor=function(){var self=this;this.prevChooser.destructor();this.nextChooser.destructor();for(var prop in this){if(self.hasOwnProperty(prop)){this[prop]=null}}};Userpic.prototype.loadUserpicsFromStorage=function(){this.userpics=this.userpicStorage.value?this.userpicStorage.value.split(","):[]};Userpic.prototype.saveUserpicsToStorage=function(id){this.userpicStorage.value=this.userpics.join(",")};Userpic.prototype.addUserpic=function(id){if(this.userpics.length>=12){this.userpics.splice(0,1)}this.userpics.push(id);this.active=this.userpics.length-1;this.update();this.saveUserpicsToStorage();Fotki.events.trigger("changeUserpicCount",[this.userpics.length])};Userpic.prototype.calculateSrc=function(id){return id?this.userpicBase+this.userName.value+"/normal-"+id:this.defaultUserpicSrc};Userpic.prototype.add=function(id){$("<img/>").one("load",function(){this.addUserpic(id)}.bind(this)).attr("src",this.calculateSrc(id))};Userpic.prototype.removeCurrentUserpic=function(){this.removeUserpic(this.userpics[this.active])};Userpic.prototype.removeUserpic=function(id){var index=this.userpics.indexOf(id);if(index!=-1){this.userpics.splice(index,1);this.changeActive(0);this.saveUserpicsToStorage();Fotki.events.trigger("changeUserpicCount",[this.userpics.length])}};Userpic.prototype.changeActive=function(delta){var l=this.userpics.length;if(this.active>=l){this.active=l-1}this.active=(l+this.active+delta)%l;this.update()};Userpic.prototype.update=function(){var userpic_count=this.userpics.length;var id="";var src="";if(userpic_count){id=this.userpics[this.active]}if(this.removeText){this.removeText.style.visibility=userpic_count>1?"":"hidden"}this.image.src=this.calculateSrc(id);this.currentUserpic.value=id;this.prevChooser.setEnabled(userpic_count>1);this.nextChooser.setEnabled(userpic_count>1);if(!userpic_count){this.chooserText.innerHTML=this.defaultUserpicText}else{this.chooserText.innerHTML=userpic_count==1?"1 "+window.locale_text.upload_userpic_control.from+" 1":this.active+1+" "+window.locale_text.upload_userpic_control.from+" "+userpic_count}Fotki.events.trigger("changeUserpic",[id,this.image.src])};Fotki=window.Fotki||{};Fotki.Classes=Fotki.Classes||{};Fotki.Classes.Userpic=Userpic})(jQuery);(function($){function initPlaceholder(element,opts){var options=$.extend({},$.fn.placeholder.defaultOptions,opts||{},element.onclick?element.onclick():{});var name=$(element).attr("name");function onFocus(){var element=this;var $element=$(element);if(!$element.hasClass(options.cssEmpty)){return}$element.val("").attr("name",name).removeClass(options.cssEmpty)}function onBlur(){var element=this;var $element=$(element);var current_value=$element.val();if(current_value===""||current_value===options.emptyValue){$element.addClass(options.cssEmpty).attr("name","");setTimeout(function(){$element.val(options.emptyValue)},0)}}$(element).focus(onFocus).blur(onBlur).trigger("blur")}$.fn.placeholder=function(options){return this.filter(":text, textarea").each(function(){initPlaceholder(this,options)})};$.fn.placeholder.defaultOptions={cssEmpty:"empty",emptyValue:"-"}})(jQuery);(function($){var Page=function(){};Page.prototype.init=function(){$(document).ready(this.initControls.bind(this));return this};Page.prototype.initControls=function(){var $elem=$(".js-userpic");var elem=$elem.get(0);if(!elem){return}Fotki.events=$("<div/>");var options=elem.onclick();options=$.extend({userpicBase:"http://avatars.yandex.net/get/",imageBase:"/i/",uploadUrl:"http://avatars.yandex.net/modify"},options);this.uploader=(new Fotki.Classes.UserpicUploader).init(elem,options);this.userpic=new Fotki.Classes.Userpic(elem,options);var $alt=$(".js-alt-mail");$alt.placeholder();var $alt_flag=$(".js-alt-mail-flag");$alt.bind("blur",function(evt){var flag=!!$.trim($alt.val());$alt_flag.val(flag?1:0)})};Fotki=window.Fotki||{};Fotki.Page=(new Page).init()})(jQuery); |