/**
 *  feedBack
 *  
 **/
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();
 
 
var feedback =function (linkEl,opt)
{
    linkEl=jQuery(linkEl); 
    opt = $.extend({
            form:   '<div class="formRow" id="formRowEmail">'+
                            '<label class="typeInput" for="inputEmail">email:</label>'+
                            '<input type="input" size="20" value="" class="typeInput" id="inputEmail" name="email" />'+
                    '</div>'+
                    '<div class="formRow" id="formRowNom">'+
                            '<label class="typeInput" for="inputNom">nom:</label>'+
                            '<input type="input" size="20" value="" class="typeInput" id="inputNom" name="nom" />'+
                    '</div>'+
                    '<div class="formRow" id="formRowMessage">'+
                            '<label class="typeTextarea" for="inputEmail">message:</label>'+
                            '<textarea  size="20" value="" class="typeTextarea" id="inputMessage" name="message" ></textarea>'+
                    '</div>'+
                    '<div class="formRow" id="formRowSubmit">'+
                            '<label class="typeSubmit" for="inputSubmit"></label>'+
                            '<input type="submit"  size="20" value="Envoyer" class="typeSubmit" id="inputSubmit"  />'+
                    '</div>',
            post:   'feedback.php'
          }, opt || {});
    linkEl.click(function(ev){
        //console.log('click');
        //console.dir(ev);
	var data={};
	data.screen={};
        jQuery.each(window.screen,function(i,el){
            eval('data.screen.'+i+' = '+el );
        });
	data.browser={};
	data.browser.version=BrowserDetect.version; //jQuery.browser;
	data.browser.OS=BrowserDetect.OS; //jQuery.browser;
	data.browser.browser=BrowserDetect.browser; //jQuery.browser;
	data.location=document.location.toString();
	data.referrer=document.referrer;
	//data.head=jQuery(document.head).html();
	//data.body=jQuery(document.body).html();
        //console.log('0001');
	data.dom=jQuery(document).clone()
        //console.log('0002');
        if(jQuery('base').length < 1)
        {
            //console.log('0003');
            jQuery('head',data.dom).prepend(jQuery('<base href="'+document.location+'" />'));
            //console.log('0004');
        }
        //console.log('0005');
	jQuery('#feedback_dialog',data.dom).remove();
	jQuery('#_firebugConsole',data.dom).remove();
        data.dom=data.dom.xml();
	
    	var dialog=jQuery('#feedback_dialog');
	dialog.dialog( 'open' );
	jQuery('input.data_feedback',dialog).remove();
	
	jQuery('form',dialog).append('<input type="hidden" class="data_feedback" value="'+encodeURIComponent(jQuery.toJSON(data))+'" name="data" />');
    });
    var dialog=jQuery('#feedback_dialog');
    if (dialog.length<1)
    {
	dialog=jQuery('<div id="feedback_dialog" title="feedback"><form id="form_feedback" method="post" action="'+opt.post+'"><div id="feedback_message"></div>'+opt.form+'</form></div>'); 
	jQuery(document.body).append(dialog);
        jQuery('#form_feedback');
        //console.log('OOO');
        
        jQuery('#form_feedback').submit(function(ev){
            //console.log('OOO');
            ev.stopPropagation();
            ev.stopImmediatePropagation();
            var post={};
            post.action=$(this).attr('action');
            post.data=jQuery(this).serializeArray();
            //console.dir(post);
            jQuery.post(post.action,post.data,function(response){
                    if(response.ret=='ok')
                        setTimeout(function(){
                            dialog.dialog( 'close' );
                        },2000)
                    jQuery('#feedback_message').html(response.message);  
                    //console.dir(response); 
                },
            "json");
            
            return false;
        });
    }
	dialog.dialog({
	  bgiframe: true,
	  height: 240,
	  modal: true,
	  autoOpen: false,
	  draggable: false,
	  resizable: false
	});
 
    //console.log('feedback installed');
    linkEl.attr('href',document.location+'#'); //+linkEl.attr('href'));
    linkEl.removeAttr('href');
    linkEl.css('cursor','pointer');
}
