
if(typeof(SK)=='undefined')SK={};SK.TemplateEngine=new Class({cache:{},code:'',initialize:function(string,data){this.code=this.processTemplate(string,data);},init:function(){return this.code;},processTemplate:function(string,data){var fn=!/\W/.test(string)?this.cache[string]=this.cache[string]||this.processTemplate($(string).innerHTML):new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};"+"with(obj){p.push('"+
string.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")
+"');}return p.join('');");return data?fn(data):fn;}});


if(typeof SK=='undefined')SK={};if(typeof SK.UI=='undefined')SK.UI={};if(typeof SK.UI.Properties=='undefined')SK.UI.Properties={};SK.UI.Properties.RadioGroup=new Class({form:null,radios:[],last_mover:null,last_current:null,toggle_elements:[],initialize:function(form,radio_group_name,options){this.form=$(form);this.options=$merge({align:'center'},options);this.radios=this.getRadioButtons(radio_group_name);if(this.radios!=null&&this.radios.length>0){this.maskRadios(this.radios);}},getRadioButtons:function(radio_group_name){return this.form.getElements('input[type=radio][name='+radio_group_name+'][appearance]');},maskRadios:function(radios){var parents=radios.getParent();for(var i=0;i<parents.length;i++){var parent=parents[i];var group_wrapper=new Element('div',{'class':'type-select'});var radios_placeholder=new Element('div',{'class':'types'});var centering_table=new Element('table',{'class':'struct','align':this.options.align}).grab(new Element('tbody').grab(new Element('tr').grab(new Element('td').grab(radios_placeholder))));var description_placeholder=new Element('p',{'class':'description',styles:{'display':'none'}});var fancy_radios=[];var has_radio_description=false;var first_radio=false;for(var j=0;j<radios.length;j++){var radio=radios[j];if(!parent.hasChild(radio)){continue;}
if(!first_radio){first_radio=radio;}
var fancy_radio=this.generateRadioMask(radio,description_placeholder);radios_placeholder.grab(fancy_radio);radio.setStyle('display','none');}
centering_table.inject(group_wrapper);description_placeholder.inject(group_wrapper);group_wrapper.inject(first_radio,'before');}},generateRadioMask:function(radio,description_placeholder){var radio_appearance=radio.get('appearance');var radio_inline_appearance=radio.get('inline_appearance');var radio_description=radio.get('description');var radio_caption=radio.get('title');var toggle_element=$(radio.get('toggle'));var mask=new Element('div',{'class':'type'});var mask_image=new Element('div',{'class':'image '+radio_appearance,'style':radio_inline_appearance});mask.grab(mask_image);if(radio_caption!=null&&radio_caption!=''){mask.grab(new Element('p',{'html':radio_caption}));}
mask.store('radio',radio);mask.store('mgr',this);mask.store('description',$pick(radio_description,''));mask.store('description_placeholder',description_placeholder);mask.store('toggle',toggle_element);if(toggle_element)this.toggle_elements.push(toggle_element);mask.addEvents({'click':function(){var radio=this.retrieve('radio');radio.set('checked',true);if(radio.onclick){radio.onclick(radio);}else{radio.fireEvent('click');}
var mgr=this.retrieve('mgr');mgr.markCurrent(this);var description=this.retrieve('description');if(description!=''){var description_placeholder=this.retrieve('description_placeholder');description_placeholder.set('html',description);description_placeholder.setStyle('display','');}
mgr.toggle(this.retrieve('toggle'));},'mouseenter':function(){var mgr=this.retrieve('mgr');mgr.markOver(this);},'mouseleave':function(){var mgr=this.retrieve('mgr');mgr.markOut(this);}});if(radio.get('checked')){mask.fireEvent('click');}
return mask;},toggle:function(e){this.toggle_elements.each(function(te){te.setStyle('display','none');});if(e!=null)e.setStyle('display','block');},markCurrent:function(radio_mask){var last_current=this.last_current;if(last_current!=null)last_current.removeClass('selected');radio_mask.addClass('selected');radio_mask.removeClass('rollover');this.last_current=radio_mask;},markOver:function(radio_mask){var last_mover=this.last_mover;if(last_mover!=null)last_mover.removeClass('rollover');if(!radio_mask.hasClass('selected'))radio_mask.addClass('rollover');this.last_mover=radio_mask;},markOut:function(radio_mask){var last_mover=this.last_mover;if(last_mover!=null)last_mover.removeClass('rollover');radio_mask.removeClass('rollover');this.last_mover=null;}});


Element.implement({setValue:function(value){var method=this.get('tag').toLowerCase();if(Element.Serializers[method]){Element.Serializers[method](this,$pick(value,''));}
return this;},getValue:function(){var method=this.get('tag').toLowerCase();if(Element.Serializers[method]){return Element.Serializers[method](this);}
return null;}});Element.Serializers={input:function(element,value){switch(element.get('type').toLowerCase()){case'checkbox':case'radio':return Element.Serializers.inputSelector(element,value);default:return Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if($defined(value)){element.checked=(value==='0'||value==='false')?0:!!value;}else{return element.checked?element.value:0;}},textarea:function(element,value){if($defined(value)){element.value=value;}else{return element.value;}},select:function(element,value){if(!$defined(value)){if(element.type=='select-one'){return this.selectOne(element);}else{return this.selectMany(element);}}else{var opt,current_value;var single=$type(value)!='array';for(var i=0,length=element.length;i<length;i++){opt=element.options[i];current_value=this.optionValue(opt);if(single){if(current_value==value){opt.selected=true;break;}}else{opt.selected=value.contains(current_value);}}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):'';},selectMany:function(element){var values=[];var length=element.length;for(var i=0;i<length;i++){var opt=element.options[i];if(opt.selected){values.push(this.optionValue(opt));}}
return values;},optionValue:function(opt){return $(opt).getProperty('value')?opt.value:opt.text;}};


(function(){var data={language:'en-US',languages:{'en-US':{}},cascades:['en-US']};var cascaded;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(lang){if(!data.languages[lang])return this;data.language=lang;this.load();this.fireEvent('langChange',lang);return this;},load:function(){var langs=this.cascade(this.getCurrentLanguage());cascaded={};$each(langs,function(set,setName){cascaded[setName]=this.lambda(set);},this);},getCurrentLanguage:function(){return data.language;},addLanguage:function(lang){data.languages[lang]=data.languages[lang]||{};return this;},cascade:function(lang){var cascades=(data.languages[lang]||{}).cascades||[];cascades.combine(data.cascades);cascades.erase(lang).push(lang);var langs=cascades.map(function(lng){return data.languages[lng];},this);return $merge.apply(this,langs);},lambda:function(set){(set||{}).get=function(key,args){return $lambda(set[key]).apply(this,$splat(args));};return set;},get:function(set,key,args){if(cascaded&&cascaded[set])return(key?cascaded[set].get(key,args):cascaded[set]);},set:function(lang,set,members){this.addLanguage(lang);langData=data.languages[lang];if(!langData[set])langData[set]={};$extend(langData[set],members);if(lang==this.getCurrentLanguage()){this.load();this.fireEvent('langChange',lang);}
return this;},list:function(){return Hash.getKeys(data.languages);}});})();


MooTools.lang.set('en-US','Date',{months:['January','February','March','April','May','June','July','August','September','October','November','December'],days:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dateOrder:['month','date','year'],shortDate:'%m/%d/%Y',shortTime:'%I:%M%p',AM:'AM',PM:'PM',ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?'th':['th','st','nd','rd','th'][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:'less than a minute ago',minuteAgo:'about a minute ago',minutesAgo:'{delta} minutes ago',hourAgo:'about an hour ago',hoursAgo:'about {delta} hours ago',dayAgo:'1 day ago',daysAgo:'{delta} days ago',weekAgo:'1 week ago',weeksAgo:'{delta} weeks ago',monthAgo:'1 month ago',monthsAgo:'{delta} months ago',yearAgo:'1 year ago',yearsAgo:'{delta} years ago',lessThanMinuteUntil:'less than a minute from now',minuteUntil:'about a minute from now',minutesUntil:'{delta} minutes from now',hourUntil:'about an hour from now',hoursUntil:'about {delta} hours from now',dayUntil:'1 day from now',daysUntil:'{delta} days from now',weekUntil:'1 week from now',weeksUntil:'{delta} weeks from now',monthUntil:'1 month from now',monthsUntil:'{delta} months from now',yearUntil:'1 year from now',yearsUntil:'{delta} years from now'});


(function(){var Date=this.Date;if(!Date.now)Date.now=$time;Date.Methods={ms:'Milliseconds',year:'FullYear',min:'Minutes',mo:'Month',sec:'Seconds',hr:'Hours'};['Date','Day','FullYear','Hours','Milliseconds','Minutes','Month','Seconds','Time','TimezoneOffset','Week','Timezone','GMTOffset','DayOfYear','LastMonth','LastDayOfMonth','UTCDate','UTCDay','UTCFullYear','AMPM','Ordinal','UTCHours','UTCMilliseconds','UTCMinutes','UTCMonth','UTCSeconds'].each(function(method){Date.Methods[method.toLowerCase()]=method;});var pad=function(n,digits,string){if(digits==1)return n;return n<Math.pow(10,digits-1)?(string||'0')+pad(n,digits-1,string):n;};Date.implement({set:function(prop,value){switch($type(prop)){case'object':for(var p in prop)this.set(p,prop[p]);break;case'string':prop=prop.toLowerCase();var m=Date.Methods;if(m[prop])this['set'+m[prop]](value);}
return this;},get:function(prop){prop=prop.toLowerCase();var m=Date.Methods;if(m[prop])return this['get'+m[prop]]();return null;},clone:function(){return new Date(this.get('time'));},increment:function(interval,times){interval=interval||'day';times=$pick(times,1);switch(interval){case'year':return this.increment('month',times*12);case'month':var d=this.get('date');this.set('date',1).set('mo',this.get('mo')+times);return this.set('date',d.min(this.get('lastdayofmonth')));case'week':return this.increment('day',times*7);case'day':return this.set('date',this.get('date')+times);}
if(!Date.units[interval])throw new Error(interval+' is not a supported interval');return this.set('time',this.get('time')+times*Date.units[interval]());},decrement:function(interval,times){return this.increment(interval,-1*$pick(times,1));},isLeapYear:function(){return Date.isLeapYear(this.get('year'));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});},diff:function(date,resolution){if($type(date)=='string')date=Date.parse(date);return((date-this)/Date.units[resolution||'day'](3,3)).toInt();},getLastDayOfMonth:function(){return Date.daysInMonth(this.get('mo'),this.get('year'));},getDayOfYear:function(){return(Date.UTC(this.get('year'),this.get('mo'),this.get('date')+1)
-Date.UTC(this.get('year'),0,1))/Date.units.day();},getWeek:function(){return(this.get('dayofyear')/7).ceil();},getOrdinal:function(day){return Date.getMsg('ordinal',day||this.get('date'));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,'$1').replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,'$1$2$3');},getGMTOffset:function(){var off=this.get('timezoneOffset');return((off>0)?'-':'+')+pad((off.abs()/60).floor(),2)+pad(off%60,2);},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get('hr');if(hr>11&&ampm=='AM')return this.decrement('hour',12);else if(hr<12&&ampm=='PM')return this.increment('hour',12);return this;},getAMPM:function(){return(this.get('hr')<12)?'AM':'PM';},parse:function(str){this.set('time',Date.parse(str));return this;},isValid:function(date){return!!(date||this).valueOf();},format:function(f){if(!this.isValid())return'invalid date';f=f||'%x %X';f=formats[f.toLowerCase()]||f;var d=this;return f.replace(/%([a-z%])/gi,function($0,$1){switch($1){case'a':return Date.getMsg('days')[d.get('day')].substr(0,3);case'A':return Date.getMsg('days')[d.get('day')];case'b':return Date.getMsg('months')[d.get('month')].substr(0,3);case'B':return Date.getMsg('months')[d.get('month')];case'c':return d.toString();case'd':return pad(d.get('date'),2);case'e':return pad(d.get('date'),2,' ');case'H':return pad(d.get('hr'),2);case'I':return pad((d.get('hr')%12)||12,2);case'j':return pad(d.get('dayofyear'),3);case'k':return pad(d.get('hr'),2,' ');case'l':return pad((d.get('hr')%12)||12,2,' ');case'L':return pad(d.get('ms'),3);case'm':return pad((d.get('mo')+1),2);case'M':return pad(d.get('min'),2);case'o':return d.get('ordinal');case'p':return Date.getMsg(d.get('ampm'));case's':return Math.round(d/1000);case'S':return pad(d.get('seconds'),2);case'U':return pad(d.get('week'),2);case'w':return d.get('day');case'x':return d.format(Date.getMsg('shortDate'));case'X':return d.format(Date.getMsg('shortTime'));case'y':return d.get('year').toString().substr(2);case'Y':return d.get('year');case'T':return d.get('GMTOffset');case'Z':return d.get('Timezone');}
return $1;});},toISOString:function(){return this.format('iso8601');}});Date.alias('toISOString','toJSON');Date.alias('diff','compare');Date.alias('format','strftime');var formats={db:'%Y-%m-%d %H:%M:%S',compact:'%Y%m%dT%H%M%S',iso8601:'%Y-%m-%dT%H:%M:%S%T',rfc822:'%a, %d %b %Y %H:%M:%S %Z','short':'%d %b %H:%M','long':'%B %d, %Y %H:%M'};var parsePatterns=[];var nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1;var translated=Date.getMsg(type+'s');switch($type(word)){case'object':ret=translated[word.get(type)];break;case'number':ret=translated[month-1];if(!ret)throw new Error('Invalid '+type+' index: '+index);break;case'string':var match=translated.filter(function(name){return this.test(name);},new RegExp('^'+word,'i'));if(!match.length)throw new Error('Invalid '+type+' string');if(match.length>1)throw new Error('Ambiguous '+type);ret=match[0];}
return(num)?translated.indexOf(ret):ret;};Date.extend({getMsg:function(key,args){return MooTools.lang.get('Date',key,args);},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth($pick(month,d.get('mo')),$pick(year,d.get('year')))*86400000;},year:function(year){year=year||new Date().get('year');return Date.isLeapYear(year)?31622400000:31536000000;}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month];},isLeapYear:function(year){return((year%4===0)&&(year%100!==0))||(year%400===0);},parse:function(from){var t=$type(from);if(t=='number')return new Date(from);if(t!='string')return from;from=from.clean();if(!from.length)return null;var parsed;parsePatterns.some(function(pattern){var bits=pattern.re.exec(from);return(bits)?(parsed=pattern.handler(bits)):false;});return parsed||new Date(nativeParse(from));},parseDay:function(day,num){return parseWord('day',day,num);},parseMonth:function(month,num){return parseWord('month',month,num);},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get('year'),localDate.get('mo'),localDate.get('date'),localDate.get('hr'),localDate.get('min'),localDate.get('sec'));return new Date(utcSeconds);},orderIndex:function(unit){return Date.getMsg('dateOrder').indexOf(unit)+1;},defineFormat:function(name,format){formats[name]=format;},defineFormats:function(formats){for(var name in formats)Date.defineFormat(name,formats[name]);},parsePatterns:parsePatterns,defineParser:function(pattern){parsePatterns.push((pattern.re&&pattern.handler)?pattern:build(pattern));},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser);},define2DigitYearStart:function(year){startYear=year%100;startCentury=year-startYear;}});var startCentury=1900;var startYear=70;var regexOf=function(type){return new RegExp('(?:'+Date.getMsg(type).map(function(name){return name.substr(0,3);}).join('|')+')[a-z]*');};var replacers=function(key){switch(key){case'x':return((Date.orderIndex('month')==1)?'%m[.-/]%d':'%d[.-/]%m')+'([.-/]%y)?';case'X':return'%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?';}
return null;};var keys={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};keys.m=keys.I;keys.S=keys.M;var currentLanguage;var recompile=function(language){currentLanguage=language;keys.a=keys.A=regexOf('days');keys.b=keys.B=regexOf('months');parsePatterns.each(function(pattern,i){if(pattern.format)parsePatterns[i]=build(pattern.format);});};var build=function(format){if(!currentLanguage)return{format:format};var parsed=[];var re=(format.source||format).replace(/%([a-z])/gi,function($0,$1){return replacers($1)||$0;}).replace(/\((?!\?)/g,'(?:').replace(/ (?!\?|\*)/g,',? ').replace(/%([a-z%])/gi,function($0,$1){var p=keys[$1];if(!p)return $1;parsed.push($1);return'('+p.source+')';}).replace(/\[a-z\]/gi,'[a-z\\u00c0-\\uffff]');return{format:format,re:new RegExp('^'+re+'$','i'),handler:function(bits){bits=bits.slice(1).associate(parsed);var date=new Date().clearTime();if('d'in bits)handle.call(date,'d',1);if('m'in bits||'b'in bits||'B'in bits)handle.call(date,'m',1);for(var key in bits)handle.call(date,key,bits[key]);return date;}};};var handle=function(key,value){if(!value)return this;switch(key){case'a':case'A':return this.set('day',Date.parseDay(value,true));case'b':case'B':return this.set('mo',Date.parseMonth(value,true));case'd':return this.set('date',value);case'H':case'I':return this.set('hr',value);case'm':return this.set('mo',value-1);case'M':return this.set('min',value);case'p':return this.set('ampm',value.replace(/\./g,''));case'S':return this.set('sec',value);case's':return this.set('ms',('0.'+value)*1000);case'w':return this.set('day',value);case'Y':return this.set('year',value);case'y':value=+value;if(value<100)value+=startCentury+(value<startYear?100:0);return this.set('year',value);case'T':if(value=='Z')value='+00';var offset=value.match(/([+-])(\d{2}):?(\d{2})?/);offset=(offset[1]+'1')*(offset[2]*60+(+offset[3]||0))+this.getTimezoneOffset();return this.set('time',this-offset*60000);}
return this;};Date.defineParsers('%Y([-./]%m([-./]%d((T| )%X)?)?)?','%Y%m%d(T%H(%M%S?)?)?','%x( %X)?','%d%o( %b( %Y)?)?( %X)?','%b( %d%o)?( %Y)?( %X)?','%Y %b( %d%o( %X)?)?','%o %b %d %X %T %Y');MooTools.lang.addEvent('langChange',function(language){if(MooTools.lang.get('Date'))recompile(language);}).fireEvent('langChange',MooTools.lang.getCurrentLanguage());})();


if(typeof(console)=='undefined')console={log:$empty};if(typeof(SK)=='undefined')SK={};if(typeof(SK.Applications)=='undefined')SK.Applications={};if(typeof(SK.Applications.LocalPromo)=='undefined')SK.Applications.LocalPromo={};SK.Applications.LocalPromo.Strings=SK.Applications.LocalPromo.Strings||new Class({strings:{types:{gift_card:'Gift Certificate',deal:'Deal'},operations:{purchase:'{name} (<a href="mailto:{email}">{email}</a>) purchased a <a href="#" id="{id}" rel="{type}">{title}</a>',redeem_full:'{name} (<a href="mailto:{email}">{email}</a>) redeemed in full their <a href="#" id="{id}" rel="{type}">{title}</a>',redeem_partial:'{name} (<a href="mailto:{email}">{email}</a>) redeemed {redeemed} of their <a href="#" id="{id}" rel="{type}">{title}</a>',set_balance:'You have set new balance of {balance} to <a href="#" id="{id}" rel="{type}">{title}</a> of {name} (<a href="mailto:{email}">{email}</a>)','delete':'You have deleted <a href="#" id="{id}" rel="{type}">{title}</a> of {name} (<a href="mailto:{email}">{email}</a>)'},edit_history:{purchase:'Item purchased.',redeem_partial:'Redeemed {redeem}. Remaining balance {balance}.',redeem_full:'Redeemed {redeem}. Remaining balance {balance}.',set_balance:'Balance set to {balance}.','delete':'Item deleted.'}}});


if(typeof(console)=='undefined')console={log:$empty};if(typeof(SK)=='undefined')SK={};if(typeof(SK.Applications)=='undefined')SK.Applications={};if(typeof(SK.Applications.LocalPromo)=='undefined')SK.Applications.LocalPromo={};SK.Applications.LocalPromo.Utils=new Class({parseQueryString:function(){var query_string=location.href.substr(location.href.indexOf('?')+1),pairs=query_string.split('&'),params={};for(var i=0,l=pairs.length;i<l;i+=1){var pair=pairs[i].split('=');params[pair[0]]=pair[1];}
return params;},createQueryString:function(params){var query_string=[];for(var param in params){query_string.push(param+'='+params[param]);}
return query_string.join('&');}});


if(typeof(console)=='undefined')console={log:$empty};if(typeof(SK)=='undefined')SK={};if(typeof(SK.Applications)=='undefined')SK.Applications={};if(typeof(SK.Applications.LocalPromo)=='undefined')SK.Applications.LocalPromo={};SK.Applications.LocalPromo.Display=SK.Applications.LocalPromo.Display||new Class({Implements:[Events,SK.Applications.LocalPromo.Strings,SK.Applications.LocalPromo.Utils],el:{},ui:{},type:'',designs:['default.htm','1.htm','2.htm','3.htm'],pp_plugin_id:'LP',template_dir:'/Apps/LocalPromo/Templates/',designs_dir:'/Apps/LocalPromo/Templates/Print/',notify_url:'http://'+SK.Singletons.env.get('admin_domain')+'/Shared/Html/pp_ipn.html/sk_pp_email={pp_email}',send_url:'/Shared/Html/pp_ipn_notify.html?deals_row_id={row_id}&deals_db_id={management_id}&history_db_id={history_id}&clients_db_id={clients_id}',data:{},print_data:{},is_admin:location.href.indexOf('/Admin/')!=-1,form_actions:{online:{method:'generatePayPal',status:'pending',admin_required:false,strip_adminurl:false},instore:{method:'buyInStore',status:'purchased',admin_required:true,strip_adminurl:true}},initialize:function(env){this.env=env;this.initSkApi();this.el.wrapper=$(env.placeholder).getParent().getElement('.sk-gd-wrapper');this.getPayPalData();this.collectElements();if(this.is_admin){this.displayBuyInStore();}
this.getCurrencies();this.initPrint();},init:function(){this.matchLabels();this.initDesignChoice();this.attachEvents();this.initValidator();},initSkApi:function(){this.api=new SK.API(this.env.configuration.auth_token,{encoding:SK.Util.getEncoding()});},getPayPalData:function(){$extend(this.data,{email:this.env.properties.paypal_email,currency:this.env.properties.paypal_currency,notify_url:this.notify_url.substitute({pp_email:this.env.properties.paypal_email})});},collectElements:function(proceed_buttons){proceed_buttons=proceed_buttons||[];proceed_buttons.push('.sk-gd-button-proceed');if(this.is_admin){proceed_buttons.push('.sk-gd-button-buyinstore');}
var proceed_button_selector=proceed_buttons.join(', ');$extend(this.el,{properties:this.el.wrapper.getElement('.sk-gd-properties'),purchase_form:this.el.wrapper.getElement('.sk-gd-purchase'),buy_gift_form:this.el.wrapper.getElement('.sk-gift-card-purchase'),thankyou_page:this.el.wrapper.getElement('.sk-gd-thankyou'),proceed_button:this.el.wrapper.getElements(proceed_button_selector),views:this.el.wrapper.getChildren(),print_wrapper:this.el.wrapper.getNext()});$extend(this.el,{buyer_id:this.el.purchase_form.getElement('[name="buyer_id"]'),recipient_id:this.el.purchase_form.getElement('[name="recipient_id"]'),delivery_chb:this.el.buy_gift_form.getElement('[name="delivery"]'),print_link:this.el.print_wrapper.getElement('.sk-gd-print-link'),close_link:this.el.print_wrapper.getElement('.sk-gd-print-close'),preview_link:this.el.buy_gift_form.getElement('.sk-gd-button-preview')});},displayBuyInStore:function(){this.el.proceed_button.filter('[rel=instore]').setStyle('display','');},getCurrencies:function(){new Request({method:'get',url:'/Apps/PayPal/paypal_currencies.json',onSuccess:function(response){this.currencies=JSON.decode(response.match(/^[^{]*({[^\^]*})[^}]*$/)[1]);this.init();}.bind(this)}).send();},getDb:function(name){name=name||'management';name=name.toLowerCase();var dbs=this.env.configuration.databases;for(var db in dbs){if(dbs.hasOwnProperty(db)&&db==name){return dbs[db];}}
return null;},getDbId:function(name){return this.getDb(name).database.id;},getColumnId:function(column_name,db_name){var db=this.getDb(db_name);for(var i=0,l=db.columns.length;i<l;i+=1){if(db.columns[i].name==column_name){return db.columns[i].id;}}
return null;},generateId:function(prefix,length){if(length){return String(Math.floor(Math.random()*Number('8'+new Array(length).join('9')))+Number('1'+new Array(length).join('0')));}
return(prefix||'id')+'-'+Math.floor(Math.random()*10000)+new Date().getTime();},matchLabels:function(){var fields=this.el.wrapper.getElements('input[name]:not([id]), textarea[name]:not([id])');fields.each(function(field){var field_id=this.generateId('field');var label=this.el.wrapper.getElements('label[for_name="'+field.get('name')+'"]');if(label){field.set('id',field_id);label.set('for',field_id).erase('for_name');}},this);},initDesignChoice:function(){new Request({url:this.template_dir+'card_design_choices.htm',method:'get',onSuccess:function(response){var instance_id=this.env.properties.instance_id;var html=new SK.TemplateEngine(response,{instance_id:instance_id}).init();this.el.buy_gift_form.getElement('.sk-gd-design-choices').set('html',html);this.ui.design_choice=new SK.UI.Properties.RadioGroup(this.el.buy_gift_form,instance_id+'_card_design');}.bind(this)}).send();},attachEvents:function(){this.addEvent('viewChange',this.onViewChange.bind(this));this.el.proceed_button.addEvent('click',function(e){var button=$(e.target);var action=button.getProperty('rel');if(this.isButtonDisabled(button)){return;}
this.disableButton(button);this.submitForm(action);}.bind(this));var emails=$$(this.el.purchase_form,this.el.buy_gift_form).getElements('input[validate_as="email"]');emails.each(function(emails){emails.each(function(email){var type=email.get('name').split('_')[0];var form=this.getForm(email);var name=form.getElement('input[name="'+type+'_name"]');var id=form.getElement('input[name="'+type+'_id"]');$$(name,email).addEvent('blur',function(e,type,form,email,name,id){var field=$(e.target);var name_value=name.getValue();var email_value=email.getValue();if(email_value!=''&&name_value!=''&&this.validateField(email)&&this.validateField(name)&&(!this.el.delivery_chb.getValue()||name.get('name')!='recipient_name')){this.clientExists(id,email_value,name_value);}
if(type=='buyer'&&form.getElement('input[name="delivery"]').checked){if(field==email){form.getElement('input[name="recipient_email"]').setValue(email.getValue());}}}.bindWithEvent(this,[type,form,email,name,id]));},this);},this);this.el.buy_gift_form.getElements('input[name="buyer_name"]').addEvent('blur',function(e){var field=$(e.target),form=this.getForm(field),from=form.getElement('input[name="from_name"]');if(!from.getValue()){from.setValue(field.getValue());}}.bind(this));this.el.delivery_chb.addEvent('click',function(e){var checkbox=$(e.target),form=this.getForm(checkbox);if(checkbox.checked){form.getElement('[name="recipient_email"]').setValue(form.getElement('[name="buyer_email"]').getValue());form.getElement('[name="recipient_id"]').setValue(form.getElement('[name="buyer_id"]').getValue());form.getElements('[name="recipient_email"]').set('disabled','disabled').addClass('disabled');}else{form.getElements('[name="recipient_email"]').removeProperty('disabled').removeClass('disabled');}}.bind(this));this.el.print_link.addEvent('click',function(e){e.preventDefault();window.print();});this.el.close_link.addEvent('click',function(e){e.preventDefault();$$(this.el.print_wrapper.getPrevious(),this.el.print_wrapper).setStyle('display','none');$(document.body).removeClass('print');}.bind(this));this.el.preview_link.addEvent('click',this.displayPrintPreview.bind(this));var selector='.sk-gd-selectanother, .sk-gd-backtodeal, .sk-gd-button-buyanotherdeal, .sk-gd-button-selectanothergiftcard';this.el.wrapper.getElements(selector).addEvent('click',function(e){e.preventDefault();this.displayProperties();}.bind(this));},onViewChange:function(view){if(!view)return;view=view.toLowerCase();this.el.views.setStyle('display','none');this.el.views.filter('[class*="'+view+'"]')[0].setStyle('display','block');},getView:function(view){return this.el.views.filter('[class*="'+view+'"]')[0]||null;},hideLoading:function(){this.fireEvent('viewChange',['properties']);},displayProperties:function(){this.fireEvent('viewChange',['properties']);this.el.proceed_button.each(function(button){this.enableButton(button);},this);},displayForm:function(){this.displaySubtitleDescription();this.fireEvent('viewChange',['purchase']);},displaySubtitleDescription:function(){},getForm:function(field){return field.getParent('[class*="form"]');},submitForm:function(action){if(this.isLocked()){arguments.callee.delay(500,this,arguments);}
else if(this.validate(this.el.purchase_form)){this.collectData(this.el.purchase_form,false,action);}else{this.enableButton(this.el.proceed_button);}},collectData:function(form,return_data,action){var fields=form.getElements('input[type="text"], input[type="checkbox"], input[type="radio"][checked], input[type="hidden"], textarea');var deal_id=this.generateId('',9);var instance_id=this.env.properties.instance_id;var user_id=fields.filter('[name="recipient_id"]')[0].getValue();var value=this.value||this.data.amount;var print_url=this.generatePrintUrl(deal_id,instance_id);var user_name=SK.Singletons.env.get('user_name');print_url=this.form_actions[action].strip_adminurl?print_url.replace('/'+user_name+'/Admin/','/'+user_name+'/'):print_url;var data={ID:deal_id,InstanceID:instance_id,Type:this.type,ServiceID:this.data.service_id,Title:this.data.item_name,Price:this.data.amount,Value:value,Balance:value,Currency:this.env.properties.paypal_currency,Status:this.form_actions[action].status,PrintURL:print_url};for(var i=0,l=fields.length;i<l;i+=1){data[fields[i].name]=fields[i].getValue();if(fields[i].name==instance_id+'_card_design'){data['card_design']=this.designs[data[fields[i].name]];}}
if(!return_data){var callback=(this[this.form_actions[action].method]).bind(this);return this.saveData(data,callback);}
return data;},saveData:function(data,callback){var management_cells={};for(var i in data){if(data.hasOwnProperty(i)){var management_column_id=this.getColumnId(this.toCamelCase(i));if(management_column_id){management_cells[management_column_id]=data[i];}}}
this.api.execute('utils.get_env',{},function(success,message,result){if(!success){alert(message);return;}
this.management_cells[this.mgr.getColumnId('Date')]=result.date_time;this.mgr.api.execute('db.row.add_multiple',{index_only:0,cells:JSON.encode([this.management_cells])},function(success,message,result){if(!success){alert(message);return;}
this.callback(result.rows[0]);}.bind(this));}.bind({mgr:this,management_cells:management_cells,callback:callback}));},generatePayPal:function(row){var row_id=row.row_id;$extend(this.data,{allow_quantity:0,price_options:[],options:[],texts:[],image:'',item_number:this.pp_plugin_id+"/"+row_id.split('.')[1]+'/'+this.getDbId('Management')+'/'
+this.getDbId('History')+'/'+this.getDbId('Clients')});new Request({url:'/Apps/PayPal/Snippets/buy-now.html',method:'get',onSuccess:function(response){var html=new SK.TemplateEngine(response,this.data).init();var paypal=new Element('div',{style:'display: none',html:html}).inject(this.el.wrapper);this.el.thankyou_page.getElement('a').addEvent('click',function(e,paypal){e.preventDefault();this.submitPayPal(paypal);}.bindWithEvent(this,[paypal]));this.submitPayPal(paypal);}.bind(this)}).send();},submitPayPal:function(paypal){this.fireEvent('viewChange',['thankyou']);try{paypal.getChildren('form')[0].submit();}catch(e){}},getDirectly:function(row,view,send_error){var cells={};cells[this.getColumnId('Date','History')]=row.cells[this.getColumnId('Date')];cells[this.getColumnId('ID','History')]=row.cells[this.getColumnId('ID')];cells[this.getColumnId('OldBalance','History')]='0';cells[this.getColumnId('NewBalance','History')]=row.cells[this.getColumnId('Balance')];cells[this.getColumnId('Operation','History')]='purchase';this.api.execute('db.row.add',{index_only:1,cells:JSON.encode(cells)},function(success,message,result){if(!success){alert(message);return;}
this.mgr.fireEvent('viewChange',[this.view]);}.bind({mgr:this,view:view}));new Request({method:'get',url:this.send_url.substitute({row_id:row.row_id.split('.')[1],management_id:this.getDbId(),history_id:this.getDbId('History'),clients_id:this.getDbId('Clients')}),onFailure:function(send_error){alert(send_error);}.bind(this,[send_error])}).send();},buyInStore:function(row){this.getDirectly(row,'created','Sending email notification to the recipient has failed!');var print_link=this.getView('created').getElement('.sk-gd-button-print');print_link.removeEvents('click').addEvent('click',function(row){var url=row.cells[this.getColumnId('PrintURL')].replace(/\&amp;/g,'&');window.open(url,'printWindow');}.bind(this,[row]));},generatePrintUrl:function(deal_id,instance_id){var page_url=location.href;if(page_url.indexOf('?')>0){page_url=page_url.substr(0,page_url.indexOf('?'));}
return page_url+'?c=print&d='+deal_id+'&i='+instance_id;},initValidator:function(validators){this.ui.validator=new SK.Applications.LocalPromo.Display.Validator(validators);},clientExists:function(id_field,email,name){this.lock();this.api.execute('db.query.get_filtered_rows',{index_only:0,filter:JSON.encode({where:[[this.getColumnId('Email','Clients'),'=',[email]]]})},function(success,message,result){if(!success){alert(message);return;}
if(result.rows.length){this.mgr.updateClientIdField(this.id_field,result.rows[0].cells[this.mgr.getColumnId('ClientID','Clients')]);this.mgr.updateClient(result.rows[0].row_id,this.email,this.name);}else{this.mgr.addClient(this.id_field,this.email,this.name);}}.bind({mgr:this,id_field:id_field,email:email,name:name}));},addClient:function(id_field,email,name){var cells={};cells[this.getColumnId('Email','Clients')]=email;cells[this.getColumnId('Name','Clients')]=name;cells[this.getColumnId('TotalPurchased','Clients')]='0';cells[this.getColumnId('TotalRedeemed','Clients')]='0';this.api.execute('utils.get_env',{},function(success,message,result){if(!success){alert(message);return;}
this.cells[this.mgr.getColumnId('IPAddress','Clients')]=result.remote_addr;this.cells[this.mgr.getColumnId('GeoLocation','Clients')]=this.mgr.formatGeoLocation(result.location);this.cells[this.mgr.getColumnId('RegisterDate','Clients')]=result.date_time;this.cells[this.mgr.getColumnId('UpdateDate','Clients')]=result.date_time;this.mgr.api.execute('db.row.add',{db_id:this.mgr.getDbId('Clients'),cells:JSON.encode(this.cells)},function(success,message,result){if(!success){alert(message);return;}
this.mgr.updateClientIdField(this.id_field,result.cells[this.mgr.getColumnId('ClientID','Clients')]);this.mgr.unlock();}.bind(this));}.bind({mgr:this,id_field:id_field,cells:cells}));},updateClient:function(row_id,email,name){var cells=[{row_id:row_id,col_id:this.getColumnId('Email','Clients'),value:email},{row_id:row_id,col_id:this.getColumnId('Name','Clients'),value:name}];this.api.execute('utils.get_env',{},function(success,message,result){if(!success){alert(message);return;}
this.cells.push({row_id:this.row_id,col_id:this.mgr.getColumnId('IPAddress','Clients'),value:result.remote_addr},{row_id:this.row_id,col_id:this.mgr.getColumnId('GeoLocation','Clients'),value:this.mgr.formatGeoLocation(result.location)},{row_id:this.row_id,col_id:this.mgr.getColumnId('UpdateDate','Clients'),value:result.date_time});this.mgr.api.execute('db.cell.lock_multiple',{cells:JSON.encode(this.cells)},function(success,message,result){if(!success){alert(message);return;}
var locks=[];for(var i=0,l=result.cells.length;i<l;i+=1){locks.push(result.cells[i].lock_id);$extend(this.cells[i],result.cells[i]);}
this.locks=locks;this.mgr.api.execute('db.cell.update_multiple',{cells:JSON.encode(this.cells)},function(success,message,result){if(!success){alert(message);return;}
this.mgr.api.execute('db.cell.unlock_multiple',{locks:JSON.encode(this.locks)},function(success,message,result){if(!success){alert(message);return;}
this.mgr.unlock();}.bind(this));}.bind(this));}.bind(this));}.bind({mgr:this,cells:cells,row_id:row_id}));},updateClientIdField:function(field,id){field.setValue(id);if(this.el.delivery_chb.checked&&field.get('name')=='buyer_id'){this.el.buy_gift_form.getElement('[name="recipient_id"]').setValue(id);}
if(this.getForm(field).hasClass('sk-deal-form')){this.el.purchase_form.getElement('[name="buyer_id"]').setValue(id);}},initPrint:function(){if(location.href.indexOf('?')>-1){var params=this.parseQueryString();if(params.c=='print'&&params.i==this.env.properties.instance_id&&params.d&&!params.skrnd){this.el.print_wrapper.removeClass('preview').getElement('.sk-gd-type').set('text',this.strings.types[this.type]);this.print_data.id=params.d;$(document.body).addClass('print');new SK.Sync([this.getDeal.bind(this),this.getClients.bind(this),this.getPrintTemplate.bind(this)],this.print.bind(this)).run();}}},getDeal:function(sync){this.api.execute('db.query.get_filtered_rows',{index_only:0,filter:JSON.encode({where:[[this.getColumnId('ID'),'=',[this.print_data.id]]]})},function(success,message,result){if(!success){alert(message);return;}
this.mgr.print_data.deal=result.rows[0].cells;this.sync.ready();}.bind({mgr:this,sync:sync}));},getClients:function(sync){var client_id_column=this.getColumnId('ClientID','Clients');var recipient_id=this.print_data.deal[this.getColumnId('RecipientID')];this.api.execute('db.query.get_filtered_rows_multiple',{index_only:0,filters:JSON.encode([{id:'to',filter:{where:[[client_id_column,'=',[recipient_id]]]}},{id:'from',filter:{where:[[client_id_column,'=',[this.print_data.deal[this.getColumnId('BuyerID')]]]]}}])},function(success,message,result){if(!success){alert(message);return;}
var name_column=this.mgr.getColumnId('Name','Clients');$extend(this.mgr.print_data,{to:result.to.rows.length?result.to.rows[0].cells[name_column]:'',from:(this.mgr.print_data.deal[this.mgr.getColumnId('FromName')]||(result.from.rows.length?result.from.rows[0].cells[name_column]:''))});this.sync.ready();this.mgr.updateClient(result.to.rows[0].row_id,result.to.rows[0].cells[this.mgr.getColumnId('Email','Clients')],result.to.rows[0].cells[name_column]);}.bind({mgr:this,sync:sync,recipient_id:recipient_id}));},getPrintTemplate:function(sync){new Request({url:this.designs_dir+this.print_data.deal[this.getColumnId('CardDesign')],method:'get',onSuccess:function(response){var deal=this.mgr.print_data.deal;var value=deal[this.mgr.getColumnId('Value')];var curr=this.mgr.env.properties.paypal_currency;if(this.mgr.currencies[curr].shortcode){value=this.mgr.currencies[curr].shortcode+value;}else{value+=' '+curr;}
var expires=this.mgr.env.properties.deal_expires?(function(deal_expires){var date_obj=new Date(Number(deal_expires));return(SK.Util.DateTime.format(date_obj,'long_date_fmt')
+' at '
+SK.Util.DateTime.format(date_obj,'time_fmt'));})(this.mgr.env.properties.deal_expires):null;var date_str_utc=deal[this.mgr.getColumnId('Date')].replace(/\-/g,'/');var html=new SK.TemplateEngine(response,{logo:this.mgr.getSiteLogo(),id:this.mgr.printID(deal[this.mgr.getColumnId('ID')]),value:value,title:deal[this.mgr.getColumnId('Title')].replace(/&amp;/g,'&'),expires:expires,to:this.mgr.print_data.to,from:this.mgr.print_data.from,message:this.mgr.formatText(deal[this.mgr.getColumnId('Message')]),details:this.mgr.formatText(this.mgr.env.properties.details),fine_print:this.mgr.formatText(this.mgr.env.properties.fine_print),date_purchased:'Purchased on '
+SK.Util.DateTime.formatUTC(date_str_utc,'long_date_fmt')+' at '
+SK.Util.DateTime.formatUTC(date_str_utc,'time_fmt')}).init();new Element('div',{'class':'sk-gd-print-overlay',id:'sk-gd-print-overlay'}).inject(document.body);this.mgr.el.print_wrapper.inject(document.body).setStyle('display','').getElement('.sk-gd-print-template').set('html',html);if(this.sync){this.sync.ready();}}.bind({mgr:this,sync:sync})}).send();},print:function(){setTimeout(function(){window.print();},3000);},displayPrintPreview:function(e){this.el.print_wrapper.addClass('preview');var form=this.getForm($(e.target));var data=this.collectData(form,true);for(var i in data){if(data.hasOwnProperty(i)){var col_id=this.getColumnId(this.toCamelCase(i));if(col_id){data[col_id]=data[i];}}}
data[this.getColumnId('ID')]='PREVIEW';var current_date=new Date();current_date.setMinutes(current_date.getMinutes()+current_date.getTimezoneOffset());data[this.getColumnId('Date')]=SK.Util.DateTime.format(current_date,'$YEAR$-$0M$-$0D$ $H24$:$M$:$S$');this.print_data={deal:data,to:data.recipient_name,from:data.from_name||data.buyer_name};this.getPrintTemplate();this.el.print_wrapper.setStyle('top',$(window).getScroll().y+20);},getSiteLogo:function(){var props=this.env.properties;var site_title=SK.Singletons.env.get('site_title');switch(props.logo_type){case'site_logo':return $('siteTitleLink').get('html');break;case'custom_logo':return'<img src="'+props.logo_url+'" alt="'+site_title+'" />';break;}
return site_title;},printID:function(id){if(isNaN(id))return id;return id.substr(0,3)+'-'+id.substr(3,3)+'-'+id.substr(6);},formatGeoLocation:function(geolocation_obj){return[geolocation_obj.city,geolocation_obj.region,geolocation_obj.country_code].join(', ');},formatPrice:function(price){return this.currencies[this.env.properties.paypal_currency].shortcode?this.currencies[this.env.properties.paypal_currency].shortcode+price:price+' '+this.env.properties.paypal_currency;},formatText:function(text){text=text.replace(/(\r\n|\n){2,}/g,'</p><p>').replace(/\r\n|\n/g,'<br />');text=('<p>'+text+'</p>').replace('<p></p>','');return text;},validateField:function(field){return this.ui.validator.validateField(field);},validate:function(form){var valid=true,fields=form.getElements('input[validate_as], textarea[validate_as]');for(var i=0,l=fields.length;i<l;i+=1){if(!this.validateField(fields[i])){valid=false;}}
return valid;},toCamelCase:function(str){return str.replace(/\-|_([a-z]{1})/g,function(all,letter){return letter?letter.toUpperCase():null;}).replace(/^([a-z])/,function(all,letter){return letter?letter.toUpperCase():null;}).replace('Id','ID');},enableButton:function(button){button.removeClass('button-disabled').eliminate('disabled');},disableButton:function(button){button.addClass('button-disabled').store('disabled',true);},isButtonDisabled:function(button){return button.retrieve('disabled');},locked:false,isLocked:function(){return this.locked;},lock:function(){this.locked=true;},unlock:function(){this.locked=false;}});SK.Applications.LocalPromo.Display.Validator=SK.Applications.LocalPromo.Display.Validator||new Class({errors:[],validators:{name:{pattern:/^.{2,}(\s.{2,})*$/,error_message:'Please enter a name'},email:{pattern:/^[a-zA-Z0-9\-_\.]{2,}@[a-zA-Z0-9\.\-]{2,}\.[a-zA-Z0-9]{2,4}$/,error_message:'Please enter a valid e-mail address'},not_empty:{anti_pattern:/^\s*$/,error_message:'This field must not be empty'},number:{pattern:/^(\d+\.\d+)|\d+$/,error_message:'Please enter a valid number'}},initialize:function(validators){$extend(this.validators,validators||{});},addError:function(field){if(!this.errorExists(field)){this.errors.push(field);}},cleanError:function(field){this.errors.splice(this.getError(field),1);},hasErrors:function(){return this.errors.length?true:false;},getError:function(field){for(var i=0,l=this.errors.length;i<l;i+=1){if(field==this.errors[i]){return i;}}
return null;},getErrors:function(){return this.errors;},errorExists:function(field){if(this.getError(field)>=0){return true;}
return false;},validateField:function(field){var validators=field.get('validate_as').split(' ');var value=field.getValue();for(var i=0,l=validators.length;i<l;i+=1){var validator=this.validators[validators[i]];if(validator.validate&&!validator.validate(value)||validator.pattern&&!value.match(validator.pattern)||validator.anti_pattern&&value.match(validator.anti_pattern)){this.displayError(field,validator.error_message);this.addError(field);return false;}}
this.cleanError(field);return true;},displayError:function(field,message){alert(message);}});


