function externalLinkTracking(){
    /* alle links suchen*/
    jQuery('a')
        /* nur externe Links */
        .filter(':urlExternal')
        /* ClickEvent dazu */
        .click(function(){
            externalLinkTrackingDoEvent(jQuery(this).attr('href'));
        })
}
/**
    externalLinkTrackingDoEvent
    ruft Omniture Code auf
    eVar14: Url des Ziellinks
    event23: Externer Link wurde geklickt
*/
function externalLinkTrackingDoEvent( url ){
    var s = s_gi(s_account);
    s.eVar14 = url;
    s.events = 'event23';
    s.linkTrackVars = 'eVar14,events';
    s.linkTrackEvents = 'event23';
    s.tl(this,'o','Externer Link');
}

function tracking(type){
	var container = jQuery(".tracking_"+type);
	var tag = '';
	var link;

	switch (type) {
		case 'praemien':
            link = container.find('a').find('[href^=praemien_detail],[href^=praemien_suche]');
            tag = 'a';
		break;
        case 'sonderthemen':
            link = jQuery('a').filter(':urlInternal');
            tag = 'a';
        break;
		case 'dropdown':
            link = container.find('select').find('option');
            tag = 'select';
		break;
	}

	container.each(function(){
		// trackingcodes extrahieren
		var classNames = jQuery(this).attr("class").split(' ');
		classNames = jQuery.grep(classNames, function(n, i){
			return (n.indexOf("trackingcode_")!=-1);
		});
		
		//wenn trackingcode-Klasse vorhanden
		if(classNames.length >0){
			var tracking_code = 'int_cmp=' + classNames[0].substr(13);
			// alle Links suchen
			
			switch (tag) {
				case 'a':
					link.each(function(){
						var href = jQuery(this).attr("href");
						if(href.indexOf("int_cmp") == -1){
							jQuery(this).attr('href', addTrackingCode2URL(href,tracking_code));
						}
					});
				break;
				case 'select':
					link.each(function(){
						var href = jQuery(this).val();
						if(href.indexOf("int_cmp") == -1){
							jQuery(this).val(addTrackingCode2URL(href,tracking_code));
						}
					});
				break;
				default:
				break;
			}
		} 
	});
}

function addTrackingCode2URL(link,tracking_code){
	var url_div;
	//it has a ? and a #
	if(link.indexOf("#") != -1 && link.indexOf("?") != -1 ){
		url_div = link.split("#");
		link = url_div[0] + "&" + tracking_code + "#" + url_div[1];
	}// it has a # only
	else if(link.indexOf("#") != -1){
		url_div = link.split("#");
		link = url_div[0] + "?" + tracking_code + "#" + url_div[1];
	}//it has a ? only
	else if(link.indexOf("?") != -1){
		link = link + "&" + tracking_code;
	}// it has nothing
	else{
		link = link + "?" + tracking_code;
	}
	return link;
}

function trackFavourite(link,trackingAccount){
	var favorite = "favorite";
	if(link.className.indexOf("favorite_add")!=-1){
		if(link.className.indexOf("favorite_partner")==-1){
			favorite = "LieblingspartnerDazuFuegen";
		}else{
			favorite = "LieblingspartnerLoeschen";
		}
	}else{
		favorite = "LieblingspartnerFehler";
	}
	var s=s_gi(trackingAccount);
	s.products=';'+favorite;
	s.eVar3=favorite;
	s.prop3='LinkType:text';
	s.events='event8';
	s.eVar1='column';
	s.campaign=favorite;
	s.linkTrackVars='eVar1,eVar3,prop3,products,events,campaign';
	s.linkTrackEvents='event8';
	s.tl(this,'o','Ad Click');
}

function moodswitch(){
    var imageurl  = jQuery('#page').css('backgroundImage');
    var image = new RegExp('.*moods/([a-z]*)\.{1}(?=gif|jpg|png)');
    var cleanmood = image.exec(imageurl); 
    var cleanmood = cleanmood[1];

    if(cleanmood == "com"){
        cleanmood = "coins";
    }
    jQuery.post('customize/settings/setmood/format/json','mood='+cleanmood,

	function(data){
	    jQuery("link[id=switch]").attr({href : data});
	},'json');
}



//function fuer die hintergrundgrafiken meist der topboxen, 
//nun brauch man kein css mehr definieren sondern einfach ein html-bild anlegen
//"height" attribut im "img" definiert die hoehe des containers
//"style" wird an den topbox-style angehaengt
function ClipPic(){
    jQuery(".clippic").each(function (i) {
    
        var clippicBG = jQuery(this).attr("src");
        var clippicBG = "url("+clippicBG+")";

        var clippicStyle = jQuery(this).attr("style");
        if (clippicStyle) {
	        var parentStyle = jQuery(this).parent().attr("style");
        	if(parentStyle){
	        	clippicStyle = parentStyle + '; ' + clippicStyle;
        	}
        	jQuery(this).parent().attr('style',clippicStyle);
        }

        if(jQuery(this).height() < jQuery(this).parent().height()) {
            var clippicHeight = jQuery(this).parent().height() + 15;
        } else {
            var clippicHeight = jQuery(this).height();
        }

        if (clippicHeight) {
            jQuery(this).parent().css({"backgroundImage": clippicBG, "height": clippicHeight});
        } else {
            jQuery(this).parent().css({"backgroundImage": clippicBG});
        }
    });
}

//schattenboxen automatisch generieren
//zur zeit erst bei sdk
function ShadowBox(){
    var wraps = new Array(
        '<div class="wm_contentbox_shadow">',
        '<div class="wm_contentbox_shadow_header"></div>'
    );
    var teaserContent = jQuery('.shadowBox');
    teaserContent.wrap(wraps[0]);
    teaserContent.before(wraps[1]); 
}

//schattenboxen automatisch generieren
//webmiles 
function wmShadowBox(){
	jQuery(".wm-box").each(function (i) {
		$this = jQuery(this);

		// Array aller Klassen
		var classes = $this.attr("class").split(' ');
		
		//Klassen mit Farbinformation sammeln
		colorClassNames = jQuery.grep(classes, function(n, i){
			return (n.match(/^box/)!=null);
		});

		//Klassen mit Farbinformation sammeln
		var gradient = jQuery.grep(classes, function(n, i){
			return (n.match(/^gradient/)!=null);
		});

		// Paddingklassen suchen und Wert in px setzen
		var hasPadding = jQuery.grep(classes, function(n, i){
			return (n.match(/^padding-(.+)/)!=null);
		});
		var paddingValue = "";
		if(hasPadding[0]){
			var padding = hasPadding[0].split("-");
		    $this.removeClass(hasPadding[0]);
			var paddingAdd = Number(padding[1]) + 8;
			paddingValue = paddingAdd+'px';
		}

		$this
			.wrapInner('<div class="wm-box-content"></div>')	//Inhalt in Content verpacken
			.prepend('<div class="wm-box-header"></div>')		//Header voranstellen
			.append('<div class="wm-box-footer"></div>')		//Footer hintendran
			.children('.wm-box-content')						//Content suchen
			.css("padding",paddingValue);						//und Abstand setzen

		/* Verschieben der Ueberschrift, wenn vor ihr kein Text oder anderes Element ist: 
			ist der erste Knoten kein textNode
			oder enthaelt er nur Whitespace
		*/
		var firstChild = $this.find('div.wm-box-content')[0].firstChild;
		if(	firstChild.nodeType != 3 || firstChild.data.replace(/\s/g, "").length == 0 ){
			$this.find('div.wm-box-content')
				.children(':first')								//der erste (nichtText-)Konten
				.filter("h3")									//Ueberschrift?
				.appendTo($this.find('div.wm-box-header'));		//Verschieben
		}
		var footerNavi = $this.find('div.wm-box-content .wm-box-footer-navi').html();
		if(footerNavi) {
			$this.find('div.wm-box-content .wm-box-footer-navi').remove();
			$this.find('.wm-box-footer').after('<div class="wm-box-footer-navi">' + footerNavi + '</div>');
		}

		if( gradient != "" ) {
			$this.wrap('<div class="gradient" />');
		}
		//wenn keine Ueberschrift vorhanden ist, obwohl eine Ueberschriftenklasse angegeben ist, wird die Klasse entfernt
		$this.find('div.wm-box-header:not(:has(h3))')
			.parent('div.wm-box')
				.removeClass('default')
				.removeClass('colored')
				.removeClass('navi');
		
		
	});
}

function wmTextBox(){
	jQuery(".wm-box-text").each(function (i) {
		$this = jQuery(this);

		// Array aller Klassen
		var classes = $this.attr("class").split(' ');
		
		// Paddingklassen suchen und Wert in px setzen
		var hasPadding = jQuery.grep(classes, function(n, i){
			return (n.match(/^padding-(.+)/)!=null);
		});
		var paddingValue = "";
		if(hasPadding[0]){
			var padding = hasPadding[0].split("-");
		    $this.removeClass(hasPadding[0]);
			paddingValue = Number(padding[1])+'px';
		}

		// Marginklassen suchen und Wert in px setzen
		var hasMargin = jQuery.grep(classes, function(n, i){
			return (n.match(/^margin-(.+)/)!=null);
		});
		var marginValue = "";
		if(hasMargin[0]){
			var margin = hasMargin[0].split("-");
		    $this.removeClass(hasMargin[0]);
			marginValue = Number(margin[1])+'px';
		}

		$this
			.css("padding-left",paddingValue)						//und Abstand setzen
			.css("padding-right",paddingValue)						//und Abstand setzen
			.css("margin",marginValue);							//und Rand setzen

	});
}

/*
 * unser werbemood
 */

function checkCom(klicked){    
	var imageurl  = jQuery('#page').css('backgroundImage');
	var image = new RegExp('.*moods/([a-z]*)\.{1}(?=gif|jpg|png)');
	var whatsmood = image.exec(imageurl); 

    var clickOneTop = $("#page_margins").offset().top;
    var clickOneLeft = $("#page_margins").offset().left;
    var clickOneWidth = $("#page").offset().left + 34;
    var clickOneHeight = $("#page_margins").height();
    
    var clickTwoTop = $("#page_margins").offset().top;
    var clickTwoLeft = ($("#page").offset().left + $("#page").width()) - 34;
    var clickTwoWidth = $("#page_margins").width() - clickTwoLeft;
    var clickTwoHeight = $("#page_margins").height();

    var cssMatch = new RegExp('.*moods/(.+)\.{4}');
    var cssPath = cssMatch.exec(comHeader);
    var cssPath = "/files/libs/css/moods/" + cssPath[1] + "css";

    if(klicked == "yeas"){
		if(whatsmood[1] == "alps"){
            jQuery("#page").append(jQuery("#clickColOne"));
            jQuery("#page").append(jQuery("#clickColTwo"));
            jQuery("#header").append(jQuery("#clickHeaderOne"));
            jQuery("#header").append(jQuery("#clickHeaderTwo"));
		    jQuery("#clickColOne").css({
		        'top' : clickOneTop,
		        'height': clickOneHeight
		    });
		    jQuery("#clickColTwo").css({
		        'top' : clickTwoTop,
		        'height': clickTwoHeight
		    });
            jQuery(".clickHref").attr({"href": comLink, "target": comLinkTarget, "title": comLinkTitle});
            jQuery("link[id=switch]").attr("href", cssPath);
		} else {
            jQuery("#clickColWrapper").append(jQuery("#clickColOne"));
            jQuery("#clickColWrapper").append(jQuery("#clickColTwo"));
            jQuery("#clickColWrapper").append(jQuery("#clickHeaderOne"));
            jQuery("#clickColWrapper").append(jQuery("#clickHeaderTwo"));
		}
    } else {
        if(whatsmood[1] == "coins"){
            jQuery("#page").append(jQuery("#clickColOne"));
            jQuery("#page").append(jQuery("#clickColTwo"));
            jQuery("#header").append(jQuery("#clickHeaderOne"));
            jQuery("#header").append(jQuery("#clickHeaderTwo"));
            jQuery("#clickColOne").css({
                'top' : clickOneTop,
                'height': clickOneHeight
            });
            jQuery("#clickColTwo").css({
                'top' : clickTwoTop,
                'height': clickTwoHeight
            });
            jQuery(".clickHref").attr({"href": comLink, "target": comLinkTarget, "title": comLinkTitle});
//            jQuery("link[id=switch]").attr("href", "/files/libs/css/moods/de_DE/praemien.css");
            jQuery("link[id=switch]").attr("href", cssPath);
            
        } else {
            jQuery("#clickColWrapper").append(jQuery("#clickColOne"));
            jQuery("#clickColWrapper").append(jQuery("#clickColTwo"));
            jQuery("#clickColWrapper").append(jQuery("#clickHeaderOne"));
            jQuery("#clickColWrapper").append(jQuery("#clickHeaderTwo"));
        }
    }
}
function makeTall(){  jQuery("#styleswitch .styleswitchBg").animate({ backgroundPosition:"0px 0px"},500);}
function makeShort(){ jQuery("#styleswitch .styleswitchBg").animate({ backgroundPosition:"-126px 0px"},300);}

jQuery(document).ready(function(){

	if (jQuery.browser.msie) {
        if(parseInt(jQuery.browser.version) < 7){
            jQuery("#topContentHint").append('<div style="position: relative; padding: 0 0 10px 0;"><div style="position: absolute; top:-20px; left: 250px;">Wir empfehlen die Verwendung von <a href="http://www.mozilla-europe.org/de/firefox/" target="_blank">Firefox</a> bzw. <a href="http://www.microsoft.com/germany/windows/internet-explorer/download-ie.aspx" target="_blank">Internet Explorer 8</a></div></div>');
        }
    }
	
    tracking('praemien');
    ClipPic();
    ShadowBox();
    wmShadowBox();
    wmTextBox();
    //externalLinkTracking();


    jQuery("#popup").dialog({ 
        width: 324,
        height: 445,
        resizable: false,
        dialogClass: 'popup'
         
    });
    jQuery(".ui-dialog-titlebar-close").addClass("arrow_link").html("Schließen");
    // texte aus den herzchen links entfernen - fehlerhafte darstellung in den slidern
    jQuery('.favorite_add').html('');
    // EXTRA STYLE FOR FORM-CHECKBOXES 		
	jQuery("form :checkbox").addClass('wm_noborder');
	// temponaerer overflow fuer praemienboxen
	jQuery(".bonus_box_float").css("overflow", "hidden");
	
	jQuery("#styleswitch").hoverIntent({
		sensitivity: 3, 
		interval: 100, 
		over: makeTall, 
		timeout: 200, 
		out: makeShort
	});
	
    jQuery("#styleswitch").click(function(){ 
        moodswitch()
    });

	try {
	    jQuery('.favorite_add').livequery('click', function(){
	        var clickedOn = jQuery(this);
			clickedOn.hide();
	        jQuery.post(
	            jQuery(this).attr('href') + '/format/json',
	            null,
	            function(data, textStatus) {
	                var answer = eval(data);
	                try {
	                	
	                	if(answer.data.scalar.redirect != false)
	                	{
	                		window.location.href = answer.data.scalar.redirect;
	                		return false;
	                	}
	                	
	                	if (answer.data.scalar.success == true) {
	                		var cssIdentifier = answer.data.scalar.cssIdentifier;
	                		if (answer.data.scalar.isFavourite == false) {
	                			jQuery('.'+  cssIdentifier + ' a.favorite_add').removeClass('favorite_partner').attr('title', answer.data.scalar.linkTitle);
	                		}
	                		else {
	                			jQuery('.'+  cssIdentifier + ' a.favorite_add').addClass('favorite_partner').attr('title', answer.data.scalar.linkTitle);
	                		}
	                		
	                		jQuery('#partners_favourites').replaceWith(answer.data.complex.favourites);
	                		//console.log(answer.data.scalar.cssIdentifier);
	                		//console.log(answer.data.scalar.isFavourite);
	                	}
	                    
	                } catch(e) {
	                    //console.log(e.message);
	                }
	                clickedOn.show();
	            },
	            "json");
	        return false;
	    });
	} catch(e) {
		//no .favorite_add available
	}
});


/**
 *
 * @example: jQuery.string('500000').decFormat() => 500.000
 */
jQuery.extend({
	__stringPrototype: {
		decFormat: function(s) {
			var s = this.s(s);
		  	var number = this.decClean(s);
			if (number.length > 3)
			{
				var mod = number.length % 3;
				var output = mod > 0 ? number.substring(0, mod) : '';
				for (i = 0; i < Math.floor(number.length / 3); i++)
				{
					if ((mod == 0) && (i == 0))
					{
						output += number.substring(mod + 3 * i, mod + 3 * i + 3);
					}
					else
					{
						output += this.getDecChar() + number.substring(mod + 3 * i, mod + 3 * i + 3);
					}
				}
				number = output;
			}
			return number;
		},
		decUnformat: function(s) {
			var s = this.s(s);
			var pattern = this.getDecChar();
			return s ? s.replace(pattern, '') : '';
		},
		decClean: function(s) {
			var s = this.s(s);
			if (s !== '') {
				s = this.decUnformat(s);
				s = s.match(/\d+/);
				return s ? s[0] : '';
			}
			return s;
		},
		getDecChar: function() {
			switch(LOCALE) {
				case 'fr_CH':
				case 'ch_CH':
					var decChar = "'";
					break;
				default:
					var decChar = '.';
					break;
			}
			return decChar;
		},
		s: function(s) {
			if (s === '' || s) { return '' + s; }
			if (this.str === '' || this.str) { return '' + this.str; }
			return this;
		}
	},
	string: function(str) {
		if (str === String.prototype) { jQuery.extend(String.prototype, jQuery.__stringPrototype); }
		else { return jQuery.extend({ str: str }, jQuery.__stringPrototype); }
	}
	
});
