/*
Script: common.js
    Utilitaire pour les navigateurs

License:
    Real.not license.

Copyright:
    Copyright(c) 2009 [Real.not - Pascal RIVIERE]

Code & Documentation:
    [Real.not Developpers]

*/

/**
* Ajoute un évènement à la fonction onload
*/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/**
* Vérifie que le navigateur est compatible
*/
function checkNavigator(redirectUrl) {
	try {  
	
	    // Versions minimales autorisées  
	    minFirefoxVersion = 2.0;
	    minMSIEVersion = 6.0;
	    minOperaVersion = 9.0;
	    minSafariVersion = 2.0;
	    
	    // Mauvais navigateur? 
	    var wrongNavigator = false;
	    
	    // Navigateur utilisé
	    var isFirefox = false;
	    var isMSIE = false;
	    var isOpera = false;
	    var isSafari = false;
	    
	    // Expressions régulières
	    var firefoxRegExp = new RegExp("Firefox");
	    var msieRegExp = new RegExp("MSIE");
	    var operaRegExp = new RegExp("Opera");
	    var safariRegExp = new RegExp("Safari");

        // Navigateur et version utilisée
		var strChUserAgent = navigator.userAgent;
	    
	    // Test de détection des nom de navigateur
	    if (strChUserAgent.match(firefoxRegExp)) {
	       isFirefox = true;
	    } else if (strChUserAgent.match(msieRegExp)) {
	       isMSIE = true;
	    } else if (strChUserAgent.match(operaRegExp)) {
	       isOpera = true;
	    } else if (strChUserAgent.match(safariRegExp)) {
	       isSafari = true;
	    }
	    
	    // Test de vérification des versions des navigateurs
	    if (isFirefox) {
	        // Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
	        firefoxVersion = strChUserAgent.substring(strChUserAgent.indexOf("Firefox/",0) + "Firefox/".length);
	        if (firefoxVersion == null || parseFloat(firefoxVersion) < parseFloat(minFirefoxVersion)) {
	           wrongNavigator = true;
	        }
	    } else if (isMSIE) {
	        // Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
	        msieVersion = strChUserAgent.substring(strChUserAgent.indexOf("MSIE",0) + "MSIE".length, strChUserAgent.indexOf(";",strChUserAgent.indexOf("MSIE",0) + "MSIE".length));
	        if (msieVersion == null || parseFloat(msieVersion) < parseFloat(minMSIEVersion)) {
               wrongNavigator = true;
            }
        } else if (isOpera) {
            // Opera/9.63 (Windows NT 5.1; U; fr) Presto/2.1.1
            operaVersion = strChUserAgent.substring(strChUserAgent.indexOf("Opera/",0) + "Opera/".length, strChUserAgent.indexOf("(",0));
            if (operaVersion == null || parseFloat(operaVersion) < parseFloat(minOperaVersion)) {
               wrongNavigator = true;
            }            
        } else if (isSafari) {
            // Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
            safariVersion = strChUserAgent.substring(strChUserAgent.indexOf("Version/",0) + "Version/".length, strChUserAgent.indexOf(" ",strChUserAgent.indexOf("Version/",0) + "Version/".length));
            if (safariVersion == null || parseFloat(safariVersion) < parseFloat(minSafariVersion)) {
               wrongNavigator = true;
            }            
        } else {
	       // On redirige vers la page d'erreur car le navigateur ne convient pas
	       window.location = redirectUrl;
	    }

	    // On redirige si le navigateur n'est pas compatible
	    if (wrongNavigator) {
	        window.location = redirectUrl;
	    }
	    
	} catch (error) {
	   window.location = redirectUrl;
	}
}
