
Module("Shop",function(sh){Class("Save",{has:{cookieName:{is:"rw",init:"shop"},valid:{is:"rw"},save:{is:"rw"},overview:{is:"rw"},nav:{is:"rw"},basket:{is:"rw",init:function(){return{};}},data:{is:"rw",init:function(){return{};}},translate:{is:"ro",init:function(){return new Translate();}}},methods:{saveNext:function(page){var saveData={};saveData[page]=this.getElementsAsObj($('select').get());this.setData(saveData);this.writeCookie(saveData);},getElementsAsObj:function(values){var elements={},key;$.each(values,function(i,item){key=$(item).attr('id');elements[key]=$(item).val();});return elements;},writeCookie:function(data){$.cookie(this.getCookieName(),JSON.stringify(data));},readCookie:function(){return JSON.parse($.cookie(this.getCookieName()));}},before:{saveNext:function(){this.getValid().resetMessage();}}});Class("PersonalData",{isa:sh.Save,methods:{getFormData:function(){var data=this.readCookie();},saveNext:function(page){if(!this.validateForm()){return false;}
var saveData=this.getSave().getData();saveData[page]=this.getElementsAsObj($('input').get());this.getSave().setData(saveData);this.writeCookie(saveData);this.getNav().nextPage('shopPerson','+');this.getOverview().getOverviewList();},validateForm:function(){var val,validationType,err=0,that=this,values=this.getElementsAsObj($('input').get());$.each(values,function(item){val=$('#'+item).val();validationType=that.getValidationType(item);if(validationType[1]=='required'&&that.getValid().isEmpty(val)){that.throwError('is_empty');err++;return false;}
if(err>0){this.getValid().message();return false;}
switch(validationType[0]){case'character':if(!that.getValid().isCharacter(val)){that.getValid().setMsgText('is_invalid_character');++err;return false;}
break;case'integer':if(!that.getValid().isInteger(val)){that.getValid().setMsgText('is_invalid_integer');++err;return false;}
break;case'email':if(!that.getValid().isEmail(val)){that.getValid().setMsgText('is_invalid_email');++err;return false;}
break;default:return true;}});this.getValid().message();return(err>0)?false:true;},getValidationType:function(item){return $('#'+item).attr('class').split(' ');},throwError:function(error){this.getValid().setMsgText(error);this.getValid().message();}}});Class("Overview",{isa:sh.Save,methods:{saveNext:function(page){this.getValid().resetMessage();var saveData=this.getSave().getData();this.writeCookie(saveData);},getOverviewList:function(){var values,prices,html='';$('#buttons_overview').css("display","none");values=this.getSave().getData();prices=this.getPrices(values.shopStart);$('#buttons_overview').css("display","block");html+='<table>';html+='<tr><td width="30%">&nbsp;</td><td>&nbsp;</td><td width="20%">&nbsp;</td></tr>';html+=this.getHtmlRows(values.shopPerson);html+='<tr><td colspan="3">&nbsp;</td>';html+=this.getHtmlRows(values.shopStart);html+='</table>';$("#overview_list").html(html);},getHtmlRows:function(obj){var html='',that=this,sum=0,positionPrice=0;$.each(obj,function(item){if(item===undefined||obj[item]==='0'||item===''||item.match(/_size|_price/)){return true;}
html+='<tr><td>'+that.getTranslate().translate(item)+':</td>';if(obj[item+'_size']!==undefined){html+='<td>'+obj[item]+' ('+obj[item+'_size']+') </td>';}else{html+='<td>'+obj[item]+'</td>';}
if(obj[item+'_price']!==undefined){positionPrice=obj[item]*obj[item+'_price'];html+='<td>'+positionPrice.toFixed(2)+' EUR</td></tr>';}
sum+=positionPrice;});if(sum>0){html+='<tr><td colspan="3" style="border-bottom: 1px solid #ccc;">&nbsp;</td></tr>';html+='<tr><td colspan="2">Summe:</td><td>'+sum.toFixed(2)+' EUR</td></tr>';}
return html;},getPrices:function(basketData){var priceData,price;priceData=JSON.parse($.ajax({url:'/shop/get_prices/',async:false}).responseText);$.each(basketData,function(key,item){key=key.replace("_size","");if(priceData[key]===undefined){if(priceData[key+'_'+item]===undefined){return true;}}
if(priceData[key]===undefined){price=priceData[key+'_'+item].price;}else{price=priceData[key].price;}
basketData[key+'_'+'price']=price;});}},before:{getOverviewList:function(){this.getValid().resetMessage();}}});Class("Confirmation",{isa:sh.Save,methods:{sendEmail:function(){var data=encodeURIComponent(JSON.stringify(this.readCookie())),that=this;$.get('/shop/send_email/values/'+data,function(response){$('#confirmationMessage').html(that.getTranslate().translate(response));});this.getSave().setData('');}}});});Class("Validate",{has:{msg:{is:"rw"},msgText:{is:"rw"},translate:{is:"ro",init:function(){return new Translate();}}},methods:{message:function(){this.getMsg().html(this.getTranslate().translate(this.getMsgText()));},resetMessage:function(){this.getMsg().html("");},isEmpty:function(elem){return(elem===''||elem===0||elem===undefined)?true:false;},isInteger:function(elem){return true;},isCharacter:function(elem){return(this.testRegex(elem,/^[^"@€$#_§%\/\(\)\[\]{}=<>\|\?\!²³\^\*~+,\;]+$/g))?true:false;},isEmail:function(elem){var filter=/^([\w\-]+(?:\.[\w\-]+)*)@((?:[\w\-]+\.)*\w[\w\-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;return(filter.test(elem))?true:false;},invalidCharactersEx:function(elem,regex){var reg="/^[^",cnt=regex.length,i;for(i=0;i<cnt;++i){reg+="\\"+regex[i];}
reg+="]+$/";return this.testRegex(elem,reg);},testRegex:function(elem,regex){if(elem===null||regex===null){return false;}
reg=new RegExp(regex);return reg.test(elem);}}});Class("Navigation",{has:{pages:{is:"ro",init:function(){return['shopStart','shopPerson','shopOverview','shopConfirmation'];}},actualPage:{is:"rw"},translate:{is:"ro",init:function(){return new Translate();}}},methods:{nextPage:function(page,direction){this.setActualPage(page);$('#'+this.getActualPage()).hide();$('#'+this.nextPageName(direction)).show();this.headlineText(direction);},arrayKey:function(val){var len=this.getPages().length;for(var i=0;i<len;++i){if(val===this.getPages()[i]){return i;}}
return undefined;},nextPageName:function(direction){if(direction==='+'){return this.getPages()[this.arrayKey(this.getActualPage())+1];}else{return this.getPages()[this.arrayKey(this.getActualPage())-1];}},headlineText:function(direction){$('#headline').html(this.getTranslate().translate(this.nextPageName(direction)));}}});Class("Translate",{has:{dict:{is:"ro",init:function(){return{de:{error:'Es ist ein Fehler aufgetreten.',success:'Alles ok.',shopStart:'Seite 1 von 3 :: Auswahl',shopPerson:'Seite 2 von 3 :: Daten',shopOverview:'Seite 3 von 3 :: &Uuml;berblick',shopConfirmation:' ::  Best&auml;tigung',is_empty:'Bitte alle Felder ausf&uuml;llen',is_invalid_email:'Die E-Mail Adresse ist nicht g&uuml;ltig',is_invalid_character:'Ein oder mehrere Felder beinhalten ung&uuml;tige Zeichen',first_name:'Vorname',last_name:'Nachname',street:'Strasse',zip:'PLZ',city:'Ort',country:'Land',email:'E-Mail',cd_suicide:'CD Perfect Suicide',cd_asshole:'CD Asshole',shirt_asshole:'T-Shirt Asshole',shirt_asshole_size:'Gr&ouml;&szlig;e T-Shirt Asshole',error_saving_customer_data:'Beim Speichern der Personendaten trat ein Fehler auf ...',error_saving_order:'Beim Speichern der Bestelldaten trat ein Fehler auf ...',success_saving_order:'Die Bestellung wurde erfolgreich gespeichert. Du erh&auml;ltst in K&uuml;rze eine E-mail.',error_sending_confirmation_email:'Leider trat beim versenden der Best&auml;tigungs E-Mail ein Fehler auf. Bitte wende Dich an uns per info@kongo-skulls.de'},en:{error:'An error occured.',success:'Everything ok.',shopStart:'Page 1 of 3 :: Choose',shopPerson:'Page 2 of 3 :: Data',shopOverview:'Page 3 von 3 :: Overview',shopConfirmation:' ::  Confirmation',is_empty:'Please fill in all fields',is_invalid_email:'The email address is not valid',is_invalid_character:'One or more fields contain invalid characters',first_name:'First Name',last_name:'Last Name',street:'Street',zip:'ZIP',city:'City',country:'Country',email:'email',cd_suicide:'CD Perfect Suicide',cd_asshole:'CD Asshole',shirt_asshole:'T-Shirt Asshole',shirt_asshole_size:'Size T-Shirt Asshole',error_saving_customer_data:'An error occured while saving your customer data  ...',error_saving_order:'An error occured while saving your order data  ...',success_saving_order:'Your order was saved successfully. You will receive an email shortly.',error_sending_confirmation_email:'Unfortunately an error occured while trying to send the confirmation email. Please get in touche with us with info@kongo-skulls.de'}};}}},methods:{translate:function(item,lang){if(lang===undefined){lang='de';}
var translation=this.getDict()[lang][item];if(translation===undefined){return'['+item+']';}else{return translation;}}}});
