var $j = jQuery.noConflict();
/********************************************************************************************************
* Thanks to Peter-Paul Koch for these cookie functions (http://www.quirksmode.org/js/cookies.html)
********************************************************************************************************/
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
jQuery(function(){
$j(document).ready(function($){
var sb_nextID = 1;
function sb_cart(){
var me = this;
me.cartID = 'drop_shop';
me.cartListID = 'ek_wagen';
me.cartButton = 'sb_warenkorb';
me.itemClass = 'sb_shopItem';
me.clearCartID = 'clearCart';
me.totalClass = 'ek_total';
me.totalListID = 'cart_total';
me.cartControlID = 'cartControl';
me.checkoutDivID = 'sb_cart_checkout';
me.zurKasseID = 'zurKasse';
me.itemControlClass = 'itemControl';
me.itemIncrement = 'itemIncrement';
me.itemDecrement = 'itemDecrement';
me.items = {};
me.shelfitems = {};
me.total = 0; // Total = Ohne Porto!
me.txtKorbleer = 'Ihr Warenkorb ist momentan leer.';
me.txtClearCart = 'Warenkorb leeren';
me.txtTotal = 'Summe:'; // Total = Ohne Porto!
me.txtGesamtsumme = 'Gesamt:';
me.txtEndsumme = ''; // Endsumme = Porto + Total
me.txtZurKasse = 'Zur Kasse';
me.txtPorto = 'Versand:';
me.txtVersand = me.total>0 ? me.txtPorto+' '+me.Porto.formatMoney()+' EUR' : '';
me.txtGesamt = me.total>0 ? me.txtTotal+' '+me.total.formatMoney()+' EUR' : me.txtKorbleer;
me.endsummeClass = 'ek_gesamtsumme';
me.Porto = 4;
me.portoClass = 'ek_versandkosten';
me.initialise = function(){
me.load();
me.updateTotal();
var $cart = $('#'+me.cartID);
var $list = $('ul#'+me.cartListID, $cart).length ? $('ul#'+me.cartListID,$cart) : $('
').appendTo($cart);
var $Ltotal = $('ul#'+me.totalListID, $cart).length ? $('ul#'+me.totalListID,$cart) : $('- '+me.txtGesamt+'
- '+me.txtVersand+'
- '+me.txtEndsumme+'
').appendTo($cart);
var $control= $('ul#'+me.cartControlID, $cart).length ? $('ul#'+me.cartControlID,$cart) : $('').appendTo($cart);
me.cartItemlist = $('ul#'+me.cartListID);
me.initView();
if($('#'+me.checkoutDivID).length){
me.constructCheckoutView();
}
$("#clearCart").live('click',function(){
$('Sind Sie sicher, dass Sie den Warenkorb leeren möchten?
').dialog({
buttons: { "Abbrechen" : function() { $(this).dialog("close"); },
"OK" : function() { me.clearCart(); $(this).dialog("close"); }
},
resizable: false,
modal: true,
title: me.txtClearCart
});
});
me.ready=true;
//console.log('cart is ready');
}
me.clearCart = function(){
me.items={};
me.save();
me.initialise();
}
me.addToCart = function($addID){
var $shelfitem = me.shelfitems[$addID];
//console.log($shelfitem);
var checkid = $shelfitem.id;
if(me.itemVorhanden($shelfitem)){
me.items[checkid].anzahl++;
}
else{
me.items[checkid]=$shelfitem;
me.items[checkid].anzahl=1;
}
me.updateTotal();
me.visibleAdd($shelfitem);
me.updateView();
me.save();
}
me.save = function(){
dataString = escape($.toJSON(me.items));
createCookie("ek_cartitems",dataString,30);
}
me.load = function(){
dataString = readCookie("ek_cartitems");
if(dataString){
dataString = unescape(dataString);
newItems = $.evalJSON(dataString);
me.items = newItems;
}
else{
me.items={};
}
}
me.visibleAdd = function ($shelfitem){
if( me.ready ){
var sourceID = "disco_"+$shelfitem.id;
var targetID = "cartitem_"+$shelfitem.id;
var targetObj = $("#"+targetID);
var itemid = $shelfitem.id;
var imgsrc = $shelfitem.imgsrc;
var itemtitel = $shelfitem.titel;
var itempreis = $shelfitem.preis;
var itemanzahl = me.items[itemid].anzahl;
var itemsumme = (itemanzahl*itempreis).formatMoney();
if(!$(targetObj).length){ //Checken, ob der Eintrag im Wagen schon vorhanden ist.
$cartLiItem = me.constructItemView($shelfitem);
$cartLiItem.appendTo(me.cartItemlist).effect('highlight',{},1000);
}
else
{
$(targetObj).find('.cart_anzahl').text(itemanzahl+'x').end().find('.cart_preis').text(itemsumme+' EUR');
$cartLiItem=$(targetObj);
}
$("#"+sourceID).effect('transfer',{to:$cartLiItem, className: 'transfertest'},500);
$("#"+me.totalClass).text(me.txtGesamt);
}
};
me.constructItemView = function($item){
var itempreis = $item.preis;
var itemanzahl = $item.anzahl;
var itemsumme = (itemanzahl*itempreis).formatMoney();
var itemObject = $(''+
'
'+
''+$item.anzahl+'x'+
''+$item.titel+''+
'
'+
''+itemsumme+' EUR'+
' '+
'');
return itemObject;
}
me.constructCheckoutView = function(){
var mainDIV = $('#'+me.checkoutDivID);
if(mainDIV.length){
var htmlString =''+
'
Position
'+
'
Titel
'+
'
Anzahl
'+
'
Einzelpreis
'+
'
Gesamtpreis
'+
'
';
var zaehler = 0;
$.each(me.items,function(id){
htmlString+=me.constructCheckOutItem(id);
});
}
htmlString+=''+
'
'+
'
'+me.txtGesamt+'
'+me.txtVersand+'
'+me.txtEndsumme+'
'+
'
';
mainDIV.empty().html(htmlString);
$('.shopIncrease').live('click', function(){
var idToIncrease = cleanString($(this).attr('id'));
me.increaseItem(me.items[idToIncrease]);
});
$('.shopDecrease').live('click', function(){
var idToDecrease = cleanString($(this).attr('id'));
me.decreaseItem(me.items[idToDecrease]);
});
}
me.constructCheckOutItem = function(id){
var cItem=me.items[id];
var ItemPreis = parseInt(cItem.preis);
var ItemAnzahl = parseInt(cItem.anzahl);
var ItemSumme = ItemPreis * ItemAnzahl;
htmlString=''+
'
'+
'
'+
'
'+cItem.titel+'
'+
'
'+cItem.anzahl+'x +-
'+
'
'+ItemPreis.formatMoney()+' EUR
'+
'
'+ItemSumme.formatMoney()+' EUR
'+
'
';
return htmlString;
}
me.updateView = function(){
if($('.cart_item').length){
$("#"+me.clearCartID).html(''+me.txtClearCart);
$("#"+me.zurKasseID).html(''+me.txtZurKasse+"");
}
else{
$("#"+me.clearCartID).html('');
$("#"+me.zurKasseID).html('');
}
var gesamtsumme = me.total + me.Porto;
me.txtGesamt = me.total>0 ? me.txtTotal + ' ' +me.total.formatMoney() + ' EUR' : me.txtKorbleer;
me.txtVersand = me.total>0 ? me.txtPorto + ' ' +me.Porto.formatMoney() + ' EUR' : '';
me.txtEndsumme = me.total>0 ? me.txtGesamtsumme + ' ' +gesamtsumme.formatMoney() + ' EUR' : '';
$("."+me.totalClass).text(me.txtGesamt);
$("."+me.portoClass).text(me.txtVersand);
$("."+me.endsummeClass).text(me.txtEndsumme);
}
me.initView = function (){
me.cartItemlist.empty();
$('.checkout_row').remove();
for (var i in me.items){
me.constructItemView(me.items[i]).appendTo(me.cartItemlist);
$(me.constructCheckOutItem(i)).insertAfter($('.checkout_row_head'));
}
me.updateView();
};
me.updateTotal = function(){
var temptotal=0;
for(var i in me.items){
itemgesamt=me.items[i].preis * me.items[i].anzahl;
temptotal+=itemgesamt;
}
me.total = temptotal;
//return temptotal;
}
me.itemVorhanden = function($shelfitem){
var checkid = $shelfitem.id;
var schonvorhanden = false;
for(var i in me.items){
if(checkid==i) schonvorhanden=true;
}
return schonvorhanden;
}
me.getItems = function(){
return me.items;
}
me.increaseItem =function($incItem){
$incItem.anzahl++;
me.updateTotal();
me.updateItemView($incItem);
me.updateView();
me.save();
}
me.decreaseItem =function($incItem){
var myId = $incItem.id;
//console.log("ID: %s - Item-Anzahl: %o",myId, $incItem.anzahl);
if($incItem.anzahl==1){
$incItem.anzahl--;
delete me.items[myId];
me.initView();
}
if($incItem.anzahl>1){
$incItem.anzahl--;
me.updateItemView($incItem);
}
me.updateTotal();
me.updateView();
me.save();
}
me.deleteItem =function($incItem){
delete me.items[$incItem];
me.initView();
me.updateTotal();
me.updateView();
me.save();
}
me.updateItemView = function($item){
$('#cartitem_'+$item.id).replaceWith(me.constructItemView($item));
$('#checkoutItem_'+$item.id).replaceWith(me.constructCheckOutItem($item.id));
}
me.ajaxCache = function(){
me.shelfitems=jQuery.parseJSON($('#shelfItemDiv').text());
//console.log('shelf items: ',me.shelfitems);
me.initialise();
}
}
function cleanString (str) {
return str.replace(/[^\d]/g, "");
}
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/number/fmt-money [rev. #2]
Number.prototype.formatMoney = function(c, d, t){
var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "",
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
+ (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
var $cart=('#drop_shop');
$("#fancybox-loading").bind("ajaxSend", function(){
$(this).show();
}).bind("ajaxComplete", function(){
$(this).hide();
});
var testcart=new sb_cart();
testcart.ajaxCache();
$(".sb_warenkorb").click(function(){
var itemID = cleanString( $(this).attr("id") );
testcart.addToCart(itemID);
});
$(".sb_ausverkauft").click(function(){
var $shelfitem = $(this).parents('.discography_post_content');
$($shelfitem).effect('shake',{ times:2, distance: 2 },50);
});
$('#sb_checkout_form').validate({
keydown: function(element) {
this.element(element);
},
messages: {
name: "Bitte geben Sie Ihren Namen ein!",
strasse: "Bitte geben Sie Ihre Strasse ein!",
ort: "Bitte geben Sie hier Ihre Postleitzahl + Wohnort ein!",
email: { required: "Eine Mail-Adresse wird benötigt!", email: "Bitte Formatierung der E-Mail-Adresse überprüfen!"}
},
submitHandler: function() {
var sendMail = function(){
$.get('http://www.edwin-kimmler.de/wp-content/themes/wpbasis/contactable/mail.php',{recipient:$('#recipient').val(), name:$('#checkout_name').val(), email:$('#checkout_email').val(), items:mailItems, daten:adressDaten},
function(data){
if(data=="success"){
testcart.clearCart();
$('#sb_checkout_form').hide();
$('#callback').html('Vielen Dank für Ihre Bestellung!
');
} else {
$('#callback').html('Leider ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut!');
}});
}
var mailItems = $.toJSON(testcart.getItems());
var adressDaten = {
'Name' : $('#checkout_name').val(),
'Strasse' : $('#checkout_strasse').val(),
'Ort' : $('#checkout_ort').val(),
'Telefon' : $('#checkout_telefon').val(),
'Nachricht' : $('#message').val()
};
adressDaten = $.toJSON(adressDaten);
$('Haben Sie alle Daten richtig eingegeben?
').dialog({
buttons: { "Abbrechen" : function() { $(this).dialog("close"); },
"OK" : function() { sendMail(); $(this).dialog("close"); }
},
resizable: false,
modal:true,
title: 'Bestellung'
});
}
});
$(".cart_item").live('mouseenter',function(){
var eraseDiv = $('');
$(this).children('.cartEraseItem').fadeIn('fast');
}).live('mouseleave',function(){
var eraseDiv = $('');
$(this).children('.cartEraseItem').fadeOut('fast');
});
$(".cartEraseItem").live('click',function(){
var idToDelete = cleanString( $(this).parents('.cart_item').attr('id') );
testcart.deleteItem(idToDelete);
return false;
});
});
});