/*****************************************************************************
It is adviced to place the sIFR JavaScript calls in this file, keeping it
separate from the `sifr.js` file. That way, you can easily swap the `sifr.js`
file for a new version, while keeping the configuration.

You must load this file *after* loading `sifr.js`.

That said, you're of course free to merge the JavaScript files. Just make sure
the copyright statement in `sifr.js` is kept intact.
*****************************************************************************/

// Make an object pointing to the location of the Flash movie on your web server.
// Try using the font name as the variable name, makes it easy to remember which
// object you're using. As an example in this file, we'll use Futura.
// var helveticaUltralight = { src: '/common/sifr/fonts/helvetica-ultralight.swf' };
// var helvetica = { src: '/common/sifr/fonts/helvetica.swf' };

// Now you can set some configuration settings.
// See also <http://wiki.novemberborn.net/sifr3/JavaScript+Configuration>.
// One setting you probably want to use is `sIFR.useStyleCheck`. Before you do that,
// read <http://wiki.novemberborn.net/sifr3/DetectingCSSLoad>.

// sIFR.useStyleCheck = true;

// Next, activate sIFR:
// sIFR.activate(helveticaUltralight, helvetica);

// If you want, you can use multiple movies, like so:
//
//    var futura = { src: '/path/to/futura.swf' };
//    var garamond = { src '/path/to/garamond.swf' };
//    var rockwell = { src: '/path/to/rockwell.swf' };
//    
//    sIFR.activate(futura, garamond, rockwell);
//
// Remember, there must be *only one* `sIFR.activate()`!

// Now we can do the replacements. You can do as many as you like, but just
// as an example, we'll replace all `<h1>` elements with the Futura movie.
// 
// The first argument to `sIFR.replace` is the `futura` object we created earlier.
// The second argument is another object, on which you can specify a number of
// parameters or "keyword arguemnts". For the full list, see "Keyword arguments"
// under `replace(kwargs, mergeKwargs)` at 
// <http://wiki.novemberborn.net/sifr3/JavaScript+Methods>.
// 
// The first argument you see here is `selector`, which is a normal CSS selector.
// That means you can also do things like '#content h1' or 'h1.title'.
//
// The second argument determines what the Flash text looks like. The main text
// is styled via the `.sIFR-root` class. Here we've specified `background-color`
// of the entire Flash movie to be a light grey, and the `color` of the text to
// be red. Read more about styling at <http://wiki.novemberborn.net/sifr3/Styling>.

// sIFR.debug.ratios({ 
//     src: '/common/sifr/fonts/helvetica-ultralight.swf', 
//     selector: '#header_text' 
// });

var SIFRIsLoaded = function() {
    return (typeof sIFR == "object");
};

if(SIFRIsLoaded()){
    
	sIFR.preferenceManager = {
		storage : {
			sCookieId : "sifr",
				
			set : function(bValue){
				var date = new Date();
				date.setFullYear(date.getFullYear() + 3);
				document.cookie = [this.sCookieId, "=", bValue, ";expires=", date.toGMTString(), ";path=/"].join("");
			},
		
			get : function(){
				var value =  document.cookie.match(new RegExp(";?" + this.sCookieId + "=([^;]+);?"));
				if(value != null && value[1] == "false"){
					return false;
				} else {
					return true;
				};
			},
			
			reset : function(){
				var date = new Date();
				date.setFullYear(date.getFullYear() - 1);
				document.cookie = this.sCookieId + "=true;expires=" + date.toGMTString();
			}
		},
		
		disable : function(){
			this.storage.set(false);
		},
		
		enable : function(){
			this.storage.set(true);
		},
		
		test : function(){
			return this.storage.get();
		}
	};
    
    sIFR.rollback = function(){
        function rollback(sSelector){
            if(sSelector == null){
                sSelector = "";
            } else {
                sSelector += ">";
            };

            sIFR.removeFlashClass();

            if(doRollback(sSelector+"embed") == false){
                doRollback(sSelector+"object");
            };
        };

        function doRollback(sSelector){
            var node, nodeParent, nodeAlternate, nodeAlternateChild, nodeAlternateNextChild, indexNodeToRemove;
            var listNodes = parseSelector(sSelector);
            var i = listNodes.length - 1;
            var bHasRun = false;

            while(i >= 0){
                node = listNodes[i];
                listNodes.length--;
                nodeParent = node.parentNode;

                if(node.className == 'sIFR-flash'){
                    /*  Flash blockers may add other nodes as siblings to the Flash element. 
                        Thus, we remove all children of nodeParent, and look for nodeAlternate at the same time */
                    indexNodeToRemove = 0;

                    while(indexNodeToRemove < nodeParent.childNodes.length){
                        node = nodeParent.childNodes[indexNodeToRemove];
                        if(node.className == "sIFR-alternate"){
                            nodeAlternate = node;
                            indexNodeToRemove++;
                            continue;
                        };
                        nodeParent.removeChild(node);
                    };

                    if(nodeAlternate != null){
                        nodeAlternateChild = nodeAlternate.firstChild;
                        while(nodeAlternateChild != null){
                            nodeAlternateNextChild = nodeAlternateChild.nextSibling;
                            nodeParent.appendChild(nodeAlternate.removeChild(nodeAlternateChild));
                            nodeAlternateChild = nodeAlternateNextChild;
                        };
                        nodeParent.removeChild(nodeAlternate);
                    };

                    nodeParent.className = nodeParent.className.replace(/\bsIFR\-replaced\b/, "");
                    bHasRun = true;
                };

                i--;
            };

            return bHasRun;
        };

        return rollback;
    }();
};


var doSIFRReplacement = function() {
    if(SIFRIsLoaded()) {
        var helveticaUltralight = { src: '/common/sifr/fonts/helvetica-ultralight.swf' };
        var helvetica = { src: '/common/sifr/fonts/helvetica.swf' };
        sIFR.activate(helveticaUltralight, helvetica);
        var headerTextRatios = [9, 1.25, 13, 1.18, 17, 1.13, 18, 1.14, 19, 1.13, 21, 1.12, 31, 1.11, 35, 1.09, 36, 1.1, 40, 1.09, 60, 1.08, 62, 1.07, 63, 1.08, 71, 1.07, 72, 1.08, 106, 1.07, 107, 1.06, 119, 1.07, 120, 1.06, 121, 1.07, 1.06];

        sIFR.replace(helveticaUltralight, {
          selector: '#header h1',
          css: ['.sIFR-root { background-color: #FFFFFF; color: #FF2B06;  letter-spacing: 2.3; }', "#header { margin-bottom:0;}"],
          wmode: 'transparent',
          ratios: headerTextRatios,
          forceSingleLine: true
        });
    }
};

var enableSIFR = function() {
    if(SIFRIsLoaded()) {
        sIFR.preferenceManager.enable();
        window.location.reload(false);
    }
};

var disableSIFR = function() {
   if(SIFRIsLoaded()) {
       sIFR.preferenceManager.disable();
       sIFR.rollback();
   }
};

var toggleSIFR = function() {
    if(SIFRIsLoaded()) {
        if(sIFR.preferenceManager.test()) {
            disableSIFR();
        } else {
            enableSIFR();
        }
    }
};

var sifr = function() {
    if(SIFRIsLoaded() && sIFR.preferenceManager.test()) {
        doSIFRReplacement();
    }
};


