/**
 * JavaScript for 'Une saison de rugby' - date: 2007-09-12
 */
var defs, kick, usdr;

//////////

defs = {

    // nodes
    atmos   : null,
    spot1   : null,
    spot2   : null,
    shade   : null,
    grid    : null,
    field   : null,
    ref     : null,
    viewer  : null,
    clip    : null,
    shut    : null,
    // x
    x       : null,
    x0      : new Image(),
    x1      : new Image(),
    // areas
    Areas   : [],
    areanum : null,
    // bool
    usedom  : null,
    awkbug  : null, // to solve a bug where AppleWebKit-based browsers keep playing removed clips
    // int
    controlr: null,
    fullvol : null, // volume setting: 100% on first page entry, then 30%


    Keys    : [ "a01", "a02", "a03", "a04", "a05", "a06", "a07", "a08", "a09",
                "a10", "a11", "a12", "a13", "a15", "a16", "a17", "a18", "a19",
                "b01", "b02", "b03", "b04", "b05", "b06", "b07", "b08", "b09",
                "b10", "b11", "b12", "b13", "b15", "b16", "b17", "b18", "b19",
                "m01", "m02", "m03", "m04", "m05"],
    Mp3s    : [ "placide","erdos","serge-grand","medina","arhanchet","vergnaud","pelletier","celerier","fourcade",
                "coussy","ducher","colinet","karim","ilpide","deffarges","alain-mazouny","mimi","roussel",
                "placide-b","erdos-b","alain-grand","medina-b","arhanchet-b","vergnaud-b","pelletier-b","celerier-b","fourcade-b",
                "coussy-b","ducher-b","colinet-b","cathy","ilpide-b","deffarges-b","christine","jacky","deguilhem",
                "semeny","bauxis","potier","lafont","squires"],

    initialize: function() {

        if ( typeof document.getElementsByTagName === "undefined" ) {return;}
        
        defs.atmos  = document.getElementById("atmos");
        defs.spot1  = document.getElementById("spot1");
        defs.spot2  = document.getElementById("spot2");
        defs.shade  = document.getElementById("shade");
        defs.grid   = document.getElementById("grid");
        defs.field  = document.getElementById("field");
        defs.ref    = document.getElementById("ref");
        defs.viewer = document.getElementById("viewer");
        defs.clip   = document.getElementById("clip");
        defs.shut   = document.getElementById("shut");
        
        // x rollover
        defs.x      = document.getElementById("x");
        defs.x0.src = "img/x0.gif";
        defs.x1.src = "img/x1.gif";
        

        // sets ref position
        defs.field.style.marginLeft  = "auto";
        defs.field.style.marginRight = "auto";

        defs.usedom   = ( navigator.userAgent && /MSIE/i.test(navigator.userAgent) ) ? false : true;
        defs.awkbug   = ( navigator.vendor && /Apple/i.test(navigator.vendor) ) ? true : false;
        
        defs.controlr = defs.getControllerHeight();

        defs.Areas    = document.getElementsByTagName("area");
        defs.areanum  = defs.Areas.length;

        if ( defs.usedom ) {
            for ( var i = 0; i < defs.areanum; i++ ) {
                defs.Areas[i].onmouseover = usdr.setHilite;
                defs.Areas[i].onclick     = usdr.setClip;
                defs.Areas[i].onmouseout  = usdr.removeHilite;
            }
            defs.shut.onclick = usdr.hideClip; // x
            
        } else {
            for ( var i = 0; i < defs.areanum; i++ ) {
                defs.Areas[i].onmouseover = usdr.setHilite;
                defs.Areas[i].onclick     = usdr.setClipIe;
                defs.Areas[i].onmouseout  = usdr.removeHilite;
            }
            defs.shut.onclick = usdr.hideClipIe; // x
        }

        // x rollover
        defs.x.onmouseover = usdr.xFadeIn;
        defs.x.onmouseout  = usdr.xFadeOut;
        
        // sets background sound
        defs.fullvol = true;
        defs.setBgSoundOn();
        
        window.onresize = usdr.initialize;

        usdr.initialize();
    },
    
    // flag: (def|saf|mac|win)
    getControllerHeight: function() {
        var h;
        if ( navigator.platform && /Mac/i.test(navigator.platform) ) {
            h = 16; // QuickTime
        } else {
            h = 44; // Windows Media
        }
        return h;
    },

    setBgSoundOn: function() {

        if ( defs.awkbug ) {return;} // AppleWebKit bug
        
        var mp3;
        mp3 = (defs.fullvol) ? "mp3/match.mp3" : "mp3/match-low.mp3";

        if ( defs.usedom ) {
            var obj, p1, p2, p3;
            obj = document.createElement("object");
            defs.atmos.appendChild(obj);
            obj.type = "audio/mpeg";
            obj.data = mp3;
            obj.width  = "0";
            obj.height = "0";

            p1  = document.createElement("param");
            obj.appendChild(p1);
            p1.name  = "src";
            p1.value = mp3;

            p2  = document.createElement("param");
            obj.appendChild(p2);
            p2.name  = "autoplay";
            p2.value = "true";

            p3  = document.createElement("param");
            obj.appendChild(p3);
            p3.name  = "autostart";
            p3.value = "true";            
        } else {
            defs.atmos.innerHTML = '<object type="audio\/mpeg" data="' + mp3 + '" width="0" height="0">' +
                '<param name="src" value="' + mp3 + '">' +
                '<param name="autostart" value="true">' +
                '<\/object>';
        }
        defs.atmos.style.display = "block";
        defs.fullvol = false;
        return;
    },

    setBgSoundOff: function() {
        if ( defs.atmos.hasChildNodes() ) {
            defs.atmos.removeChild(defs.atmos.firstChild);
        }
        defs.atmos.style.display = "none";
        return;
    }
};

//////////

kick = {
    
    kick  : null,
    shoot : null,
    usedom: null,
    
    initialize : function() {
        
        kick.usedom   = ( navigator.userAgent && /MSIE/i.test(navigator.userAgent) ) ? false : true;
        
        kick.kick  = document.getElementById("kick");
        kick.shoot = document.getElementById("shoot");
        
        kick.loadKickSound("false");        
        kick.shoot.onclick = kick.playKickSound;
        return false;
    },
    
    loadKickSound: function(playmode) {

        var mp3 = "mp3/shoot.mp3";
        
        if( kick.usedom ) {
            var obj, p1, p2, p3;
            
            obj = document.createElement("object");
            kick.kick.appendChild(obj);
            obj.type   = "audio/mpeg";
            obj.data   = mp3;
            obj.width  = "0";
            obj.height = "0";
            
            p1  = document.createElement("param");
            obj.appendChild(p1);
            p1.name  = "src";
            p1.value = mp3;

            p2  = document.createElement("param");
            obj.appendChild(p2);
            p2.name  = "autoplay";
            p2.value = playmode;

            p3  = document.createElement("param");
            obj.appendChild(p3);
            p3.name  = "autostart";
            p3.value = playmode;
        } else {
            kick.kick.innerHTML = '<object type="audio\/mpeg" data="' + mp3 + '" width="0" height="0">' +
            '<param name="src" value="' + mp3 + '">' +
            '<param name="autostart" value="' + playmode + '">' +
            '<param name="playcount" value="' + playmode + '">' +
            '<\/object>';
        }
    },

    playKickSound: function() {
        
        if ( kick.usedom ) {
            kick.kick.removeChild(kick.kick.firstChild);
        } else {
            kick.kick.innerHTML = "";
        }
        kick.loadKickSound("true");
        kick.kick.style.display = "block";
        setTimeout('location.href = "0.html";', 2000);
        return false;
    }
};

//////////

usdr = {
 
    RefPos  : [],
    WinDim  : [],
    
    initialize: function() {
        
        // sets grid position [0:left, 1:top]
        usdr.RefPos = usdr.getRefPosition(defs.ref);
        defs.grid.style.left = usdr.RefPos[0] + "px";
        defs.grid.style.top  = usdr.RefPos[1] + "px";

        // gets window size
        usdr.WinDim = usdr.getWindowSize();
        
        // sets viewer position [0:width, 1:height]
        defs.viewer.style.left  = Math.round((usdr.WinDim[0] - 450)/2) + "px";
        defs.viewer.style.top   = Math.round((usdr.WinDim[1] - (18 + 450 + defs.controlr))/2) + "px";
        
        // sets shade height
        defs.shade.style.height = usdr.WinDim[1] + "px";        
    },

    getRefPosition: function(obj) {
    
        var curleft, curtop;
        curleft = curtop = 0;

        if (obj.offsetParent) {
            curleft = obj.offsetLeft;
            curtop  = obj.offsetTop;
            
            while (obj = obj.offsetParent) {
                curleft += obj.offsetLeft;
                curtop  += obj.offsetTop;
            }
        }
        return [curleft,curtop];
    },

    getWindowSize: function() {
    
        var w, h;

        if (self.innerHeight) // all but IE
        {
            w = self.innerWidth;
            h = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight) // IE6 Strict Mode
        {
            w = document.documentElement.clientWidth;
            h = document.documentElement.clientHeight;
        }
        else if (document.body) // other IE
        {
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }
        return [w, h];
    },

    setHilite: function(e) {
    
        usdr.stopEvent(e);
        
        var letter, sym, color1, color2, symspot, coords1, coords2;

        letter = (this.id).slice(0, 1);
        
        switch ( letter ) {
            case "a":
            sym    = "b";
            color1 = "#cac7cb";
            color2 = "#c9a909"; // grey - yellow
            break;
            case "b":
            sym    = "a";
            color1 = "#c9a909";
            color2 = "#cac7cb"; // yellow - grey
            break;
            case "m":
            default :
            sym    = null;
            color1 = "#70b900"; // green
            break;
        }

        coords1 = (this.coords).split(",");  // area: (left1,top1,left2,top2)
        for ( var i = 0; i < 4; i++ ) {
            coords1[i] = parseInt(coords1[i], 10);
        }
    
        // spot1  
        defs.spot1.style.left    = (usdr.RefPos[0] + coords1[0]) + "px";
        defs.spot1.style.top     = (usdr.RefPos[1] + coords1[1]) + "px";
        defs.spot1.style.width   = (coords1[2] - coords1[0]) + "px";
        defs.spot1.style.height  = (coords1[3] - coords1[1]) + "px";
        defs.spot1.style.color   = color1;
        defs.spot1.innerHTML     = this.title.replace(":", "<br>");
        defs.spot1.style.display = "block";

        if ( sym ) {            
            symspot = document.getElementById(sym + (this.id).slice(1));
            coords2 = symspot.coords.split(",");        
            for ( var i = 0; i < 4; i++ ) {
                coords2[i] = parseInt(coords2[i], 10);
            }
            // spot2
            defs.spot2.style.left    = (usdr.RefPos[0] + coords2[0]) + "px";
            defs.spot2.style.top     = (usdr.RefPos[1] + coords2[1]) + "px";
            defs.spot2.style.width   = (coords2[2] - coords2[0]) + "px";
            defs.spot2.style.height  = (coords2[3] - coords2[1]) + "px";
            defs.spot2.style.color   = color2;
            defs.spot2.innerHTML     = symspot.title.replace(":", "<br>");
            defs.spot2.style.display = "block";
        }
    },
    
    removeHilite: function(e) {
        usdr.stopEvent(e);

        defs.spot1.style.display = "none";
        defs.spot2.style.display = "none";
    },

    getMp3: function(id) {
    
        var mp3;        
        for ( var i = 0; i < defs.areanum; i++ ) {
            if ( id == defs.Keys[i] ) {
                mp3 = defs.Mp3s[i];
                break;
            }
        }
        return "mp3/" + mp3 + ".mp3";
    },

    setClip: function(e) {
        usdr.stopEvent(e);
        defs.setBgSoundOff();
        
        var img, mp3, obj, p1, p2, p3, a, txt;
        
        img  = document.createElement("img");
        defs.clip.appendChild(img);
        
        img.src = "img/" + this.id + ".jpg";
        img.alt = document.getElementById(this.id).title;
        img.width  = "450";
        img.height = "450";

        mp3 = usdr.getMp3(this.id);
        
        obj = document.createElement("object");
        defs.clip.appendChild(obj);
        obj.type = "audio/mpeg";
        obj.data = mp3;
        obj.width  = "450";
        obj.height = defs.controlr;
        
        p1  = document.createElement("param");
        obj.appendChild(p1);
        p1.name  = "src";
        p1.value = mp3;

        p2  = document.createElement("param");
        obj.appendChild(p2);
        p2.name  = "autoplay";
        p2.value = "true";
        
        p3  = document.createElement("param");
        obj.appendChild(p3);
        p3.name  = "autostart";
        p3.value = "true";

        a   = document.createElement("a");
        obj.appendChild(a);
        a.href = mp3;
        txt = document.createTextNode("Cliquez ici pour écouter le clip");
        a.appendChild(txt);

        defs.clip.firstChild.onclick = usdr.hideClip; // click on image
        defs.shade.style.display  = "block";
        defs.viewer.style.display = "block";
        return false;
    },

    hideClip: function(e) {
        usdr.stopEvent(e);

        if ( defs.awkbug ) {location.reload();} // solves AppleWebKit bug

        while ( defs.clip.hasChildNodes() ) {
            defs.clip.removeChild(defs.clip.lastChild);
        }
        defs.viewer.style.display = "none";        
        defs.shade.style.display  = "none";
        defs.setBgSoundOn();
        return false;
    },

    setClipIe: function(e) {
        usdr.stopEvent(e);
        defs.setBgSoundOff();

        defs.clip.innerHTML = '<iframe name="IECase" frameborder="0" scrolling="no" border="0" ' +
            'marginwidth="0" marginheight="0" width="450" height="' + (defs.controlr+450) +
            '" src="' + this.id + '.html"></iframe>';

        defs.shade.style.display  = "block";
        defs.viewer.style.display = "block";        
        return false;
    },

    hideClipIe: function(e) {
        usdr.stopEvent(e);

        defs.clip.innerHTML = "";
        defs.viewer.style.display = "none";        
        defs.shade.style.display  = "none";
        defs.setBgSoundOn();
        return false;
    },

    xFadeIn: function(e) {
        usdr.stopEvent(e);
        defs.x.src = defs.x1.src;
    },
    
    xFadeOut: function(e) {
        usdr.stopEvent(e);
        defs.x.src = defs.x0.src;
    },
        
	stopEvent: function(e) {
		if( !e ) {e = window.event; e.cancelBubble = true;}
		if( e.stopPropagation ) {e.stopPropagation();}
	}
};
