﻿/*	copyright www.laRouteDuNet.fr 2009

    collecte le mail de l'utilisateur
    exemple: new Control.Rss(url,span)  où span est un container d'affichage (ou son ID)

	ATTENTION:  nécessite prototype.js, prototypeplus.js
*/
if(typeof Prototype == 'undefined')
  throw("mailcollector.js requires prototype.js library");

if(!Control) var Control = {};

Control.AutoMailCollector = Class.create();
//recherche liens avec class="mailcollector"
Control.AutoMailCollector.prototype = {
    initialize: function() {
        this.baseUrl=(typeof cogiteDatas == 'undefined')? document.location.href.substr(0,document.location.href.toLowerCase().indexOf('default.aspx')) :  cogiteDatas.baseUrl;
        this.monLien=null;
        Event.observe(window, 'load', this.load.bind(this), false);
    },
    load: function() {
        //la page est chargée
        var elms=document.getElementsByTagAndClassName('A','mailcollector');
        for (var x=0,length=elms.length;x<length;x++) {
            Event.observe(elms[x], 'click', this.mcClick.bindAsEventListener(this), false);
        }
    },
    mcClick: function(e) {
        this.monLien=Event.element(e);                   //element cliqué
        while (this.monLien.nodeName.toLowerCase()!='a') {   //lien cliqué
            this.monLien=this.monLien.parentNode;
        }
        var usage=this.monLien.getAttribute('cogite:usage') || 'Téléchargement';
        var email=prompt(usage+'\nMerci de saisir votre adresse Mail','');
        if (email!=null && email!='') {
            Event.stop(e);
            //post email
            var url=this.baseUrl+'BO/frontoffice/mailcollector.aspx?MAIL='+email+'&USAGE='+usage;
		    var pars = '';
		    var xp=url.indexOf('?');
		    if (xp!=-1) {
		        pars=url.substr(xp+1);
		        url=url.substr(0,xp);
		    }
            new Ajax.Request(
					url, 
					{method: 'get', parameters: pars, onFailure: this.ajaxFailure.bind(this), onSuccess: this.mcResponse.bind(this)}
					);
            
        }
        else {
            Event.stop(e);
        }
    },
    getDocumentElement: function(n) {
        //retourne le documentElement du flux xml (n=request.responseXML au 1er appel)
        var ret=null;
        switch (n.nodeType) {
        case Node.DOCUMENT_NODE:
            var cn=n.childNodes;
            for (x=0;x<cn.length;x++) {
                ret=this.getDocumentElement(cn[x]);
                if (ret!=null)
                    break;
            }
            break;
        case Node.ELEMENT_NODE:
            ret=n;
            break;
        }
        return ret;
    },
    ajaxFailure:function(request) {
        alert('Erreur AJAX mail collector: '+request.status+' '+request.statusText);
    },
    mcResponse:function(request) {
        var docElm=this.getDocumentElement(request.responseXML);
        var cn=docElm.childNodes;
        var n=cn.length;
        var ctr=0;
        for (var x=0;x<n;x++) {
            var elm=cn[x];
            if (elm.nodeType==Node.ELEMENT_NODE && elm.nodeName=='status') {
                ctr++;
                alert(elm.getAttribute('value'));
            }
        }
        if (ctr==0) {
            this.mcExec();
        }
    },
    mcExec:function() {
        //chargemement page
        window.location=''+this.monLien.href;
        this.monLien=null;
    }
}
var AutoMailCollector=new Control.AutoMailCollector();
