

var fadingElements = '.unobtrusive_fader #right_box, .unobtrusive_fader #subnav';

function initFrontend(){
  $(function(){
    $(fadingElements).fadeIn(800);
    if(!($.browser.msie)) {
      $(window).smoothScrolling();
    }
    else {
      /*$(window).scroll(function () {
        $('.qtip-active').qtip("hide");
      });*/
    }

    // add unobtrusive fading to main navigation links  
    $('#main_nav a').each(function(index, navLink){
      addUnobtrusiveFading(navLink);
    });
  });
}


/* fades out some stuff and redirects to the clicked link's target 
 */
function addUnobtrusiveFading(link) {
  $(link).click(function (event) {
    clearEventQueue(event);
    event.preventDefault();
    
    var linkTarget = $(this).attr('href');
    $(window).smoothScrolling.halt();
   
    $(fadingElements).fadeOut(300, function () {
      window.location = linkTarget;
    });
    
    return false;
  });
}


/* toggles the specified css class and applies Cufon to the changed element.
 * navItem is expected to be a jQuery object
 */
function subnavItemToggleCufonStyle(navItem, className) {
  $(navItem).toggleClass(className);
  Cufon('.subnav .header_' + getDataFromClass($(navItem), 'header_'));
}


// workaround for standard pulsate effect, which tended to always blink twice
function pulsate(id, speed) {
		speed = speed / 2;
		$(id).fadeTo(speed, 0.1, function() { $(id).fadeTo(speed, 1); });
}

/*  stops event bubbling
 *  example:
 *    if you define a click handler for an element A and a second
 *    click handler for an element B being placed above/inside A,
 *    then you may want to call this function inside B's click handler
 *    to prevent A's click handler being triggered after B's handler
 *    ('event' is defined when calling this inside html onclick param) 
 */
function clearEventQueue(event) {
  if((event == undefined) || (event == null)) return;
  
  if (event.stopPropagation) {  // real browsers
    event.stopPropagation();
  }
  else {  // IE
    event.cancelBubble = true;
  }
}


function isIE6() {
  if((navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) &&
     (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1))
     return true;
  else
    return false;
}


/*
 * domObject: a jQuery DOM object
 * prefix: prefix string for data in classname
 * 
 * example:
 *   <span id="myobject" class="listitem_mydata123"></span> 
 *   getDataFromClass($('#myobject'), 'listitem_');
 *   ==> 'mydata123'
 */
function getDataFromClass(domObject, prefix) {
  try {
    var regExp = new RegExp('\\b' + prefix + '(\\w+)\\b', 'g');
    return regExp.exec($(domObject).attr('class'))[1];
  }
  catch(e) {
    return null;
  }
}

