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