var Grt=window.Grt?window.Grt:{};Array.prototype.__ARRAY=true;Grt.unqClsMap={};Grt.bind=function(a,b){return function(){a.apply(b,arguments)}};Grt.escapeValue=function(a){if(a){a=a.replace(/\</g,"&lt;");a=a.replace(/\>/g,"&gt;");a=a.replace(/"/g,"&quot;")}return a};Grt.unescapeValue=function(a){if(a){a=a.replace(/&lt;/g,"<");a=a.replace(/&gt;/g,">");a=a.replace(/&quot;/g,'"')}return a};Grt.asnCls=function(c,a,b,e){if(e){if(Grt.unqClsMap[a]){Grt.remCls(Grt.unqClsMap[a],a)}Grt.unqClsMap[a]=c}if(b){if(c.className!=a){c.className=a;return true}else{return false}}else{var d=c.className+" ";if(d.indexOf(a+" ")==-1){c.className=d+a;return true}else{return false}}};Grt.remCls=function(d,a,c){if(c){d.className="";return}var e=d.className+" ",b=e.indexOf(a+" ");d.className=e.substr(0,b)+e.substr(b+a.length+1)};Grt.hasCls=function(c,a){var d=" "+c.className+" ",b=d.indexOf(" "+a+" ");if(b==-1){return false}return true};Grt.$=function(a){return document.getElementById(a)};Grt.json2String=function(c){if(typeof(c)!="object"){return(typeof(c)=="string")?'"'+c+'"':c}if(typeof(c)=="object"){var a,e;if(c.__ARRAY){a=["["];e=true;for(var b=0;b<c.length;b++){if(!e){a.push(",")}else{e=false}a.push(Grt.json2String(c[b]))}a.push("]");return a.join("")}else{a=["{"];e=true;for(var d in c){if(!e){a.push(",")}else{e=false}a.push(d,":",Grt.json2String(c[d]))}a.push("}");return a.join("")}}};Grt.addListener=function(d,c,b){var a=function(f){if(!f.stopPropagation){f.stopPropagation=function(){f.cancelBubble=true}}if(!f.preventDefault){f.preventDefault=function(){f.returnValue=false}}f.keyCharCode=!f.charCode&&f.keyCode?f.keyCode:f.charCode;if(!f.target){f.target=f.srcElement}b.apply(d,arguments)};if(d.addEventListener){d.addEventListener(c,a,false)}else{if(d.attachEvent){d.attachEvent("on"+c,a)}}};Grt.copyProperties=function(b,a,c){for(var d in a){if(c||(!c&&!b[d])){b[d]=a[d]}}return b};Grt.getNthString=function(a){var c=a%100;if(c>=4&&c<=20){return"th"}var b=a%10;switch(b){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}};Grt.createClass=function(b,a){if(a&&a.prototype){Grt.copyProperties(b,a.prototype);b.superClass=a.prototype}var c=function(){if(this.init){this.init.apply(this,arguments)}};c.prototype=b;if(a){c.prototype._superClass=a.prototype;c.prototype._super=function(f,e){var g,d=this._superClass;while(d&&!g){g=d[f];a=d._superClass}if(g){g.apply(this,e)}}}return c};Grt.doForEach=function(c,a){for(var b=0;b<c.length;b++){a(c[b])}};var __GRT_undef;Grt.undef=__GRT_undef;Grt.XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];Grt.getXmlhttpObject=function(){var a=null,f;try{a=new XMLHttpRequest()}catch(d){}if(!a){for(var c=0;c<3;++c){var b=Grt.XMLHTTP_PROGIDS[c];try{a=new ActiveXObject(b)}catch(d){}if(a){Grt.XMLHTTP_PROGIDS=[b];break}}}return a};Grt.xhr=function(b,d,c){Grt.showWaitScreen();var a=this.getXmlhttpObject();if(d){a.onreadystatechange=function(){if(4==a.readyState){if((!a.status)||((200<=a.status)&&(300>a.status))){if(d.onSuccess){Grt.hideWaitScreen();d.onSuccess.apply(d.scope,[a.responseText])}}else{if(d.onFailure){Grt.hideWaitScreen();d.onFailure.apply(d.scope,[a.responseText])}}}}}a.open(c?"POST":"GET",b,d?true:false);if(c){a.setRequestHeader("Content-type","application/x-www-form-urlencoded");a.setRequestHeader("Content-length",c.length)}a.send(c);if(d||a.status&&(200>a.status||300<=a.status)){return null}Grt.hideWaitScreen();return a.responseText};Grt.WAIT_SCREEN=Grt.$("loader-screen");Grt.showWaitScreen=function(){if(Grt.WAIT_SCREEN){Grt.WAIT_SCREEN.style.display="block"}};Grt.hideWaitScreen=function(){if(Grt.WAIT_SCREEN){Grt.WAIT_SCREEN.style.display="none"}};Grt.UndoManager=function(){var a=function(){var d=this,c=[],e=[],b=100;d.undoset=c;d.redoset=e;d.undo=function(){var j=d.undoSet().pop(),g,f;if(j){for(var h=0;h<j.length;h++){f=j[h];g=f.obj[f.prop];if(f.value!=Grt.undef){f.obj[f.prop]=f.value}else{delete f.obj[f.prop]}f.value=g}d.redoSet().push(j)}Grt.PageManager.setActivePage(Grt.PageManager.activePage)};d.redo=function(){var h=d.redoSet().pop(),g,f;if(h){for(var j=0;j<h.length;j++){f=h[j];g=f.obj[f.prop];if(f.value!=Grt.undef){f.obj[f.prop]=f.value}else{delete f.obj[f.prop]}f.value=g}this.undoSet().push(h)}Grt.PageManager.setActivePage(Grt.PageManager.activePage)};d.assignValue=function(i,j,h){var g,f=false;if(!d.activeOpSet){d.beginTran();f=true}g=d.activeOpSet;g.push({obj:i,prop:j,value:i[j]});if(h!=Grt.undef){i[j]=h}else{delete i[j]}if(f){d.endTran()}};d.beginTran=function(){d.redoSet().splice(0,d.redoSet().length);var g=[],f=d.undoSet();if(f.length>=d.limit){f.shift()}f.push(g);d.activeOpSet=g};d.endTran=function(){d.activeOpSet=null};d.undoSet=function(){var f=Grt.PageManager.activePage;return c[f]?c[f]:c[f]=[]};d.redoSet=function(){var f=Grt.PageManager.activePage;return e[f]?e[f]:e[f]=[]}};return new a()}();Grt.ColorUtil={getRgbString:function(a){return["rgb(",a.r,",",a.g,",",a.b,")"].join("")},getHexString:function(a){return[].join("")},parseColor:function(b){var a;if(b.indexOf("#")===0){a=b.replace(/#([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])/g,"$1,$2,$3").split(",");return{r:parseInt(a[0],16),g:parseInt(a[1],16),b:parseInt(a[2],16),hex:b}}else{if(b.indexOf("rgb")===0){a=b.replace(/rgb\((.*)\)/,"$1").split(",");return{r:a[0],g:a[1],b:a[2],hex:"#"+parseInt(a[0],10).toString(16)+parseInt(a[1],10).toString(16)+parseInt(a[2],10).toString(16)}}}}};Grt.hookupPanelWithControl=function(a,d,c,e,b){Grt.addListener(d,"click",function(i){var h=d.offsetLeft,g=d.offsetTop,f=d.offsetParent;while(f&&f.tagName.toLowerCase()!="body"){if(f.offsetLeft){h=h+f.offsetLeft}if(f.offsetTop){g=g+f.offsetTop}f=f.offsetParent}a.show(h,g+d.offsetHeight,e,b);if(!c){i.stopPropagation()}})};Grt.FloatingElement=Grt.createClass({base:9000,floatingStack:[],floatIndex:null,focus:function(b){var a=this;a.clearFocus();a.floatingStack.push({el:b,wrapper:a});a.floatIndex=a.floatingStack.length-1;a.reassignZIndex()},clearFocus:function(){var a=this;if(a.floatIndex||a.floatIndex===0){a.floatingStack.splice(a.floatIndex,1);a.floatIndex=null}},reassignZIndex:function(){var b=this;for(var a=0;a<b.floatingStack.length;a++){if(b.floatingStack[a]){b.floatingStack[a].el.style.zIndex=b.base+a;b.floatingStack[a].wrapper.floatIndex=a}}}});Grt.Panel=Grt.createClass({init:function(b){this.dom=Grt.$(b);var a=this;Grt.addListener(this.dom,"click",function(c){c.stopPropagation()});Grt.addListener(document,"click",function(c){a.hide()});Grt.addListener(document,"keypress",function(c){if(c.keyCode==27){a.hide()}})},show:function(a,d,c,b){if(a&&d){this.dom.style.left=a+"px";this.dom.style.top=d+"px"}this.dom.style.display="block";this.callback=c;this.setVal(b);this.focus(this.dom)},hide:function(){this.dom.style.display="none";this.clearFocus()},setVal:function(a){}},Grt.FloatingElement);Grt.ColPicker=new (Grt.createClass({init:function(g){var c=["000000","585858","727272","888888","B8B8B8","D0D0D0","E8E8E8","FFFFFF","004F69","006587","007CA5","0092C3","00A9E1","00BFFF","3CCEFF","78DDFF","69003D","87004F","A5006E","B300C3","8300E1","FF78F4","FF98F4","FFC8FF","006946","00875A","00A56E","00C382","00E196","00FFAA","3CFFBE","78FFD2","9B7400","AF8300","CCD700","F2FF00","FFFF78","FFF278","FFFFAA","FFFFBB","550B00","690E00","7D1900","913000","A54D00","917400","B99400","B9A03A","694F00","876500","C39200","E1A900","FFB050","FF9650","FFBF00","FFD350","690B00","870E00","A52100","C31400","E11700","FF1A00","FF3E28","FF6250"],b=[],e=this,a=Grt.$(g);b.push("<div id='colSamples'>");for(var d=0;d<64;d++){b.push("<span style='background-color:#",c[d],"' onmouseout='return false'></span>")}b.push("</div>");a.innerHTML=b.join("");var f=a.getElementsByTagName("div")[0];Grt.addListener(f,"click",function(h){if(e.callback){e.callback(h.target.style.backgroundColor)}e.hide()});this._super("init",arguments);this.hide()}},Grt.Panel))("colPicker");Grt.WindowController=Grt.createClass({init:function(b,d,c){var a=this;a.win=b;a.win.style.left="300px";a.win.style.top="70px";Grt.addListener(b,"mousedown",function(f){a.focus(a.win)});Grt.addListener(d,"mousedown",function(h){a.mouseDown=true;a.xRef=h.clientX;a.yRef=h.clientY;var g=a.win.style.left,f=a.win.style.top;a.winXRef=g.indexOf("px")!=-1?parseInt(g.substring(0,g.length-2),10):g;a.winYRef=f.indexOf("px")!=-1?parseInt(f.substring(0,f.length-2),10):f});Grt.addListener(document,"mouseup",function(){a.mouseDown=false});Grt.addListener(document,"mousemove",function(h){if(a.mouseDown){var g=h.clientX-a.xRef,f=h.clientY-a.yRef;a.win.style.left=(a.winXRef+g)+"px";a.win.style.top=(a.winYRef+f)+"px"}});Grt.addListener(c,"click",function(){a.close()})},close:function(){this.win.style.display="none";this.clearFocus()},open:function(){this.win.style.display="block";if(this.onOpen){this.onOpen.apply(this,arguments)}this.focus(this.win)}},Grt.FloatingElement);Grt.doForEach(["im","me","mu","ma"],function(a){Grt[a+"WinController"]=new Grt.WindowController(Grt.$(a+"Cntnr"),Grt.$(a+"PnlTtl"),Grt.$(a+"PnlClose"));Grt.addListener(Grt.$(a+"MenuItem"),"click",function(b){return function(){Grt[b+"WinController"].open()}}(a))});Grt.copyProperties(Grt.imWinController,{im_static_folder:"/lib/im",im_pgs:5,im_padPgs:2,im_perPg:10,catLib:{},onOpen:function(){var a=this,b=Grt.$("imPnlCatCntnt");a.imWWWLnk=Grt.$("imWWWLnk");a.imLibraryLnk=Grt.$("imLibraryLnk");a.imWWWCntnt=Grt.$("imWWWCntnt");a.imLibraryCntnt=Grt.$("imLibraryCntnt");a.wwwButton=Grt.$("wwwImgButton");a.wwwInput=Grt.$("wwwImgInput");if(b.innerHTML===""){Grt.addListener(a.wwwButton,"click",function(d){var c=a.wwwInput.value;if(c){if(c.indexOf("http")!==0){c="http://"+c}c=Grt.escapeValue(c);a.addImageToCard(c)}else{alert("Please enter a valid image URL on the www")}});Grt.addListener(Grt.$("imSubMenu"),"click",function(c){switch(c.target.id){case"imWWWLnk":Grt.asnCls(a.imWWWLnk,"imSubMenuLnkSel",false,true);Grt.asnCls(a.imWWWCntnt,"addImCntntSel",false,true);break;case"imLibraryLnk":Grt.asnCls(a.imLibraryLnk,"imSubMenuLnkSel",false,true);Grt.asnCls(a.imLibraryCntnt,"addImCntntSel",false,true);break}});Grt.asnCls(a.imLibraryLnk,"imSubMenuLnkSel",false,true);setTimeout(function(){Grt.asnCls(a.imLibraryCntnt,"addImCntntSel",false,true)},10);Grt.xhr(a.im_static_folder+"-index/_index.txt",{onSuccess:function(f){f=f.replace(/_/g," ");var c=f.split(","),e=[];for(var d=0;d<c.length;d++){e.push('<a onclick="return false" onmousedown="return false" onmousemove="return false" href="#" id="',c[d],'">',c[d],"</a>")}b.innerHTML=e.join("")},scope:this});Grt.addListener(b,"click",function(d){var f=d.target;if(f.tagName.toLowerCase()=="a"){if(a.catLib[f.id]){a.changeSelectedTag(f.id,a.catLib[f.id])}else{var c=f.id.replace(/ /g,"_");Grt.xhr(a.im_static_folder+"-index/"+c+".txt",{onSuccess:function(g){var h=[];g=g.split(",");for(var e=0;e<g.length;e++){if(g[e]){h.push(g[e])}}a.catLib[f.id]=h;a.changeSelectedTag(f.id,h)},scope:a})}}});Grt.addListener(Grt.$("imPnlFltrInpt"),"keyup",function(){var e=this.value,c=b.getElementsByTagName("a");for(var d=0;d<c.length;d++){if(c[d].innerHTML.indexOf(e)===0){c[d].style.display="block"}else{c[d].style.display="none"}}});Grt.addListener(Grt.$("imPnlPrv"),"click",function(c){var d=c.target;if(d.tagName.toLowerCase()=="img"){a.addImageToCard(d.src)}else{if(!isNaN(d.id)){a.renderImageMenu(parseInt(d.id,10))}}})}},changeSelectedTag:function(a,b){this.tagSelected=a;this.imageList=b;this.renderImageMenu()},renderImageMenu:function(f){if(!this.imageList){return}if(!f||isNaN(f)){f=1}var b=[],j=this,d=this.imageList,h=d.length,a=Math.ceil(h/j.im_perPg),g=1;b.push("<div id='imPgsMenu'>");if(a>j.im_pgs){g=f-j.im_padPgs>0?(f-j.im_padPgs):1;if(g+j.im_pgs>a){g=g-((g+j.im_pgs-1)-a)}}else{g=1}if(g>1){b.push("<span class='pageLink' id='",g-1,"'>&lt;</span>")}for(var c=g,e=0;c<=a&&e<j.im_pgs;c++,e++){b.push("<span class='",(f==c?"selPageLink":"pageLink"),"' id='",c,"'>",c,"</span>")}if(g+j.im_pgs<a){b.push("<span class='pageLink' id='",g+j.im_pgs,"'>&gt;</span>")}b.push("</div>");for(c=(f-1)*j.im_perPg,e=0;c<h&&e<j.im_perPg;c++,e++){b.push("<img src='",this.im_static_folder,"/",this.imageList[c],"' style='cursor:pointer;width:50px;margin:0 0 0 15px'>")}Grt.$("imPnlPrv").innerHTML=b.join("")},addImageToCard:function(b){var a=Grt.PageManager.pages[Grt.PageManager.activePage];a.objCounter=a.objCounter+1;a.canvas.maxZIndex+=1;Grt.UndoManager.assignValue(a.objects,a.objCounter,{type:"image",id:a.objCounter,src:b,top:"0",left:"0",zIndex:a.canvas.maxZIndex});Grt.UndoManager.endTran();Grt.PageManager.setActivePage(Grt.PageManager.activePage)}});Grt.copyProperties(Grt.meWinController,{initialized:false,fontValues:{Arial:null,"Brush Script MT Italic":null,"Comic Sans MS":null,Impact:null,Verdana:null,"Arial Black":null},defaultTextObj:{width:"200",top:"10",left:"10",face:"Arial",size:11,color:"#000000",type:"text"},onOpen:function(e){var d=this,c,a;if(!d.initialized){d.fontface=Grt.$("fontface");d.fontsize=Grt.$("fontsize");d.fontcolour=Grt.$("fontcolour");d.messageBox=Grt.$("messageBox");d.bold=Grt.$("bold");d.italic=Grt.$("italic");d.left=Grt.$("left");d.right=Grt.$("right");d.center=Grt.$("center");d.justify=Grt.$("justify");c=0;a=[];d.fontface.innerHTML="";for(var b in d.fontValues){d.fontValues[b]=c;if(document.all){d.fontface.options[d.fontface.options.length]=new Option(b,b)}else{a.push("<option value='",b,"'>",b,"</option>")}c++}if(!document.all){d.fontface.innerHTML=a.join("")}Grt.addListener(d.fontface,"change",function(){d.setFace(this.options[this.options.selectedIndex].value)});c=0;a=[];d.fontsize.innerHTML="";for(;c<=56;c++){if(document.all){d.fontsize.options[d.fontsize.options.length]=new Option(c+8,c+8)}else{a.push("<option value='",c+8,"'>",c+8,"</option>")}}if(!document.all){d.fontsize.innerHTML=a.join("")}Grt.addListener(d.fontsize,"change",function(){d.setSize(this.options[this.options.selectedIndex].value)});Grt.addListener(d.messageBox,"change",function(){d.setText(this.value)});Grt.addListener(Grt.$("updateMessage"),"click",function(){d.updateObj()});Grt.hookupPanelWithControl(Grt.ColPicker,d.fontcolour,false,function(f){d.setColor(f)});Grt.doForEach([d.left,d.right,d.center,d.justify],function(f){Grt.addListener(f,"click",function(g){d.setAlignment(f.id)})});Grt.doForEach([d.bold,d.italic],function(f){Grt.addListener(f,"click",function(g){if(Grt.hasCls(f,"fontstyleSelected")){d.setStyle(f.id,false)}else{d.setStyle(f.id,true)}})});d.initialized=true}d.setObjToEdit(e);d.messageBox.style.backgroundColor=Grt.PageManager.pages[Grt.PageManager.activePage].canvas.color;d.setStyle("italic",d.obj.italic);d.setStyle("bold",d.obj.bold);d.setColor(d.obj.color);d.setAlignment(d.obj.align);d.setFace(d.obj.face);d.setSize(d.obj.size);d.setText(d.obj.text)},setText:function(b){if(!b){b=""}var a=this;b=b.replace(/<br\/>/g,"\n");b=Grt.unescapeValue(b);a.messageBox.value=b;b=Grt.escapeValue(b);b=b.replace(/\r\n/g,"<br/>");b=b.replace(/\n/g,"<br/>");a.updatedObj.text=b},setSize:function(b){var a=this;a.fontsize.options.selectedIndex=b-8;a.updatedObj.size=b;a.messageBox.style.fontSize=b+"px"},setFace:function(b){var a=this;a.fontface.options.selectedIndex=a.fontValues[b];a.updatedObj.face=b;a.messageBox.style.fontFamily=b},setAlignment:function(b){if(!b){return}var a=this;Grt.asnCls(a[b],"textalignSelected",false,true);a.updatedObj.align=b;a.messageBox.style.textAlign=b},setColor:function(a){var b=this;b.fontcolour.style.backgroundColor=a;b.messageBox.style.color=a;b.updatedObj.color=a},setStyle:function(b,c){var a=this;if(!c){c=false}a.updatedObj[b]=c;if(c){Grt.asnCls(a[b],"fontstyleSelected")}else{Grt.remCls(a[b],"fontstyleSelected")}a.messageBox.style[b=="bold"?"fontWeight":"fontStyle"]=c?b:""},setObjToEdit:function(b){var a=this;if(!b){b=Grt.copyProperties({},a.defaultTextObj);if(Grt.Canvas.hasDarkBackground){b.color="#ffffff"}a.newObj=true}else{a.newObj=false}a.obj=b;a.updatedObj={}},updateObj:function(){var a=this,c;if(a.newObj){for(c in a.updatedObj){if(a.updatedObj[c]!=a.obj[c]){a.obj[c]=a.updatedObj[c]}}a.addTextToCard(a.obj);a.newObj=false}else{Grt.UndoManager.beginTran();for(c in a.updatedObj){if(a.updatedObj[c]!=a.obj[c]){var b=Grt.PageManager.pages[Grt.PageManager.activePage];Grt.UndoManager.assignValue(b.objects[a.obj.id],c,a.updatedObj[c])}}Grt.UndoManager.endTran()}Grt.PageManager.setActivePage(Grt.PageManager.activePage);this.close()},addTextToCard:function(c){var a=this;var b=Grt.PageManager.pages[Grt.PageManager.activePage];Grt.UndoManager.beginTran();b.objCounter=b.objCounter+1;c.id=b.objCounter;b.canvas.maxZIndex+=1;c.zIndex=b.canvas.maxZIndex;Grt.UndoManager.assignValue(b.objects,b.objCounter,c);Grt.UndoManager.endTran()}});Grt.copyProperties(Grt.maWinController,{mailer_relative_url:"/mailer/envelope.php",initialized:false,MAIL_REGEX:/[.]*@[.]*/,cardTypes:{"greeting card":{subject:"A greeting card for you"},"message card":{subject:"A message for you"},invitation:{subject:"Invitation"},"good luck charm":{subject:"Here's a good luck charm"}},onOpen:function(h){var l=this,j,f,c;if(!l.initialized){l.sendday=Grt.$("sendday");l.cardtype=Grt.$("cardtype");l.sendername=Grt.$("sendername");l.sendermail=Grt.$("sendermail");l.subject=Grt.$("subject");l.rcptRows=Grt.$("rcptRows");l.sendCardButton=Grt.$("sendCard");var d=new Date(),a,k,g,b=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var e=[];for(g=0;g<30;g++){d.setTime(d.getTime()+86400000);a="on "+d.getDate()+Grt.getNthString(d.getDate())+" "+b[d.getMonth()]+", "+d.getFullYear();c=d.getDate();if(c<10){c="0"+c}k=c+b[d.getMonth()]+(d.getFullYear()+"").substring(2,4);if(document.all){l.sendday.options[l.sendday.options.length]=new Option(a,k)}else{e.push("<option value='",k,"'>",a,"</option>")}}if(!document.all){l.sendday.innerHTML+=e.join("")}Grt.addListener(l.sendday,"change",function(){Grt.mdl.envelope.sendDate=this.options[this.options.selectedIndex].value});Grt.addListener(l.sendername,"change",function(){Grt.mdl.envelope.senderName=Grt.escapeValue(this.value)});Grt.addListener(l.sendermail,"change",function(){Grt.mdl.envelope.senderMail=Grt.escapeValue(this.value)});Grt.addListener(l.subject,"change",function(){Grt.mdl.envelope.subject=Grt.escapeValue(this.value)});Grt.addListener(Grt.$("rcptAddNew"),"click",function(){l.addRecipient()});Grt.addListener(l.sendCardButton,"click",function(){l.sendCard()});this.initializeTypeAndSubCtrls(l.cardtype,l.subject);l.addRecipient()}l.initialized=true},initializeTypeAndSubCtrls:function(b,f){var c=0,a=[],d=this;for(var e in d.cardTypes){d.cardTypes[e].index=c;if(document.all){b.options[b.options.length]=new Option(e,e)}else{a.push("<option value='",e,"'>",e,"</option>")}c++}if(!document.all){b.innerHTML=a.join("")}Grt.addListener(b,"change",function(){if(model.type&&d.cardTypes[model.type]&&f.value==d.cardTypes[model.type].subject){f.value=""}model.type=this.options[this.options.selectedIndex].value;if(!f.value){f.value=d.cardTypes[model.type].subject;Grt.mdl.envelope.subject=f.value}});if(model.type&&d.cardTypes[model.type]){b.options.selectedIndex=d.cardTypes[model.type].index}if(!Grt.mdl.envelope.subject){f.value=d.cardTypes[b.options[b.options.selectedIndex].value].subject;Grt.mdl.envelope.subject=f.value}else{f.value=Grt.mdl.envelope.subject}},addRecipient:function(){var c=this,a=Grt.mdl.envelope.recipients,f={name:"",email:""},e=a.length,g,d,b=document.createElement("div");b.className="rcptRow";b.innerHTML='<div class="control"><div class="label">Name </div><div class="field"><input class="mailInput" name="name" type="text"/></div></div><div class="control"><div class="label">e-mail </div><div class="field"><input class="mailInput" name="email" type="text"/></div></div>'+(e>0?'<div id="delRcptRow'+e+'" class="delRcptRow">x</div>':"");c.rcptRows.appendChild(b);g=b.getElementsByTagName("input");if(g[0]){Grt.addListener(g[0],"change",function(){f.name=Grt.escapeValue(this.value)});if(!document.all){g[0].focus()}}if(g[1]){Grt.addListener(g[1],"change",function(){f.email=Grt.escapeValue(this.value)})}d=document.getElementById("delRcptRow"+e);if(d){Grt.addListener(d,"click",function(h){return function(){a[h]=null;c.rcptRows.removeChild(b)}}(e))}a.push(f)},validateEnvelope:function(f){var b=[],e,g=1,c,d=this,a;if(!f.senderName){b.push("Please enter your name and e-mail address")}else{if(!d.MAIL_REGEX.test(f.senderMail)){b.push("Please enter your valid e-mail address")}}for(e=0;e<f.recipients.length;e++){c=f.recipients[e];if(c){if((c.name&&!c.email)||(c.email&&!d.MAIL_REGEX.test(c.email))){b.push("Please enter a valid email for the ",Grt.getNthString(g)," recipient")}if(c.email){a=true}g++}}if(!a){b.push("Please provide the name and e-mail adrress of at least one recipient")}if(b.length===0){return true}else{alert(b.join("\n"));return false}},sendCard:function(){var c=this,d=Grt.mdl.envelope,f,e=model,b=[],g=1;if(!c.validateEnvelope(d)){return}e.subject=d.subject?d.subject:e.type;b.push("card="+encodeURIComponent(Grt.json2String(e)));b.push("cardType="+encodeURIComponent(e.type));b.push("subject="+encodeURIComponent(e.subject));b.push("senderName="+encodeURIComponent(d.senderName));b.push("senderMail="+encodeURIComponent(d.senderMail));for(var a=0;a<d.recipients.length;a++){f=d.recipients[a];if(f){if(f.email){if(!f.name){f.name=f.email}b.push("recipientMail"+g+"="+encodeURIComponent(f.email));b.push("recipientName"+g+"="+encodeURIComponent(f.name));g++}}}b.push("numOfRecipients="+(g-1));if(d.sendDate){b.push("sendDate="+encodeURIComponent(d.sendDate))}b=b.join("&");c.sendCardButton.disabled=true;Grt.xhr(c.mailer_relative_url,{onSuccess:function(){alert("Your card has been sent!");c.close();c.sendCardButton.disabled=false},onFailure:function(){alert("There was a problem sending your card. Please try again in a while.");c.sendCardButton.disabled=false}},b)}});Grt.Canvas=new function(b,c){var a=this;this.clipboard=[];this.editMode=c;this.container=b;this.selectedObjs=[];a.adaptToCanvasColor=function(d){var f=Grt.ColorUtil.parseColor(d),e=0;if(f.r>127){e++}if(f.g>127){e++}if(f.b>127){e++}if(e>1){Grt.remCls(a.container,"dark-background");a.hasDarkBackground=false}else{Grt.asnCls(a.container,"dark-background");a.hasDarkBackground=true}};a.setHeight=function(d){a.container.style.height=d+"px";model.dimensions.height=d};a.setWidth=function(d){a.container.style.width=d+"px";model.dimensions.width=d};a.setHeight(model.dimensions.height);a.setWidth(model.dimensions.width);this.renderPage=function(l){a.page=l;var d=[],m,g;a.adaptToCanvasColor(l.canvas.color);a.container.style.backgroundColor=l.canvas.color;a.container.innerHTML="<div id='selMarker'></div>";for(var k in l.objects){g=l.objects[k];switch(g.type){case"image":this.container.innerHTML=this.container.innerHTML+["<div class='unselected' oncontextmenu='return false' onmousedown='return false' onmousemove='return false' id='",g.id,"' style='position:absolute;left:",g.left,"px;","z-index:",g.zIndex,";top:",g.top,"px;","'><img src='",g.src,"' style='",(g.width?"width:"+g.width+"px;":""),(g.height?"height:"+g.height+"px;":""),"' class='notSelected' /><span class='resizeImage'></span></div>"].join("");break;case"text":this.container.innerHTML=this.container.innerHTML+["<div class='unselected' oncontextmenu='return false' onmousedown='return false' onmousemove='return false' id='",g.id,"' style='position:absolute;left:",g.left,"px;","color:",g.color,";font-family:",g.face,";font-size:",g.size,"px;","z-index:",g.zIndex,";top:",g.top,"px;width:",g.width,"px;",(g.align?"text-align:"+g.align+";":""),(g.italic?"font-style:italic;":""),(g.bold?"font-weight:bold;":""),"'>",g.text,"<span class='resizeText'></span></div>"].join("");break}}if(a.editMode){a.selMarker=a.container.getElementsByTagName("div")[0];var h=this.container.getElementsByTagName("div"),f;for(var e=1;e<h.length;e++){f=h[e];g=l.objects[f.id];if(g.type=="text"){Grt.addListener(f,"dblclick",function(i){return function(j){Grt.meWinController.open(i)}}(g))}Grt.addListener(f,"mousedown",function(i){Grt.ContextMenuHandler.hide();a.selectObj(this,i.ctrlKey||i.shiftKey,i);a.inFocus=true;a.mousedownOnObj=true;if(i.target.className=="resizeImage"||i.target.className=="resizeText"){a.tempStore={};a.mode="resize"}else{a.mode="move"}a.xRef=i.clientX;a.yRef=i.clientY;i.stopPropagation()});Grt.addListener(f,"click",function(i){i.stopPropagation()});Grt.addListener(f,"contextmenu",function(i){Grt.ContextMenuHandler.setContextToDisplayAt(function(j){switch(j){case"moveForward":a.bringToFront();break;case"moveStepForward":a.bringForward();break;case"moveBehind":a.sendBack();break;case"moveStepBehind":a.sendBackward()}},"objContext",i.clientX,i.clientY);i.stopPropagation()})}}};this.selectObj=function(h,f,g){if(Grt.asnCls(h,"selectedObject")){if(!f){a.clearSelection()}a.selectedObjs.push(h)}else{if(g.ctrlKey||g.shiftKey){for(var d=0;d<a.selectedObjs.length;d++){if(a.selectedObjs[d]===h){a.selectedObjs.splice(d,1);Grt.remCls(h,"selectedObject");break}}}}};this.selectAll=function(){var e=0,f,d=this.container.getElementsByTagName("div"),g=Grt.PageManager.pages[Grt.PageManager.activePage];for(;e<d.length;e++){if(g.objects[d[e].id]){if(Grt.asnCls(d[e],"selectedObject")){a.selectedObjs.push(d[e])}}}};this.clearSelection=function(){var d=a.selectedObjs.pop();while(d){Grt.remCls(d,"selectedObject");d=a.selectedObjs.pop()}};this.removeSelectedObjects=function(){var d=a.selectedObjs.pop();Grt.UndoManager.beginTran();while(d){Grt.UndoManager.assignValue(a.page.objects,d.id,Grt.undef);d=a.selectedObjs.pop()}Grt.UndoManager.endTran();a.renderPage(a.page,true)};this.copyToClipboard=function(){a.clipboard=[];Grt.doForEach(a.selectedObjs,function(e){var d={};Grt.copyProperties(d,a.page.objects[e.id]);d.presentOn={};d.presentOn[a.page.id]={x:d.left,y:d.top};a.clipboard.push(d)})};this.cutToClipboard=function(){a.copyToClipboard();a.removeSelectedObjects()};this.pasteFromClipboard=function(){Grt.UndoManager.beginTran();Grt.doForEach(a.clipboard,function(e){a.page.objCounter=a.page.objCounter+1;a.page.canvas.maxZIndex+=1;var d={zIndex:a.page.canvas.maxZIndex};Grt.copyProperties(d,e);if(d.presentOn[a.page.id]){d.top=parseInt(d.presentOn[a.page.id].y)+5;d.left=parseInt(d.presentOn[a.page.id].x)+5;e.presentOn[a.page.id].y=d.top;e.presentOn[a.page.id].x=d.left}else{e.presentOn[a.page.id]={x:d.left,y:d.top}}delete d.presentOn;d.id=a.page.objCounter;Grt.UndoManager.assignValue(a.page.objects,d.id,d)});Grt.UndoManager.endTran();a.renderPage(a.page,true)};this.bringForward=function(){if(a.selectedObjs&&a.selectedObjs.length){this.applyZIndex(1,true)}};this.sendBackward=function(){if(a.selectedObjs&&a.selectedObjs.length){this.applyZIndex(-1,true)}};this.bringToFront=function(){if(a.selectedObjs&&a.selectedObjs.length){a.page.canvas.maxZIndex+=1;this.applyZIndex(a.page.canvas.maxZIndex)}};this.sendBack=function(){if(a.selectedObjs&&a.selectedObjs.length){a.page.canvas.minZIndex-=1;this.applyZIndex(a.page.canvas.minZIndex)}};this.applyZIndex=function(e,d){Grt.UndoManager.beginTran();Grt.doForEach(a.selectedObjs,function(g){var f=a.page.objects[g.id];if(d){if(e>a.page.canvas.maxZIndex){a.page.canvas.maxZIndex=e}if(e<a.page.canvas.minZIndex){a.page.canvas.minZIndex=e}}Grt.UndoManager.assignValue(f,"zIndex",e);g.style.zIndex=e});Grt.UndoManager.endTran()};Grt.addListener(this.container,"click",function(d){a.inFocus=true;d.stopPropagation();return false});Grt.addListener(this.container,"mousedown",function(d){Grt.ContextMenuHandler.hide();if(!(d.ctrlKey||d.shiftKey)){a.clearSelection()}a.xRef=d.clientX;a.yRef=d.clientY;a.xCanLeft=!d.pageX?d.x:d.pageX-d.target.offsetLeft;a.yCanTop=!d.pageY?d.y:d.pageY-d.target.offsetTop;a.xCanRight=d.target.offsetWidth-a.xCanLeft;a.yCanBottom=d.target.offsetHeight-a.yCanTop;a.mousedown=true;a.selMarker.style.left=a.xCanLeft+"px";a.selMarker.style.top=a.yCanTop+"px";a.selMarker.style.width=0;a.selMarker.style.height=0;a.selMarker.style.display="block";return false});Grt.addListener(this.container,"mouseup",function(q){var o,n;a.mousedown=false;a.mousedownOnObj=false;if(a.objectsMoved){if(a.selectedObjs.length>0){Grt.UndoManager.beginTran()}a.objectsMoved=false;if(a.mode=="resize"){for(o=0;o<a.selectedObjs.length;o++){n=a.selectedObjs[o].getElementsByTagName("img")[0];var g,u,p=false;if(!n){n=a.selectedObjs[o];p=true}g=n.style.width;g=g.indexOf("px")!=-1?g.substring(0,g.length-2):g;Grt.UndoManager.assignValue(a.page.objects[a.selectedObjs[o].id],"width",g);if(!p){u=n.style.height;u=u.indexOf("px")!=-1?u.substring(0,u.length-2):u;Grt.UndoManager.assignValue(a.page.objects[a.selectedObjs[o].id],"height",u)}}}else{if(a.mode=="move"){for(o=0;o<a.selectedObjs.length;o++){n=a.selectedObjs[o];var s=n.style.top,h=n.style.left;s=s.indexOf("px")!=-1?s.substring(0,s.length-2):s;h=h.indexOf("px")!=-1?h.substring(0,h.length-2):h;Grt.UndoManager.assignValue(a.page.objects[n.id],"top",s);Grt.UndoManager.assignValue(a.page.objects[n.id],"left",h)}}else{var l=a.container.getElementsByTagName("div"),v,m=l[0],f=l[0].offsetLeft,d=l[0].offsetWidth+f,t=l[0].offsetTop,r=l[0].offsetHeight+t;window.status=(f+" "+d+" "+t+" "+r);for(var k=1;k<l.length;k++){v=l[k];if(v.offsetTop>t&&v.offsetLeft>f&&(v.offsetLeft+v.offsetWidth)<d&&(v.offsetTop+v.offsetHeight)<r){a.selectObj(v,true)}}}}Grt.UndoManager.endTran()}a.mode=null;a.selMarker.style.display="none";a.objectsMoved=false});Grt.addListener(this.container,"mousemove",function(l){if(a.mousedown||a.mousedownOnObj){a.objectsMoved=true;var j,m=l.clientX-a.xRef,g=l.clientY-a.yRef,h=null;if(a.mousedownOnObj&&a.mode=="resize"){for(j=0;j<a.selectedObjs.length;j++){var k=null;h=a.selectedObjs[j].getElementsByTagName("img")[0];if(!h){h=a.selectedObjs[j];k=true}if(!a.tempStore[a.selectedObjs[j].id]){a.tempStore[a.selectedObjs[j].id]={width:h.offsetWidth,height:h.offsetHeight}}var o=a.page.objects[a.selectedObjs[j].id],d=a.tempStore[a.selectedObjs[j].id].width+(m*1),p=a.tempStore[a.selectedObjs[j].id].height+(g*1);h.style.width=d+"px";if(!k){h.style.height=p+"px"}}}else{if(a.mousedownOnObj){for(j=0;j<a.selectedObjs.length;j++){h=a.selectedObjs[j];var n=(a.page.objects[h.id].top*1)+(g*1);var f=(a.page.objects[h.id].left*1)+(m*1);h.style.top=n+"px";h.style.left=f+"px"}}else{if(m>=0){a.selMarker.style.right=null;a.selMarker.style.left=a.xCanLeft+"px";a.selMarker.style.width=m+"px"}else{a.selMarker.style.left=null;a.selMarker.style.right=a.xCanRight+"px";a.selMarker.style.width=(m*-1)+"px"}if(g>=0){a.selMarker.style.bottom=null;a.selMarker.style.top=a.yCanTop+"px";a.selMarker.style.height=(g)+"px"}else{a.selMarker.style.top=null;a.selMarker.style.bottom=a.yCanBottom+"px";a.selMarker.style.height=(g*-1)+"px"}}}}});Grt.addListener(document,"keyup",function(d){if(d.ctrlKey&&d.target.tagName.toLowerCase()!="input"&&d.target.tagName.toLowerCase()!="textarea"){switch(d.keyCode){case 67:Grt.Canvas.copyToClipboard();break;case 86:Grt.Canvas.pasteFromClipboard();break;case 88:Grt.Canvas.cutToClipboard();break;case 89:Grt.UndoManager.redo();break;case 90:Grt.UndoManager.undo();break;case 65:Grt.DimensionManager.cdHeightCtrl.focus();Grt.Canvas.container.focus();Grt.Canvas.selectAll();d.preventDefault();d.stopPropagation();break}}});Grt.addListener(document,"click",function(d){a.inFocus=false});Grt.addListener(document,"keydown",function(d){if(d.keyCode==46&&a.inFocus){a.removeSelectedObjects()}});Grt.addListener(this.container,"contextmenu",function(d){Grt.ContextMenuHandler.setContextToDisplayAt(function(e){switch(e){case"selectAll":Grt.Canvas.selectAll();break;case"redo":Grt.UndoManager.redo();break;case"undo":Grt.UndoManager.undo();break}},"genContext",d.clientX,d.clientY);d.preventDefault()});return this}(Grt.$("canvasEl"),true);Grt.DimensionManager=new function(){var a=this;a.minVal=100;a.maxVal=1240;a.cdHeightCtrl=Grt.$("cdHeight");a.cdWidthCtrl=Grt.$("cdWidth");a.cdHeightCtrl.value=model.dimensions.height;a.cdWidthCtrl.value=model.dimensions.width;a.setDimension=function(b,c){c=parseInt(c,10);if(!isNaN(c)&&c>=a.minVal&&c<=a.maxVal){if(b=="width"){Grt.Canvas.setWidth(c)}else{Grt.Canvas.setHeight(c)}}else{alert("The card can have a minimum "+b+" of "+a.minVal+" and a maximimum "+b+" of "+a.maxVal);this.value=model.dimensions[b]}};Grt.addListener(a.cdHeightCtrl,"change",function(){a.setDimension("height",this.value)});Grt.addListener(a.cdWidthCtrl,"change",function(){a.setDimension("width",this.value)});Grt.doForEach([a.cdHeightCtrl,a.cdWidthCtrl],function(b){Grt.addListener(b,"keypress",function(c){if(!((c.keyCharCode>=48&&c.keyCharCode<=57)||(c.keyCharCode>=37&&c.keyCharCode<=40)||c.keyCharCode==8||c.keyCharCode==9||c.keyCharCode==47)){c.stopPropagation();c.preventDefault()}});Grt.addListener(b,"keyup",function(d){var c=parseInt(this.value,10);if(!isNaN(c)&&c>=a.minVal&&this.value<=a.maxVal){if(this.id=="cdWidth"){a.setDimension("width",this.value)}else{a.setDimension("height",this.value)}}})});return a}();Grt.ContextMenuHandler=new function(d){var c=this;Grt.addListener(d,"contextmenu",function(f){f.preventDefault()});this.setContextToDisplayAt=function(g,h,f,i){this.callback=g;d.className=h;d.style.top=(i-10)+"px";d.style.left=(f-10)+"px"};this.hide=function(){d.className="noConext"};var a=d.getElementsByTagName("a"),e;for(var b=0;b<a.length;b++){e=a[b];Grt.addListener(e,"click",function(){if(c.callback){c.callback(this.className)}c.hide()});Grt.addListener(e,"mouseout",function(f){f.stopPropagation()})}return this}(Grt.$("contextMenu"));Grt.PageManager=new function(e,c,f,b){var d=this,a=b.pages;d.pages=a;d.defaultCanvas={color:"#ffffff",minZIndex:3000,maxZIndex:5000};d.pages[0].canvas=Grt.copyProperties(a[0].canvas,d.defaultCanvas);this.renderPageButtons=function(){d.pgActivators=[];var n=[],s,m,g;for(s=0;s<a.length;s++){var r=a[s];r.id=s;n.push('<div class="pageButtonPad"></div><div class="pageButton"><div class="title">',(s>0?'<div class="pageDelete" id="pageDelete'+s+'">X</div>':""),"Page ",(s+1),'</div><div class="label">Background Color</div><div id="bgcolor'+s+'" class="color"></div>',(s>0?'<select class="pageTime" id="pageTime'+s+'"></select>':""),"</div>")}e.innerHTML=n.join("");s=0;f.style.display="none";m=e.getElementsByTagName("div");for(var q=0;q<m.length;q++){g=m[q];if(Grt.hasCls(g,"pageButton")){this.pgActivators[s]=function(j,i){return function(u){d.activePage=j;Grt.asnCls(i,"pageButtonSel",false,true);Grt.Canvas.renderPage(b.pages[j]);if(u){u.stopPropagation()}}}(s,g);Grt.addListener(g,"click",this.pgActivators[s]);var t=Grt.$("pageTime"+s),o,l;if(t){o=[];t.innerHTML="";for(var k=1;k<=60;){if(document.all){t.options[t.options.length]=new Option("Display after "+k+" second"+(k>1?"s":""),k)}else{o.push("<option>Display after ",k," second",(k>1?"s":""),"</option>")}k=k>4?k+5:k+1}if(!document.all){t.innerHTML=o.join("")}Grt.addListener(t,"change",function(i){return function(){var j=this.options.selectedIndex;j=j>3?(j-4)*5:j+1;b.pages[i].visibleAfter=j}}(s));l=b.pages[s].visibleAfter;if(l&&l>0){l=l>5?4+(l/5):l-1;t.options.selectedIndex=l}}var p=Grt.$("pageDelete"+s);if(p){Grt.addListener(p,"click",function(i){return function(j){j.stopPropagation();a.splice(i,1);Grt.UndoManager.undoset.splice(i,1);Grt.UndoManager.redoset.splice(i,1);d.renderPageButtons();d.pgActivators[0]()}}(s))}var h=function(j,i){j.style.backgroundColor=b.pages[i].canvas.color;Grt.hookupPanelWithControl(Grt.ColPicker,j,true,function(u){j.style.backgroundColor=u;b.pages[i].canvas.color=u;d.pgActivators[i]()})}(Grt.$("bgcolor"+s),s);if(s==1){f.style.display="inline"}s++}}};this.setActivePage=function(g){this.pgActivators[g]()};Grt.addListener(c,"click",function(h){b.pageCounter=b.pageCounter+1;var i=a.length,g=Grt.copyProperties({},d.defaultCanvas);a[i]={id:i,objCounter:0,objects:{},canvas:g};Grt.PageManager.renderPageButtons();d.setActivePage(i)});Grt.addListener(f,"click",function(i){var h=0;function g(){d.setActivePage(h);h++;var j=b.pages[h];if(h<b.pageCounter&&j){setTimeout(g,j.visibleAfter?j.visibleAfter*1000:1000)}}g()})}(Grt.$("pageButtons"),Grt.$("addPage"),Grt.$("previewCard"),model);Grt.PageManager.renderPageButtons();Grt.PageManager.setActivePage(0);Grt.addListener(Grt.$("cpBTN"),"click",function(){Grt.Canvas.copyToClipboard()});Grt.addListener(Grt.$("ctBTN"),"click",function(){Grt.Canvas.cutToClipboard()});Grt.addListener(Grt.$("ptBTN"),"click",function(){Grt.Canvas.pasteFromClipboard()});Grt.addListener(Grt.$("deBTN"),"click",function(){Grt.Canvas.removeSelectedObjects()});Grt.addListener(Grt.$("udBTN"),"click",function(){Grt.UndoManager.undo()});Grt.addListener(Grt.$("rdBTN"),"click",function(){Grt.UndoManager.redo()});Grt.addListener(Grt.$("muBTN"),"click",function(){Grt.Canvas.bringToFront()});Grt.addListener(Grt.$("mdBTN"),"click",function(){Grt.Canvas.sendBack()});Grt.init=function(){Grt.hideWaitScreen()};Grt.addListener(window,"load",Grt.init);