/* Author: Jochen Breuer <breuer@dajool.com>
 */

window.console||(window.console={log:function(){}});

var DEBUG = true;

var CATEGORY = parseInt($('#category_id').attr('value'));

// this is the scroll position for the manufacturers list.
var scroll_pos = 1;
var scroll_elements = 5;

// scroll position for jewelrys
var jewelry_scroll_pos = 0;

// used for manufacturer selection
var initial_click = true;

function show_disclaimer() {
    $('html').unbind('click');

    apprise("<textarea id='disclaimer_area' readonly>Hinweise zum Datenschutz\n\nDatenschutz\n\nWir, (Josef Wagner GmbH, Franz&ouml;sische Str. 29, 66740 Saarlouis) nehmen den Schutz Ihrer pers&ouml;nlichen Daten sehr ernst und halten uns strikt an die Regeln der Datenschutzgesetze. Personenbezogene Daten werden auf dieser Webseite nur im technisch notwendigen Umfang erhoben. In keinem Fall werden die erhobenen Daten verkauft oder aus anderen Gr&uuml;nden an Dritte weitergegeben.\n\nDie nachfolgende Erkl&auml;rung gibt Ihnen einen &Uuml;berblick dar&uuml;ber, wie wir diesen Schutz gew&auml;hrleisten und welche Art von Daten zu welchem Zweck erhoben werden.\n\nDatenverarbeitung auf dieser Internetseite\n\nJosef Wagner GmbH erhebt und speichert automatisch in ihren Server Log Files Informationen, die Ihr Browser an uns &uuml;bermittelt. Dies sind:\n\n- Browsertyp/ -version\n- verwendetes Betriebssystem\n- Referrer URL (die zuvor besuchte Seite)\n- Hostname des zugreifenden Rechners (IP Adresse)\n- Uhrzeit der Serveranfrage.\n\nDiese Daten sind f&uuml;r Josef Wagner GmbH nicht bestimmten Personen zuordenbar. Eine Zusammenf&uuml;hrung dieser Daten mit anderen Datenquellen wird nicht vorgenommen, die Daten werden zudem nach einer statistischen Auswertung gel&ouml;scht.\n\nCookies\n\nDie Internetseiten verwenden an mehreren Stellen so genannte Cookies. Sie dienen dazu, unser Angebot nutzerfreundlicher, effektiver und sicherer zu machen. Cookies sind kleine Textdateien, die auf Ihrem Rechner abgelegt werden und die Ihr Browser speichert. Die meisten der von uns verwendeten Cookies sind so genannte \"Session-Cookies\". Sie werden nach Ende Ihres Besuchs automatisch gel&ouml;scht. Cookies richten auf Ihrem Rechner keinen Schaden an und enthalten keine Viren.\n\nNewsletter\n\nWenn Sie den auf der Webseite angebotenen Newsletter empfangen m&ouml;chten, ben&ouml;tigen wir von Ihnen eine valide Email-Adresse sowie Informationen, die uns die &Uuml;berpr&uuml;fung gestatten, dass Sie der Inhaber der angegebenen Email-Adresse sind bzw. deren Inhaber mit dem Empfang des Newsletters einverstanden ist.\n\nBei Anmeldung zum Newsletter wird Ihre E-Mail-Adresse mit Ihrer Einwilligung f&uuml;r eigene Werbezwecke genutzt, bis Sie sich vom Newsletter abmelden. Die Abmeldung ist jederzeit m&ouml;glich.\n\nIhre Einwilligung k&ouml;nnen Sie jederzeit mit Wirkung f&uuml;r die Zukunft widerrufen. Wenn Sie den Newsletter nicht weiter beziehen wollen, dann k&ouml;nnen Sie sich folgenderma&szlig;en abmelden:\nLink \"Abmelden\" im Newsletter oder per E-Mail an newsletter@juwelierwagner.de Betreff \"Newletter abmelden\"\n\nAuskunftsrecht\n\nSie haben jederzeit das Recht auf Auskunft &uuml;ber die bez&uuml;glich Ihrer Person gespeicherten Daten, deren Herkunft und Empf&auml;nger sowie den Zweck der Speicherung. Auskunft &uuml;ber die gespeicherten Daten gibt der Datenschutzbeauftragte (info@juwelierwagner.de).\n\nWeitere Informationen\n\nIhr Vertrauen ist uns wichtig. Daher m&ouml;chten wir Ihnen jederzeit Rede und Antwort bez&uuml;glich der Verarbeitung Ihrer personenbezogenen Daten stehen. Wenn Sie Fragen haben, die Ihnen diese Datenschutzerkl&auml;rung nicht beantworten konnte oder wenn Sie zu einem Punkt vertiefte Informationen w&uuml;nschen, wenden Sie sich bitte jederzeit an den Datenschutzbeauftragten (info@juwelierwagner.de).</textarea>", {}, function(retval) {
        if(retval) {
            $('html').click(function() {
                 $('#newsletter_iframe').slideUp();
            });
        }    
    });
    return false;
}


function show_newsletter_iframe() {
    link_position = $('#newsletter_link').offset();
    height = $('#newsletter_link').outerHeight();
    width = $('#newsletter_link').outerWidth()

    if (DEBUG) {
        console.log(link_position.top);
        console.log(link_position.left);
    }

    html_width = $('html').width();
    html_height = $('html').height();

    // $('#newsletter_iframe').css('right', 0)
    // $('#newsletter_iframe').css('bottom', 0)

    // $('#newsletter_iframe').css('left', link_position.left - 107);
    var iframe_offset;
    if($.client.os == "Mac") {
        if($.browser.mozilla)       { iframe_offset = 114; }
        else                        { iframe_offset = 107; }
           
    } else {
        iframe_offset = 126;    
    }
    $('#newsletter_iframe').css('left', link_position.left - iframe_offset);
    // $('#newsletter_iframe').css('top', link_position.top + height - $('#newsletter_iframe').outerHeight());
    
    if (DEBUG) {
      console.log(link_position.top + height);
    }

    // var $marginLefty = $('#newsletter_iframe');
    // $('#newsletter_iframe').css('display', 'block'); 
    // $marginLefty.animate({
    //   marginLeft: parseInt($marginLefty.css('marginLeft'),10) == 0 ?
    //     $marginLefty.outerWidth() :
    //     0
    // });
    $('#newsletter_iframe').slideToggle();
}


function get_ajax_base_url() {
    if(CATEGORY == "1") {
	return "/ajax/rings/";
    }
    else if(CATEGORY == "2") {
	return "/ajax/jewelry/";
    }
    else {
	return "/ajax/watches/";
    }
}

function get_jewelry_by_manufacturers(manufacturer, gender) {
    var ids = Array()
    if(manufacturer && manufacturer != false) {
        ids = manufacturer;
    }
    else {
        var ids = Array()
        // get the manufacturers ids
        $('#manufacturer img').each(function() {
        if($(this).attr('class') == 'active') {
            ids.push($(this).attr('id'));
        }
        });
    }
    if(!gender || gender == false) {
        if($('#female').hasClass('active') && $('#male').hasClass('active')) {
            gender = undefined;
        }
        else if($('#female').hasClass('active')) {
            gender = 'f';
        }
        else {
            gender = 'm';
        }
        toggle_jewelry_highlight();
    }

     
    $.post(get_ajax_base_url(), {
        "manufacturers": ids,
        "category": CATEGORY,
        "gender": gender
    }, function(data) {
        if(DEBUG) { console.log(data); }
        // fade out before fetching the data and fading back in again.
        $('#jewellery_elements > ul#source').fadeOut("slow", function () {
           $('#jewellery_elements > ul#source').html(data);  
        });
        $('#jewellery_elements > ul#source').fadeIn("slow", function() {
            toggle_jewelry_highlight();
        });
    });
    return true;
}


function get_jewelry_all() {
    $.post(get_ajax_base_url(), {
        "all": 1,
        "category": CATEGORY,
    }, function(data) {
        if(DEBUG) { console.log(data); }
        // fade out bevore fetching the data and fading back in again.
        $('#jewellery_elements > ul#source').fadeOut("slow", function () {
           $('#jewellery_elements > ul#source').html(data);  
        });
        $('#jewellery_elements > ul#source').fadeIn("slow", function() {
            toggle_jewelry_highlight();
        });
        console.log(data);
    });
    return true;
}



function get_manufacturers() {
    console.log("*****************************************************************");
    console.log(get_ajax_base_url() + "manufacturers/");
     console.log("*****************************************************************");
 
    $.get(get_ajax_base_url() + "manufacturers/", {},
    function(data) {
      if(DEBUG) { console.log(data); }
      $('#manufacturer_elements').html(data);
    });
    return true;
}


function renew_manufacturer_states() {
    $('#manufacturer #manufacturer_elements img').each(function() {
        if($(this).hasClass('active')) {
            $(this).attr('src', '/media/images/trans_overlay.png');
        }
        else {
            $(this).attr('src', '/media/images/white_overlay.png');
        }
    });    
}


function check_scroll_vars() {
    if ( typeof(scroll_pos) == "undefined" ) {
        alert("scroll_pos is not defined. Needed for manufacturer-scrollTo");
    }
    if ( typeof(scroll_elements) == "undefined" ) {
        alert("scroll_elements is not defined. Needed for manufacturer-scrollTo");
    }    
        
}

function toggle_scrollbutton_highlight() {
    images = Array();
    images['nav_left'] = "/media/images/overview/nav_left.png";
    images['nav_right'] = "/media/images/overview/nav_right.png";
    images['nav_left_highlight'] = "/media/images/overview/nav_left-highlight.png";
    images['nav_right_highlight'] = "/media/images/overview/nav_right-highlight.png";
    
    if(scroll_pos == 1) { $('#nav_left').attr('src', images['nav_left']); }
    else { $('#nav_left').attr('src', images['nav_left_highlight']); }
    
    if(scroll_pos == max_scroll_pos()) { $('#nav_right').attr('src', images['nav_right']); }
    else { $('#nav_right').attr('src', images['nav_right_highlight']); }
}

function max_scroll_pos() {
    var max_scroll_pos = parseInt($('#manufacturer_elements').children().length / 5);
    if((($('#manufacturer_elements').children().length / 5) % 1) > 0) {
        max_scroll_pos += 1;
    }
    return max_scroll_pos;
}


function deselect_manufacturers() {
    $('#manufacturer #manufacturer_elements img').each(function() {
        if($(this).hasClass('active')) {
            $(this).toggleClass('active');
        }
    });
}


function cancel_selection() {
    initial_click = true;
    $('#manufacturer #manufacturer_elements img').each(function() {
        if(!$(this).hasClass('active')) {
            $(this).toggleClass('active');
        }
    });
    if(!$('#female').hasClass('active')) { $('#female').toggleClass('active'); }
    if(!$('#male').hasClass('active')) { $('#male').toggleClass('active'); }
    get_jewelry_all();
    renew_manufacturer_states();
    toggle_jewelry_highlight();
}


function scroll_manufacturers_down() {
    check_scroll_vars();
    if((scroll_pos +1) > max_scroll_pos()) {
        return false;
    }
    $('#manufacturer_container').scrollTo($('#manufacturer_container #manufacturer_elements :nth-child(' + (scroll_elements*scroll_pos+1) + ')'), 300, {margin: true});
    scroll_pos +=1;
    toggle_scrollbutton_highlight();
}

function scroll_manufacturers_up() {
    check_scroll_vars();
    if(scroll_pos > 1) {
        scroll_pos -=1;
    }
    $('#manufacturer_container').scrollTo($('#manufacturer_container #manufacturer_elements :nth-child(' + ((scroll_pos*scroll_elements)-4) + ')'), 300, {margin: true});
    toggle_scrollbutton_highlight();
}



function scroll_jewelry_to_pos(position) {
    $("div#jewellery_container").scrollTo($("ul#source").children()[position], 500)
}

function scroll_jewelry_left() {
    if(jewelry_scroll_pos >= 1) {
        jewelry_scroll_pos -=1;
        scroll_jewelry_to_pos(jewelry_scroll_pos);
        toggle_jewelry_highlight();
    }
}

function scroll_jewelry_right() {
    if(jewelry_scroll_pos < $("ul#source").children().length -1) {
        jewelry_scroll_pos +=1;
        scroll_jewelry_to_pos(jewelry_scroll_pos);
        toggle_jewelry_highlight();
    }
}

function toggle_jewelry_highlight() {
    images = Array();
    images['jewelry_left'] = "/media/images/overview/jewelry_left.png";
    images['jewelry_right'] = "/media/images/overview/jewelry_right.png";
    images['jewelry_left_highlight'] = "/media/images/overview/jewelry_left-highlight.png";
    images['jewelry_right_highlight'] = "/media/images/overview/jewelry_right-highlight.png";
    
    if(jewelry_scroll_pos == 0) { $('#jewelry_left').attr('src', images['jewelry_left']); }
    else { $('#jewelry_left').attr('src', images['jewelry_left_highlight']); }
    
    if(jewelry_scroll_pos == $("ul#source").children().length -1) {
        $('#jewelry_right').attr('src', images['jewelry_right']);
    }
    else { $('#jewelry_right').attr('src', images['jewelry_right_highlight']); }
}


function inspect(obj, maxLevels, level)
{
  var str = '', type, msg;

    // Start Input Validations
    // Don't touch, we start iterating at level zero
    if(level == null)  level = 0;

    // At least you want to show the first level
    if(maxLevels == null) maxLevels = 1;
    if(maxLevels < 1)     
        return '<font color="red">Error: Levels number must be > 0</font>';

    // We start with a non null object
    if(obj == null)
    return '<font color="red">Error: Object <b>NULL</b></font>';
    // End Input Validations

    // Each Iteration must be indented
    str += '<ul>';

    // Start iterations for all objects in obj
    for(property in obj)
    {
      try
      {
          // Show "property" and "type property"
          type =  typeof(obj[property]);
          str += '<li>(' + type + ') ' + property + 
                 ( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';

          // We keep iterating if this property is an Object, non null
          // and we are inside the required number of levels
          if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
          str += inspect(obj[property], maxLevels, level+1);
      }
      catch(err)
      {
        // Is there some properties in obj we can't access? Print it red.
        if(typeof(err) == 'string') msg = err;
        else if(err.message)        msg = err.message;
        else if(err.description)    msg = err.description;
        else                        msg = 'Unknown';

        str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
      }
    }

      // Close indent
      str += '</ul>';

    return str;
}


$(document).ready( function() {

    $("div#female").click(function() {
        /*
        if($(this).hasClass('active')) {
            get_jewelry_by_manufacturers();
        } else {
            get_jewelry_by_manufacturers(false, 'f');    
        }*/
        if(!$("div#female").hasClass('active') && $("div#male").hasClass('active')) {
            $("div#female").toggleClass('active');
        }
        //$(this).toggleClass('active');
        $("div#male").toggleClass('active');
        get_jewelry_by_manufacturers();
        toggle_jewelry_highlight();
    });

    $("div#male").click(function() {
        /*
        if($(this).hasClass('active')) {
            get_jewelry_by_manufacturers();
        } else {
            get_jewelry_by_manufacturers(false, 'm');    
        }*/
        if(!$("div#male").hasClass('active') && $("div#female").hasClass('active')) {
            $("div#male").toggleClass('active');
        }        
        //$(this).toggleClass('active');
        $("div#female").toggleClass('active');
        get_jewelry_by_manufacturers();
        toggle_jewelry_highlight();
    });

    $("div#cancel_selection").click(function() {
        cancel_selection();
    });

    $("img#nav_left").click(function() {
        scroll_manufacturers_up();
    })

    $("img#nav_right").click(function() {
        scroll_manufacturers_down();
    })
    
    $('#jewelry_left').click(function() {
       scroll_jewelry_left();
    });
    
    $('#jewelry_right').click(function() {
       scroll_jewelry_right(); 
    });

        
    toggle_scrollbutton_highlight();
    toggle_jewelry_highlight();

    // Hook for fancybox plugin
    $(".fancybox").fancybox({
        'titleShow'    :    true,
        'titlePosition':    'inside',
    });

    // Hook for toggle buttons in overview
    $('a#toggle_button').click(function(){
        $(this).toggleClass("down");
    });
    
    // Hook for iframe newsletter fade-in
    $('#newsletter_link').click(function() {
        show_newsletter_iframe();
        return false;
    });
    
    $('html').click(function() {
       $('#newsletter_iframe').slideUp();
    });
    
    // Browser-fixes
    if($.browser.mozilla) {
        $('img#jewelry_right').css('margin-left', '61px')
    }
    if($.browser.msie) {
        /* this CSS setting is not understood by IE
         * #nav-menu > ul > li > a:last-child {
         * margin-right: 0px;
         * }
         */
         $("#nav-menu  ul  li  a:last-child").css('margin-right', '0px')
    }

    $('ul#nav a').click(function() {
       $('div#realBody').fadeOut("slow");
       var link = $(this).attr("href");
       setTimeout('window.location.href = "' + link + '";',500);
       return false;
    });
    
    setTimeout('$("div#realBody").fadeIn("slow");', 500);
    setTimeout('toggle_jewelry_highlight();', 500);
});



