
/**
* 
*/
function versionCheck(){
    var m = document.URL.match(/\?.*\bver=([^&]+)/i);
    var verAddon = m ? m[1] : '';
    var m = document.title.match(/\bversion\s+([^<\s]+)/i);
    var verLatest = m ? m[1] : '';
    if (verAddon && verLatest && versionCompare(verAddon, verLatest) == -1){
        window.location = 'new-version-available.html';
    }
}


/**
* compare two version numbers (eg 2.0.0.1beta3, 2.0.0rc1)
* return 1 if a > b
* return 0 if a == b
* return -1 if a < b
*/
function versionCompare(version1, version2){

    function getValueOfVersionSegment(seg){
    
        if (typeof seg === "undefined"){
            return 0;
        }
        else if (/^\d+$/.test(seg)){
            return parseInt(seg);
        }
        else {
            switch(seg){
                case "rc": return -1;
                case "beta": return -2;
                case "alpha": return -3;
                case "dev": return -4;
                default:
                    throw Error("lazarus.versionCompare: Unknown version fragment ["+ seg +"]");
            }
        }
    }

    //verify version strings
    var regexVerify = /^[\d\.(dev|alpha|beta|rc)]+$/i;
    
    if (!regexVerify.test(version1)){
        throw Error("lazarus.versionCompare: Invalid version string ["+ version1 +"]");
    }
    else if (!regexVerify.test(version2)){
        throw Error("lazarus.versionCompare: Invalid version string ["+ version1 +"]");
    }
    else {
        //split each version into sections 
        var ver1 = version1.toLowerCase().replace(/(\w)(\d)/g, "$1.$2").replace(/(\d)(\w)/g, "$1.$2").split(/[\.\b]/g);
        var ver2 = version2.toLowerCase().replace(/(\w)(\d)/g, "$1.$2").replace(/(\d)(\w)/g, "$1.$2").split(/[\.\b]/g);
        
        //compare each section until a non match occurs
        var maxLen = Math.max(ver1.length, ver2.length);
        for (var i=0; i<maxLen; i++){
            //convert the version segment into a numeric value
            var seg1 = (typeof ver1[i] === "undefined") ? 0 : getValueOfVersionSegment(ver1[i]);
            var seg2 = (typeof ver2[i] === "undefined") ? 0 : getValueOfVersionSegment(ver2[i]);
            
            if (seg1 > seg2){
                return 1;
            }
            else if (seg1 < seg2){
                return -1;
            }            
        }
        //all parts are equal
        return 0;
    }
}


versionCheck();