( function( $ , undefined )
{
    $.fn.voo = function( params )
    {
        var language = 'fr', application =
        {
            _create : function(){ },
            _init: function(){ },

            _changeOrder : function( type , val1 , val2 , val3 )
            {

                var achat_modem = 'Achat modem';
                var mois = 'mois';
                var location_modem = 'Location modem';

                if( language == 'nl' )
                {
                    achat_modem = 'Aankoop modem';
                    mois = 'maand';
                    location_modem = 'Huur modem';
                }
                if( language == 'de' )
                {
                    achat_modem = 'Kauf des Modems';
                    mois = 'Monat';
                    location_modem = 'Miet des Modems';
                }
                if( language == 'en' )
                {
                    achat_modem = 'Purchase of modem';
                    mois = 'month';
                    location_modem = 'Rental of modem';
                }

                if( type == 'achat' )
                {
                    $( '#commandez' ).find( '#render_modemOption_label' ).hide();
                    $( '#commandez' ).find( '#render_modemOption_value' ).hide();
                    $( '#commandez' ).find( '#render_modemOption_label2' ).show().empty().append( achat_modem );
                    $( '#commandez' ).find( '#render_modemOption_value2' ).show().empty().append( val1 + '&euro;<small>/'+ mois +'</small>' );
                    $( '#commandez' ).find( '#render_frais_mensuels_value' ).empty().append( val2 + '&euro;' );
                    $( '#commandez' ).find( '#render_frais_unique_value' ).empty().append( val3 + '&euro;' );
                    $( '#commandez' ).find( '#container-achat-modem' ).empty().append('<div id="render_modemOption_label2" class="commandez-label">'+ achat_modem +'</div> <div class="droite helvetica_16_3e3d40 commandez-prix" id="render_modemOption_value2">99&euro;</div>');
                    $( '#center-window-footer' ).find( '#render_footer_mensuels_value' ).empty().append( val2 );
                    $( '#center-window-footer' ).find( '#render_footer_unique_value' ).empty().append( val3 );

                    $( '#center-window-frais' ).find( '#achat-modem-price' ).find( 'p' ).removeClass( 'helvetica_22_bebdbe' ).addClass( 'helvetica_22_3e3d40' );
                    $( '#center-window-frais' ).find( '#achat-modem-price2' ).find( 'p' ).removeClass( 'helvetica_12_bebdbe' );
                    $( '#center-window-frais' ).find( '#location-modem-price' ).find( 'p' ).removeClass( 'helvetica_20_3e3d40' ).addClass( 'helvetica_20_bebdbe' );
                    $( '#center-window-frais' ).find( '#location-modem-price2' ).find( 'p' ).addClass( 'helvetica_12_bebdbe' );
                }
                else
                {
                    $( '#commandez' ).find( '#render_modemOption_label2' ).hide();
                    $( '#commandez' ).find( '#render_modemOption_value2' ).hide();
                    $( '#commandez' ).find( '#render_modemOption_label' ).show().empty().append( location_modem );
                    $( '#commandez' ).find( '#render_modemOption_value' ).show().empty().append( val1 + '&euro;<small>/'+ mois +'</small>' );
                    $( '#commandez' ).find( '#container-achat-modem' ).empty();
                    $( '#commandez' ).find( '#render_frais_mensuels_value' ).empty().append( val2 + '&euro;' );
                    $( '#commandez' ).find( '#render_frais_unique_value' ).empty().append( val3 + '&euro;' );
                    $( '#center-window-footer' ).find( '#render_footer_mensuels_value' ).empty().append( val2 );
                    $( '#center-window-footer' ).find( '#render_footer_unique_value' ).empty().append( val3 );

                    $( '#center-window-frais' ).find( '#achat-modem-price' ).find( 'p' ).removeClass( 'helvetica_22_3e3d40' ).addClass( 'helvetica_22_bebdbe' );
                    $( '#center-window-frais' ).find( '#achat-modem-price2' ).find( 'p' ).addClass( 'helvetica_12_bebdbe' );
                    $( '#center-window-frais' ).find( '#location-modem-price' ).find( 'p' ).removeClass( 'helvetica_20_bebdbe' ).addClass( 'helvetica_20_3e3d40' );
                    $( '#center-window-frais' ).find( '#location-modem-price2' ).find( 'p' ).removeClass( 'helvetica_12_bebdbe' );
                }
            },
            
            _changeUrlCommandez : function( page , url )
            {
                $( page ).find( '.btn_commandez' ).attr("href", url);
            },

            _bindZipInput : function()
            {
                var v = $( 'input[name=zip]' ).val();
                $( 'input[name=zip]' ).click( function(){if( $( this ).val() == v )$( this ).val( '' );} );
                $( 'input[name=zip]' ).blur( function(){if( $( this ).val() == '' ){$( this ).val( v );}} );
            },

            _isNumeric : function(num)
            {
                var exp = new RegExp('^[0-9-.]+$','g');
                return exp.test(num);
            },

            _findShop : function()
            {
                var self = this;
                $( '#contact,#contact-petit,#contact-grand' ).find( 'input[type=submit]' ).click( function()
                {
                    var s = $( 'input[name=zip]' ).val();
                    if( s != '' && self._isNumeric( s ) && s.length == 4 ){window.open( 'http://www.voo.be/'+ language +'/revendeurs/trouvez-un-revendeur/?search-option=1&search='+ s +'&search-by=all' );}
                } );
            },

            _buildOverlayer : function( type )
            {
                $( '#overlayer_' + type ).mouseover( function(e){$( '#overlayer-' + type ).fadeIn();$( '#overlayer-' + type ).css( {left : $( this ).position().left - $( '#overlayer-' + type ).width() / 2 - 35,
                                                                                                            top : e.pageY - $( '#overlayer-' + type ).height() / 2 - 8} );} );
                $( '#overlayer_' + type ).mouseout( function(){$( '#overlayer-' + type ).hide()});
            },
            _buildOverlayerClass : function( type )
            {
                $( '.overlayer_' + type ).mouseover( function(e){$( '.overlayer-' + type ).fadeIn();$( '.overlayer-' + type ).css( {left : $( this ).position().left - $( '.overlayer-' + type ).width() / 2 - 35,
                                                                                                            top : e.pageY - $( '.overlayer-' + type ).height() / 2 - 8} );} );
                $( '.overlayer_' + type ).mouseout( function(){$( '.overlayer-' + type ).hide()});
            },

            homepage : function()
            {                
                $( '#content-home' ).find( '#tabs' ).tabs( {fx: {opacity: 'toggle'}} ).tabs( 'rotate' , 5000 ).tabs( 'select' , 0 );
                this._bindZipInput();
                this._findShop();
                
                /*
            	 * CHRONOMETRE
            	 */
            	var date1 = new Date("02/27/2012 23:59:00");
        	var mms_jour = 24 * 60 * 60 * 1000;
        	var mms_heure = 60 * 60 * 1000;
        	var mms_minute = 60 * 1000;
        	var mms_seconde = 1000;
        		
            	chrono = setInterval(refresh, 15000);
            	refresh();
            	
            	function refresh(){
            		decompte(date1,'#chrono-tabs-1');
            	}
            	
            	function decompte(cible,id){
            		var aujourdhui = new Date();
            		var change_j = -7;
            		var change_h = -7;
            		var change_m = -7;
            		var diff_mms = cible.getTime() - aujourdhui.getTime();
            		diff_jours = Math.floor(diff_mms / mms_jour);
            		diff_mms -= diff_jours * mms_jour;
            		diff_heures = Math.floor(diff_mms / mms_heure);
            		diff_mms -= diff_heures * mms_heure;
            		diff_minutes = Math.floor(diff_mms / mms_minute);
            		diff_mms -= diff_minutes * mms_minute;
            		var diff_secondes = Math.floor(diff_mms / mms_seconde);
            		
            		var jours = "00";
            		var heures = "00";
            		var minutes = "00";
            		var secondes = "00";
            		
            		if (diff_jours >= 0){
            			jours = getZero(diff_jours);
            			heures  = getZero(diff_heures);
            			minutes  = getZero(diff_minutes);
            			secondes = getZero(diff_secondes);
            		}
            		
            		$( id ).empty();
                	$( id ).append(jours + '<span class="helvetica_18_ffffff_bold">:</span>' + heures + '<span class="helvetica_18_ffffff_bold">:</span>' + minutes);
            	}
            	
            	function getZero(nValue){
            		var chaine = nValue + '';
            		while(chaine.length < 2) chaine = "0" + chaine;
            		return chaine;
            	}
            },

            net : function()
            {
                $( '#content_net' ).find( '#tabs-more' ).tabs();
            },

            net_un_peu : function()
            {
                $( '#content-net-peu' ).find( '#tabs-pack' ).tabs();
            },

            net_beaucoup : function()
            {
                $( '#content-net-beaucoup' ).find( '#tabs-pack' ).tabs();
            },

            net_passionnement : function()
            {
                $( '#content-net-passionnement' ).find( '#tabs-pack' ).tabs();
            },

            net_a_la_folie : function()
            {
                $( '#content-net-folie' ).find( '#tabs-pack' ).tabs();
            },

            net_illimite : function()
            {
                $( '#content-net-illimite' ).find( '#tabs-pack' ).tabs();
            },
            
            net_boost : function()
            {
                $( '#content-net-boost' ).find( '#tabs' ).tabs();
            },

            net_modem_wifi : function()
            {
            },

            packs_tv_net_tel : function()
            {
                this._buildOverlayer( 'tel' );
            },

            packs_tv_tel : function()
            {
                this._buildOverlayer( 'tel' );
            },

            packs_net_tel : function()
            {
                this._buildOverlayer( 'tel' );
            },

            packs_tv_net_un_peu : function(){ this._show_economie_infobulle(347); },
            packs_tv_net_beaucoup : function(){ this._show_economie_infobulle(347); },
            packs_tv_net_passionnement : function(){ this._show_economie_infobulle(347); },
            packs_tv_net_a_la_folie : function(){ this._show_economie_infobulle(347); },
            packs_net_tel_un_peu : function(){ this._show_economie_infobulle(347); },

            packs_tv_net_tel_un_peu : function(){ this._show_economie_infobulle(427); },
            packs_tv_net_tel_beaucoup : function(){ this._show_economie_infobulle(427); },
            packs_tv_net_tel_passionnement : function(){ this._show_economie_infobulle(427); },
            packs_tv_net_tel_a_la_folie : function(){ this._show_economie_infobulle(427); },

			_show_economie_infobulle : function( offset )
			{
				if ( $.browser.msie && $.browser.version < 8 )offset += 40;
				$('.bullet-pack-infobulle').mouseover(function()
				{ 				
					var positions = $(this).position();
					$('.packs-infofobulle').css( { marginTop: positions.top - offset , marginLeft: positions.left  - 180} );
					$('.packs-infofobulle').show(  ); 
				});
				$('.bullet-pack-infobulle').mouseout(function(){ $('.packs-infofobulle').hide(); });
			},

            packs_duo : function()
            {
                			
            },
            
            packs_trio : function()
            {
                
            },
            
            tv_analogique : function()
            {
                this._bindZipInput();
                this._findShop();
		$( document ).searchTv( {langue: language} );
            },

            tv_chaines : function()
            {
               
            },
            
            tv_landing : function()
            {
                $( '#content-tv' ).find( '#content-tv-left-voir' ).tabs();
            },

            tv_betv : function()
            {
                
            },

            tv_page_vod : function()
            {
            	
            },
            
            tv_page_numerique_interactive : function()
            {
                $( '#tv-page-numerique-interactive' ).find( '#tabs-pack' ).tabs();
            },
            
            tv_page_numerique_classique : function()
            {
                
            },
            
            tv_page_foot : function()
            {
                this._buildOverlayerClass( 'infos' );
                this._buildOverlayer( 'legal' );
                
                $( '#tv-foot-form-commandez' ).click(function(){
                	var linkValue = $('input[name="tv-foot-choix-packs"]:checked').val();
                	$( '#tv-foot-form-commandez' ).attr('href', linkValue);
                });
            },
            
            tv_page_details_prix : function()
            {
                
            },
            
            page_comparatif_generale : function()
            {
                this._buildOverlayer( 'legal' );
                
                $('.comparatif-overlayer').css('display','none');
                
                $('.comparatif-legal-tv').mouseover(function()
                {
                    $('#legal-tv').fadeIn();
                    var a = $('#legal-tv').innerHeight();
                    $('#legal-tv').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-tv').mouseout(function()
                {
                    $('#legal-tv').fadeOut();
                });
                
                $('.comparatif-legal-net').mouseover(function()
                {
                    $('#legal-net').fadeIn();
                    var a = $('#legal-net').innerHeight();
                    $('#legal-net').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-net').mouseout(function()
                {
                    $('#legal-net').fadeOut();
                });
                
                $('.comparatif-legal-tvnet').mouseover(function()
                {
                    $('#legal-tvnet').fadeIn();
                    var a = $('#legal-tvnet').innerHeight();
                    $('#legal-tvnet').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-tvnet').mouseout(function()
                {
                    $('#legal-tvnet').fadeOut();
                });
                
                $('.comparatif-legal-tvtel').mouseover(function()
                {
                    $('#legal-tvtel').fadeIn();
                    var a = $('#legal-tvtel').innerHeight();
                    $('#legal-tvtel').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-tvtel').mouseout(function()
                {
                    $('#legal-tvtel').fadeOut();
                });
                
                $('.comparatif-legal-telnet').mouseover(function()
                {
                    $('#legal-telnet').fadeIn();
                    var a = $('#legal-telnet').innerHeight();
                    $('#legal-telnet').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-telnet').mouseout(function()
                {
                    $('#legal-telnet').fadeOut();
                });
                
                $('.comparatif-legal-trio').mouseover(function()
                {
                    $('#legal-trio').fadeIn();
                    var a = $('#legal-trio').innerHeight();
                    $('#legal-trio').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal-trio').mouseout(function()
                {
                    $('#legal-trio').fadeOut();
                });
            },

            page_comparatif : function()
            {
                this._buildOverlayer( 'legal' );
                
                $('#comparatif-overlayer').css('display','none');
                
                $('.comparatif-legal').mouseover(function()
                {
                    $('#comparatif-overlayer').fadeIn();
                    var a = $('#comparatif-overlayer').innerHeight();
                    $('#comparatif-overlayer').css('margin-top','-' + (Number(a) + 20) + 'px' );
                });
                $('.comparatif-legal').mouseout(function()
                {
                    $('#comparatif-overlayer').fadeOut();
                });
            },
            
            page_comparatif_landing : function()
            {
                $('.alert p').hide();
                $('#content-left-choix').find('input[type=radio]').click(function()
                {
                    if($('#compare_un_tv').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/tv/comparatif-belgacom/');}

                    if($('#compare_un_net').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/internet/comparatif-belgacom/');}

                    $('#content-left-choix').find('input[type=checkbox]').removeAttr('checked');
                });
                $('#content-left-choix').find('input[type=checkbox]').click(function()
                {
                    $('.addUrl').attr('href', '#');
                    $('#content-left-choix').find('input[type=radio]').removeAttr('checked');

                    if($('#compara_multi_tv').attr('checked') && $('#compara_multi_net').attr('checked') && !$('#compara_multi_tel').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/pack/duo/comparatif-belgacom/');}

                    if($('#compara_multi_tv').attr('checked') && !$('#compara_multi_net').attr('checked') && $('#compara_multi_tel').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/pack/duo-tv-tel/comparatif-belgacom/');}

                    if(!$('#compara_multi_tv').attr('checked') && $('#compara_multi_net').attr('checked') && $('#compara_multi_tel').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/pack/duo-tel-net/comparatif-belgacom/');}

                    if($('#compara_multi_net').attr('checked') && $('#compara_multi_tel').attr('checked') && $('#compara_multi_tv').attr('checked')){$('.addUrl').attr('href', '/'+ language +'/pack/trio/comparatif-belgacom/');}

                    if(!$('#compara_multi_net').attr('checked') && !$('#compara_multi_tel').attr('checked') && !$('#compara_multi_tv').attr('checked')){$('.addUrl').attr('href', '#');}
                });
                $('.addUrl').click(function()
                {
                    if($(this).attr('href') == '#')
                    {
                        $('.alert p').show();
                    }
                });
            },
            
            promos_details : function()
            {
                /*
            	 * CHRONOMETRE
            	 */
            	var date1 = new Date("02/27/2012 23:59:00");
        	var mms_jour = 24 * 60 * 60 * 1000;
        	var mms_heure = 60 * 60 * 1000;
        	var mms_minute = 60 * 1000;
        	var mms_seconde = 1000;
        		
            	chrono = setInterval(refresh, 15000);
            	refresh();
            	
            	function refresh(){
            		decompte(date1,'#chrono-tabs-1');
            	}
            	
            	function decompte(cible,id){
            		var aujourdhui = new Date();
            		var change_j = -7;
            		var change_h = -7;
            		var change_m = -7;
            		var diff_mms = cible.getTime() - aujourdhui.getTime();
            		diff_jours = Math.floor(diff_mms / mms_jour);
            		diff_mms -= diff_jours * mms_jour;
            		diff_heures = Math.floor(diff_mms / mms_heure);
            		diff_mms -= diff_heures * mms_heure;
            		diff_minutes = Math.floor(diff_mms / mms_minute);
            		diff_mms -= diff_minutes * mms_minute;
            		var diff_secondes = Math.floor(diff_mms / mms_seconde);
            		
            		var jours = "00";
            		var heures = "00";
            		var minutes = "00";
            		var secondes = "00";
            		
            		if (diff_jours >= 0){
            			jours = getZero(diff_jours);
            			heures  = getZero(diff_heures);
            			minutes  = getZero(diff_minutes);
            			secondes = getZero(diff_secondes);
            		}
            		
            		$( id ).empty();
                	$( id ).append(jours + '<span class="helvetica_18_ffffff_bold">:</span>' + heures + '<span class="helvetica_18_ffffff_bold">:</span>' + minutes);
            	}
            	
            	function getZero(nValue){
            		var chaine = nValue + '';
            		while(chaine.length < 2) chaine = "0" + chaine;
            		return chaine;
            	}
            },

            promos : function()
            {
                /*
            	 * CHRONOMETRE
            	 */
            	var date1 = new Date("02/27/2012 23:59:00");
        	var mms_jour = 24 * 60 * 60 * 1000;
        	var mms_heure = 60 * 60 * 1000;
        	var mms_minute = 60 * 1000;
        	var mms_seconde = 1000;
        		
            	chrono = setInterval(refresh, 15000);
            	refresh();
            	
            	function refresh()
                {
                    decompte(date1,'#chrono-tabs-1');
                    decompte(date1,'#chrono-tabs-2');
                    decompte(date1,'#chrono-tabs-3');
            	}
            	
            	function decompte(cible,id){
            		var aujourdhui = new Date();
            		var change_j = -7;
            		var change_h = -7;
            		var change_m = -7;
            		var diff_mms = cible.getTime() - aujourdhui.getTime();
            		diff_jours = Math.floor(diff_mms / mms_jour);
            		diff_mms -= diff_jours * mms_jour;
            		diff_heures = Math.floor(diff_mms / mms_heure);
            		diff_mms -= diff_heures * mms_heure;
            		diff_minutes = Math.floor(diff_mms / mms_minute);
            		diff_mms -= diff_minutes * mms_minute;
            		var diff_secondes = Math.floor(diff_mms / mms_seconde);
            		
            		var jours = "00";
            		var heures = "00";
            		var minutes = "00";
            		var secondes = "00";
            		
            		if (diff_jours >= 0){
            			jours = getZero(diff_jours);
            			heures  = getZero(diff_heures);
            			minutes  = getZero(diff_minutes);
            			secondes = getZero(diff_secondes);
            		}
            		
            		$( id ).empty();
                	$( id ).append(jours + '<span class="helvetica_18_ffffff_bold">:</span>' + heures + '<span class="helvetica_18_ffffff_bold">:</span>' + minutes);
            	}
            	
            	function getZero(nValue){
            		var chaine = nValue + '';
            		while(chaine.length < 2) chaine = "0" + chaine;
            		return chaine;
            	}
                
            	var currentPosition = 0;
            	var slideWidth = 240;
            	var slides = $('.promos-autres-slideshow-slide');
        	var webdev = '/refonte/';
            	var src_puce = webdev + 'images/btn_point.png';
            	var src_puce_select = webdev + 'images/btn_point_select_promos.jpg';
            	var puces;
            	var numberOfSlides = slides.length;
            	var retour = true;
            	var tempsTransition = 500;
            	var lectureAutomatique = false;
            	var tempsAttente = 6000;
            	var chrono;
            	var interval;
            	var lectureEnCours = false;       

        	puces = createPuce();
            	
            	$('#promos-autres-slides-container').css('overflow', 'hidden');
            	slides
            		.wrapAll('<div id="slideInner"></div>')
            		.css({
            			'float' : 'left',
            			'width' : slideWidth
            			});
            	
            	$('#slideInner').css('width', slideWidth * numberOfSlides);
            	
            	manageControls(currentPosition);
    			manageControlsPuce(currentPosition);
            	
            	$('.control')
            		.bind('click', function(){
            			pause();
            			move(this);
            		});
            	
            	function move(target){
            		currentPosition = ($(target).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1;
        			
        			if(currentPosition == numberOfSlides && retour == false ){currentPosition--;pause();}
        			
        			manageControls(currentPosition);
        			manageControlsPuce(currentPosition);
        			
        			$('#slideInner').animate({
        				'marginLeft' : slideWidth*(-currentPosition)
        			},tempsTransition);
            	}
            	
            	function createPuce(){
            		for(var i = 0 ; i < numberOfSlides; i++)
                	{
                		$('#promos-autres-header-menu-ul').append('<li><span><img src="' + src_puce + '" alt="" class="ie6pngfix" /></span></li>');
                	}
            		return $('#promos-autres-header-menu-ul li');
            	}
            	
            	function manageControls(position){
            		if(numberOfSlides < 4){$('#leftControl').hide();$('#rightControl').hide();$('#promos-autres-header-menu-ul').hide();currentPosition = 0;pause();return;}
            		if(position == 0){$('#leftControl').hide()}else{$('#leftControl').show()}
            		if(position == numberOfSlides-3 && retour == false){$('#rightControl').hide()}else{$('#rightControl').show()}
            		//if(position == 0 && retour == true){ currentPosition = numberOfSlides-2; }
            		if(position == numberOfSlides-2 && retour == true){currentPosition = 0;$('#leftControl').hide();}
            	}
            	
            	function manageControlsPuce(position){
            		$(puces).find('span img').attr('src',src_puce);
            		$(puces[position]).find('span img').attr('src',src_puce_select);
            		$(puces[position+1]).find('span img').attr('src',src_puce_select);
            		$(puces[position+2]).find('span img').attr('src',src_puce_select);
            	}

            	if(lectureAutomatique == true){start();}
            	function start(){lectureEnCours = true;interval = setInterval(suivant, tempsAttente );}
            	function suivant(){move($('#promos-autres-slideshow-right span'));}
            	function pause(){lectureEnCours = false;clearInterval(interval);}
            	
                var aUrl = document.location.href.split( '#' );
                var nSelectedTab = ( aUrl[1] != undefined ) ? aUrl[1] : '';
                $( '#content-promos-v2' ).find( '#tabs' ).tabs( {fx: {opacity: 'toggle'}} ).tabs( 'rotate' , 3000 ).tabs( 'select' ,  ( nSelectedTab == '' ) ? 0 : Number( nSelectedTab.substring( nSelectedTab.length - 1 , nSelectedTab.length ) ) -1 );
                this._bindZipInput();
                this._findShop();
            }
        };

        language = params.language;
        application[ params.page ].apply( application );

        return this;
    };

} )( jQuery )
