$(function(){

    var feedbackTab = {

        speed:300,
        containerWidth:$('.feedback-panel').outerWidth(),
        containerHeight:$('.feedback-panel').outerHeight(),
        tabWidth:$('.feedback-tab').outerWidth(),

        init:function(){
            $('.feedback-panel').css('height',feedbackTab.containerHeight + 'px');

            $('a.feedback-tab').click(function(event){

                if ($('.feedback-panel').hasClass('open')) {
                    $('.feedback-panel').animate({left:'-' + feedbackTab.containerWidth}, feedbackTab.speed)
                    .removeClass('open');
                } else {
                    $('.feedback-panel').animate({left:'0'},  feedbackTab.speed)
                    .addClass('open');
                }
                event.preventDefault();
            });
        }
    };

    feedbackTab.init();

     $("#feedbackButton").click(function() {

        $("#feedbackForm").validate({
            messages: {
                email: 'Bitte eine valide E-Mail Adresse eingeben'
            },
            submitHandler: function(form) {

                var email = $("input#email").val();
                var message = $("textarea#message").val();
                var response_message = "Vielen Dank für ihr Feedback"

                var dataString = 'email=' + email + '&message=' + message;

                $.ajax({
                  type: "POST",
                  url: "/index/sendfeedback/format/json",
                  data: $("#feedbackForm").serialize(),
                  success: function() {
                    $('#form-wrap').html("<div id='response-message'></div>");
                    $('#response-message').html("<p>" + response_message +"</p>")
                    .hide()
                    .fadeIn(500)
                    .animate({opacity: 1.0}, 1000)
                    .fadeIn(0, function(){
                        $('.feedback-panel')
                        .animate({left:'-' + (feedbackTab.containerWidth + feedbackTab.tabWidth)},
                        (feedbackTab.speed))
                        .removeClass('open');
                    })
                  }
                });
                return false;

            }});

    });
	/*Tell-A-Friend*/
		$("#tellafriendForm").validate({
            messages: {
				friendname: "<li>Feld darf nicht leer sein</li>",
				friendemail: "<li>Bitte gültige Email eingeben</li>",
				youremail: "<li>Bitte gültige Email eingeben</li>",
				yourname: "<li>Feld darf nicht leer sein</li>"
			},
            errorClass: 'errors',
            errorElement: 'ul',
            submitHandler: function(form) {
				var data = $("#tellafriendForm").serialize();
				data = data + "&article_id=" + $("#ajax_calc_id").val();
				
                $.ajax({
                  type: "POST",
                  url: "/index/sendtellafriend/format/json",
                  data: data,
                  success: function(content) {
                  	eval('content = ' + content + ';');
                  	if(content.success) {
                  		$("#captcha").html(content.captcha);
                  		$(".tellafriend-panel").fadeToggle('slow');
                    	$.achtung({className: "achtungSuccess", message: "Mail versendet", timeout: 0});
                    }else{
                    	$("#captcha").html(content.captcha);
                    }
                  }
                });
                return false;

            }});
   
		jQuery.fn.fadeToggle = function(speed, easing, callback) {
		return this.animate({opacity: 'toggle'}, speed, easing, callback);  
		}; 
		 var tellafriendTab = {
        init:function(){
			$('.tellafriend-panel').hide();
			$('a.tellafriend-open, .tellafriend-panel a.tellafriend-close').click(function() {
			$(".tellafriend-panel").fadeToggle('slow');
			
			
		});  
    
        }
    };
	
	

    tellafriendTab.init();
	/*Tell-A-Friend Ende*/

    $('#CALCFORM #send').click(function() {
        $(this).closest("form").data("lastButtonClicked", this.id)
    });
    $('#mercendiseform #send').click(function() {
        $(this).closest("form").data("lastButtonClicked", this.id)
    });
    $('#CALCFORM #special').click(function() {
        $(this).closest("form").data("lastButtonClicked", this.id)
    });

    $("#mercendiseform").submit(function(event){
        $('.mercendisetable').showLoading();

        $.post(
        '/article/calc/' + $('#ajax_calc_id').val() + '/format/json',
        $("#mercendiseform").serialize(),
        function(data){
            var lastelement = null;
            var elements = [];

            $('#price_netto').html(data.netto);
            $('#price_steuer').html(data.steuer);
            $('#price_brutto').html(data.brutto);
            
            if(data.has_price == 0) {
            	$('#submit_buy').attr("class", "grey");
            }else{
            	$('#submit_buy').attr("class", "");
            }
        });
        $('.mercendisetable').hideLoading();
        return false;
    });
	
	$("#CALCFORM").data('kalk_artikel', $('#kalk_artikel').val());

    $("#CALCFORM").submit(function(event){
        if($(this).data("lastButtonClicked") != "" && $(this).data("lastButtonClicked") == 'layouter') {
            return true;
        }

        $('#calc_frame').showLoading();

        var special = "";

		$("#buy_form").submit(function(event){
    		if($('#submit_buy').attr('class') == 'grey') {
    			$.achtung({className: "achtungFail", message: "Bitte Anzahl auswählen", timeout: 0});
    			return false;
    		}
    		return true;
    	});

		if($("#CALCFORM").data('kalk_artikel') != $('#kalk_artikel').val()) {
			$("#CALCFORM").data('kalk_artikel', $('#kalk_artikel').val());
			$("#reload").val(1);
			
		}else{
			$("#reload").val(0);
		}

        if($(this).data("lastButtonClicked") != "" && $(this).data("lastButtonClicked") == 'special') {
            special = '?special=1';

        }

        if(($(this).data("lastButtonClicked") != "" && $(this).data("lastButtonClicked") == 'layouter') || ($("input[name='upload_mode']:checked").length > 0 && $("#CALCFORM").data("upload_mode") != $("input[name='upload_mode']:checked").val()) || $(this).data("lastButtonClicked") != "" && $(this).data("lastButtonClicked") == 'send_anfrage') {

            return true;
        }

        $.post(
        '/article/calc/' + $('#ajax_calc_id').val() + '/format/json' + special,
        $("#CALCFORM").serialize(),
        function(data){
            var lastelement = null;
            var elements = [];

            $('#price_netto').html(data.netto);
            $('#price_steuer').html(data.steuer);
            $('#price_brutto').html(data.brutto);

            if(data.precalc) {
                $.each(data.precalc, function(index, item) {
                    $('#precalc_sum_' + index).html(item.netto);
                    $('#precalc_mwert_' + index).html(item.mwert);
                    $('#precalc_summe_' + index).html(item.summe);
                });
            }

            $.each(data.form, function(index, item) {
                if(item.type == 'checkbox') {

                    if($("input[name='" + item.name + "[]']").length > 0) {

                        $("#" + item.name + "-element").html("");

                        $.each(item.options, function(index, option) {
                            $("#" + item.name + "-element").append('<input type="checkbox" value="' + option.key + '" name="' + item.name + '[]" id="' + item.name + '-' + option.key + '">' + option.value + '<br/>');
                            if(item.onchange) {
                                $('#' + item.name + '-' + option.key).attr('onChange', item.onchange);
                            }
                            elements.push(item.name + '-' + option.key);
                            elements.push(item.name);
                        });
                        $.each(item.value, function(index, option) {
                            $("#" + item.name + "-" + option).attr('checked', 'checked');
                        });

                    }else{

                        var nextEl = $('#' + lastelement + '-element');
                        if(nextEl.length == 0) {
                           var nextEl = $('#' + lastelement);
                        }

                        $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element"></dd>').insertAfter(nextEl);
                        $.each(item.options, function(index, option) {
                            $('#' + item.name + '-element').append(
                            $('<input type="checkbox" value="' + option.key + '" name="' + item.name + '[]" id="' + item.name + '-' + option.key + '"/>' + option.value + '<br/>'));
                            if(item.onchange) {
                                $('#' + item.name + '-' + option.key).attr('onChange', item.onchange);
                            }
                            elements.push(item.name + '-' + option.key);
                            elements.push(item.name);
                        });
                        $.each(item.value, function(index, option) {
                            $("#" + item.name + "-" + option).attr('checked', 'checked');
                        });

                    }

                }
                if(item.type == 'radio') {

                    if($("input[name='" + item.name + "']").length > 0) {

                        $("#" + item.name + "-element").html("");
                        if(item.name == 'upload_mode') {
                            $.each(item.options, function(index, option) {
                                $("#" + item.name + "-element").append('<input type="radio" value="' + index + '" name="' + item.name + '" id="' + item.name + '-' + index + '">' + option + '<br/>');
                                if(item.onchange) {
                                    $('#' + item.name + '-' + index).attr('onChange', item.onchange);
                                }
                                elements.push(item.name + '-' + index);
                            });
                        }else{
                            $.each(item.options, function(index, option) {
                                $("#" + item.name + "-element").append('<input type="radio" value="' + option.key + '" name="' + item.name + '" id="' + item.name + '-' + option.key + '">' + option.value + '<br/>');
                                if(item.onchange) {
                                    $('#' + item.name + '-' + option.key).attr('onChange', item.onchange);
                                }
                                elements.push(item.name + '-' + option.key);
                                elements.push(item.name);
                            });
                        }
                        $("#" + item.name + "-" + item.value).attr('checked', 'checked');

                    }else{

                        var nextEl = $('#' + lastelement + '-element');
                        if(nextEl.length == 0) {
                           var nextEl = $('#' + lastelement);
                        }

                        $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element"></dd>').insertAfter(nextEl);
                        $.each(item.options, function(index, option) {
                            $('#' + item.name + '-element').append(
                            $('<input type="radio" value="' + option.key + '" name="' + item.name + '" id="' + item.name + '-' + option.key + '"/>' + option.value + '<br/>'));
                            if(item.onchange) {
                                $('#' + item.name + '-' + option.key).attr('onChange', item.onchange);
                            }
                            elements.push(item.name + '-' + option.key);
                            elements.push(item.name);
                        });
                        $("#" + item.name + "-" + item.value).attr('checked', 'checked');

                    }

                }

                if(item.type == 'text') {

                    if($("#" + item.name + "-element").length > 0) {
                        $("#" + item.name + "-element").html(item.value);
                    }else{
                        $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element">' + item.value + '</dd>').insertAfter(nextEl);
                    }

                }

                if(item.type != 'radio' && item.type != 'text') {
                    if($('#' + item.name).length > 0) {
						$('#' + item.name + '-label label').html(item.label);
                        var itemDom = $('#' + item.name);


                        if(item.type == 'select') {
							$('#' + item.name + '-label label').html(item.label);
                            if(itemDom.is('select')) {
                                $('#' + item.name + ' option').remove();
                                $.each(item.options, function(index, option) {
                                    $('#' + item.name).append(
                                    $('<option></option').val(option.key).html(option.value));
                                });
                                $("#" + item.name + " option[value='" + item.value + "']").attr('selected', 'selected');
                            }else{

                                itemDom.replaceWith('<select id="' + item.name + '" name="' + item.name + '"></select>');

                                $.each(item.options, function(index, option) {
                                    $('#' + item.name).append(
                                    $('<option></option').val(option.key).html(option.value));
                                });
                                $("#" + item.name + " option[value='" + item.value + "']").attr('selected', 'selected');
                            }
                        }

                        if(item.type == 'input') {
								
                            if(itemDom.is('input[type="text"]')) {
                                itemDom.val(item.value);
                            }else{
                                itemDom.replaceWith('<input type="text" id="' + item.name + '" name="' + item.name + '" value="' + item.value + '"/>');

                            }
                        }

                        if(item.type == 'hidden') {

                            if(itemDom.is('input[type="hidden"]')) {
                                itemDom.val(item.value);
                            }else{
                                itemDom.replaceWith('<input type="hidden" id="' + item.name + '" name="' + item.name + '" value="' + item.value + '"/>');

                            }
                        }

                        if(item.type == 'textarea') {

                            if(itemDom.is('textarea')) {
                                itemDom.val(item.value);
                            }else{
                                itemDom.replaceWith('<textarea id="' + item.name + '" name="' + item.name + '">' + item.value + '</textarea>');

                            }
                        }

                        if(item.type == 'submit') {

                            if(itemDom.is('input[type="submit"]')) {
                                itemDom.val(item.label);
                            }else{
                                itemDom.replaceWith('<input type="submit" id="' + item.name + '" name="' + item.name + '" value="' + item.label + '"/>');
                            }

                            if(item.name == 'send_anfrage') {
                                $('#CALCFORM #send_anfrage').click(function() {
                                    $(this).closest("form").data("lastButtonClicked", this.id)
                                });
                            }
                        }


                    }else{

                        var nextEl = $('#' + lastelement + '-element');
                        if(nextEl.length == 0) {
                           var nextEl = $('#' + lastelement);
                        }

                        if(item.type == 'select') {
                            $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element"><select id="' + item.name + '" name="' + item.name + '"></select></dd>').insertAfter(nextEl);
                            $.each(item.options, function(index, option) {
                                $('#' + item.name).append(
                                $('<option></option').val(option.key).html(option.value));
                            });
                            $("#" + item.name + " option[value='" + item.value + "']").attr('selected', 'selected');
                        }
                        if(item.type == 'hidden') {
                            $('<input type="hidden" id="' + item.name + '" name="' + item.name + '" value="' + item.value + '"/>').insertAfter(nextEl);
                        }
                        if(item.type == 'input') {
                            $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element"><input type="text" id="' + item.name + '" name="' + item.name + '" value="' + item.value + '"/></dd>').insertAfter(nextEl);
                        }
                        if(item.type == 'textarea') {
                            $('<dt id="' + item.name + '-label"><label for="' + item.name + '">' + item.label + '</label></dt><dd id="' + item.name + '-element"><textarea id="' + item.name + '" name="' + item.name + '">' + item.value + '</textarea></dd>').insertAfter(nextEl);
                        }
                        if(item.type == 'submit') {
                            $('<dt id="' + item.name + '-label"></dt><dd id="' + item.name + '-element"><input type="submit" id="' + item.name + '" name="' + item.name + '" value="' + item.label + '"/></dd>').insertAfter(nextEl);
                            if(item.name == 'send_anfrage') {
                                $('#CALCFORM #send_anfrage').click(function() {
                                    $(this).closest("form").data("lastButtonClicked", this.id)
                                });
                            }
                        }
                    }
                }
                lastelement = item.name;
                elements.push(item.name);

            });

            $('#CALCFORM select, #CALCFORM input, #CALCFORM textarea').each(function() {


                if($.inArray($(this).attr('id'), elements) == -1) {
                    $('#' + $(this).attr('id')).remove();
                    $('#' + $(this).attr('id') + '-element').remove();
                    $('#' + $(this).attr('id') + '-label').remove();
                }
                if($.inArray($(this).attr('name'), elements) == -1) {
                    $('#' + $(this).attr('name')).remove();
                    $('#' + $(this).attr('name') + '-element').remove();
                    $('#' + $(this).attr('name') + '-label').remove();
                }
            });
			
			$("#CALCFORM select:not(select[id='selectprodukt'], input[name='selectprodukt']), #CALCFORM input[type='radio']:not(input[name='selectprodukt']), #CALCFORM input[type='checkbox'], #CALCFORM input[type='text']").unbind();
            $("#CALCFORM select:not(select[id='selectprodukt'], input[name='selectprodukt']), #CALCFORM input[type='radio']:not(input[name='selectprodukt']), #CALCFORM input[type='checkbox'], #CALCFORM input[type='text']").change(function() {
                $(this).closest("form").submit();
                return false;
            });

            $('#calc_frame').hideLoading();
        },
        "json"
    );

        return false;
    });
});


$(document).ready(function() {

    $("#CALCFORM select:not(select[id='selectprodukt'], input[name='selectprodukt']), #CALCFORM input[type='radio']:not(input[name='selectprodukt']), #CALCFORM input[type='checkbox'], #CALCFORM input[type='text']").attr('onChange', null);
    $("#CALCFORM select:not(select[id='selectprodukt'], input[name='selectprodukt']), #CALCFORM input[type='radio']:not(input[name='selectprodukt']), #CALCFORM input[type='checkbox'], #CALCFORM input[type='text']").change(function() {
        $(this).closest("form").submit();
        return false;
    });

    if($("input[name='upload_mode']:checked").length > 0) {
        $("#CALCFORM").data("upload_mode", $("input[name='upload_mode']:checked").val())
    }
// NAVIGATION SITE-NAV //
     $('div.box_image').bind("mouseenter", function(e) {
           $(this).children('div.box_icons_wrapper').show();   
    });
    $('div.box_image').bind("mouseleave", function(e) {
           $(this).children('div.box_icons_wrapper').hide();   
    });

   /*
    $(".sortiment a").filter(function() {
        return $(this).next("ul").length
    }).hover(function(){
        var parent = this.parentNode.parentNode.id;
        if($(this).is('.active')) {
            //$('#' + parent + 'ul').slideUp(300);
        }else{
        	$(this).next().slideToggle(300);
        }
    });
	*/
    $(".sortiment li.active ul").slideToggle(300);
	
    $(".jtab_content").hide(); 
    $("ul.jtabs li:first").addClass("active").show(); 
    $(".jtab_content:first").show();
    $("ul.jtabs li:not(.last)").click(function() {
        $("ul.jtabs li").removeClass("active"); 
        $(this).addClass("active"); 
        $(".jtab_content").hide(); 
        var activeTab = $(this).find("a").attr("href"); 
        $(activeTab).fadeIn();
        return false;
    });

    $('#upload_button').click(function() {
        $('#upload_form').show("slide", {direction: "up"}, 1000);
    });
    
});


function makeRequest(url)
{
    var httpRequest;

    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) {
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    httpRequest.onreadystatechange = function() {evalProgress(httpRequest);};
    httpRequest.open('GET', url, true);
    httpRequest.send('');

}

function observeProgress()
{
    $('.pg-progressbar').show("slide", {direction: "up"}, 1000);
    setTimeout("getProgress()", 1500);
}

function getProgress()
{
    makeRequest('/service/upload/fileinfo?progress_key=' + document.getElementById('progress_key').value);
}

function evalProgress(httpRequest)
{
    try {
        if (httpRequest.readyState == '4') {
            if (httpRequest.status == '200') {
                eval('var data = ' + httpRequest.responseText);

                if (data.error) {
                    error(data);
                }else{

                    if (data.finished) {
                        finish();
                        fr = document.getElementById('uploadtarget');
                        eval('var data = ' + fr.contentWindow.document.body.innerHTML);
                        if (data.error) {
                            document.getElementById('pg-text-2').innerHTML = data.message;
                        }
                    }else {
                        update(data);
                        setTimeout("getProgress()", 2000);
                    }
                }
            } else {
                alert('There was a problem with the request.');
            }
        }
    } catch(e) {
        
    }
}

function error(data) {
    fr = document.getElementById('uploadtarget');
    fr.src = 'about:blank';
    document.getElementById('pg-percent').innerHTML = data.message;
    document.getElementById('file').value='';
}

function update(data)
{
    document.getElementById('pg-percent').style.width = data.percent + '%';

    document.getElementById('pg-percent').innerHTML = data.text;
}

function finish()
{
    updateUpload();

    document.getElementById('pg-percent').style.width = '100%';

    document.getElementById('pg-percent').innerHTML = 'Fertig';

    document.getElementById('file').value='';

    $("#CALCFORM").submit();

}

function deleteUpload(uuid)
{
    $.ajax({
        type: "GET",
        url: "/service/upload/deleteupload",
        data: 'uuid=' + uuid,
        success: function(msg){
            eval('msg = ' + msg);
            finish(msg);
        }
    });

    updateUpload();
}

function updateUpload()
{
    $.getJSON('/service/upload/getfilesproductjson', function(data) {
        $('#uploads').html('');
            
        $.each(data, function(index, item) {
            $('#uploads').append(item.img + '<a href="/uploads/' + item.shop + '/article/' + item.value + '" target="_blank"></a><br/><a href="javascript:deleteUpload(\'' + item.key + '\');"><img src="/images/admin/oxygen/22x22/actions/dialog-cancel.png" border="0" /> Datei Löschen</a><br/>');
        });
    });

    checkPreflight();
}

function checkPreflight()
{
    $.getJSON('/service/upload/checkpreflight', function(data) {
        console.log(data);
    });

}
