/*
	$Id: bncfoutmelding.js 1839 2009-04-28 12:52:22Z Robbert $
	Script voor het maken van uitgebreide foutmeldingen.
	Dit kan gebruikt worden ter vervanging van de standaard alert();
	Let op! Dit script vangt niet de Javascript errors af.
*/

(function(){
    try {
        var BrowserDetect = {
            init: function(){
                this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
                this.version = this.searchVersion(navigator.userAgent) ||
                this.searchVersion(navigator.appVersion) ||
                "an unknown version";
                this.OS = this.searchString(this.dataOS) || "an unknown OS";
            },
            searchString: function(data){
                for (var i = 0; i < data.length; i++) {
                    var dataString = data[i].string;
                    var dataProp = data[i].prop;
                    this.versionSearchString = data[i].versionSearch || data[i].identity;
                    if (dataString) {
                        if (dataString.indexOf(data[i].subString) != -1) 
                            return data[i].identity;
                    }
                    else 
                        if (dataProp) 
                            return data[i].identity;
                }
            },
            searchVersion: function(dataString){
                var index = dataString.indexOf(this.versionSearchString);
                if (index == -1) 
                    return;
                return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
            },
            dataBrowser: [{
                string: navigator.userAgent,
                subString: "Chrome",
                identity: "Chrome"
            }, {
                string: navigator.userAgent,
                subString: "OmniWeb",
                versionSearch: "OmniWeb/",
                identity: "OmniWeb"
            }, {
                string: navigator.vendor,
                subString: "Apple",
                identity: "Safari",
                versionSearch: "Version"
            }, {
                prop: window.opera,
                identity: "Opera"
            }, {
                string: navigator.vendor,
                subString: "iCab",
                identity: "iCab"
            }, {
                string: navigator.vendor,
                subString: "KDE",
                identity: "Konqueror"
            }, {
                string: navigator.userAgent,
                subString: "Firefox",
                identity: "Firefox"
            }, {
                string: navigator.vendor,
                subString: "Camino",
                identity: "Camino"
            }, { // for newer Netscapes (6+)
                string: navigator.userAgent,
                subString: "Netscape",
                identity: "Netscape"
            }, {
                string: navigator.userAgent,
                subString: "MSIE",
                identity: "Explorer",
                versionSearch: "MSIE"
            }, {
                string: navigator.userAgent,
                subString: "Gecko",
                identity: "Mozilla",
                versionSearch: "rv"
            }, { // for older Netscapes (4-)
                string: navigator.userAgent,
                subString: "Mozilla",
                identity: "Netscape",
                versionSearch: "Mozilla"
            }],
            dataOS: [{
                string: navigator.platform,
                subString: "Win",
                identity: "Windows"
            }, {
                string: navigator.platform,
                subString: "Mac",
                identity: "Mac"
            }, {
                string: navigator.userAgent,
                subString: "iPhone",
                identity: "iPhone/iPod"
            }, {
                string: navigator.platform,
                subString: "Linux",
                identity: "Linux"
            }]
        
        };
        BrowserDetect.init();
        
        bncFoutmeldingShowHideEmail = function(){
            var emailfield = document.getElementById('foutmeldingEmail');
            if (emailfield.style.display == "none") {
                emailfield.style.display = 'block';
            }
            else {
                emailfield.style.display = 'none';
            }
        }
        
        YAHOO.namespace('widget.foutmelding');
        
        bncFoutmelding = function(myFoutmelding){
            if (myFoutmelding && myFoutmelding.tekst) {
                var tekst = myFoutmelding.tekst;
            }
            else {
                var tekst = "Er is iets misgegaan.";
            }
            if (myFoutmelding && myFoutmelding.fout) {
                var bncfout = "<input type=\"hidden\" value=\"" + myFoutmelding.fout + "\" name=\"bncfout\" />";
            }
            else {
                var bncfout = "";
            }
            var browser = "<input type=\"hidden\" value=\"" + BrowserDetect.browser + " " + BrowserDetect.version + "\" name=\"browser\" />";
            var os = "<input type=\"hidden\" value=\"" + BrowserDetect.OS + "\" name=\"os\" />";
            var pagina = "<input type=\"hidden\" value=\"" + document.location.href + "\" name=\"pagina\" />";
            YAHOO.widget.foutmelding.dlg.setBody("<form id=\"bncFoutmeldingForm\">" + tekst + "<br /><br /><div style=\"color: #666;\">Door dit rapport te verzenden helpt u mee om het probleem in de toekomst te voorkomen. Bij aanvullende informatie kunt u invullen wanneer het probleem zich voordeed zodat de fout makkelijker op te sporen is.</div><br /><b>Aanvullende informatie</b><br /><textarea style=\"width: 28.3em; height: 75px;\" name=\"informatie\"></textarea><br /><input type=\"checkbox\" onclick=\"bncFoutmeldingShowHideEmail()\" style=\"margin-right: 10px;\" />Ja, ik ontvang graag feedback over dit probleem.<div style=\"display: none;\" id=\"foutmeldingEmail\"><br /><div style=\"border-bottom: 1px solid black; font-weight: bold; margin-bottom: 10px; padding-bottom: 3px;\">Uw gegevens</div><div style=\"float: left; width: 100px;\">Naam</div><input type=\"text\" name=\"naam\" style=\"margin-bottom: 4px;\" /><br /><div style=\"float: left; width: 100px;\">Emailadres</div><input type=\"text\" name=\"from\" /><input type=\"hidden\" name=\"func\" value=\"process\" /></div>" + bncfout + browser + os + pagina + "</form>");
            YAHOO.widget.foutmelding.dlg.cfg.queueProperty('icon', YAHOO.widget.SimpleDialog.ICON_WARN);
            YAHOO.widget.foutmelding.dlg.cfg.queueProperty('zIndex', 9999);
            YAHOO.widget.foutmelding.dlg.render(document.body);
            if (YAHOO.widget.foutmelding.dlg.bringToTop) {
                YAHOO.widget.foutmelding.dlg.bringToTop();
            }
            YAHOO.widget.foutmelding.dlg.show();
        };
        
        YAHOO.util.Event.on(window, 'load', function(){
        
            var handleClose = function(){
                this.hide();
            };
            
            var handleSend = function(){
                var responseSuccessBncFoutmelding = function(o){
                    YAHOO.widget.foutmelding.dlg.hide();
                };
                
                var responseFailureBncFoutmelding = function(o){
                    alert('Helaas kan de foutmelding ook niet verstuurd worden. Onze excuses voor het ongemak.');
                };
                
                var callback = {
                    success: responseSuccessBncFoutmelding,
                    failure: responseFailureBncFoutmelding
                };
                
                var formObject = document.getElementById('bncFoutmeldingForm');
                YAHOO.util.Connect.setForm(formObject);
                var cObj = YAHOO.util.Connect.asyncRequest('POST', '/bncfoutmelding', callback);
            };
            
            YAHOO.widget.foutmelding.dlg = new YAHOO.widget.SimpleDialog('widget_foutmelding', {
                visible: false,
                width: '30em',
                zIndex: 9999,
                close: false,
                fixedcenter: true,
                modal: false,
                draggable: true,
                constraintoviewport: true,
                icon: YAHOO.widget.SimpleDialog.ICON_WARN,
                buttons: [{
                    text: 'Niet verzenden',
                    handler: handleClose
                }, {
                    text: 'Verzenden',
                    handler: handleSend,
                    isDefault: true
                }]
            });
            YAHOO.widget.foutmelding.dlg.setHeader("Foutmelding rapport");
            YAHOO.widget.foutmelding.dlg.setBody('Alert body passed to window.alert'); // Bug in panel, must have a body when rendered
            YAHOO.widget.foutmelding.dlg.render(document.body);
        });
    } 
    catch (error) {
        alert(error);
    }
})();
