
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

var topLinkCartClass = 'top-link-cart';
var addToCartFormClass = 'product_addtocart_form';
var cartDivClass = 'top-cart';

function showCartLoader(){
    $('addtocartlayer').show();
    $('addtocartlayerbox').hide();
    $('addtocartlayerloadbox').show();
}

function showCartResult(){
    $('addtocartlayerloadbox').hide();
    $('addtocartlayerbox').show();
}

function hideCartLayer(){
    $('addtocartlayerbox').hide();
    $('addtocartlayerloadbox').hide();
    $('addtocartlayer').hide();
}

function refreshTopCartLink(text){
	var topcartlink = document.getElementsByClassName(topLinkCartClass);
    if(topcartlink[0])
    {
        topcartlink[0].innerHTML = text;
    }
}

function refreshMiniCart(html){
	var minicart = document.getElementsByClassName(cartDivClass);
	if(minicart)
    {
        if (typeof(minicart.length) == 'number') minicart = minicart[0];
        minicart.parentNode.innerHTML = html;
    }
}

function rewriteAddToCartForms()
{
    var cnt1 = 20;
    __intId = setInterval(
        function(){
            cnt1--;
            if(typeof productAddToCartForm != 'undefined'){
                productAddToCartForm.submit = function(configurable){
                                        
                   if (!productAddToCartForm.validator.validate()) {
                        return false;
                    }
                    
                    showCartLoader();
                    var params = "isAjax=1&variant=1";
                    // add all form fields to ajax request
                    for(i=0; i<productAddToCartForm.form.elements.length; i++) {
                        if(productAddToCartForm.form.elements[i].type == "checkbox"){
                            if(productAddToCartForm.form.elements[i].checked == true) {
                                params = params + '&' + productAddToCartForm.form.elements[i].name + '=' + productAddToCartForm.form.elements[i].value;
                            }
                        }
                        if(productAddToCartForm.form.elements[i].type == "radio"){
                            if(productAddToCartForm.form.elements[i].checked == true) {
                                params = params + '&' + productAddToCartForm.form.elements[i].name + '=' + productAddToCartForm.form.elements[i].value;
                            }
                        }
                        else {
                            if(productAddToCartForm.form.elements[i].value > 0) {
                                params = params + '&' + productAddToCartForm.form.elements[i].name + '=' + productAddToCartForm.form.elements[i].value;
                            }
                            if(productAddToCartForm.form.elements[i].value > 0) {
                                params = params + '&' + productAddToCartForm.form.elements[i].name + '=' + productAddToCartForm.form.elements[i].value;
                           }
                        }
                    }

                     if(typeof configurable != 'undefined') {
                        params += '&attr='+configurable+'&qty='+$('qty_'+configurable).value;
                        $('qty_'+configurable).value = '';
                    }
              
                    new Ajax.Request(productAddToCartForm.form.action, {
                        method:'get',
                        parameters:params,
                        onSuccess: function(transport){
                            var response = transport.responseText.evalJSON();
                            showCartResult();
                            refreshMiniCart(response.cart);
                            refreshTopCartLink(response.links);
                        },
                        onException: function(request, exception) {
      
                            hideCartLayer();
                            alert('Bitte Optionen fuer das Produkt auswaehlen.');
                        }
                    });
                    return false;
                }
                clearInterval(__intId);
            }
            else
            {
                var productAddToCartForms = document.getElementsByClassName(addToCartFormClass);
                for (var formId in productAddToCartForms)
                {
                    if (typeof productAddToCartForms[formId].product != 'undefined')
                    {
                        var fn = 'showCartLoader();var params = "isAjax=1";for(i=0; i<this.elements.length; i++){params = params + "&" + this.elements[i].name + "=" + this.elements[i].value;}new Ajax.Request(this.action, {method:"get",parameters:params,onSuccess: function(transport){var resp = transport.responseText.evalJSON();showCartResult();refreshMiniCart(resp.cart);refreshTopCartLink(resp.links);},onException: function(request, exception){hideCartLayer();}});return false;';
                        productAddToCartForms[formId].onsubmit = new Function(fn);
                    }
                }
                clearInterval(__intId);
            }
            if(!cnt1) clearInterval(__intId);
        },
        500
    );
}

rewriteAddToCartForms();


function strstr (haystack, needle, bool) {
    var pos = 0;
    
    haystack += '';
    pos = haystack.indexOf( needle );    if (pos == -1) {
        return false;
    } else{
        if (bool){
            return haystack.substr( 0, pos );        } else{
            return haystack.slice( pos );
        }
    }
}
