var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};

function ahah(url, target, delay, store) {
  if (store != undefined) {
	if (store == undefined || store == true)
		var key = 'savestate';
	else
		var key = store;

	var val = new Date().getTime();

	var hashloc = window.location.href.indexOf('#');

	if (hashloc == -1) window.location = window.location.href+'#'+key+'_'+val;
	else window.location = window.location.href.substring(0, hashloc)+'#'+key+'_'+val;

	if (key != '') {
		Cookie.set('ahah_'+key+'_val', val);
		Cookie.set('ahah_'+key+'_url', url);
		Cookie.set('ahah_'+key+'_target', target);
	}
  }
  if (delay == undefined) {
    new Ajax.Updater($(target), url, {
        evalScripts: true,
	method: 'get'
      }
    );
  } else {
    new Ajax.PeriodicalUpdater($(target), url, {
        evalScripts: true,
	method: 'get',
        frequency: (delay/1000)
      }
    );
  }}

function ahahRollBack() {
	var key = window.location.hash.match(/[a-z]+/);
	var val = window.location.hash.match(/[0-9]+/);
	if (key != '') {
		var url = Cookie.get('ahah_'+ key +'_url', url);
		var target = Cookie.get('ahah_'+ key +'_target', target);
		var storedval = Cookie.get('ahah_'+ key +'_val', target);
		if (url != undefined && target != undefined) {
			if (storedval != undefined && val == storedval) {
				ahah(url, target);
			} else {
				Cookie.erase('ahah_'+ key +'_url');
				Cookie.erase('ahah_'+ key +'_target');
				Cookie.erase('ahah_'+ key +'_val');
			}
		}
	}
}

function ahahForm(file, formName, target, delay, store){
	var myform = document.getElementById(formName);
	var num = myform.elements.length;
	var url = "";
	var radio_buttons = new Array();
	var nome_buttons = new Array();
	var check_buttons = new Array();
	var nome_buttons = new Array();	
	
	// submit radio values
	var j = 0;
	var a = 0;
	for(var i=0; i<myform.length; i++){
		var temp = myform.elements[i].type;
		if ( (temp == "radio") && ( myform.elements[i].checked) ) { 
			nome_buttons[a] = myform.elements[i].name;
			radio_buttons[j] = myform.elements[i].value; 
			j++; 
			a++;
		}
	}
	for(var k = 0; k < radio_buttons.length; k++) {
		url += nome_buttons[k] + "=" + encodeURIComponent(radio_buttons[k]) + "&";
	}

	// submit checkbox values
	var j = 0;
	var a = 0;
	for(var i=0; i<myform.length; i++){
		var temp = myform.elements[i].type;
		if ( (temp == "checkbox") && ( myform.elements[i].checked) ) { 
			nome_buttons[a] = myform.elements[i].name;
			check_buttons[j] = myform.elements[i].value; 
			j++; 
			a++;
		}
	}
	for(var k = 0; k < check_buttons.length; k++) {
		url += nome_buttons[k] + "=" + encodeURIComponent(check_buttons[k]) + "&";
	}

	// submit all kind of input		
	for (var i = 0; i < num; i++){	
		var chiave = myform.elements[i].name;
		var valore = myform.elements[i].value;
		var tipo = myform.elements[i].type;

		if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ){}
		else {
			url += chiave + "=" + encodeURIComponent(valore) + "&";
		}
	}
	var parameters = url;
	url = file + "?" + url;
	ahah(url, target, delay, store);
}
function ahahDone(url, target, delay) {
  if (req.readyState == 4) { // only if req is "loaded"
    if (req.status == 200) { // only if "OK"
      document.getElementById(target).innerHTML = req.responseText;
    } else {
      document.getElementById(target).innerHTML="ahah error:\n"+req.statusText;
    }
    if (delay != undefined) {
       setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
	    //server should ALSO delay before responding
    }
  }
}


function initRoll() {
		var _boxes = document.getElementsByTagName("div");
		for (i = 0; i < _boxes.length; i++)
		{
			if (_boxes[i].className.indexOf("tab-info") != -1)
			{
				var box = _boxes[i];
				
				var list = box.getElementsByTagName("ul")[0];
				list.count = list.getElementsByTagName("li").length;
				list.active = 0;
			
				list.tab = box;
				
				var links = box.getElementsByTagName("a");
				for (k = 0; k < links.length; k++)
				{
					if (links[k].className.indexOf("top") != -1)
					{
						var _prev = links[k];
						_prev.list = list;
						_prev.onclick = function() {
							if (this.list.count > 3) {
								if ((this.list.active-3) > 0) {
									this.list.active = this.list.active - 3;
									this.list.style.top = (0 - this.list.active*56) + "px";
								}
								else {
									this.list.active = 0;
									this.list.style.top = "0px";
								}
							}
							return false;
						} 
					}
					if (links[k].className.indexOf("bottom") != -1) {
						var _next = links[k];
						_next.list = list;
						_next.onclick = function() {
							if (this.list.count > 3) {
								if ((this.list.active+3) < this.list.count) {
									this.list.active = this.list.active + 3;
									this.list.style.top = (0 - this.list.active*56) + "px";
								}
								else {
									this.list.active = this.list.count - 3;
									this.list.style.top = (0 - this.list.active*56) + "px";
								}
							}
							return false;
						} 
					}
					if (links[k].className.indexOf("zoom") != -1) {
						box.zoom = links[k];
					}
				}
				box.desc = box.getElementsByTagName("strong")[0];
				var imgs = box.getElementsByTagName("img");
				for (k = 0; k < imgs.length; k++)
				{
					if (imgs[k].className == "middle")
					{
						box.middle = imgs[k];
					}
				} 
			}
		}
}

function change(obj) {
	gVisioCurrent = obj;
	var tabinfo = $(obj).up('.tab-info');
	if (tabinfo) {
		if (tabinfo.down('strong'))
			tabinfo.down('strong').innerHTML = obj.title;
		if (tabinfo.down('.middle')) {
			tabinfo.down('.middle').src = '/images/blank.gif';
			gMiddleObj = tabinfo.down('.middle');
			gMiddleSrc = '/image_minivisio.php?image='+encodeURIComponent(obj.href)+'&x=360&y=225';
			new PeriodicalExecuter(function(pe) {
				if (gMiddleObj.complete) {
					gMiddleObj.src = gMiddleSrc;
					pe.stop();
				}
			}, 0.1);
		}
		if (tabinfo.down('.zoom'))
			tabinfo.down('.zoom').href = obj.rel;
	}
	return false;
}

function initTabs()
{
	var sets = document.getElementsByTagName("div");
	for (var i = 0; i < sets.length; i++)
	{
		if (sets[i].className.indexOf("tabset") != -1)
		{
			var tabs = [];
			var links = sets[i].getElementsByTagName("a");
			for (var j = 0; j < links.length; j++)
			{
				if (links[j].className.indexOf("tab") != -1)
				{
					tabs.push(links[j]);
					links[j].tabs = tabs;
					var c = $(links[j].href.substr(links[j].href.indexOf("#") + 1));

					//reset all tabs on start
					if (c) if (links[j].className.indexOf("active") != -1) c.style.display = "block";
					else c.style.display = "none";

					links[j].onclick = function ()
					{
						var c = $(this.href.substr(this.href.indexOf("#") + 1));
						if (c)
						{
							//reset all tabs before change
							for (var i = 0; i < this.tabs.length; i++)
							{
								$(this.tabs[i].href.substr(this.tabs[i].href.indexOf("#") + 1)).style.display = "none";
								this.tabs[i].className = this.tabs[i].className.replace("active", "");
							}
							this.className += " active";
							var firstVisio = $(c).down('.scroll-holder li.item a');
							if(firstVisio) {
								gVisioCurrent = firstVisio;
							}
							c.style.display = "block";
							return false;
						}
					}
				}
			}
		}
	}
}

function deplier_dt(el) {
	el = $(el);
	var d = el.next('dd');
	if (d) {
		d.style.display='block';
		var firstVisio = d.down('.scroll-holder li.item a');
		var all_dts = el.adjacent('dd');
		for (var i = 0; i < all_dts.length; i++) {
			if (all_dts[i] != d) all_dts[i].style.display = 'none';
		}
		if(firstVisio) {
			gVisioCurrent = firstVisio;
		}
	}
	if (el) {
		var titres = $$('.titrePartie');
		for (var i = 0; i < titres.length; i++) {
			if (titres[i] == el)
				titres[i].addClassName('active');
			else
				titres[i].removeClassName('active');
		}
	}
}

function replier_dt(el) {
	var all_dts = $$('#'+el+' dd');
	for (var i = 0; i < all_dts.length; i++) {
		all_dts[i].style.display = 'none';
	}
	var titres = $$('#'+el+' .titrePartie');
	for (var i = 0; i < titres.length; i++) {
		titres[i].removeClassName('active');
	}
}

	function selVille(){
		var cssvilles = $$('#chville a');
		var allselected = true;
		for(i=0; i< cssvilles.length; i++){
			if (cssvilles[i].id.substring(6) != 0) {
				if(ville[cssvilles[i].id.substring(6)] == 1){
					cssvilles[i].addClassName('active');
				}else{
					cssvilles[i].removeClassName('active');
					var allselected = false;
				}
			}
		}
		if ($('ville_0')) {
			if (allselected)
				$('ville_0').addClassName('active')
			else
				$('ville_0').removeClassName('active')
		}
	}


	function chgLieu(id,el,nom,me){
		c = 1;
		if(nom=='region')
			c=2;	
		/* if(nom=='region' && id==0){
			lieu[nom] = 0;
			lieu['ville'] = 0;
			ahah('/ahah/ahah.php?mod=region&c=2&r=0','chville');
			ahah('/ahah/ahah.php?mod=region&c=1&r=0','chregion');
		}else{*/
			lieu[nom] = id;
			
			curvil = new Array();
			for(i=0; i<allville.length; i++){
				if(ville[allville[i]] == 1){
					curvil.push(allville[i]);
				}
			}
			
			
			ahah('/ahah/ahah.php?mod=region&c='+c+'&r='+id+'&v='+curvil,el);
		//}
		if (me != undefined) {
			var sibl = $(me).siblings();
			for (var i=0; i< sibl.length; i++) {
				sibl[i].removeClassName('active');
			}
			$(me).addClassName('active');
		}
		selVille();
	}

	function chgVille(id, me){
		if (id == 0) {
			var allselected = $(me).hasClassName('active');
			var villes = $$('#chville a');
			for (var i=0; i<villes.length; i++) {
				var newid = villes[i].id.substring(6);
				if(newid != 0 && newid != '') {
					if (allselected || (allselected == false && villes[i].hasClassName('active') == false))
						chgVille(newid, villes[i]);
				}
			}
		} else {
			ville_str[id] = me.innerHTML;
			allville.push(id);
			if(ville[id] == undefined || ville[id] != 1){
				ville[id] = 1;
			}else{
				ville[id] = 0;
			}
			selVille();
		}
	}

	function addHash(state) {
		if (state == undefined || state == true) {
			state = 'savestate';
		}
		var hashloc = window.location.href.indexOf('#');
		if (hashloc == -1) window.location = window.location.href+'#'+state+'_'+new Date().getTime();
		else window.location = window.location.href.substring(0, hashloc)+'#'+state+'_'+new Date().getTime();
	}

	function validSearchForm(){
		/* On récupère les éléments cochés :*/
		res = $('evenements');
		res.value = "";
		for(var i=0; i < evenements.length; i++){
			me = $('eve'+ evenements[i]);
			if(me && me.visible() && me.hasClassName("active")){
				res.value += evenements[i]+';';
			}
		}
		res = $('prestations');
		res.value = "";
		for(var i=0; i < prestations.length; i++){
			me = $('presta'+ prestations[i]);
			if(me && me.visible() && me.hasClassName("active")){
				res.value += prestations[i]+';';
			}
		}
		if(lieu['pays']){
			res = $('salle_pays');
			res.value = lieu['pays'];
		}
		if(lieu['region']){
			res = $('salle_region');
			res.value = lieu['region'];
		}

		res = $('salle_ville');
		res.value = '';
		for(var i=0; i < allville.length; i++){
			me = $('ville_'+allville[i]);
			if(ville[allville[i]] == 1){
				res.value += ville_str[allville[i]]+';';
			}
		}
		if ($('go_presta')) $('go_presta').value = 'Recherche en cours'; 
		replier_dt('parties');
	}	

	function validSearchRapide(){
		if ($('go_presta_rapide')) $('go_presta_rapide').value = 'Recherche en cours'; 
	}	

	function pro_part_radio(el){
		var me = $(el).up('li');
		me.addClassName("active");
				
		radios = me.siblings();
		for (var i=0; i< radios.length; i++) {
			radios[i].removeClassName("active");
		}

		var domaine = $('domaine').value = me.id.substring(4);

		var toeval = 'var choix4_active = $$(';

		checkboxes = $$('#type-evenement li');
		for (var i=0; i< checkboxes.length; i++) {
			if (checkboxes[i].hasClassName(domaine)) {
				checkboxes[i].style.display = 'block';
				toeval += '\'.parent-presta-'+checkboxes[i].id.match(/\d+$/)+'\', ';
			} else {
				checkboxes[i].style.display = 'none';
				checkboxes[i].removeClassName("active");
			}
		}

		toeval += '\'.parent-presta-all\')';
		
		// Masque tout le monde
		var choix4_all = $$('#critere4 li');
		for (var i=0; i<choix4_all.length; i++) {
			choix4_all[i].hide();
		}
		
		// Affiche les bons choix
		eval(toeval);
		for (var i=0; i<choix4_active.length; i++) {
			choix4_active[i].show();
		}
		
	}
	
	function checkbox_evenements(el, force){
		var me = $(el).up('li');
		var num = me.id.match(/\d+$/);
		var toeval = 'var choix4_active = $$(';
		
		evenements.push(num);
		
		var eve_active = new Array();
		if(me.hasClassName('active')){
			me.removeClassName("active");
		}else{
			me.addClassName("active");
			toeval += '\'.parent-presta-'+num+'\', ';
		}

		/**** Active/desactive les choix du nivo 4 ****/
		var eve = me.siblings();
		for (var i=0; i<eve.length; i++) {
			if (eve[i].hasClassName("active")) {
				toeval += '\'.parent-presta-'+eve[i].id.match(/\d+$/)+'\', ';
			}
		}
		toeval += '\'.parent-presta-all\')';
		
		// Masque tout le monde
		var choix4_all = $$('#critere4 li');
		for (var i=0; i<choix4_all.length; i++) {
			choix4_all[i].hide();
		}
		
		// Affiche les bons choix
		eval(toeval);
		for (var i=0; i<choix4_active.length; i++) {
			choix4_active[i].show();
		}
		
	}
	
	function checkbox_prestations(el){
		me = $(el).up('li');
		num = me.id.match(/\d+$/);
		prestations.push(num);
		if(me.hasClassName('active')){
			me.removeClassName("active");
		}else{
			me.addClassName("active");
		}
	}


/**
*
* MD5 (Message-Digest Algorithm)
* http://www.webtoolkit.info/
*
**/

var MD5 = function (string) {

    function RotateLeft(lValue, iShiftBits) {
        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
    }

    function AddUnsigned(lX,lY) {
        var lX4,lY4,lX8,lY8,lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    }

    function F(x,y,z) { return (x & y) | ((~x) & z); }
    function G(x,y,z) { return (x & z) | (y & (~z)); }
    function H(x,y,z) { return (x ^ y ^ z); }
    function I(x,y,z) { return (y ^ (x | (~z))); }

    function FF(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function GG(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function HH(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function II(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1=lMessageLength + 8;
        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
        var lWordArray=Array(lNumberOfWords-1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while ( lByteCount < lMessageLength ) {
            lWordCount = (lByteCount-(lByteCount % 4))/4;
            lBytePosition = (lByteCount % 4)*8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount-(lByteCount % 4))/4;
        lBytePosition = (lByteCount % 4)*8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
        lWordArray[lNumberOfWords-2] = lMessageLength<<3;
        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
        return lWordArray;
    };

    function WordToHex(lValue) {
        var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
        for (lCount = 0;lCount<=3;lCount++) {
            lByte = (lValue>>>(lCount*8)) & 255;
            WordToHexValue_temp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
        }
        return WordToHexValue;
    };

    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    };

    var x=Array();
    var k,AA,BB,CC,DD,a,b,c,d;
    var S11=7, S12=12, S13=17, S14=22;
    var S21=5, S22=9 , S23=14, S24=20;
    var S31=4, S32=11, S33=16, S34=23;
    var S41=6, S42=10, S43=15, S44=21;

    string = Utf8Encode(string);

    x = ConvertToWordArray(string);

    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

    for (k=0;k<x.length;k+=16) {
        AA=a; BB=b; CC=c; DD=d;
        a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
        d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
        c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
        b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
        a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
        d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
        c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
        b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
        a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
        d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
        c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
        b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
        a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
        d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
        c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
        b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
        a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
        d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
        c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
        b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
        a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
        d=GG(d,a,b,c,x[k+10],S22,0x2441453);
        c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
        b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
        a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
        d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
        c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
        b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
        a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
        d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
        c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
        b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
        a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
        d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
        c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
        b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
        a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
        d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
        c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
        b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
        a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
        d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
        c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
        b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
        a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
        d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
        c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
        b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
        a=II(a,b,c,d,x[k+0], S41,0xF4292244);
        d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
        c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
        b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
        a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
        d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
        c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
        b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
        a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
        d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
        c=II(c,d,a,b,x[k+6], S43,0xA3014314);
        b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
        a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
        d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
        c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
        b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
        a=AddUnsigned(a,AA);
        b=AddUnsigned(b,BB);
        c=AddUnsigned(c,CC);
        d=AddUnsigned(d,DD);
    }

    var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);

    return temp.toLowerCase();
}

function openInNewWin() {
	var lnks = $$('a[rel=external]');
	for(var i=0; i<lnks.length; i++) {
		lnks[i].target = '_blank';
	}
}


var loaded = false;

document.observe("dom:loaded",  function () {
	if (loaded == false && $('footer')) {
		loaded = true;
		openInNewWin();
		ahahRollBack();
		initRoll();
		initTabs();
	}
} );

new PeriodicalExecuter(function(pe) {
	if (loaded == false && $('footer')) {
		loaded = true;
    	pe.stop();
		openInNewWin();
		ahahRollBack();
		initRoll();
		initTabs();
	}
}, 2);