/*------------------------------------------------------------------------------
    JS Document (https://developer.mozilla.org/en/JavaScript)

    project:    SFR Fixe
    created:    2009-04
    author:     sanjus chrand

    summary:    CONSTANTES
                UTILITIES
                WINDOW.ONLOAD
				TABS
				IMG SHOW/HIDE
				TARIFS 

----------------------------------------------------------------------------- */

/*  =CONSTANTES
----------------------------------------------------------------------------- */
var d = document;
var w = window;
var debug = null;
window.config = {
    debug : false,
    focus : "focus",
    tabs  : {
		tabs1 : {
			id          : '#tabs-1',
			zones       : '.tab',
			menu        : '#tabs-1-nav',
			active      : 'active',
			container   : '#tabs-1-content',
			linkParent  : 'li',
			scrollToTop : true
		},
		tabs2 : {
			id          : '#tabs-2',
			zones       : '.tab',
			menu        : '#tabs-2-nav',
			active      : 'active',
			container   : '#tabs-2-content',
			linkParent  : 'li',
			scrollToTop : true
		}
	}
};


/*  =UTILITIES
----------------------------------------------------------------------------- */
/* getElementsByClassName when not supported */
var matchAll = function() {
    var node = arguments[1] || document;
    var elms = node.getElementsByTagName('*');
    var className = arguments[0];
    if (d.getElementsByClassName) {
        return node.getElementsByClassName(className);
    }
    else {
        var regExp = new RegExp('\\b'+className+'\\b');
        var array = [];
        for (var i = 0; i < elms.length; i++) {
            var current = elms[i];
            if (current.className.match(regExp)) {
                array.push(current);
            }
        }
        return array;
    }
};

/* logs into a textarea for IE and in the console for others */
var debuger = function() {
    if (window.config.debug && !debug && typeof console == 'undefined') {
        var parent = d.getElementsByTagName('div')[0];
        var body   = d.getElementsByTagName('body')[0];
        var debug  = d.createElement('textarea');
        debug.setAttribute('rows', 10);
        debug.setAttribute('cols', 80);
        debug.setAttribute('name', 'debug');
        body.insertBefore(debug, parent);
        window.debug = debug;
    }
    else if (window.config.debug && console) {
        log('Debug mode : on');        
    }
};
var log = function(x) {
    if (typeof console != 'undefined')
        console.log(x);
    else if (debug) {
        debug.value += x + '\n';
        debug.scrollTop = debug.scrollHeight;
    }
};


/*  =WINDOW.ONLOAD
----------------------------------------------------------------------------- */
jQuery(document).ready(function() {
    
	var tabs1  = w.config.tabs.tabs1;
	var tabs2  = w.config.tabs.tabs2;
	
	// Functions
    debuger();              // build a log console for IE
	tabs(tabs1);            // launches tabs
	tabs(tabs2);            // launches tabs
	
	collapsor();
	pricor();
	
	abonnerFormValidation();
	
	loadAnimFlash();
	
    // Classes
    
    
    // jQuery crappy stuff


    if (jQuery.browser.msie && jQuery.browser.version == 6) {
        // IE 6 FUNCTIONS ONLY
        
    }

});

function abonnerFormValidation() {
	var checkLocalPhoneLine = function(number) {
	    if (!number)
	        return false;
	    var r = new RegExp("^[0]{1}[1-5]{1}[0-9]{8}$", "i");
	    if (r.test(number))
	        return true;
	    else
	        return false;
	};

	jQuery("#phone-line-ready").submit(function() {
		if (checkLocalPhoneLine(jQuery("#local-phone-line")[0].value)) {
			return true;
		} else {
			alert("Merci de remplir correctement les champs requis\nLe numero de telephone saisi n'est pas correct\n");
			return false;
		}
	});
	jQuery("#phone-line-ready2").submit(function() {
		if (checkLocalPhoneLine(jQuery("#local-phone-line2")[0].value)) {
			return true;
		} else {
			alert("Merci de remplir correctement les champs requis\nLe numero de telephone saisi n'est pas correct\n");
			return false;
		}
	});
}

/* TABS
------------------------------------------------------------------------------*/
function tabs(config) {
    var elements   = null;
    var active     = config.active;
    var linkParent = config.linkParent;
    var scroll     = config.scrollToTop;
    var id         = jQuery(config.id);
    var zones      = id.find(config.zones);
    var menu       = id.find(config.menu);
    var container  = id.find(config.container);
    function launch() {
        var setStyles = function() {
            var containerHeight = container.css("height");
            var focus           = jQuery("." + w.config.focus).length;
            zones.css('height', containerHeight);
            zones.css('overflow','auto');
            container.css('overflow','hidden');
            zones.hide();
            if(!focus) {
                id.addClass(w.config.focus);
            }
        }();
        var handleBehaviours = function() {
            var idExists = id.find(w.location.hash);
            var isActive   = menu.find('.' + active);
            var zoneActive = jQuery(isActive.find('a').attr('href'));
            if (w.location.hash && idExists.length) {
                menu.find(linkParent).removeClass(active);
                idExists.show();
                idExists.attr("tabindex","-1");
                idExists.focus();
                idExists.removeAttr("tabindex");
                jQuery('a[href='+ w.location.hash +']').parents(linkParent).addClass(active);
                if (scroll) {
                    w.scrollTo(0,0);
                }
            }
            else if (isActive.length) {
                zoneActive.show();
            }
            else {
                zones.eq(0).show();
                menu.find(linkParent).eq(0).addClass(active);
            }
        }();
        var handleEvents = function() {
            var tabs = menu.find(linkParent).find('a');
            tabs.click(function(){
                jQuery("." + w.config.focus).removeClass(w.config.focus);
                id.addClass(w.config.focus);
                var zoneActive = jQuery(jQuery(this).attr("href"));
                menu.find(linkParent).removeClass(active);
                jQuery(this).parents(linkParent).addClass(active);
                zones.hide();
                zoneActive.show();
                zoneActive.attr("tabindex","-1");
                //zoneActive.focus();
                zoneActive.removeAttr("tabindex");
                return false;
            });
            tabs.focus(function(e) {
                jQuery("." + w.config.focus).removeClass(w.config.focus);
                id.addClass(w.config.focus);
            });
        }();
        var handleKeyboard = function() {
            jQuery(d).keyup(function(e) {
                var isActive = jQuery(config.id + '.' + w.config.focus).find(config.menu).find('.' + active);
                if (isActive.length) {
                    var zoneActive = jQuery(isActive.find('a').attr('href'));
                    if (e.keyCode == 39 || e.keyCode == 37) {
                        var position  = null;
                        var afterZone = null;
                        var action = function(position,move) {
                             if (isActive[move]().length) {
                                afterZone = jQuery(isActive[move]().children("a").attr("href"));
                                isActive[move]().addClass(active);
                            }
                            else {
                                afterZone = zones.eq(position);
                                menu.children(linkParent).eq(position).addClass(active);
                            }
                        };
                        zones.hide();
                        switch(e.keyCode)
                        {
                            case 39: // right arrow
                                var position = 0;
                                action(position,"next")
                                break;
                            case 37: //  left arrow 
                                var position = zones.length - 1;
                                action(position,"prev")
                                break;                        
                        }
                        isActive.removeClass(active);
                        afterZone.show();
                        afterZone.attr("tabindex","-1");
                        afterZone.focus();
                        afterZone.removeAttr("tabindex");
                    }
                }
            });
        }();
    }
    var init = function() {
        function verifyHTMLStruct() {
            var error   = false;
            var message = '\n## Erreur(s) sur `' + config.id + '`\n\n';
            if (zones.length != menu.find('a').length) {
                if (error == false && w.config.debug == true) {
                    log(message);
                }
                error = true;
                if (w.config.debug == true) {
                    log(' - `' + config.id + '` ne comporte pas autant d\'onglets que de zones ; ');
                }
            }
            if (menu.find('.' + active).length > 1) {
                if (error == false && w.config.debug == true) {
                    log(message);
                }
                error = true;
                if (w.config.debug == true) {
                    log(' - `' + config.id + '` comporte plus d\'un onglet actif ; ');
                }
            }
            for(var i=0 ; i<zones.length ; i++) {
                if(jQuery((menu.find('a').eq(i).attr("href"))).length != 1) {
                    if (error == false && w.config.debug == true) {
                        log(message);
                    }
                    error = true;
                    if (w.config.debug == true) {
                        log(' - `' + config.id + '` n\'associe pas correctement les onglets et les zones ; ');
                    }
                }
            }
            if(error) {
                menu.find(linkParent).removeClass(active);
                if (w.config.debug == true) {
                    log('\nMerci de corriger le HTML et/ou le JS sur `' + config.id + '`.');
                }
                return(false);
            }
            else {
                return(true);
            }
        }
        if (verifyHTMLStruct()) {
            launch();
        }
    }(); 
}

/* IMG SHOW/HIDE
------------------------------------------------------------------------------*/

var collapsor = function(){
	
	jQuery('.offer-details').hide();
	jQuery('.offer-details-0').show();
	
	jQuery('.offer-items-1 ul li').each(function(){
		
		// image preload
		var myImg = document.createElement('img');
		myImg.setAttribute("src", jQuery(this).children("a:eq(0)").children("img:eq(0)").attr("src").split("_off.png")[0] + "_on.png");
		
		jQuery(this).hover(function(e){
			
			jQuery(this).children("a:eq(0)").children("img:eq(0)").attr("src", jQuery(this).children("a:eq(0)").children("img:eq(0)").attr("src").split("_off.png")[0] + "_on.png");
			jQuery('.offer-details').hide();
			jQuery('.'+jQuery(this).children("a:eq(0)").children("img:eq(0)").attr('class').split('call_')[1]).show();
		}, function(){
			jQuery(this).children("a:eq(0)").children("img:eq(0)").attr("src", jQuery(this).children("a:eq(0)").children("img:eq(0)").attr("src").split("_on.png")[0] + "_off.png");
			jQuery('.offer-details').hide();
			jQuery('.offer-details-0').show();
			
		});
		
	});
	
}

/* TARIFS - cette fonction singe un plug-in jQuery 
------------------------------------------------------------------------------*/
var pricor = function(){
		
	var valClick = true;
	
	jQuery("#myList").before('<p class="select-emul-title">S&eacute;lectionner un pays</p>');
	jQuery("#myList").before('<div class="select-emul-options"></div>');
	var myList = jQuery("#myList").clone();
	jQuery("#myList").remove();
	myList.prependTo(".select-emul-options");
	
	jQuery("#myList li").each(function(){
		
		var myCountry = jQuery(this).html().split(" : ")[0];
		var myFixe = jQuery(this).html().split(" : ")[1].split("euro/minute vers les fixes - ")[0];
		var myMobile = jQuery(this).html().split(" : ")[1].split("euro/minute vers les fixes - ")[1].split("euro/minute vers les mobiles")[0];
		jQuery(this).html(myCountry);
		
		jQuery(this).click(function(){
			jQuery(".select-emul-title").html(myCountry);
			jQuery("#fixeCost").html(myFixe);
			jQuery("#mobileCost").html(myMobile);
			valClick = true;
			jQuery(".select-emul-options").hide();
		})
		
	});
	
	jQuery('#myPriceList').after('<div class="fixedPrices">Vers les fixes<br /><span id="fixeCost"></span><span>&euro; /minute</span></div><div class="fixedPrices">Vers les mobiles<br /><span id="mobileCost"></span><span>&euro; /minute</span></div>')
	
	jQuery(".select-emul-options").hide();
	
	jQuery(".select-emul-title").click(function(){
			if (valClick){
				valClick = false;
				jQuery(".select-emul-options").show();
			}
			else{
				valClick = true;
				jQuery(".select-emul-options").hide();
			}
			
		});
	
}

