/*------------------------------------------------------------------------------
    JS Document

    project:    Project
    created:    2009-01-12
    author:     sanjus

    summary:    CONSTANTES
                UTILITIES
                WINDOW.ONLOAD
                hasJS
				menu
				forms
				toggle
				popin
----------------------------------------------------------------------------- */

/*  =CONSTANTES
----------------------------------------------------------------------------- */
var d = document;
var w = window;
var popin = null;
window.config = {
    debug : false,
	popinHandling : {
        links : 'popin',
        popin : 'popin-window',
        inner : 'popin-inner',
        background : 'popin-background',
        content : 'popin-content',
        closebt : '/extension/gds/design/gds_user/images/boutons/bt_fermer.png',
        closeClass : 'popin-close',
        closeTitle : 'Fermer la fenêtre'
    },
	ajaxLoader : {
        alt : 'Chargement en cours ...',
        //src : 'img/pictos/ajax-loader.gif',
        error : 'Une erreur s\'est produite lors du chargement de vos données'
    }
};


/*  =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;
    }
    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(){
    
	// Classes
    popin = new PopinHandling();    // Handles popins
	
	// jQuery crappy stuff
	if($("#flash-home").length){
		$("#flash-home").flash({
			width:525,
			height:410,
			wmode:"transparent",
			src: homeFlashPath,
			//src:"flash/GDS_as3_moduleVideo.swf",
            //flashvars: { xmlpath: 'flash/xml/FR/video.xml' }
            flashvars: { xmlpath: homeXmlPath }

        },{
				version:8
			}
		);
	}
	
	if($("#flash-corps").length){
		$("#flash-corps").flash({
			width:534,
			height:380,
			wmode:"transparent",
			src: corpsFlashPath,
            flashvars: { fv_xml: corpsXmlPath }

        },{
				version:8
			}
		);
	}
	
	if($("#flash-hospital").length){
		$("#flash-hospital").flash({
			width:525,
			height:370,
			wmode:"transparent",
			src:"flash/flash_etablissement.swf"},{
				version:8
			}
		);
	}
});


/*  =hasJS
----------------------------------------------------------------------------- */
var hasJS = function() {
    var htmlTag = d.getElementsByTagName('html')[0];
    htmlTag.className = (htmlTag.className + ' ' || '') + 'hasJS';
};

/*  =popin
----------------------------------------------------------------------------- */
var PopinHandling = function() {
    var links = w.config.popinHandling.links;
    var items = matchAll(links);

    var popinName = w.config.popinHandling.popin;
    var popinWindow = matchAll(popinName)[0];
    var popinInnerName = w.config.popinHandling.inner;
    var popinBg = w.config.popinHandling.background;
    var popinContent = w.config.popinHandling.content;
    var popinClose = w.config.popinHandling.closebt;
    
    var ajaxLoaderSrc = w.config.ajaxLoader.src;
    var ajaxLoaderAlt = w.config.ajaxLoader.alt;
    var ajaxError     = w.config.ajaxLoader.error;
    
    var destroyPopin = function() {
        var popinWindow = matchAll(popinName)[0];
        var popinBg = matchAll(w.config.popinHandling.background)[0];
        d.body.removeChild(popinWindow);
        d.body.removeChild(popinBg);
    };
    
    var erasePopin = function() {
        var popinWindow = matchAll(popinName)[0];
        var inner = matchAll(popinInnerName, popinWindow);
        popinWindow.removeChild(inner);
    };
    
    var createPopin = function() {
        if (typeof popinWindow == 'undefined') {
            var popin = d.createElement('div');
            var background = d.createElement('div');
            var first = d.getElementsByTagName('div')[0];
            
            background.className = popinBg;
            popin.className = popinName;
            d.body.insertBefore(popin, first);
            d.body.insertBefore(background, popin);
        }
        else {
            erasePopin();
        }
    };
    
    var loadContent = function(href) {
        var popin = jQuery('.'+popinName);
        var inner = ' .'+popinInnerName;
        var content = '.'+popinContent;
        jQuery(inner).append = '<div class="'+popinInnerName+'"><img src="'+ajaxLoaderSrc+'" alt="'+ajaxLoaderAlt+'" /></div>';
        
        popin.load(href + inner, function(){
            var height = matchAll(popinContent)[0].clientHeight + 'px';
            setTimeout(function(){
                var halfWidth  = parseInt(jQuery(inner)[0].offsetWidth / 2, 10);
                jQuery(inner).css('left','-'+halfWidth + 'px');
                setCloseButton();
                popin.css('visibility', 'visible');
            },0);
        });
        popin.css('visibility', 'hidden');
        
    };
    
    var setCloseButton = function() {
        var img = new Image();
        var inner = matchAll(popinInnerName)[0];
        var content = matchAll(popinContent)[0];
        img.src = popinClose;
        img.className = w.config.popinHandling.closeClass;
        img.title = w.config.popinHandling.closeTitle;
        img.onclick = function() {
            closePopin();
        };
        inner.insertBefore(img, content);
    };
    
    var openPopin = function(href) {
        createPopin();
        loadContent(href);
    };
    
    var closePopin = function() {
        destroyPopin();
    };
    
    var init = function() {
        jQuery('.'+links).click(function(){
            openPopin(jQuery(this).attr('href'));
            return false;
        });
        
        jQuery(document).keyup(function(e){
            if (e.keyCode == 27) {
                if (jQuery('.'+popinBg)[0]) {
                    closePopin();
                }
            }
        });
    }();
    
    return {
        call : function(href) {
            openPopin(href);
        },
        close : function(){
            closePopin();
        }
    };
};

function open_popup(nom_de_la_page, nom_interne_de_la_fenetre){
	window.open (nom_de_la_page, nom_interne_de_la_fenetre, config='height=600, width=800, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, directories=no, status=no');
}	

