/**
* add behaviour to all input fields to show help on focus
*/
function init_help() {
var allInputs = $('#siteContent input');
if (allInputs.length > 0) {
allInputs.helpable('.hintMsg');
}
var allSelects = $('#siteContent select');
if (allSelects.length > 0) {
allSelects.helpable('.hintMsg');
}
var allTextareas = $('#siteContent textarea');
if (allTextareas.length > 0) {
allTextareas.helpable('.hintMsg');
}
}
function init_pageToolsBookmarks() {
var pageToolsBookmark = $('#pageToolsBookmark');
if (pageToolsBookmark.length == 1) {
var bookmarks = $('#pageToolsBookmarks');
pageToolsBookmark.mouseenter(function() {
bookmarks.show();
});
bookmarks.mouseleave(function() {
bookmarks.hide();
});
bookmarks.find('input').bind('click', function(){
this.select(); // Select input field contents
});
}
}
function init_headLogin() {
var headLoginCfg = {backgroundElement:'#headLogin h4 a',backgroundPosition:'0 0',slideElement:'#headLogin .headLoginExt'};
var headLoginCfgOut = {backgroundElement:'#headLogin h4 a',backgroundPosition:'0 -12px',slideElement:'#headLogin .headLoginExt'};
$("#headLogin").hoverIntent({
sensitivity: 3,
interval: 200,
over: function(){$(this).jSlider('over', headLoginCfg)},
timeout: 250,
out: function(){$(this).jSlider('out', headLoginCfgOut)}
});
// login form username input
$('#signin_username').inputAdvise();
// login form password input
$('#signin_password').inputAdvise();
// search form searchterm input
$('#searchWord').inputAdvise();
}
function init_headBasket() {
var headBasketCfg = {backgroundElement:'#headBasket h4 a',backgroundPosition:'0 -48px',className:'open',slideElement:'#headBasket .headBasketExt'};
var headBasketCfgOut = {backgroundElement:'#headBasket h4 a',backgroundPosition:'0 -36px',className:'open',slideElement:'#headBasket .headBasketExt'};
$("#headBasket").hoverIntent({
sensitivity: 3,
interval: 200,
over: function(){$(this).jSlider('over', headBasketCfg)},
timeout: 250,
out: function(){$(this).jSlider('out', headBasketCfgOut)}
});
// Basket Articles Carousel
var iBasketContentsSize = 3;
$("#basketContents").each(function(){
var ul = $("ul", $(this)), li = $("li", ul);
if (0 < li.size() && li.size() < 3)
iBasketContentsSize = li.size();
});
$("#basketContents").jCarouselLite({
btnPrev: "#headBasket .scrollUpLink",
btnNext: "#headBasket .scrollDownLink",
vertical: true,
circular: false,
visible: iBasketContentsSize
});
// hide the basket after jCarousel init
$("#headBasket .headBasketExt").hide();
}
function init_headSearch() {
var searchInput = $('#searchWord');
var defaultValue = searchInput.attr('alt');
var init = function(val) {
defaultValue = val;
searchInput.val(defaultValue);
}
searchInput.focus(function () {
if($(this).val() == defaultValue) {
$(this).val('');
}
});
searchInput.blur(function () {
if(typeof($(this).val()) == 'undefined' || $(this).val() == '') {
$(this).val(defaultValue);
}
});
$('#quickSearchForm').bind('submit', function(e) {
if(typeof(searchInput.val()) == 'undefined' || searchInput.val() == '' || searchInput.val() == defaultValue) {
searchInput.val(defaultValue);
e.preventDefault();
}
});
var searchSelect = $('#searchArea');
searchSelect.selectbox();
searchSelect.bind('change', function() {
init($(this).find('option:selected').attr('title'));
});
if(typeof(searchInput.val()) == 'undefined' || searchInput.val() == '') {
init(defaultValue);
}
}
function init_Navigation() {
var navigation = $('#navigation');
// Subnavigation Hover
navigation.find('ul > li > ul > li').hoverIntent(function() {
$(this).addClass("currentSubnav");
$(this).find(".thirdLevelNav").show();
} , function() {
$(this).removeClass("currentSubnav");
$(this).find(".thirdLevelNav").hide();
});
/* // Third Level Navigation Hover
navigation.find('.thirdLevelNav > ul').hover(function() {
$(this).addClass("productHover");
} , function() {
$(this).removeClass("productHover");
});
// Sequence Navigation Hover
$("#sequenceNav ul > li > a").hover(function() {
$(this).parent().addClass("currentSubnav");
navigation.find('.thirdLevelNav').hide();
} , function() {
$(this).parent().removeClass("currentSubnav");
});*/
// Category Filter Selectbox width (for ie)
var navFilterSelect = $('#jq_nav_category_filter select');
navFilterSelect.focus(function () {
$(this).css("width","auto");
});
navFilterSelect.blur(function () {
$(this).css("width","156px");
});
}
function init_charcount() {
if ($('#jq_charcount_parent').length == 1) {
var countables = $('.jq_char_countable');
countables.prev('label').append($('#jq_charcount_parent'));
countables.bind('charcount', function() {
var chars = $(this).val().length;
$('#jq_charcount').html(chars);
});
countables.keyup(function(e) {
$(this).trigger('charcount');
});
countables.trigger('charcount');
}
}
function init_submitLink() {
$('#site').find('a.jq_submit_link').click(function() {
$(this).closest('form').submit();
return false;
});
}
function fillSelect(inputElement, elementObj, firstElement, options) {
$(inputElement).attr("value", elementObj.text());
$(firstElement).empty().append(elementObj.text());
}
function init_chronik() {
// history Carousel
$("#chronikContents").jCarouselLite({
btnPrev: "#chronik .scrollUpLink",
btnNext: "#chronik .scrollDownLink",
vertical: true,
circular: false,
visible: 4.2
});
}
function init_horizontalCarousel() {
// Horizontal Carousel
var noticeModalLarge = $('#noticeModalLarge');
if(noticeModalLarge.length = 1) {
noticeModalLarge.find('.imageNavShort').jCarouselLite({
btnPrev: "#noticeModalLarge .imageNavPrevImage",
btnNext: "#noticeModalLarge .imageNavNextImage",
vertical: false,
circular: false,
visible: 3
});
// set background image on hover
noticeModalLarge.find('.imageNav > ul > li').hover(function() {
$(this).addClass("liHover");
} , function() {
$(this).removeClass("liHover");
});
}
var noticeModal = $('#noticeModal');
if(noticeModal.length = 1) {
noticeModal.find('.imageNavShort').jCarouselLite({
btnPrev: "#noticeModal .imageNavPrevImage",
btnNext: "#noticeModal .imageNavNextImage",
vertical: false,
circular: false,
visible: 3
});
// set background image on hover
noticeModal.find('.imageNav > ul > li').hover(function() {
$(this).addClass("liHover");
} , function() {
$(this).removeClass("liHover");
});
}
var siteContent = $('#siteContent');
if(siteContent.length == 1){
siteContent.find('.imageNav').jCarouselLite({
btnPrev: "#siteContent .imageNavPrevImage",
btnNext: "#siteContent .imageNavNextImage",
vertical: false,
circular: false,
visible: 4
});
// set background image on hover
siteContent.find('.imageNav > ul > li').hover(function() {
$(this).addClass("liHover");
} , function() {
$(this).removeClass("liHover");
});
}
}
function init_fancybox() {
var mcBilder = $('#mcBilder');
if (mcBilder.length > 0) {
mcBilder.find("a[rel='productDetail']").fancybox();
mcBilder.find('a.mcZoomLink').fancybox({
// TODO use dynamic width and height of XXL image size const
frameWidth: 576,
frameHeight: 576
});
mcBilder.find('a.jqImageZoom').jqzoom({
zoomWidth: 370,
zoomHeight: 360,
xOffset: 18,
yOffset: -12,
position: "right",
title: false,
showPreload: false
});
}
}
function init_confirm() {
// init basket articlelist delete confirm => init last!
$('#siteContent #basket .deleteBasketItem.basketItem').click(function() {
var artid = $(this).attr('rel');
deleteBasketConfirm(artid, $aBasketItems);
return false;
});
}
function init_faqs() {
if ($("#faqs_accordion").length > 0)
{
$("#faqs_accordion").accordion({
header: 'h3',
autoHeight: false
}).bind('accordionchangestart', function(event, ui) {
$('#faqs_accordion .roundedBox').each(function(){
if ($(this).find('.ui-state-active').hasClass('.ui-state-active'))
$(this).addClass('roundedBoxActive');
else
$(this).removeClass('roundedBoxActive');
});
});
}
}
/**
* bd cms slot
*
* @param options mixed serverside options
* @return void
*/
function bdCMSSlot(options) {
var formSelector = '#pk-slot-form-'+options.slotname+'-'+options.permid;
var searchInProgress = false;
var searchTerm = '';
var timeout;
var delay = 1000;
var minChars = 0;
var mediatype = $('#'+options.preview_update_id).is('object') || $('#'+options.preview_update_id).is('div') ? 'flash' : 'image';
$(formSelector+' .jq_bd_cms_trigger_select').click(function(e) {
$(formSelector+' .jq_bd_cms_select_media').toggle();
return false;
});
function browseMedia() {
searchInProgress = true;
var indicator = new loadIndicator(options.text_load_search);
$.ajax({
async: false,
url: options.url_browse,
data: jQuery.param({search: searchTerm}),
beforeSend: function() {
indicator.showAfter(formSelector+' .jq_bd_cms_search_media');
},
success: function(data) {
$(formSelector+' .jq_bd_cms_media_list').html(data);
},
complete: function() {
indicator.hide();
searchInProgress = false;
}
});
}
$(formSelector+' .jq_bd_cms_search_media').bind('keyup', function(){
searchTerm = $(this).val();
if(!searchInProgress && searchTerm.length > minChars) {
if(timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(browseMedia, delay);
}
});
$(formSelector+' .jq_bd_cms_search_media').bind('keypress', function(e){
var key;
if(window.event) {
key = window.event.keyCode; //IE
}
else {
key = e.which; //firefox
}
return (key != 13);
});
$(formSelector+' .jq_bd_cms_template_select_control').bind('change', function(){
var image_mapping = cms_image_mapping[$(this).val()];
$(formSelector+' .jq_image_upload_label').text('Bild '+(image_mapping.width)+' x '+(image_mapping.height));
});
$(formSelector+' a.jq_bd_cms_select_item').live("click", function(){
var selectedMedia = $(this).attr('rel');
$(formSelector+' .jq_bd_cms_media_url').val(selectedMedia);
// update image preview
if(mediatype == 'image') {
var selectedTemplate = $(formSelector+' .jq_bd_cms_template_select_control').val();
var indicator = new loadIndicator(options.text_load_preview);
$.ajax({
async: false,
url: options.url_preview,
dataType: 'json',
data: jQuery.param({mediaurl: selectedMedia, template: selectedTemplate}),
beforeSend: function() {
indicator.showAfter(formSelector+' .jq_bd_cms_trigger_select');
},
success: function(data) {
$('#'+options.preview_update_id).attr('src', data.url)
},
complete: function() {
indicator.hide();
}
});
}
// update swf preview
else if(mediatype == 'flash') {
swfobject.embedSWF('/'+options.path_upload+selectedMedia, options.preview_update_id, options.template_params.width, options.template_params.height, "9.0.0", "/uploads/cms/expressInstall.swf");
}
$(formSelector+' a.jq_bd_cms_select_item').removeClass('current');
$(this).addClass('current');
});
$(formSelector+' a.jq_bd_cms_delete_item').live("click", function(){
var selectedMediaId = $(this).attr('rel');
var indicator = new loadIndicator(options.text_load_delete);
var deleteConfirm = confirm(options.text_confirm_delete);
if (deleteConfirm)
{
$.ajax({
async: false,
url: options.url_delete,
data: jQuery.param({id: selectedMediaId, type: mediatype}),
beforeSend: function() {
indicator.showAfter(formSelector+' .jq_bd_cms_trigger_select');
},
success: function(data) {
$(formSelector+' .jq_bd_cms_media_list').html(data);
},
complete: function() {
indicator.hide();
}
});
}
});
$(formSelector+' .jq_bd_cms_remove_media').bind('click', function(e){
if(mediatype == 'image') {
$('#'+options.preview_update_id).attr('src', '');
$(formSelector+' .jq_bd_cms_media_url').val('');
}
e.preventDefault();
});
var cleanRemoveTinymce = function() {
if(typeof(tinyMCE) != 'undefined') {
var ed = tinyMCE.get('bdCMSEditorialTeaserSlotForm-'+options.slotname+'-'+options.permid+'_value');
if(typeof(ed) != 'undefined') {
ed.save();
ed.remove();
}
}
}
$(formSelector+' .jq_bd_cms_trigger_upload').click(function(){
var slotForm = $(formSelector);
var indicator = new loadIndicator(options.text_load_upload);
// bind ajax form submit event
slotForm.bind('submit', function() {
slotForm.ajaxSubmit({
async: false,
beforeSend: function() {
indicator.showAfter(formSelector+' .jq_bd_cms_upload_media');
// add enctype multipart/form-data to the form and unbind other submit listener
slotForm.attr('enctype', 'multipart/form-data');
slotForm.unbind('submit');
cleanRemoveTinymce();
},
success:
function(data) {
},
target: formSelector+' .jq_bd_cms_select_media_form',
complete: function() {
slotForm.unbind('submit');
slotForm.attr('enctype', '');
init_tinymce('#bdCMSEditorialTeaserSlotForm-'+options.slotname+'-'+options.permid+'_value');
indicator.hide();
}
});
return false;
});
// trigger jquery.form js function ajaxSubmit to trigger iframe upload
slotForm.submit();
return false;
});
$(formSelector+' .jq_bd_cms_select_content').bind('change', function(e) {
var entity = $(e.target).val();
if(typeof(entity) != 'undefined' && entity != '') {
var isSidebar = 0;
if(typeof(options.template_params.sidebar) != 'undefined') {
isSidebar = options.template_params.sidebar == true ? 1 : 0;
}
var indicator = new loadIndicator(options.text_load_templates);
$.ajax({
async: true,
url: options.url_get_templates,
dataType: 'json',
data: jQuery.param({entity: entity, sidebar: isSidebar}),
beforeSend: function() {
indicator.showAfter(formSelector+' .jq_bd_cms_select_content');
},
success: function(data) {
var options = '';
for(var option in data) {
options += '';
}
$(formSelector+' .jq_bd_cms_select_template').html(options);
},
complete: function() {
indicator.hide();
}
});
}
});
$(formSelector+' .jq_bd_cms_select_template').bind('change', function(e) {
var template = $(e.target).val();
if(typeof(template) != 'undefined' && template != '') {
var template_type = template.split('_', 1)[0];
var searchControls = $(formSelector+' .jq_bd_cms_search_controls');
var entityList = $(formSelector+' .jq_bd_cms_entities_list');
// var listTitle = $(formSelector+' .jq_bd_cms_list_title');
if(template_type == 'list') {
searchControls.fadeOut();
// listTitle.fadeIn();
entityList.empty();
}
else {
searchControls.fadeIn();
// listTitle.val('');
// listTitle.fadeOut();
browseEntity();
}
}
});
function browseEntity() {
var target = $(formSelector+' .jq_bd_cms_search_entity');
var search = $(target).val();
var entity = $(formSelector+' .jq_bd_cms_select_content').val();
var indicator = new loadIndicator(options.text_load_search);
$.ajax({
async: true,
url: options.url_browse,
data: jQuery.param({entity: entity, search: search}),
beforeSend: function() {
indicator.showAfter(target);
},
success: function(data) {
$(formSelector+' .jq_bd_cms_entities_list').html(data);
},
complete: function() {
indicator.hide();
}
});
}
$(formSelector+' .jq_bd_cms_search_entity').bind('keyup', function(){
searchTerm = $(this).val();
if(!searchInProgress && searchTerm.length > minChars) {
if(timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(browseEntity, delay);
}
});
$(formSelector+' .jq_bd_cms_search_entity').bind('keypress', function(e){
var key;
if(window.event) {
key = window.event.keyCode; //IE
}
else {
key = e.which; //firefox
}
return (key != 13);
});
$(formSelector+' a.jq_bd_cms_select_entity').live("click", function(e){
var selected = $(this).attr('rel');
$(formSelector+' .jq_bd_cms_id').val(selected);
$(formSelector+' a.jq_bd_cms_select_entity').removeClass('current');
$(this).addClass('current');
e.preventDefault();
});
}
function starRating(options) {
var defaults = {
form_element: '',
counter_element: '',
rating_value: 0,
voteable: true,
entity_id: undefined,
user_id: undefined,
rating_url: '',
text_load_rate: ''
};
var o = $.extend(defaults, options);
var ratingForm = $(o.form_element);
var ratingRadios = ratingForm.find('input');
this.init = function() {
ratingRadios.rating();
ratingForm.show();
}
var rate = function(e){
var link = e.target;
var rating_points = $(link).text();
var indicator = new loadIndicator(o.text_load_rate);
$.ajax({
url: o.rating_url,
data: { entity_id: o.entity_id, user_id: o.user_id, rating_points: rating_points },
dataType: 'json',
method: 'post',
beforeSend: function() {
indicator.showAfter(o.form_element);
},
success: function(data) {
ratingForm.find(':radio.star').rating('select', String(data.average_rating));
$(o.counter_element).text(data.quantity_ratings_fulltext);
setVotable(false);
},
complete: function() {
indicator.hide();
}
});
e.preventDefault();
}
var setVotable = function(voteable) {
if(voteable) {
ratingForm.find('a').bind('click', rate);
ratingForm.find(':radio.star').rating('readOnly', false);
}
else {
ratingForm.find('a').unbind('click');
ratingForm.find(':radio.star').rating('readOnly', true);
}
}
// call init, although native plugin already to this on load. But for ajax issues we need manuelly call.
init();
ratingRadios.rating('select', o.rating_value);
setVotable(o.voteable);
}
/**
* init a scroll teaser
*
* @param options
* @return void
*/
function scrollTeaser(options) {
var defaults = {
element: '',
circular: false,
visible: 3,
auto: null,
speed: 0
};
var o = $.extend(defaults, options);
var teaserElement = $(o.element);
teaserElement.find('.jq_scroll_teaser').jCarouselLite({
btnPrev: teaserElement.find('.jq_scroll_up'),
btnNext: teaserElement.find('.jq_scroll_down'),
vertical: true,
circular: o.circular,
visible: o.visible,
auto: o.auto,
speed: o.speed
});
}
function init_load_indicator() {
// TODO i18n message
$('#siteContent').globalLoadIndicator({ text_load: 'Bitte warten ...' });
}
function init_printLink() {
var printLink = $('#pageToolsPrint');
if(printLink.length == 1){
printLink.click(function(){
window.print();
return false;
})
}
}
function init_tweet() {
if ($('#jq_tweet_link').length > 0)
{
var pageTitle = document.title;
var pageUrl = document.location;
var url = 'http://json-tinyurl.appspot.com/?url=' + encodeURIComponent(pageUrl) + '&callback=?';
$.getJSON(url, function(data){
tweetUrl ="http://twitter.com/home/?status=" + escape(pageTitle) + "+" + escape(data.tinyurl) + "+via+@fressnapf.de";
$('#jq_tweet_link').attr('href',tweetUrl);
});
}
}
/**
* init pager
*
* @return void
*/
function init_pager(options)
{
var pager = $('#siteContent .jq_pager');
if(pager.length > 0) {
pager.find('select.jq_pager_select_filter').bind('change', function() {
if($(this).closest("form[name='paginationForm']").length == 1) {
$(this).closest("form[name='paginationForm']").trigger('submit');
}
});
}
}
/**
* submit forms hitting enter for IE
*/
function init_returnSubmit()
{
// this property is false in ie
if(jQuery.support.htmlSerialize == false) {
$('#wrapper input').keydown(function(e){
// only ie matching
if (window.event.keyCode == 13) {
var parentForm = $(this).parents('form');
if(parentForm.length == 1) {
parentForm.trigger('submit');
}
}
// be sure to don't break event bubbling; omit return false or e.preventDefaults
});
}
}
/**
* document dom is ready; occurs during page render while
* objects are still downloading.
*/
$(document).ready(function() {
init_printLink();
init_charcount();
init_submitLink();
init_pageToolsBookmarks();
init_headLogin();
init_headBasket();
init_headSearch();
init_Navigation();
init_chronik();
init_confirm(); // call before fancy !!
init_fancybox();
init_faqs(); // TODO specific intitalize
init_pager();
init_load_indicator();
});
/**
* document loaded; occurs after all objects called by the HTML
* (including