﻿var xml_file = "/quizz/xml/quizz.xml";
var xsl_file = "/quizz/xsl/template_{{LANG}}.xsl";
var end_file_FR = "/fr/validation/";
var end_file_NL = "/nl/valid/";
var valeur_reponse_bonne = "OUI";
var form_file = "/quizz/traitement.aspx";
var msg_error_1_FR = "Veuillez saisir une réponse numérique à la question subsidiaire.";
var msg_error_2_FR = "Veuillez renseigner les champs obligatoires.";
var msg_error_3_FR = "Veuillez saisir une adresse mail valide.";
var msg_error_4_FR = "Cette adresse mail est déjà utilisée pour participer à ce concours.";
var msg_error_1_NL = "Geef een numerieke antwoord op de sub.";
var msg_error_2_NL = "Vul alle verplichte velden in.";
var msg_error_3_NL = "Geef een geldig e-mailadres.";
var msg_error_4_NL = "Dit e-mailadres wordt al gebruikt om deel te nemen aan deze wedstrijd.";
var lang = "";

var userAgent = navigator.userAgent.toLowerCase();

var browser_chrome = /chrome/.test(userAgent);
var browser_safari = /webkit/.test(userAgent) && !/chrome/.test(userAgent);
var browser_opera = /opera/.test(userAgent);
var browser_msie = /msie/.test(userAgent) && !/opera/.test(userAgent);
var browser_mozilla = /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent);
var array_play = new Array();
var play_hidden = "";
var nIndexMauvaiseRep = 0;

function init()
{
    if(getCook("etape") != "") {
        if(lang == ""){
            if(getCook("langue") != ""){
                lang = getCook("langue");
            }
            else {
                lang = "FR";
            }
        }
    }
    else {
        setCook("etape", "1");
        lang = "FR";
    }
    
    displayResult();
    preloader();
    
    switch(getCook("etape")) {
        case "1":
            document.getElementById("div_home").style.display = "block";
            document.getElementById("div_questions").style.display = "none";
            document.getElementById("div_form").style.display = "none";
            break;
        case "2":
            document.getElementById("div_home").style.display = "none";
            document.getElementById("div_questions").style.display = "block";
            document.getElementById("div_form").style.display = "none";
            for(var i = 0; i < array_play.length; i++) {
                obj = document.getElementById(array_play[i]);
                img1 = obj.parentNode.firstChild;
                img2 = obj.firstChild;
                val_x = Math.round((img1.width - img2.width) / 2) + findPosX(img1);
                val_y = Math.round((img1.height - img2.height) / 2) + findPosY(img1);
                obj.style.left = val_x + "px";
                obj.style.top = val_y + "px";
            }
            break;
        case "3":
            document.getElementById("div_home").style.display = "none";
            document.getElementById("div_questions").style.display = "none";
            document.getElementById("div_form").style.display = "block";
            break;
    }
}
function preloader() 
{
    var fileArray = new Array(); 
    var date = new Date()
    var randomnumber = date.getTime();
    _responseXML = loadXMLDoc("http://" + window.location.hostname + xml_file + "?" + randomnumber);
    _root = _responseXML.documentElement;
    fillArray(fileArray, _root);
    MM_p = new Array();
    for(var i = 0; i <= fileArray.length - 1; i++)
    {
        _img = new Image();
        _img.src = fileArray[i];
        _img.style.display = "none";
        document.body.appendChild(_img);
    }
}
function fillArray(_array, _node) {
    if(/(image_question|image_survol|son_survol|son_clique|son_fin)/.test(_node.nodeName.toLowerCase())) {
        if(browser_msie) {
            _nodeContent = _node.text;
        }
        else {
            _nodeContent = _node.textContent;
        }
        if(/(\.png|\.bmp|\.jpg|\.jpeg|\.gif|\.mp3)/.test(_nodeContent.toLowerCase())) {
            if(_array.join().toLowerCase().indexOf(_nodeContent.toLowerCase()) == -1){
                _array.push(_nodeContent);
            }
        }
    }
    for(var i = 0; i < _node.childNodes.length; i++) {
        fillArray(_array, _node.childNodes[i]);
    }
}
function quizzActif() {
    var _return = true;
    try {
        var date = new Date()
        var randomnumber = date.getTime();
        _responseXML = loadXMLDoc("http://" + window.location.hostname + xml_file + "?" + randomnumber);
        _root = _responseXML.documentElement;
        if(browser_msie) {
            _DDD = _root.childNodes[1].text;
            _DDF = _root.childNodes[2].text;
        }
        else {
            _DDD = _root.childNodes[3].textContent;
            _DDF = _root.childNodes[5].textContent;
        }
        _DDD = _DDD.split("/");
        _DDF = _DDF.split("/");
        _DDD = new Date(_DDD[2],_DDD[1] - 1,_DDD[0],0,0,0);
        _DDF = new Date(_DDF[2],_DDF[1] - 1,_DDF[0],23,59,59);
        _NOW = new Date();
        if(_NOW < _DDD || _NOW > _DDF){
            _return = false
        }
    }
    catch(e) {
        _return = false;
    }
    return _return;
}
function loadXMLDoc(dname)
{
    if (window.XMLHttpRequest)
    {
        xhttp = new XMLHttpRequest();
    }
    else
    {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET", dname, false);
    xhttp.send("");
    return xhttp.responseXML;
}
function sendData(dname, sdata)
{
    if (window.XMLHttpRequest)
    {
        xhttp = new XMLHttpRequest();
    }
    else
    {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("POST", dname, false);
    xhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xhttp.send(sdata);
    return xhttp.responseText;
}
function displayResult()
{
    var randomnumber = Math.floor(Math.random() * 10001);
    xml = loadXMLDoc("http://" + window.location.hostname + xml_file + "?" + randomnumber);
    xsl = loadXMLDoc("http://" + window.location.hostname + xsl_file.replace(/{{LANG}}/, lang) + "?" + randomnumber);
    // code for IE
    if (window.ActiveXObject)
    {
        ex = xml.transformNode(xsl);
        document.getElementById("content").innerHTML = ex;
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
    {
        xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(xsl);
        resultDocument = xsltProcessor.transformToFragment(xml, document);
        document.getElementById("content").innerHTML = "";
        document.getElementById("content").appendChild(resultDocument);
    }
}
function validate() {
    var _valid = true;
    var _container = document.getElementById("div_questions");
    var _elements = _container.getElementsByTagName("input");
    var _questionID = new Array();
    var _questionValue = new Array();
    for(var i = 0; i < _elements.length; i++) {
        _element = _elements[i];
        if(_element.type == "radio") {
            if(_questionID.join().indexOf(_element.name) == -1){
                _questionID.push(_element.name);
            }
            if(_questionValue[_element.name] != true) {
                _questionValue[_element.name] = false;
            }
            if( _element.checked) {
                _questionValue[_element.name] = true;
                if(_element.value != valeur_reponse_bonne) {
                    _valid = false;
                }
            }
        }
    }
    for(var i = 0; i < _questionID.length; i++) {
        if(!_questionValue[_questionID[i]]) {
            _valid = false;
        }
    }
    return _valid;
}
function clique(file, end_file) {
    j = 0;
    _bad_div = document.getElementById("div_questions_faux_" + j);
    while(_bad_div != null){
        _bad_div.style.display = "none";
        j++;
        _bad_div = document.getElementById("div_questions_faux_" + j);
    }
    
    _div = document.getElementById("div_questions_fin");
    _div_2 = document.getElementById("div_questions_faux_" + nIndexMauvaiseRep);
    
    if(validate()) {
        if(end_file != '') {
            setAndPlay(end_file);
        }
        _div.style.display = "block";
        _div_2.style.display = "none";
    }
    else {
        if(file != '') {
            setAndPlay(file);
        }
        _div.style.display = "none";
        _count = 0;
        _container = document.getElementById("div_questions");
        _elements = _container.getElementsByTagName("input");
        for(var i = 0; i < _elements.length; i++) {
            _element = _elements[i];
            if(_element.type == "radio") {
                if( _element.checked) {
                    _count++;
                }
            }
        }
        if(_count == 3){
            _div_2.style.display = "block";
            nIndexMauvaiseRep++;
            if(nIndexMauvaiseRep >= j)
            {
                nIndexMauvaiseRep = 0;
            }
        }
        else {
            _div_2.style.display = "none";
        }
    }
}
function check_form() {
    _div_alerte = document.getElementById("field_alerte_msg");
    _div_alerte.innerHTML = "";
    if(trim(document.getElementById("txt_reponse").value) == "" || isNaN(trim(document.getElementById("txt_reponse").value))) {
        if(_div_alerte.innerHTML != "") {
            _div_alerte.innerHTML = _div_alerte.innerHTML + "<br\/>";
        }
        _div_alerte.innerHTML = _div_alerte.innerHTML + eval("msg_error_1_" + lang);
    }
    if(trim(document.getElementById("txt_mail").value) == "" || trim(document.getElementById("txt_prenom").value) == "" || trim(document.getElementById("txt_nom").value) == "" || trim(document.getElementById("txt_cp").value) == "" || (trim(document.getElementById("txt_tel").value) == "" && trim(document.getElementById("txt_gsm").value) == "")) {
        if(_div_alerte.innerHTML != "") {
            _div_alerte.innerHTML = _div_alerte.innerHTML + "<br\/>";
        }
        _div_alerte.innerHTML = _div_alerte.innerHTML + eval("msg_error_2_" + lang);
    }
    if(trim(document.getElementById("txt_mail").value) != "" && !validEmail(trim(document.getElementById("txt_mail").value))) {
        if(_div_alerte.innerHTML != "") {
            _div_alerte.innerHTML = _div_alerte.innerHTML + "<br\/>";
        }
        _div_alerte.innerHTML = _div_alerte.innerHTML + eval("msg_error_3_" + lang);
    }
    return (_div_alerte.innerHTML == "");
}
function inscription() {
    if(check_form()) {

        _radio_data = "";
        _div_radio = document.getElementById("field_radio");
        for(var k = 0; k < _div_radio.childNodes.length; k++){
            _lbl_radio = _div_radio.childNodes[k];
            _input_radio = _lbl_radio.firstChild;
            if(_input_radio.checked){
                _radio_data = _input_radio.value;
                break;
            }
        }
        
        _data =   "txt_id=" + document.getElementById("txt_id").value 
                + "&txt_reponse=" + document.getElementById("txt_reponse").value 
                + "&txt_prenom=" + document.getElementById("txt_prenom").value
                + "&txt_nom=" + document.getElementById("txt_nom").value
                + "&txt_mail=" + document.getElementById("txt_mail").value
                + "&txt_cp=" + document.getElementById("txt_cp").value
                + "&txt_tel=" + document.getElementById("txt_tel").value
                + "&txt_gsm=" + document.getElementById("txt_gsm").value
                + "&chk_news=" + document.getElementById("chk_news").checked
                + "&rad_connu=" + _radio_data;

        _response = sendData("http://" + window.location.hostname + form_file, _data);
        switch(_response) {
            case "OK":
                setCook("etape", "");
                document.location.href = "http://" + window.location.hostname + eval("end_file_" + lang);
                break;
            case "NOK":
                document.getElementById("field_alerte_msg").innerHTML = eval("msg_error_4_" + lang);
                break;
        }
    }
    if(document.getElementById("field_alerte_msg").innerHTML != "") {
        document.getElementById("field_alerte").style.display = "block";
    }
    else {
        document.getElementById("field_alerte").style.display = "none";
    }
}
function setImage(_file, _container) {
    document.getElementById(_container).src = _file;
}
function setCook(nom, valeur) {
    document.cookie = nom + "=" + escape(valeur);
}
function getCook(nom) {
    deb = document.cookie.indexOf(nom + "=");
    if (deb >= 0) {
        deb += nom.length + 1;
        fin = document.cookie.indexOf(";", deb);
        if (fin < 0) {
            fin = document.cookie.length; 
        }
        return unescape(document.cookie.substring(deb, fin));
    }
    return "";
}
function alert_close() {
    document.getElementById("field_alerte").style.display = "none";
}
function trim (str) {
	var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}
function validEmail(str) {
    ws = new RegExp("\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
    return ws.test(str);
}
function select_lang(_LANG) {
    setCook("langue", _LANG);
    setCook("etape", "2");
    
    lang = _LANG;
    init();
}
function continu_clique() {
    setCook("etape", "3");
    document.getElementById("div_questions").style.display = "none";
    document.getElementById("div_form").style.display = "block";
}
function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
    while(1) 
    {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
        break;
        obj = obj.offsetParent;
    }
    else if(obj.x)
    curleft += obj.x;
    return curleft;
}
function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
    while(1)
    {
        curtop += obj.offsetTop;
        if(!obj.offsetParent)
        break;
        obj = obj.offsetParent;
    }
    else if(obj.y)
    curtop += obj.y;
    return curtop;
}
function divPlayerLoad(id) {
    array_play.push(id);
}

// fonction du player
var myListener = new Object();
var isPlaying = false;
myListener.onInit = function()
{
    this.position = 0;
};
myListener.onUpdate = function()
{    
    isPlaying = (this.isPlaying == "true"); 
    if(!isPlaying && play_hidden != "") {
        document.getElementById(play_hidden).style.display = "block";
        play_hidden = "";
    }
}; 

function getFlashObject()
{
    return document.getElementById("player");
}
function play(file)
{
    getFlashObject().SetVariable("method:setUrl", file);
    getFlashObject().SetVariable("method:play", "");
    getFlashObject().SetVariable("enabled", "true");
}
function pause()
{
    getFlashObject().SetVariable("method:pause", "");
}
function stop()
{
    getFlashObject().SetVariable("method:stop", "");
}
function setPosition(position)
{
    getFlashObject().SetVariable("method:setPosition", position);
}
function setVolume(volume)
{
    getFlashObject().SetVariable("method:setVolume", volume);
}
function setAndPlay(file) {
    if(isPlaying && play_hidden != "") {
        document.getElementById(play_hidden).style.display = "block";
    }
    play_hidden = "";
    file = "http://" + window.location.hostname + file;
    play(file);
}
function divPlayerClick(file, id) {
    if(isPlaying && play_hidden != "") {
        document.getElementById(play_hidden).style.display = "block";
    }
    play_hidden = id;
    document.getElementById(id).style.display = "none";
    file = "http://" + window.location.hostname + file;
    play(file);
}
