$(function(){
    init();
});
/*******************************************************************************
 * sort of var_dump() for JS
 ******************************************************************************/
var log = function(elem){
    if (window.console) {
        console.debug(elem);
    }
} //Ende debug
/*******************************************************************************
 * all the things that have to be done on document load
 * requires JQuery 1.3 !!!!!!
 *
 * @return void
 ******************************************************************************/
var init = function(){
    try {
        $('#sponsoren').cycle();
    } 
    catch (e) {
    
    }
    try {
        //$("#center").dropShadow({left: 0,top: 0,blur: 5,opacity: 0.3});
    } 
    catch (e) {
    }
    try {
        $("a.fancybox, a.thickbox, a.colorbox").fancybox();
    } 
    catch (e) {
    }
    try {
        $("a.extern").click(function(){
            window.open($(this).attr("href"));
            return false;
        });
    } 
    catch (e) {
    }
    try {
        $(".product-order").click(function(){
            var $id = $(this).attr("id").split("-");
            $.ajax({
                dataType: "json",
                data: {
                    task: "addToCart",
                    product: $id[1],
                    quantity: $("#quantity-" + $id[1]).val()
                },
                success: function(data){
                    $("#shop-cart").html(buildHTMLCart(data));
                    $.noticeAdd({
                        text: "Das Produkt wurde zum Warenkorb hinzugefügt!"
                    });
                },
                url: "../../content_scripts/ajax/handle.php"
            });
        });
        $(".game-order").click(function(){
            var $id = $(this).attr("id").split("-");
            $.ajax({
                dataType: "json",
                data: {
                    task: "addToCart",
                    game: $id[1],
                    quantity: $("#quantity-" + $id[1]).val()
                },
                success: function(data){
                    $("#shop-cart").html(buildHTMLCart(data));
                    $.noticeAdd({
                        text: "Das Produkt wurde zum Warenkorb hinzugefügt!"
                    });
                },
                url: "../../content_scripts/ajax/handle.php"
            });
        });
        if ($("#shop-cart").html()) {
            $("#shop-cart").ready(function(){
                $.ajax({
                    dataType: "json",
                    data: {
                        task: "getCart"
                    },
                    success: function(data){
                        $("#shop-cart").html(buildHTMLCart(data));
                    },
                    url: "../../content_scripts/ajax/handle.php"
                });
            });
        }
    } 
    catch (e) {
    }
    try {
        $("#order-processing-form").live("submit", function(){
            var values = $(this).serializeArray();
            values.push({
                name: "task",
                value: "submitOrder"
            });
            $.ajax({
                dataType: "json",
                data: values,
                success: function(data){
                    if (data.error === false) {
                        $.noticeAdd({
                            text: data.message
                        });
                        if (typeof(data.form) != "object") {
                            $("#emptyCart").trigger("click");
                            $.fancybox.close();
                        }
                        else {
                            $("#fancybox-inner").html(buildHTMLForm(data.form));
                        }
                    }
                    else {
                        $("#fancybox-inner").html(data.error);
                    }
                },
                url: "../../content_scripts/ajax/handle.php"
            });
            return false;
        });
        $("#order-processing-form").live("reset", function(){
            $.fancybox.close();
        });
    } 
    catch (e) {
    }
    try {
        //fancybox anzeigen mit benutzerdaten anfrage
        $("#proceedOrder").live("click", function(){
            $.ajax({
                dataType: "json",
                data: {
                    task: "proceedOrder"
                },
                success: function(data){
                    if (data.error === false) {
                        $("#proceedOrder").fancybox({
                            autoDimensions: false,
                            content: buildHTMLForm(data.form),
                            height: 700,
                            width: 500
                        }).trigger("click");
                        $.fancybox.resize();
                        return false;
                    }
                    else {
                        alert(data.error);
                        return false;
                    }
                },
                url: "../../content_scripts/ajax/handle.php"
            });
            return false;
        });
    } 
    catch (e) {
    }
    try {
        $("#emptyCart").live("click", function(){
            $.ajax({
                dataType: "json",
                data: {
                    task: "emptyCart"
                },
                success: function(data){
                    if (data.error === false) {
                        $.noticeAdd({
                            text: "Ihr Warenkorb wurde geleert!"
                        });
                        $("#shop-cart").html(buildHTMLCart(data));
                    }
                    else {
                        $.noticeAdd({
                            text: "Ihr Warenkorb konnte nicht geleert werden!"
                        });
                    }
                },
                url: "../../content_scripts/ajax/handle.php"
            });
            return false;
        });
    } 
    catch (e) {
    }
    
    $("#bgimg").ready(function(){
        $('body').css('background-image', "url(../../assets/common/bg_body.jpg)");
    });
//    setTimeout("test();", 1000);
    $('#marquee').css('left','158px');
    $('#marquee').show();
}

//function test(){
//    $('#marquee').css('left','158px');
//}

/**
 * builds a html form out of a JSON-String
 * @param   {Object} jsonForm
 * @return  {String}
 */
var buildHTMLForm = function(jsonForm){
    var fields = "";
    for (var i = 0; i < jsonForm.fields.length; i++) {
        field = jsonForm.fields[i];
        var cl = '';
        if (field.error === true) {
            cl = ' class="error"';
        }
        switch (field.tag) {
            case "textarea":
                fields += '<label' + cl + '>' + field.description + (field.mandatory ? ' *' : '') + '</label>';
                fields += buildHTML(field.tag, field.attr.value, field.attr) + '<br />';
                break;
            default:
                if (field.attr.type == 'submit' || field.attr.type == 'reset') {
                    fields += buildHTML(field.tag, field.attr) + '&nbsp;';
                }
                else {
                    if (field.attr.type == 'checkbox') {
                        field.attr.style = "float:left;";
                        fields += buildHTML(field.tag, field.attr);
                        fields += '<p' + cl + '>' + field.description + '</p>';
                    }
                    else {
                        fields += '<label' + cl + '>' + field.description + (field.mandatory ? ' *' : '') + '</label>';
                        fields += buildHTML(field.tag, field.attr) + '<br />';
                    }
                }
                break;
        }
    }
    jsonForm.fields = false; //do not insert fields as form attributes
    var form = buildHTML('h1', jsonForm.title || "Bestellen");
    form += buildHTML('form', fields, jsonForm);
    return form;
}
/**
 * builds a html element
 * @param   {String}  tag
 * @param   {String}  html
 * @param   {Array}   attrs
 * @return  {String}
 */
var buildHTML = function(tag, html, attrs){
    if (typeof(html) != 'string') {
        attrs = html;
        html = null;
    }
    var h = '<' + tag;
    for (attr in attrs) {
        if (attrs[attr] === false) {
            continue;
        }
        h += ' ' + attr + '="' + attrs[attr] + '"';
    }
    if (html) {
        h += ">" + html + "</" + tag + ">";
    }
    else {
        h += "/>";
    }
    return h;
}
/**
 * builds a shop cart as unordered html list
 * @param   {Object} data
 * @return  {String}
 */
var buildHTMLCart = function(data){
    if (data.error === false) {
        if (data.message) {
            $("#cart-counter").html(0);
            return buildHTML('p', data.message, {
                "class": "error"
            })
        }
        else {
            $("#cart-counter").html(data.counter);
            var h = '<ul>';
            var attr = {
                "class": "product"
            };
            for (var i = 0; i < data.products.length; i++) {
                var product = data.products[i];
                h += buildHTML('li', product.count + ' x ' + product.title + (product.description.length > 0 ? ' (' + product.description + ') ' : ' ') + product.price + ' &euro;', attr);
            }
            h += buildHTML('li');
            h += buildHTML('li', 'Lieferkosten: ' + data.shipping + ' &euro;', {
                "class": "shipping"
            });
            h += buildHTML('li', 'Summe: ' + data.cartSum + ' &euro;', {
                "class": "summe"
            });
            h += '</ul>';
            h += '<a id="proceedOrder" href="#">Bestellen</a>';
            h += '<a id="emptyCart" href="#">Warenkorb leeren</a>';
            h += '<div class="nofloat"></div>';
            return h;
        }
    }
    else {
        $.noticeAdd({
            text: data.error
        });
    }
}
/**
 * translate a String
 * @param   {String} word
 * @return  {String}
 */
var translate = function(word){
    var _translation = "";
    $.ajax({
        async: false,
        dataType: "json",
        data: {
            task: "translate",
            word: word
        },
        success: function(data){
            _translation = data.translation;
        },
        url: '../../content_scripts/ajax/handle.php'
    });
    return unescape(_translation).replace(/\+/g, "&nbsp;");
}



