var Icons=new Class({options:{colors:null,sizes:null,icons:null,icons_links:null,icons_cells:null,defaults:null,media_url:null},Implements:[Events,Options],initialize:function(b){this.setOptions(b);var a=this.getDefaults(b);this.initBg(a);this.initColor(a);this.icons_main=$("main").getElement(".icons .set");this.icons_parent=$("main").getElement(".icons");this.icons=$$(this.options.icons);this.icons_cells=$$(this.options.icons_cells);this.icons_links=$$(this.options.icons_links);this.icons_bg=$("main").getElement(".icons .i_main"); this.icons_bg_ctx=this.icons_bg.getContext("2d");this.icons_src=[];this.icons_aliases=[];this.icons_id=[];this.icons_assets=[];this.masqs_src=[];this.masqs=[];this.masqs_ctx=[];this.masqs_assets=[];this.loadIcons(b,a);this.changeColors(b,a);this.changeSizes(b,a);this.processing=false},getDefaults:function(b){var a=""+$$(this.options.defaults).getProperty("href");a=a.split("/");a=a.filter(function(i){return i!=""});var d={color:Cookie.read("color"),size:Cookie.read("size"),background:Cookie.read("background")}; if(!d.color||!d.size||!d.background){var e={main:a,style:a[0],size:a[1],color:a[2],current_color:this.getCurrentElement($$(this.options.colors)),preset_colors:this.getElementsValues(this.options.colors),sizes:[],max_size:0};Cookie.write("color",a[2]);Cookie.write("size",a[1]);Cookie.write("background",$("background").get("text"))}else{var c=$$(this.options.colors),f=this.getElementsValues(this.options.colors),g=-1,h=null;f.each(function(i,j){if(i==d.color)g=j});this.getCurrentElement(c).removeClass("current"); if(g!=-1){h=c[g];h.addClass("current")}c=$$(this.options.sizes);var k=-1;this.getElementsValues(this.options.sizes).each(function(i,j){if(i+"x"+i==d.size)k=j});this.getCurrentElement(c).removeClass("current");k!=-1&&c[k].addClass("current");$("background").setStyle("background-color",d.background);$("background").set("text",d.background);e={main:a,style:a[0],size:d.size,color:d.color,current_color:h,preset_colors:f,sizes:[],max_size:0}}this.getElementsValues(b.sizes).each(function(i,j){e.sizes[j]= i+"x"+i;if(i>e.max_size)e.max_size=i});return e},initColor:function(b){$("color").setStyle("background-color","#"+b.color);$("color").set("text",b.color);this.colorPicker=new MooRainbow("color",{id:"colorpicker",prefix:"mr_",imgPath:this.options.media_url+"i/mr/",wheel:true,startColor:b.color.hexToRgb(true),onChange:function(a){$("color").setStyle("background-color",a.hex);$("color").set("text",a.hex);this.showColor(a.hex.replace("#",""),b)}.bind(this),onComplete:function(a){this.getElementsValues(this.options.colors); a.hex.replace("#","")}.bind(this),canvas:true,header:color_pick_header},this)},initBg:function(b){var a=$("background");$("main").getElement(".icons").ICanvasElement({className:"i_main",border:0,corners:[8,8,8,8],bodyStartColor:a.get("text").hexToRgb(true),bodyStopColor:a.get("text").hexToRgb(true),borderStartColor:[81,81,81,1],borderStopColor:[81,81,81,1],zindex:1});this.bgPicker=new MooRainbow("background",{id:"bgpicker",prefix:"mr_",imgPath:this.options.media_url+"i/mr/",wheel:true,startColor:a.get("text").hexToRgb(true), onChange:function(d){a.setStyle("background-color",d.hex);a.set("text",d.hex);Browser.Engine.trident?this.changeBackgroundIe(d.rgb,b):this.changeBackground(d.rgb,b)}.bind(this),canvas:true,header:bg_pick_header})},getElementsValues:function(b){var a=[];$$(b).each(function(d){a.include(d.get("text"))});return a},getCurrentElement:function(b){var a=null;b.each(function(d){if(d.hasClass("current"))a=d});return a},loadIcons:function(b,a){var d=a.current_color?a.current_color.get("text"):a.color;$("about").hasClass("dn")&& $("about").removeClass("dn");if(!this.loader){this.loader=$("loader");this.load_status_carrot=this.loader.getElement(".carrot");this.load_status_juice=this.loader.getElement(".juice");this.load_status_text=this.loader.getElement("span")}var e=0;a.sizes.each(function(c){this.icons_src[c]=[];this.icons_aliases[c]=[];this.masqs_src[c]=[];this.icons_id[c]=[];var f=window.location.href.search("manage")!=-1?"/"+a.style+"/"+c+"/"+d+"/?manage=true":"/"+a.style+"/"+c+"/"+d+"/?"+$time()+$random(1,1E4);(new Request.JSON({url:f, headers:{"X-CSRFToken":Cookie.read("csrftoken")},onFailure:function(){$("about").getElement("h2").set("html",load_error)}.bind(this),onComplete:function(g){if(!g||g.length==0)$("about").getElement("h2").set("html",load_error);else{for(var h=0;h<this.icons.length;h++){this.icons_src[c][h]=g[h].icon_icon;this.icons_aliases[c][h]=g[h].alias;this.masqs_src[c][h]=g[h].icon_masq;this.icons_id[c][h]=g[h].id}this.loader.hasClass("dn")&&this.loader.removeClass("dn");if(!this.masqs_assets[c]){var k=50/(this.icons_src[c].length* a.sizes.length),i=100/(this.icons_src[c].length*a.sizes.length);this.masqs_assets[c]=new Asset.images(this.masqs_src[c],{onProgress:function(){e++;var j=Math.round(e*k),l=Math.round(e*i);this.load_status_carrot.set("style","background-position:0 "+j+"px");this.load_status_juice.set("style","margin-top:-"+j+"px");this.load_status_text.set("text",l+"%")}.bind(this),onComplete:function(){if(e==this.icons.length*a.sizes.length){$("about").addClass("dn");this.load_status_text.set("text","0%");this.setLinks(a, "load","");this.showIcons(a);this.hint=new Hints({hintsPlace:"ul.menu",watchControls:["ul.menu a",".colors .color",".backgrounds .color"]})}}.bind(this)})}this.icons_assets[c]||(this.icons_assets[c]=new Asset.images(this.icons_src[c],{}))}}.bind(this)})).send()}.bind(this))},showIcons:function(b){if(this.icons_parent.hasClass("load")){var a=(new Fx.Tween(this.icons_parent,{duration:600,property:"opacity",link:"chain"})).set(0),d=(new Fx.Tween($("main").getElement(".menu"),{duration:600,property:"opacity", link:"chain"})).set(0),e=(new Fx.Elements($$(".control"),{duration:400,link:"chain"})).set({"0":{opacity:0,"margin-top":"70px"},"1":{opacity:0,"margin-top":"70px"},"2":{opacity:0,"margin-top":"70px"}});$("main").getElements(".load").each(function(c){c.removeClass("load")});this.prepareMasks(b);a.start(0,1).chain(function(){d.start(0,1);e.start({"0":{opacity:[0,1],"margin-top":["70px","10px"]},"1":{opacity:[0,1],"margin-top":["70px","10px"]},"2":{opacity:[0,1],"margin-top":["70px","10px"]}})})}else{a= (new Fx.Tween(this.icons_main,{property:"opacity",duration:600,link:"chain"})).start(1,0);this.prepareMasks(b);a.start(0,1)}},prepareMasks:function(b){var a=b.size.split("x");this.icons_main.setProperty("class","set s"+b.size);this.icons.each(function(d,e){d.setStyle("background-image","url("+this.icons_assets[b.size][e].src+")")}.bind(this));this.icons_cells.each(function(d,e){if(!this.masqs[e]){if(Browser.Engine.trident){var c=(new Element("span")).inject(this.icons_links[e],"top");(new Element("img", {src:this.options.media_url+"i/clear.gif"})).inject(c)}else{c=(new Element("canvas",{width:b.max_size,height:b.max_size,style:"background:#"+b.color})).inject(d,"top");this.masqs_ctx[e]=c.getContext("2d")}this.masqs[e]=c}}.bind(this));Browser.Engine.trident?this.makeMasqsIe(b,this.masqs,this.masqs_assets[b.size],a):this.makeMasqs(b,this.masqs_ctx,this.masqs_assets[b.size],a)},setLinks:function(b,a,d){var e=$("download").getElement("a");if(a=="load"){e.href=e.href.replace(b.main[1],b.size);e.href= e.href.replace(b.main[2],b.color);this.icons_links.each(function(c){c.href=c.href.replace(b.main[1],b.size);c.href=c.href.replace(b.main[2],b.color)})}else if(a=="generate"){this.icons_links.each(function(c,f){c.href="/icongenerator/"+this.icons_id[b.size][f]+"/"+b.size+"/"+b.color+"/"+this.icons_aliases[b.size][f]+".png"}.bind(this));e.href=e.href.replace(d,b.color)}else{this.icons_links.each(function(c){c.href=c.href.replace(d,b[a])});e.href=e.href.replace(d,b[a])}},makeMasqs:function(b,a,d,e){var c= (b.max_size-e[0])/2,f=$("background").get("text").search("#")==-1?"#"+$("background").get("text"):$("background").get("text");a.each(function(g,h){g.clearRect(0,0,b.max_size,b.max_size);g.fillStyle=f;g.fillRect(0,0,b.max_size,b.max_size);g.save();g.globalCompositeOperation="destination-out";g.drawImage(d[h],c,c);g.restore()})},makeMasqsIe:function(b,a,d){var e=$("background").get("text").search("#")==-1?"#"+$("background").get("text"):$("background").get("text");this.icons_cells.each(function(c,f){a[f].set("style", "filter:progid:DXImageTransform.Microsoft.MaskFilter(color="+e+");");a[f].getElement("img").set("style",'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+d[f].src+'",sizingMethod="crop")');this.icons_links[f].set("style","background:#"+b.color)}.bind(this))},changeColors:function(b,a){$$(this.options.colors).each(function(d){d.addEvent("click",function(e){e.stop();if(!this.processing)if(d!=a.current_color){a.current_color&&a.current_color.removeClass("current");d.addClass("current"); a.current_color=d;color_value=d.get("text");$("color").setStyle("background-color","#"+color_value);$("color").set("text",color_value);this.colorPicker.manualSet("#"+color_value,"hex");this.showColor(color_value,a)}}.bind(this),this)},this)},showColor:function(b,a){Browser.Engine.trident?this.icons_cells.each(function(d,e){this.icons_links[e].setStyle("background","#"+b)}.bind(this)):this.masqs.each(function(d){d.setStyle("background","#"+b)});prev_color=a.color;a.color=b;if(a.preset_colors.contains(b))this.setLinks(a, "color",prev_color);else{this.setLinks(a,"generate",prev_color);if(a.current_color){a.current_color.removeClass("current");a.current_color=null}}Cookie.write("color",b);this.hint.listenEvent("color",b)},changeBackground:function(b,a){var d=this.icons_main.getSize(),e="rgba("+b[0]+","+b[1]+","+b[2]+",1)",c=b.rgbToHex();this.masqs_ctx.each(function(f){f.save();f.fillStyle=e;f.globalCompositeOperation="source-in";f.fillRect(0,0,a.max_size,a.max_size);f.restore()});this.icons_bg_ctx.save();this.icons_bg_ctx.fillStyle= e;this.icons_bg_ctx.globalCompositeOperation="source-in";this.icons_bg_ctx.fillRect(0,0,d.x,d.y);this.icons_bg_ctx.restore();Cookie.write("background",c);this.hint.listenEvent("background",c)},changeBackgroundIe:function(b){var a=this.icons_bg.getSize(),d="rgba("+b[0]+","+b[1]+","+b[2]+",1)",e=b.rgbToHex();this.masqs.each(function(c,f){c.filters.item(0).color=e;this.icons_cells[f].setStyle("background",e)}.bind(this));this.icons_bg_ctx.clearRect(0,0,a.x,a.y);drawRectangle(this.icons_bg_ctx,{x:0,y:0, width:a.x,height:a.y,corners:[8,8,8,8]});this.icons_bg_ctx.fillStyle=d;this.icons_bg_ctx.fill();Cookie.write("background",e);this.hint.listenEvent("background",e)},changeSizes:function(b,a){var d=$$(this.options.sizes),e=this.getCurrentElement(d);d.each(function(c){c.addEvent("click",function(f){f.stop();if(!this.processing)if(c!=e){e.removeClass("current");c.addClass("current");e=c;size_value=c.get("text")+"x"+c.get("text");prev_size=a.size;a.size=size_value;this.prepareMasks(a);this.setLinks(a, "size",prev_size);Cookie.write("size",size_value);this.hint.listenEvent("size",size_value)}}.bind(this),this)},this)}});

