﻿///<reference path="mootools-1.2.js" />
var prepareLinks = new Class({
    initialize: function(imageURLLinks) {
        this.c = $("content");
        this.curRequestPage = new Request.HTML({ "url": "/ajax/getPage", "update": $("contenttxt") });
        this.curRequestMenu = new Request.HTML({ "url": "/ajax/getMenu", "update": $("navcontent") });
        this.curRequestImages = new Request.JSON({ "url": "/ajax/getImages" });
        this.curRequestSubImages = new Request({ "url": "/ajax/getsubImage" });
        this.curRequestSubImages.addEvent('success', this._changesubImages.bindWithEvent(this));
        this.curRequestImages.addEvent('success', this._changeImages.bindWithEvent(this));

        var group = new Group(this.curRequestPage, this.curRequestMenu, this.curRequestImages, this.curRequestSubImages);
        group.addEvent('success', this._replaceContent.bindWithEvent(this));
        this.fichesTechniques = new fichesTechniques();
        this.formulaires = new formulaires();
        new cartes();
        this._prepareLinks();
        this.imgManager = new imageManager(imageURLLinks, "img", 0);
    },
    _prepareLinks: function() {
        this.c.getElements("a[rel^=a]").each(function(linkElt) {
            linkElt.set("href", "javascript:void(0)");
            linkElt.addEvent("click", this._preparesubLinks.pass(linkElt, this));
        }, this);
        this.fichesTechniques.reinit();
        this.formulaires.reinit();
    },
    _preparesubLinks: function(linkElt) {
        var relArr = linkElt.get("rel").split("|");
        if (relArr[1] != "" && $(relArr[1])) this._highlightSub($(relArr[1]));
        this._cancelReq();
        $("contenttxt").set("html", "<img src='/assets/ajax-loader.gif' />");
        this.curRequestPage.post({ 'link': relArr[2] });
        this.curRequestMenu.post({ 'link': relArr[2] });
        this.curRequestImages.post({ 'link': relArr[2] });
        this.curRequestSubImages.post({ 'link': relArr[2] });
    },
    _highlightSub: function(linkElt) {
        var Dotclass = linkElt.getParent().get("id") == "subsubmenu" ? ["active", "dot"] : ["active"];
        linkElt.getParent().getElements(linkElt.get('tag')).each(function(curlelt) {
            Dotclass.each(function(clas) { curlelt.removeClass(clas) });
        });
        Dotclass.each(function(clas) { linkElt.addClass(clas) });
    },
    _replaceContent: function(a, b, c, d) {
        this._prepareLinks();
    },
    _changeImages: function(responseJSON, responseText) {
        if (responseJSON) {
            this.imgManager.loadNewData(responseJSON);
        }
    },
    _changesubImages: function(a) {
        if ($chk(a)) {
            $("submenu").setStyle("background-image", "url(" + a + ")");
        }
    },
    _cancelReq: function() {
        this.curRequestPage.cancel();
        this.curRequestMenu.cancel();
    }
});
var imageManager = new Class({
    initialize: function(urlList, contid, slidenum) {
        if (!$(contid)) return;
        if (!urlList) urlList = [{ img: "/assets/goutteThemeBack.jpg", legend: "", copy: ""}];
        $("imglegend").empty();
        this.c = $chk($(contid).getElement("div.diap")) ?
             $(contid).getElement("div.diap") : new Element("div", { "class": "diap", "styles": { "cursor": "pointer", "width": "100%", "height": "100%"} }).inject($(contid));
        var imagesArr = urlList.map(function(item, index) {
            return item.img;
        });
        var legendsStrArr = urlList.map(function(item, index) {
            return item.legend;
        });
        this.copyArr = urlList.map(function(item, index) {
            return item.copy;
        });

        this.s = new Slideshow(this.c, imagesArr, { height: 310, width: 398, delay: 4000, controller: true, slide: slidenum, resize: false, center: false, loader: { 'animate': ['/css/loader-#.png', 36]} });

        this.legendsArr = [];
        legendsStrArr.each(function(htmlStr) {
            elt = new Element("div", { "html": htmlStr }).inject($("imglegend"));
            this.legendsArr.push(elt.setStyles({ "opacity": 0,
                "position": "absolute"
            }));
        }, this);

        this.s.addEvent("start", function(ev) {
            var num = (this.s.slide + this.s.data.images.length) % this.s.data.images.length;
            if (this.legendsArr[num]) {
                for (var i = 0; i < this.legendsArr.length; i++) {
                    this.legendsArr[i].fade("out");
                }
                this.legendsArr[num].fade("in");
            }
            if (this.copyArr[num]) {
                if (!this.tips) this.tips = new Tips($('img'), { "className": "toolCont" });
                this.tips.fill(this.tips.tip, this.copyArr[num]);
                this.tips.attach($('img'));
                $('img').store('tip:title', this.copyArr[num]);

            } else {
                if (this.tips) {
                    this.tips.detach($('img'));
                    this.tips.hide();
                }
            }
        } .bind(this));

        return;
    },
    loadNewData: function(urlList) {
        var imagesArr = urlList.map(function(item, index) {
            return item.img;
        });
        legendsStrArr = urlList.map(function(item, index) {
            return item.legend;
        });
        this.copyArr = urlList.map(function(item, index) {
            return item.copy;
        });

        for (var i = 0; i < this.legendsArr.length; i++) {
            this.legendsArr[i].fade("out");
            (function(elt) { elt.destroy(); }).delay(1000, this, this.legendsArr[i]);
        };

        this.legendsArr = [];
        legendsStrArr.each(function(htmlStr) {
            elt = new Element("div", { "html": htmlStr }).inject($("imglegend"));
            this.legendsArr.push(elt.setStyles({ "opacity": 0,
                "position": "absolute"
            }));
        }, this);

        this.s.load(imagesArr);
        (function() { this.s.load(imagesArr) }).delay(100, this);
    }
});


var imageSlider = new Class({
    options: {
        "imageWidth": 800,
        "imagePadding": 10
    },
    Binds: ["_next", "_prev", "goTo", "_garbageUnused", "_initSize"],
    initialize: function(imgArr, imgLgl, curPos) {
        this.imageContainer = new Element("div", { "id": "bandeauxImage" }).inject($("inner"));
        var imgArrClone = $A(imgArr);
        var imgLglClone = $A(imgLgl);
        imgArrClone.unshift(imgArr[imgArr.length - 1]);
        imgLglClone.unshift(imgLgl[imgLgl.length - 1]);
        imgArrClone.unshift(imgArr[imgArr.length - 2]);
        imgLglClone.unshift(imgLgl[imgLgl.length - 2]);
        imgArrClone.push(imgArr[0]);
        imgLglClone.push(imgLgl[0]);
        imgArrClone.push(imgArr[1]);
        imgLglClone.push(imgLgl[1]);
        curPos = curPos + 2;
        this.ImageArray = imgArrClone;
        this.LegendArray = imgLglClone;
        this.curindex = -1;
        if (!curPos || curPos > this.ImageArray.length) curPos = 1;
        var paddingleft = Math.max(0, ($("inner").getSize().x - this.options.imageWidth - 2 * this.options.imagePadding) / 2).round();
        this.ImageArray.each(function(imgElt, ind) {
            new Element("div", { "class": "diapImg", "styles": { "margin": "0 " + ((ind == this.ImageArray.length - 1 ? paddingleft + this.options.imagePadding : 0)) + "px" + " 0 " + ((ind == 0 ? paddingleft : 0) + this.options.imagePadding) + "px"} }).inject(this.imageContainer);
        }, this);
        this.controlLeft = new Element("div", { "id": "controlLeft",
            "styles": { "width": paddingleft + "px" },
            "events": { "click": this._prev }
        }).inject($("inner"));

        new Element("div", { "id": "arrayRight" }).inject(this.controlLeft)
        this.controlRight = new Element("div", { "id": "controlRight",
            "styles": { "width": paddingleft + "px" },
            "events": { "click": this._next }
        }).inject($("inner"));
        new Element("div", { "id": "arrayLeft" }).inject(this.controlRight)
        this.slideFx = new Fx.Scroll(this.imageContainer, { "transition": Fx.Transitions.linear });
        this.slideFx.addEvent("complete", this._garbageUnused)
        this.goTo(curPos);
        window.addEvent("resize", this._initSize);
    },
    _initSize: function() {
        var paddingleft = Math.max(0, ($("inner").getSize().x - this.options.imageWidth - 2 * this.options.imagePadding) / 2).round();
        this.imageContainer.getElements("div.diapImg").each(function(divElt, ind) {
            divElt.setStyle("margin", "0 " + ((ind == this.ImageArray.length - 1 ? paddingleft + this.options.imagePadding : 0)) + "px" + " 0 " + ((ind == 0 ? paddingleft : 0) + this.options.imagePadding) + "px");
        }, this);
        this.controlLeft.setStyle("width", paddingleft + "px");
        this.controlRight.setStyle("width", paddingleft + "px");

    },
    goTo: function(index) {
        index = (index + this.ImageArray.length) % (this.ImageArray.length); /* index.limit(0,this.ImageArray.length - 1);*/
        if (this.curindex == index) return;
        this.curindex = index;
        this.slideFx.cancel();
        this.slideFx.start(index * (this.options.imageWidth + this.options.imagePadding), 0);

    },
    _next: function() {
        if ((this.curindex + 1) >= (this.ImageArray.length - 2)) {
            this.slideFx.set((this.ImageArray.length - (this.curindex + 2)) * (this.options.imageWidth + this.options.imagePadding), 0);
            this.curindex = this.ImageArray.length - (this.curindex + 2);
        }
        this.goTo(this.curindex + 1);
    },
    _prev: function() {
        if ((this.curindex - 1) < 2) {
            this.slideFx.set((this.ImageArray.length - this.curindex) * (this.options.imageWidth + this.options.imagePadding), 0);
            this.curindex = this.ImageArray.length - Math.abs(this.curindex);
        }
        this.goTo(this.curindex - 1);
    },
    _garbageUnused: function() {
        this.imageContainer.getElements("div.diapImg").each(function(divElt, ind) {
            this._loadImageInDiv(this._isUsed(ind), divElt, this.ImageArray[ind]);
        }, this);
        this._getLegend(this.LegendArray[this.curindex]);
    },
    _isUsed: function(ind) {
        return Math.abs(this.curindex - ind) <= 2 || ((this.curindex - this.ImageArray.length) <= 2 && ind <= 2) || (this.curindex <= 4 && ind >= (this.ImageArray.length - 4));
    },
    _loadImageInDiv: function(bool, div, imgSrc) {
        if (!bool) div.empty();
        else if (!div.getElement("img")) new Element("img", { "src": imgSrc }).inject(div);
    },
    _getLegend: function(legendStr) {
        new Element("div", { "html": legendStr }).inject($("legendContainer").empty());
    }
});


var fichesTechniques = new Class({
    options: {
        "imageWidth": 800,
        "imagePadding": 10
    },
    Binds: ["_showFiche", "_killFiche", "_prepareLinkClose", "_showImg", "_nextImg"],
    initialize: function() {
        this.ficheContainer = new Element("div", { "class": "ficheTechnique", "styles": { "width": 0} }).inject($("content"));
        this.ficheContainerFx = new Fx.Tween(this.ficheContainer, { "property": "width" });
        this.curRequestFiche = new Request.HTML({ "url": "/ajax/getFiche", "update": this.ficheContainer });
        this.curRequestFiche.addEvent("complete", this._prepareLinkClose);
        this.curImg = 0;
    },
    reinit: function() {
        if (!$("contenttxt")) return;
        $("contenttxt").getElements("a").each(
            function(aElt) {
                var myURI = new URI(aElt.get("href"));
                var absHREF = myURI.get("directory");
                if (absHREF != "/fiches/") return;
                var parsed = aElt.get("href");
                if (parsed.indexOf("http://") >= 0) {
                    parsed = parsed.replace(/^http\:\/\/.[^\/]+/, "");
                }
                var rel = parsed.replace("/fiches/", "");
                aElt.set("href", "#");
                aElt.addEvent("click", this._showFiche.pass(rel));
            }
        , this);
    },
    _showFiche: function(lbl) {
        this.ficheContainerFx.cancel();
        this.ficheContainerFx.start(801);
        this.ficheContainer.empty();
        this._fillFiche(lbl);

    },
    _prepareLinkClose: function() {
        this.ficheContainer.getElement(".ficheRetourAusite").addEvent("click", this._killFiche);
        if (this.ficheContainer.getElement("div.imageLegend")) {
            this.ficheContainer.getElement("div.imageLegend").getElements("a").each(function(aElt, num) {
                if ($chk(aElt.get("rel"))) {
                    var arr = aElt.get("rel").split("|")
                    aElt.set("href", "javascript:void(0)")
                    aElt.addEvent("click", this._showImg.pass([arr[0], arr[1], arr[2], num]));
                } else {
                    aElt.set("href", "javascript:void(0)")
                    aElt.addEvent("click", this._nextImg);
                }
            }, this);
            this.curImg = 0;
        }
        if (this.ficheContainer.getElement("div.ficheImg")) {

            var copyr = $('ficheImg').getElement("img").get("alt");
            if ($chk(copyr)) {
                $('ficheImg').getElement("img").set("alt","");
                if (!this.tips) this.tips = new Tips($('ficheImg'), { "className": "toolCont" });
                this.tips.attach($('ficheImg'));
                $('ficheImg').store('tip:title', copyr);
            } else {
                if (this.tips) {
                    this.tips.detach($('ficheImg'));
                    this.tips.hide();
                }
            }
        }
    },
    _showImg: function(src, legend, copyr, num) {
        if ($chk(copyr)) {
            if (!this.tips) this.tips = new Tips($('ficheImg'), { "className": "toolCont" });
            this.tips.attach($('ficheImg'));
            $('ficheImg').store('tip:title', copyr);
        } else {
            if (this.tips) {
                this.tips.detach($('ficheImg'));
                this.tips.hide();
            }
        }
        new Element("img", { src: src }).inject($("ficheImg").empty());
        this.ficheContainer.getElement(".ficheLegend").set("html", legend);
        this._makeactive(num);
    },
    _makeactive: function(numactive) {
        this.curImg = numactive;
        this.ficheContainer.getElement("div.imageLegend").getElements("a").each(function(aElt, num) {
            if (num == numactive) aElt.addClass("active");
            else aElt.removeClass("active");
        }, this)
    },
    _nextImg: function() {
        var next = false;
        this.ficheContainer.getElement("div.imageLegend").getElements("a").each(function(aElt, num) {
            if (next) aElt.fireEvent("click");
            if (num == this.curImg) next = true;
        }, this)
    },
    _fillFiche: function(lbl) {
        this.curRequestFiche.cancel();
        this.curRequestFiche.post({ "fiche": lbl });
    },
    _killFiche: function() {
        this.curRequestFiche.cancel();
        this.ficheContainerFx.cancel();
        this.ficheContainerFx.start(0);
        this.ficheContainer.empty();

    }
});
var formulaires = new Class({
    options: {
        "imageWidth": 800,
        "imagePadding": 10
    },
    Binds: ["_showFiche", "_killFiche", "_prepareLinkClose", "_sendFiche"],
    initialize: function() {
        this.ficheContainer = new Element("div", { "class": "formulaire", "styles": { "width": 0} }).inject($("content"));
        this.ficheContainerFx = new Fx.Tween(this.ficheContainer, { "property": "width" });
        this.curRequestFiche = new Request.HTML({ "url": "/ajax/getFormulaire", "update": this.ficheContainer });
        this.curRequestSend = new Request.HTML();
        this.curRequestFiche.addEvent("complete", this._prepareLinkClose);
    },
    reinit: function() {
        if (!$("contenttxt")) return;
        $("contenttxt").getElements("a").each(
            function(aElt) {
                var myURI = new URI(aElt.get("href"));
                var absHREF = myURI.get("directory");
                if (absHREF != "/formulaires/") return;
                var parsed = aElt.get("href");
                if (parsed.indexOf("http://") >= 0) {
                    parsed = parsed.replace(/^http\:\/\/.[^\/]+/, "");
                }
                var rel = parsed.replace("/formulaires/", "");

                aElt.set("href", "#");
                aElt.addEvent("click", this._showFiche.pass(rel));
            }
        , this);
    },
    _showFiche: function(lbl) {
        this.ficheContainerFx.cancel();
        this.ficheContainerFx.start(801);
        this.ficheContainer.empty();
        this._fillFiche(lbl);
    },
    _prepareLinkClose: function() {
        this.ficheContainer.getElement(".formRetourAusite").addEvent("click", this._killFiche);
        this.ficheContainer.getElement(".formenvoyerLink").addEvent("click", this._sendFiche);
        this.ficheContainer.get('send', { "url": "/ajax/sendFormulaire.aspx?type=" + this.ficheContainer.getElement(".formLeft").get("rel") }).addEvents({ "onComplete": this._formSent.bindWithEvent(this) });
    },
    _formSent: function(a) {
        new Element("div", { "class": "formSent",
            "html": a,
            "events": { "click": this._killFiche }
        }).inject(this.ficheContainer);
    },
    _sendFiche: function() {
        var isGood = true;
        if ($("lastname").get("value").test(/^$/)) { $("lastname").addClass("error"); isGood = false; }
        if ($("firstname").get("value").test(/^$/)) { $("firstname").addClass("error"); isGood = false; }
        if (!$("mail").get("value").test(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i)) { $("mail").addClass("error"); isGood = false; }
        if (isGood) this.ficheContainer.send();
    },
    _validate: function() {

    },
    _fillFiche: function(lbl) {
        this.curRequestFiche.cancel();
        this.curRequestFiche.post({ "fiche": lbl });
    },
    _killFiche: function() {
        this.curRequestFiche.cancel();
        this.ficheContainerFx.cancel();
        this.ficheContainerFx.start(0);
        this.ficheContainer.empty();
    }
});

var cartes = new Class({
    initialize: function() {
        if (!$("contenttxt")) return;
        $("contenttxt").getElements("a").each(
            function(aElt) {
                var myURI = new URI(aElt.get("href"));
                var absHREF = myURI.get("directory");
                if (absHREF != "/cartes/") return;
                aElt.addEvent("click", this._showPopup);
                aElt.set("href", "javascript:void(0)");
            }
        , this);
    },
    _showPopup: function() {
        window.open("/cartes/", "popCarte", "menubar=0,resizable=1,width=640,height=500")
    }
});
var introSlides = new Class({
    options: {
        imgWidth: 200
    },
    initialize: function() {
        this.cont = $("diap");
        this.current = -1;
        var width = this.cont.getScrollSize().x;
        this.numperpage = width / this.options.imgWidth + 1;
        this.data = ["/imgtest/1.jpg", "/imgtest/2.jpg", "/imgtest/3.jpg", "/imgtest/4.jpg", "/imgtest/5.jpg", "/imgtest/1.jpg", "/imgtest/2.jpg", "/imgtest/3.jpg", "/imgtest/4.jpg", "/imgtest/5.jpg"];
        this.datacont = new Element("div", { "class": "carousel", "styles": { "left": 0} }).inject(this.cont);
        this.datacontFx = new Fx.Tween(this.datacont, { "property": "left", "duration": this.data.length * 9000, transition: Fx.Transitions.linear });
        this._fillContainers();
        this.datacontFx.addEvent("complete", this._reinit.bind(this));
        this.datacontFx.start(-this.data.length * this.options.imgWidth);
    },
    _fillContainers: function() {
        for (var i = 0; i < this.data.length + this.numperpage; i++) {
            var div1 = new Element("div", { "class": "imgDiapJava", "styles": { "left": i * this.options.imgWidth} }).inject(this.datacont);
            new Element("img", { "src": this.data[i % this.data.length] }).inject(div1);
        }
    },
    _reinit: function() {
        this.datacontFx.start([0, -this.data.length * this.options.imgWidth]);
    }
});
var theme = new Class({
    initialize: function() {
        var winsize = window.getSize()
        this.tweenX = [(winsize.x * 0.6).toInt(), (winsize.x * 0.8).toInt()]
        this.tweenY = [0, 30];
        this.fxTween = new Fx.Morph($("themeBtn"), { duration: winsize.x * 5, transition: Fx.Transitions.Sine.easeInOut });
        this.fxTween.addEvent("complete", this._startTween.bind(this));
        this._startTween();
        $("themeBtn").addEvent("click", this._createTheme.bind(this));
        this.cont = new Element("div", { "class": "themeSheet", "styles": { "visibility": "hidden"} }).inject($("inner"));
        this.txtcont = new Element("div", { "class": "txtcont" }).inject(this.cont);
        this.curRequest = new Request.HTML({ "url": "/ajax/getTheme", "update": this.txtcont });
        this.curRequest.addEvent("complete", this._prepareContent.bind(this));
    },
    _startTween: function() {

        var toGoXind = ($("themeBtn").getPosition().x - this.tweenX[0]) <= 100 ? 1 : 0;

        this.fxTween.start({ "left": $random(this.tweenX[toGoXind], this.tweenX[toGoXind] + 100), "top": $random(this.tweenY[0], this.tweenY[1]) });
    },
    _createTheme: function() {
        this.cont.setStyle("visibility", "visible");
        this.curRequest.post({ "page": 1 });
    },
    _prepareContent: function() {
        var closediv = this.cont.getElement("div.close")
        closediv.addEvent("click", this._hideTheme.bind(this));
        closediv.set("title", "cliquez pour fermer la page");
        new Tips(closediv, { "className": "toolCont" });
        this.cont.getElements("a[rel^=t]").each(function(aElt) {
            var pagenum = aElt.set("href", "javascript:void(0)").get("rel").replace("t|", "");
            aElt.addEvent("click", this._getPage.pass(pagenum, this));
        }, this);
        new Element("div", { "class": "clearer" }).inject(this.txtcont);
    },
    _getPage: function(pageNum) {
        this.curRequest.post({ "page": pageNum });
    },
    _hideTheme: function() {
        this.cont.setStyle("visibility", "hidden");
    }
});
var partenairesLogos = new Class({
    initialize: function() {
        ["RN", "natura2000", "ILEDEFRANCE"].each(function(id) {
            if ($(id)) {
                new Tips($(id), { "title": "title", "className": "toolCont" });
            }
        })
    }
});
window.addEvent("domready", function() { new partenairesLogos(); });

var makeSearch = new Class({
    Binds: ["search", "inputChanged", "showResults", "hideResults", "printResearch"],
    initialize: function(resumeClass) {
        this.curinput = $("research")
        if (!this.curinput) return;
        this.researchprev = $("searchResultsTitle").getElement("span");
        this.researchres = $("searchResultsContent");
        this.searchReq = new Request.HTML({ "url": "/ajax/getPartsearch", "update": this.researchres });
        this.cursearch;
        this.resumeClass = resumeClass;
        this.searchReq.addEvent("complete", function() { this.resumeClass.reinitSearch(this.researchres); }.bind(this));
        this.curinput.addEvent("keyup", this.inputChanged);
        this.curinput.addEvent("focus", this.showResults);
        this.curinput.addEvent("click", this.showResults);
        $("closesearch").addEvent("click", this.hideResults);
        $("printresearch").addEvent("click", this.printResearch);
    },
    search: function() {
        this.searchReq.cancel()
        var vals = this.curinput.get("rel").split("|")
        this.researchprev.set("html", "&#171; " + (this.curinput.get("value").length > 70 ? (this.curinput.get("value").substr(0,70).trim() + "...") : this.curinput.get("value")) + " &#187;");
        this.searchReq.post({ q: this.curinput.get("value"), "menuLbl": vals[0], "submenuLbl": vals[1] });
    },
    inputChanged: function() {
        var val = this.curinput.get("value");
        $clear(this.cursearch);
        this.showResults();
        if (!$chk(val)) return this.researchres.set("html", "<li class='list'>veuillez saisir une recherche</li>");
        if (val.length < 3) return this.researchres.set("html", "<li class='list'>pas assez de caracteres pour effectuer une recherche...</li>");
        this.cursearch = this.search.delay(700);
        this.researchres.set("html", "<li class='loading'><!-- --></li>");
    },
    showResults: function() {
        $("searchResults").setStyle("display", "block");
    },
    hideResults: function() {
        $("searchResults").setStyle("display", "none");
    },
    printResearch: function() {
        var val = this.curinput.get("value");
        var vals = this.curinput.get("rel").split("|");
        window.open("/part/Print.aspx?menuLbl=" + vals[0] + "&submenuLbl=" + vals[1] + "&q=" + val, "searchWindow", "status=0,toolbar=0,location=0,menubar=1,resizable=1,scrollbars=1");
    }
});
window.addEvent("domready", function() { new makeSearch(new resume()); });



var makeSearchAnu = new Class({
    Binds: ["search", "inputChanged", "showResults", "hideResults", "printResearch"],
    initialize: function() {
        this.curinput = $("researchAnnuaire")
        if (!this.curinput) return;
        this.researchprev = $("searchResultsTitle").getElement("span");
        this.researchres = $("searchResultsContent");
        this.searchReq = new Request.HTML({ "url": "/ajax/getPartsearchAnnu", "update": this.researchres });
        this.cursearch;
        this.curinput.addEvent("keyup", this.inputChanged);
        this.curinput.addEvent("focus", this.showResults);
        this.curinput.addEvent("click", this.showResults);
        $("closesearch").addEvent("click", this.hideResults);
        $("printresearch").addEvent("click", this.printResearch);
    },
    search: function() {
        this.searchReq.cancel()
        this.researchprev.set("html", this.curinput.get("value"));
        this.searchReq.post({ q: this.curinput.get("value") });
    },
    inputChanged: function() {
        var val = this.curinput.get("value");
        $clear(this.cursearch);
        this.showResults();
        if (!$chk(val)) return this.researchres.set("html", "<li class='list'>veuillez saisir une recherche</li>");
        if (val.length < 3) return this.researchres.set("html", "<li class='list'>pas assez de caracteres pour effectuer une recherche...</li>");
        this.cursearch = this.search.delay(700);
        this.researchres.set("html", "<li class='loading'><!-- --></li>");
    },
    showResults: function() {
        $("searchResults").setStyle("display", "block");
    },
    hideResults: function() {
        $("searchResults").setStyle("display", "none");
    },
    printResearch: function() {
        var val = this.curinput.get("value");
        window.open("/part/PrintAnnu.aspx?q=" + val, "searchWindow", "status=0,toolbar=0,location=0,menubar=1,resizable=1,scrollbars=1");
    }
});
window.addEvent("domready", function() { new makeSearchAnu(); });


var resume = new Class({
    initialize: function() {
        if (!$('content')) return;
        var resumeLinks = $('content').getElements('ul li.list a.resume');
        resumeLinks.each(function(aElt) {
            var href = aElt.get("href");
            
            
            aElt.set("href", "javascript:void(0)").addEvent("click", this._showResume.pass(href, this));
        }, this);
        if ($("closeresume"))
            $("closeresume").set("href", "javascript:void(0)").addEvent("click", this._hideResume);
        this.resumey = $("resumeResultsContent");
        this.resumeReq = new Request.HTML({ "url": "/ajax/getPartResume", "update": this.resumey });
        new Tips(".resume", {"title" : $lambda("Afficher le résumé"), "text" : "", "className": "toolCont"});
        new Tips(".haspdf", {"title" : $lambda("Télécharger le document au format pdf"), "text" : "", "className": "toolCont"});
        
    },
    reinitSearch: function(cont) {
        cont.getElements('li.list a.resume').each(function(aElt) {
            var href = aElt.get("href");
            var content = aElt.get("rel");
            aElt.set("href", "javascript:void(0)").addEvent("click", this._showResume.pass(href, this));
        }, this);
    },
    _showResume: function(href) {
        $('resumeResults').set("<div class='loading'></div>");
        this.resumeReq.cancel();
        this.resumeReq.post({ "hrefe": href });
        $('resumeResults').setStyle("display", "block");
    },

    _hideResume: function() {
        $('resumeResults').setStyle("display", "none");
    }

});

var prepareLinksPart = new Class({
    initialize: function(imageURLLinks) {
        this.c = $("content");
        this.curRequestPage = new Request.HTML({ "url": "/ajax/getPagePart", "update": $("contenttxt") });
        this.curRequestMenu = new Request.HTML({ "url": "/ajax/getMenuPart", "update": $("navcontent") });
        this.curRequestImages = new Request.JSON({ "url": "/ajax/getImagesPart" });
        this.curRequestImages.addEvent('success', this._changeImages.bindWithEvent(this));

        var group = new Group(this.curRequestPage, this.curRequestMenu, this.curRequestImages);
        group.addEvent('success', this._replaceContent.bindWithEvent(this));
        this._prepareLinks();
        this.imgManager = new imageManagerPart(imageURLLinks, "img", 0);
    },
    _prepareLinks: function() {
        this.c.getElements("a[rel^=a]").each(function(linkElt) {
            linkElt.set("href", "javascript:void(0)");
            linkElt.addEvent("click", this._preparesubLinks.pass(linkElt, this));
        }, this);

    },
    _preparesubLinks: function(linkElt) {
        var relArr = linkElt.get("rel").split("|");
        if (relArr[1] != "" && $(relArr[1])) this._highlightSub($(relArr[1]));
        this._cancelReq();
        $("contenttxt").set("html", "<img src='/assets/ajax-loader.gif' />");
        this.curRequestPage.post({ 'link': relArr[2] });
        this.curRequestMenu.post({ 'link': relArr[2] });
        this.curRequestImages.post({ 'link': relArr[2] });
    },
    _highlightSub: function(linkElt) {
        var Dotclass = ["active"];
        linkElt.getParent().getParent().getElements(linkElt.getParent().get('tag') + " > a").each(function(curlelt) {
            Dotclass.each(function(clas) { curlelt.removeClass(clas) });
        });
        Dotclass.each(function(clas) { linkElt.addClass(clas) });
    },
    _replaceContent: function(a, b, c, d) {
        this._prepareLinks();
    },
    _changeImages: function(responseJSON, responseText) {
        if (responseJSON) {
            this.imgManager.loadNewData(responseJSON);
        }
    },
    _changesubImages: function(a) {
        if ($chk(a)) {
            $("submenu").setStyle("background-image", "url(" + a + ")");
        }
    },
    _cancelReq: function() {
        this.curRequestPage.cancel();
        this.curRequestMenu.cancel();
    }
});
var imageManagerPart = new Class({
    initialize: function(urlList, contid, slidenum) {
        if (!$(contid)) return;
        if (!urlList) urlList = [];
        this.c = $chk($(contid).getElement("div.diap")) ?
             $(contid).getElement("div.diap") : new Element("div", { "class": "diap", "styles": { "cursor": "pointer", "width": "100%", "height": "100%"} }).inject($(contid));
        var imagesArr = urlList.map(function(item, index) {
            return item.img;
        });
        var legendsStrArr = urlList.map(function(item, index) {
            return item.legend;
        });
        this.copyArr = urlList.map(function(item, index) {
            return item.copy;
        });

        this.s = new Slideshow(this.c, imagesArr, { height: 310, width: 398, delay: 4000, controller: true, slide: slidenum, resize: false, center: false, loader: { 'animate': ['/css/loader-#.png', 36]} });
        $("imglegend").empty();
        this.legendsArr = [];
        legendsStrArr.each(function(htmlStr) {
            elt = new Element("div", { "html": htmlStr }).inject($("imglegend"));
            this.legendsArr.push(elt.setStyles({ "opacity": 0,
                "position": "absolute"
            }));
        }, this);

        this.s.addEvent("start", function(ev) {
            var num = (this.s.slide + this.s.data.images.length) % this.s.data.images.length;
            if (this.legendsArr[num]) {
                for (var i = 0; i < this.legendsArr.length; i++) {
                    this.legendsArr[i].fade("out");
                }
                this.legendsArr[num].fade("in");
            }
            //Copyright
            if (this.copyArr[num]) {
                if (!this.tips) this.tips = new Tips($('img'), { "className": "toolCont" });
                this.tips.attach($('img'));
                $('img').store('tip:title', this.copyArr[num]);
            } else {
                if (this.tips) {
                    this.tips.detach($('img'));
                    this.tips.hide();
                }
            }
        } .bind(this));

        return;
    },
    loadNewData: function(urlList) {
        var imagesArr = urlList.map(function(item, index) {
            return item.img;
        });
        legendsStrArr = urlList.map(function(item, index) {
            return item.legend;
        });
        this.copyArr = urlList.map(function(item, index) {
            return item.copy;
        });
        for (var i = 0; i < this.legendsArr.length; i++) {
            this.legendsArr[i].fade("out");
        };

        this.legendsArr = [];
        legendsStrArr.each(function(htmlStr) {
            elt = new Element("div", { "html": htmlStr }).inject($("imglegend"));
            this.legendsArr.push(elt.setStyles({ "opacity": 0,
                "position": "absolute"
            }));
        }, this);
        this.s.load(imagesArr);
        (function() { this.s.load(imagesArr) }).delay(100, this);
    }
});
