function loadImageData(strFilename, fncCallback) {
	var bCanvas = false;
	var oCanvas = document.createElement("canvas");
	if (oCanvas.getContext) {
		var oCtx = oCanvas.getContext("2d");
		if (oCtx.getImageData) {
			bCanvas = true;
		}
	}
	if (bCanvas) {
		var oImg = new Image();
		oImg.style.position = "absolute";
		oImg.style.left = "-10000px";
		document.body.appendChild(oImg);
		oImg.onload = function() {
			var dt1=new Date().getTime();

			var iWidth = this.offsetWidth;
			var iHeight = this.offsetHeight;
			oCanvas.width = iWidth;
			oCanvas.height = iHeight;
			oCanvas.style.width = iWidth+"px";
			oCanvas.style.height = iHeight+"px";
			var oText = document.getElementById("output");
			oCtx.drawImage(this,0,0);
			var oData = oCtx.getImageData(0,0,iWidth,iHeight).data;
			//alert ("odata: " + typeof oData + " _ " + oData.length);
			var out=[];
			var len=oData.length;
			for(var i=0;i<len;i+=4){out.push(oData[i],oData[i+1],oData[i+2]);}

			//alert("out: " + typeof out);
			H.d("out.length1: " + out.length);
			H.d("out first10: "+out.slice(0,10));
			//oData.splice(127502,out.length-127502);
			H.d("out.length2: " + out.length);

			var dt2=new Date().getTime();
			alert("TIME for canvas: " + (dt2-dt1));
			if (fncCallback) {
				fncCallback(out);
			}
			/*var len = oData.length;
			var out=[];
			for (var i=0;i<len;i+=4) {out.push(oData[i],oData[i+1],oData[i+2]);};
			if (fncCallback) {
				fncCallback(out);
			}*/
			document.body.removeChild(oImg);
		}
		oImg.src = strFilename;
		return true;
	} else {
		return false;
	}
}


H=HaX_Framework=false;
HaX_BitNumberGetter = function (bitArray)
{
    this.bitArray=bitArray;this.offsets=[];
    this.bits = 8;this.offset = 0;this.wordOffset = 0;
    this.ieSlice = function (arr,off1,off2) {var dif = off2 - off1; var na = [];for (var i=0;i<dif;i++) {na.push(arr [off1+i]);}return na;};
    //this.normalizeBitString = function (bitString) {var dif = 8 - bitString.length;var str = bitString;for (var i=0;i<dif;i++) {str = "0" + str;}return str;};
    //this.byteArrayToNumber = function (byteArray) {var str = "";for (var i=0;i<byteArray.length;i++) {str += this.normalizeBitString(byteArray[i].toString(2));}return parseInt(str,2);};
    this.parseHeader = function ()
    {
        var magicNumber = this.bitsToInt(this.ieSlice(this.bitArray,0,32));
        var byteCount = 2;if (magicNumber > 65535) {byteCount=4;}var off = 4;
        this.offsets.push(this.bitsToInt(this.ieSlice(this.bitArray,off*8,off*8+byteCount*8)));
        while (this.offsets[this.offsets.length-1] > 0) {off+=4;this.offsets.push(this.bitsToInt(this.ieSlice(this.bitArray,off*8,off*8+byteCount*8)));}
        this.bitArray.splice(0,(off+4)*8);
    };
    this.bitsToInt1 = function (bits) {return parseInt(bits.join(""),2);};
    this.bitsToInt = function (bits) {var myint = bits[bits.length-1];var off = 1;for (var i=bits.length-2;i>=0;i--) {if (bits[i] == 1) {myint+=Math.pow(2,off);}off++;}return myint;};
    this.getNext = function ()
    {
        if (this.offsets && this.wordOffset == this.offsets[0]) {this.bits++;this.offsets.splice(0,1);if(this.offsets.length==0){this.offsets=null;}}
        //var currentBits = this.ieSlice(this.bitArray,this.offset,this.offset+this.bits); // !!!IS MUCH FASTER IN IE!!!
        var currentBits = this.bitArray.slice(this.offset,this.offset+this.bits); // !!!IS FASTER IN KONQUEROR & Firefox2!!!
        this.offset += this.bits;this.wordOffset++;
        return this.bitsToInt (currentBits);
    };
    this.getWordArray = function () {var arr = [];while (this.offset < this.bitArray.length) {arr.push(this.getNext ());}return arr;};
    this.doAll = function () {this.parseHeader ();return this.getWordArray();};
}
function byteArrayToBitArray (byteArray)
{
    var bi = [];
    for (var i=0;i<byteArray.length;i++)
    {
        var by=byteArray[i];
        if(by>127){bi.push(1);by-=128;}else{bi.push(0);}
        if(by>63){bi.push(1);by-=64;}else{bi.push(0);}
        if(by>31){bi.push(1);by-=32;}else{bi.push(0);}
        if(by>15){bi.push(1);by-=16;}else{bi.push(0);}
        if(by>7){bi.push(1);by-=8;}else{bi.push(0);}
        if(by>3){bi.push(1);by-=4;}else{bi.push(0);}
        if(by>1){bi.push(1);by-=2;}else{bi.push(0);}
        bi.push(by);
    }
    return bi;
}
function byteArrayToNumber(byteArray){var str="";for(var i=0;i<byteArray.length;i++) {str+=normalizeBitString(byteArray[i].toString(2));}return parseInt(str,2);}
function normalizeBitString(bitString){var dif=8-bitString.length;var str=bitString;for(var i=0;i<dif;i++){str="0"+str;}return str;}
/*HaX_Compression = function ()
{
	this.charFromCharCode = function (charCode) {switch (charCode) {case 9: return '\t'; break;case 10: return '\n'; break;default: return unescape('%' + charCode.toString(16)); break;}};
	this.lzsys_decompress = function (inputData)
	{
		var returnText = ""; var rA = [];
		var inputData = inputData; var file_array = false; var file_array_length = false;
		if (typeof inputData == "undefined" || inputData == null || !inputData) {return false;}
		if (inputData.join && inputData.splice) {file_array = inputData;file_array_length = file_array.length;}
		else if (inputData.toLowerCase) {file_array = inputData.split(";");file_array_length = file_array.length;for (var i=0; i<file_array_length;i++) {file_array[i] = parseInt(file_array[i]);}}
		else {return false;}
		var next_code = 0; var table = [];
		while (next_code < 256) {table[next_code] = this.charFromCharCode(next_code);next_code++;}
		var last = file_array[0]; rA[0] = this.charFromCharCode(last); var lstring = ""; var position = 1;
		var table_nextOffset = false; var nextOffset = false; var table_last = false; var nstring;
		for (var position=1;position+1<file_array_length;position++)
		{
			nextOffset = file_array[position]; 	table_last = table[last];
			if(nextOffset < 256) {nstring = table[nextOffset];if(table_last == nstring) {table[next_code] = table_last+nstring;}else{table[next_code] = table_last+nstring.charAt(0);}}
			else {lstring = table[nextOffset];if(next_code == nextOffset) {table[next_code] = table_last+table_last.charAt(0);}else{table[next_code] = table_last+lstring.charAt(0);}}
			rA[position] = table[nextOffset]; last = nextOffset; next_code++;
		}
		returnText = rA.join(""); return returnText;
	};
	this.getByteArrayFromBinary = function (binaryString) {var byteArray = [];if (!(window && window.opera)) {for (var i=0; i<binaryString.length;i++) {var clength = byteArray.length;var c = binaryString.charCodeAt(i);byteArray.push((c > 255) ? c - 63232 : c);}}else {for (var i=0; i<binaryString.length;i++) {var c = binaryString.charCodeAt(i);if ((c >= 0x0001) && (c <= 0x007F)) {byteArray.push(c);}else if (c > 0x007F && c <= 0x00FF) {byteArray.push(c);}else {byteArray.push(c);}}};return this.getRealByteArray(byteArray);};
	this.getRealByteArray = function (byteArray) {var realByteArray = [];for (var i=0;i<byteArray.length+1;i++) {var highByte = byteArray[i];var lowByte = byteArray[i+1];realByteArray.push(highByte * 256 + lowByte);i++;};return realByteArray;};
	this.decompress_binary = function (mybinarystring) {var byteArray = this.getByteArrayFromBinary (mybinarystring);return this.lzsys_decompress(byteArray);};
	this.decompress_base64 = function (mybase64string) {var base64Decryptor = new HaX_Base64Decryptor(mybase64string);var byteArray = this.getRealByteArray (base64Decryptor.byteArray);return this.lzsys_decompress(byteArray);};
};*/
HaX_Compression = function ()
{
    // String.fromCharCode(code); TESTIT
    this.charFromCharCode = function (charCode) {switch (charCode) {case 9: return '\t'; break;case 10: return '\n'; break;default: return unescape('%' + charCode.toString(16)); break;}};
    this.lzsys_decompress = function (inputData)
    {
        var rA = [];
        var inputData = inputData; var file_array = false; var file_array_length = false;
        if (typeof inputData == "undefined" || inputData == null || !inputData) {return false;}
        if (inputData.join && inputData.splice) {file_array = inputData;file_array_length = file_array.length;}
        else if (inputData.toLowerCase) {file_array = inputData.split(";");file_array_length = file_array.length;for (var i=0; i<file_array_length;i++) {file_array[i] = parseInt(file_array[i]);}}
        else {return false;}
        var next_code = 0; var table = [];
        while (next_code < 256) {table[next_code] = this.charFromCharCode(next_code);next_code++;}
        var last = file_array[0]; rA[0] = this.charFromCharCode(last); var lstring = ""; var position = 1;
        var table_nextOffset = false; var nextOffset = false; var table_last = false; var nstring;
        for (var position=1;position+1<file_array_length;position++)
        {
            nextOffset = file_array[position]; 	table_last = table[last];
            if(nextOffset < 256) {nstring = table[nextOffset];if(table_last == nstring) {table[next_code] = table_last+nstring;}else{table[next_code] = table_last+nstring.charAt(0);}}
            else {lstring = table[nextOffset];if(next_code == nextOffset) {table[next_code] = table_last+table_last.charAt(0);}else{table[next_code] = table_last+lstring.charAt(0);}}
            rA[position] = table[nextOffset]; last = nextOffset; next_code++;
        }
        return rA.join("");
    };
    this.getByteArrayFromBinary = function (binaryString) {var byteArray = [];if (!(window && window.opera)) {for (var i=0; i<binaryString.length;i++) {var clength = byteArray.length;var c = binaryString.charCodeAt(i);byteArray.push((c > 255) ? c - 63232 : c);}}else {for (var i=0; i<binaryString.length;i++) {var c = binaryString.charCodeAt(i);if ((c >= 0x0001) && (c <= 0x007F)) {byteArray.push(c);}else if (c > 0x007F && c <= 0x00FF) {byteArray.push(c);}else {byteArray.push(c);}}};return this.getRealByteArray(byteArray);};
    this.getRealByteArray = function (byteArray){var realByteArray = [];for (var i=0;i<byteArray.length+1;i++) {var highByte = byteArray[i];var lowByte = byteArray[i+1];realByteArray.push(highByte * 256 + lowByte);i++;};return realByteArray;};
    this.getRealByteArrayVariableByteRate = function (byteArray)
    {
        var realByteArray = [];
        var smallBytes = true;
        for (var i=0;i<byteArray.length+1;i++)
        {
            if (smallBytes)
            {
                var highByte = byteArray[i];
                var lowByte = byteArray[i+1];
                var val = highByte * 256 + lowByte;
                if (val == 65535)  {smallBytes = false;}
                realByteArray.push(val);
                i++;
            }
            else
            {
                var highByte = byteArray[i+1];
                var midByte = byteArray[i+2];
                var lowByte = byteArray[i+3];
                realByteArray.push(highByte * 65536 + midByte * 256 + lowByte);
                i+=3;
            }
        };
        return realByteArray;
    };

    this.decompress_binary = function (mybinarystring) {var byteArray = this.getByteArrayFromBinary (mybinarystring);return this.lzsys_decompress(byteArray);};
    this.decompress_base64 = function (mybase64string){var base64Decryptor = new HaX_Base64Decryptor(mybase64string);var byteArray = this.getRealByteArray (base64Decryptor.byteArray);return this.lzsys_decompress(byteArray);};
    this.decompress_base64_VariableByteRate = function (mybase64string){var base64Decryptor = new HaX_Base64Decryptor(mybase64string);var byteArray = this.getRealByteArrayVariableByteRate (base64Decryptor.byteArray);return this.lzsys_decompress(byteArray);}
    this.decompress_base91_VariableByteRate = function (mybase64string)
    {
        var base91Decryptor = new HaX_Base91Decryptor();
        var b91decoded = base91Decryptor.decode(mybase64string);
        var byteArray = this.getRealByteArrayVariableByteRate (b91decoded);
        return this.lzsys_decompress(byteArray);
    }

this.decompress_binary=function(binary)
{
	var words=compression.getRealByteArray (binary);
	return compression.lzsys_decompress (words)
}
this.decompress_image=function(src)
{
	loadImageData(src,this.decompress_binary)
}

    this.decompress_base91 = function (base91String)
    {
        var b91decryptor = new HaX_Base91Decryptor();
        var b91decrypted = b91decryptor.decode(base91String);
		return this.lzsys_decompress (this.getRealByteArray (b91decrypted));
        /*var bitArray = byteArrayToBitArray(b91decrypted);
        var bng = new HaX_BitNumberGetter (bitArray);
        var wordArray = bng.doAll();
        return this.lzsys_decompress (wordArray);*/
    }
    this.decompress_base91_slow = function (base91String)
    {
        var base91Decryptor = new HaX_Base91Decryptor();
        var baseDecoded = base91Decryptor.decode(base91String);
        var wordArray = new HaX_BitNumberGetterOptimized(baseDecoded).doAll();
        return this.lzsys_decompress (wordArray);
    }
};
HaX_Base64Decryptor = function(ascii64Str)
{
	this.byteArray = [];
	this.getVal = function (code) {if(code>47&&code<58) {;return code+4;}if(code>64&&code<91) {;return code-65;}if(code>96&&code<123) {;return code-71;}if(code==43) {;return 62;}if(code==47) {;return 63;};return null;};
	this.extractByteGroup = function (str) {var c1=str.charCodeAt(0); var c2=str.charCodeAt(1); var c3=str.charCodeAt(2); var c4=str.charCodeAt(3);if(c3==61&&c4==61) {c1=this.getVal(c1); c2=this.getVal(c2);this.byteArray.push((c1<<2)|(c2>>4));}else if(c4==61) {c1=this.getVal(c1); c2=this.getVal(c2); c3=this.getVal(c3);this.byteArray.push((c1<<2)|(c2>>4),((c2&0xf)<<4)|(c3>>2));}else {c1=this.getVal(c1); c2=this.getVal(c2); c3=this.getVal(c3);c4=this.getVal(c4);this.byteArray.push((c1<<2)|(c2>>4),((c2&0xf)<<4)|(c3>>2),((c3&0x3)<<6)|c4);}};
	this.getBytes = function () {ascii64Str=ascii64Str.replace(/[ \t\r\n]/gm,''); if(ascii64Str.length%4!=0) {;return null;}var ascii64StrLengthDif = ascii64Str.length / 4; for(var i=0;i<ascii64StrLengthDif;i++) {this.extractByteGroup(ascii64Str.substr(i*4,4));}};
	this.getBytes();
};
HaX_Base91Decryptor = function ()
{
    this.flipArray = function (arr) {var out = [];for (var i=0;i<arr.length;i++) {out[arr[i].charCodeAt(0)] = i;}return out;}
    this.b91_enctab = new Array(
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '#', '$',
        '%', '&', '(', ')', '*', '+', ',', '.', '/', ':', ';', '<', '=',
        '>', '?', '@', '[', ']', '^', '_', '`', '{', '|', '}', '~', '"'
    );
    this.b91_dectab = this.flipArray(this.b91_enctab);
    this.decode = function (d)
    {
        var l = d.length;var v = -1;var n = 0;var o = [];
        for (var i=0;i<l;i++)
        {
            var c = this.b91_dectab[d.charCodeAt(i)];
            if (c<0) {alert ("error");continue;} 	// do we need this?

            if (v < 0) {v=c;}
            else
            {
                v += c * 91;
                var b = b | v << n;
                n += (v & 8191) > 88 ? 13 : 14;
                do
                {
                    o.push(b & 255);
                    b = b >> 8;
                    n -= 8;
                } while (n > 7);
                v = -1;
            }
        }
        if (v + 1) {o.push((b | v << n) & 255);}
        return o;
    }
    this.decodeOLD = function (d)
    {
        var l = d.length;var v = -1;var n = 0;var o = [];
        for (var i=0;i<l;i++)
        {
            var c = this.b91_dectab[d.charCodeAt(i)];
            //if (c<0) {alert ("error");continue;} 	// do we need this?

            if (v < 0) {v=c;}
            else
            {
                v += c * 91;
                var b = b | v << n;
                n += (v & 8191) > 88 ? 13 : 14;
                do
                {
                    o.push(b & 255);
                    b = b >> 8;
                    n -= 8;
                } while (n > 7);
                v = -1;
            }
        }
        if (v + 1) {o.push((b | v << n) & 255);}
        return o;
    }
}


detectBrowser = function ()
{
	var rA = [];

	//##DOCUMENTATION##     // opera 2nd            //$$DOCUMENTATION$$
	var allopera = navigator.userAgent.toLowerCase().indexOf('opera') + 1;
	var opera4andlt = navigator.userAgent.toLowerCase().indexOf('opera') + 1 && !window.opera;
	if (opera4andlt) {return new Array('Opera','OPE','Opera',"4");}
	var opera5 = window.opera && !window.print;
	if (opera5) {return new Array('Opera','OPE','Opera',"5");}
	var opera6 = window.opera && window.print && !document.childNodes;
	if (opera6) {return new Array('Opera','OPE','Opera',"6");}
	var opera8andgt = window.opera && window.getComputedStyle;
	if (opera8andgt) {return new Array('Opera','OPE','Opera',"8");}
	var opera7andgt = window.opera && document.childNodes;
	if (opera7andgt) {return new Array('Opera','OPE','Opera',"7");}

	//##DOCUMENTATION##         // must be checked before khtml check           //$$DOCUMENTATION$$
	var escape_evo5 = document.all && document.getElementById && navigator.savePreferences;
	if (escape_evo5) {return new Array('Escape/Evo5','ESC','DOM',"5");}

	//##DOCUMENTATION##         // KHTML Browsers           //$$DOCUMENTATION$$
	var is_khtml = (navigator.vendor == 'KDE')?true:false;
	var konqueror = (document.childNodes)&&(!document.all)&&(!navigator.taintEnabled)?true:false;
	if (konqueror) {return new Array('Konqueror','KON','KHTML',"?");}
	var safari = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName)?true:false;
	if (safari) {return new Array('Safari','SAF','KHTML',"?");}
	var hotjava = navigator.userAgent.toLowerCase().indexOf('hotjava') + 1 && typeof( navigator.accentColorName ) == 'undefined';
	if (hotjava) {return new Array('HotJava','HJ','?',"?");}
	var omniweb42 = !hotjava && document.layers && !document.classes;
	if (omniweb42) {return new Array('OmniWeb','OMN','KHTML',"4.2");}
	var omniweb45plus = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (navigator.accentColorName)?true:false;
	if (omniweb45plus) {return new Array('OmniWeb','OMN','KHTML',"4.5+");}

    //##DOCUMENTATION##
	/*var icebrowser = navigator.__ice_version:
	if (icebrowser) {return new Array('IceBrowser','ICE','?',"?");}*/
     //$$DOCUMENTATION$$
	var allicab = window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1;
	var icab2 = window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1 && !document.createElement;
	if (icab2) {return new Array('iCab','ICA','!DOM',"2");}
	var icab3andgt =  window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1 && document.createElement;
	if (icab3andgt) {return new Array('iCab','ICA','DOM',"3+");}
	var escape4 = document.layers && document.classes && !navigator.mimeTypes['*'];
	if (escape4) {return new Array('Escape','ESC','Layer',"4");}
	var netscape4 = document.layers && navigator.mimeTypes['*'];
	if (netscape4) {return new Array('Netscape','NET','Layer',"4");}
	var check = navigator.appVersion;
	var check2 = navigator.userAgent;
	if (check2.indexOf("Netscape") != -1)
	{
		var val = parseInt(check2.substr(check2.lastIndexOf('.')));
		//##DOCUMENTATION##         //alert ("Netscape found: " + val);         //$$DOCUMENTATION$$
		if (val >= 8) {return new Array('Netscape','Net','Gecko',"2");}
		else {return new Array('Netscape','Net','Gecko',"1");}
	}

	var webtv = navigator.appName.indexOf('WebTV') + 1;
	if (webtv) {return new Array('WebTV','WEB','?',"?");}
	var ipanel = navigator.userAgent.toLowerCase().indexOf( 'ipanel' ) + 1;
	if (ipanel) {return new Array('iPanel','IPA','?',"?");}
	var netbox = navigator.userAgent.toLowerCase().indexOf( 'netgem' ) + 1;
	if (netbox) {return new Array('NetBox','NB','?',"?");}
	var opentv = navigator.userAgent.toLowerCase().indexOf( 'opentv' ) + 1;
	if (opentv) {return new Array('OpenTV','OTV','?',"?");}
	var cluebrowser = document.getElementById && !document.childNodes;
	if (cluebrowser) {return new Array('ClueBrowser','CLU','?',"?");}
	var netfront = navigator.userAgent.toLowerCase().indexOf( 'netfront' ) + 1 || navigator.appName == 'Blazer';
	if (netfront){return new Array('NetFront','NF','?',"?");}

	//##DOCUMENTATION##         // Gecko            //$$DOCUMENTATION$$
	var allgecko = navigator.product == 'Gecko';
	//##DOCUMENTATION##             // Netscape 6, Mozilla 0.9- and reduced Gecko       //$$DOCUMENTATION$$
	var net6moz09redgecko = navigator.product == 'Gecko' && !window.find;
	if (net6moz09redgecko) {return new Array('Gecko','GEC','Gecko',"1");}
	if (allgecko && typeof HaX_DetectTempEvent == "object" && window.find && typeof HaX_DetectTempEvent.preventBubble == "function") {return new Array('Gecko','GEC','Gecko',"2");}
	if (allgecko && window.find && typeof HaX_DetectTempEvent == "object" && typeof HaX_DetectTempEvent.preventBubble != "function") {return new Array('Gecko','GEC','Gecko',"3");}
	if (allgecko) {return new Array('Gecko','GEC','Gecko',"unknown");}

	//##DOCUMENTATION##         // IE           //$$DOCUMENTATION$$
	var allie = document.all;
	var ie4 = document.all && !document.getElementById;
	if (ie4) {return new Array('InternetExplorer','IE','IE',4);}
	var ie5 = document.getElementById && !document.compatMode;
	if (ie5) {return new Array('InternetExplorer','IE','IE',5);}
	var ie6 = document.getElementById && document.compatMode && !window.XMLHttpRequest;
	if (ie6) {return new Array('InternetExplorer','IE','IE',6);}
	var ie7andgt = document.getElementById && document.compatMode && window.XMLHttpRequest;
	if (ie7andgt) {return new Array('InternetExplorer','IE','IE',7);}
	var pocketie = window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf( 'msie' ) + 1;
	if (pocketie) {return new Array('PocketIE','IE','IE',1);}
};

HaX_getWindowWidth = function () {if (window && window.innerWidth) {return window.innerWidth;}else if (document && document.body && document.body.offsetWidth) {return document.body.offsetWidth;}return 800;};
HaX_getWindowHeight = function () {if (window && window.innerHeight) {return window.innerHeight;}else if (document && document.body && document.body.offsetHeight) {return document.body.offsetHeight;}return 600;};
HaX_BaseArray = [];
String.prototype.trim = function () {;return (this.replace(/\s+$/,"").replace(/^\s+/,""));};
String.prototype.replaceRecursive = function (matchString,replaceString) {var returnString = ""; var tmpArray = this.split(matchString);if (tmpArray.length > 1) {for (var i=0;i<tmpArray.length;i++) {if (i+1<tmpArray.length) {returnString+=tmpArray[i] + replaceString;}else{returnString+=tmpArray[i];}};return returnString.toString();}else {;return this.toString();}};
HaX_DataTransfer = function ()
{
	this.isLoaderCall = true; this.ajaxObj = false; this.requests=[];this.uniqueRequestIds=[];
	if (typeof this.register == "function") {this.register;}
	this.gURI=this.generateUniqueRequestId = function () {var cl=this.uniqueRequestIds.length;this.uniqueRequestIds[cl]='HaX_Request_Id_'+cl;return this.uniqueRequestIds[cl];};
	this.addRequest = function(id,conType,url,post,readyFunction,errorFunction) {this.requests[id] = [];this.requests[id]['id'] = id; this.requests[id]['conType'] = conType;this.requests[id]['url'] = url; this.requests[id]['post'] = post;this.requests[id]['readyFunction'] = readyFunction; this.requests[id]['errorFunction'] = errorFunction;this.requests[id]['responseText'] = false; this.requests[id]['responseXML'] = false;var ajaxObject = this.createAjaxObject(); this.requests[id]['ajaxObject'] = ajaxObject;};
	this.getRequestIdByAjaxObject = function (ajaxObject) {for(var requestId in this.requests) {if (this.requests[requestId]['ajaxObject'] == ajaxObject) {;return requestId;}};return false;};
	this.setRequestResponse = function (id,responseText,responseXML) {this.requests[id]['responseText'] = responseText;this.requests[id]['responseXML'] = responseXML;};
	this.getRequestAjaxObject = function (id) {if (this.requests[id]){;return this.requests[id]['ajaxObject'];};return false;};
	this.gRRT=this.getRequestResponseText = function (id) {if (this.requests[id]) {;return this.requests[id]['responseText'];};return false;};
	this.setRequestScriptInfos = function (id,scriptInfos) {if (typeof scriptInfos != "undefined" && scriptInfos && scriptInfos.join) {if (id && this.requests[id]) {this.requests[id]['scriptInfos'] = scriptInfos;return true;}}return false;};
	this.getRequestScriptInfos = function (id) {if(id && this.requests[id] && this.requests[id]['scriptInfos']) {return this.requests[id]['scriptInfos'];}return false;};
	this.createAjaxObject = function (requestId)
	{
		var ajaxObject=false;
		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
			try {ajaxObject = new ActiveXObject("Msxml2.XMLHTTP");}
			catch (e) {try {ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");}catch (E) {ajaxObject = false;}}
		@end @*/
		if (!ajaxObject && typeof XMLHttpRequest!='undefined') {try {ajaxObject = new XMLHttpRequest();}catch (e) {ajaxObject=false;}};
		if (!ajaxObject && window.createRequest) {try {ajaxObject = window.createRequest();}catch (e) {ajaxObject=false;}}
		return ajaxObject;
	};
	this.execFunction = function (myReqId,myfunc,context)
	{
		var tmpFunction = myfunc.replaceRecursive('~REQUESTID~',myReqId);
		if (typeof HaX != "undefined" && HaX && typeof H.sHF == "function")
		{
			if (H.sHF (context,false)) {tmpFunction = tmpFunction.replaceRecursive('$$',"H.registry.getInstanceByName ('" +context.reghandle+ "','" +context.instanceName+ "')");}
			if (typeof H.parseEvalString == "function") {tmpFunction = H.parseEvalString (tmpFunction);}
		}
		eval (tmpFunction.trim());
	};
	this.aO=this.ajaxOpen=function(requestId,conType,url,post,readyFunction,errorFunction,useRelativeUrl,contentType,hv,scriptName,fullName,mypath,cssName,cssSkin,cssSkinStyle,context)
	{
        if(!conType){conType="GET";}
        if (typeof contentType == 'undefined' || !contentType || !contentType.length > 0 || !contentType.toLowerCase){contentType="application/x-www-form-urlencoded";}
        if (useRelativeUrl == true) {url = H.C.basePath + url;}
        if (!requestId) {requestId = this.generateUniqueRequestId();}
        if (HaX && H.logHandler && H.logHandler.addLogItem) {H.logHandler.addLogItem (new HaX_LogItem (this,"H.DT.aO","Begin Ajax Request","RequestId: " + requestId + "  -  connectionType: " +conType+ "  _  url: " + url + "  _  post: " + post + "  _  readyFunction: " + readyFunction ,"Error"));}
        this.addRequest(requestId,conType,url,post,readyFunction,errorFunction); var ajaxObject = this.getRequestAjaxObject (requestId);
        var mypath = mypath;if (typeof mypath == "undefined" || ! mypath) {mypath=H.C.baseFolderPath;}
        if (typeof scriptName != "undefined" && scriptName) {H.DT.setRequestScriptInfos(requestId,new Array(scriptName,fullName,mypath));}
        if (typeof cssName != "undefined" && cssName) {H.DT.setRequestCssInfos(requestId,new Array(cssName,cssSkin,cssSkinStyle));}
        ajaxObject.open(conType,url,true);//TODO move to below (IE Bug), check Opera compatibility
        ajaxObject.onreadystatechange=function()
        {
            switch(ajaxObject.readyState)
            {
                case 0: break;	//##DOCUMENTATION##         // 0: initialize (vor open())           //$$DOCUMENTATION$$
                case 1: break;	//##DOCUMENTATION##         // 1: initdone (vor send())             //$$DOCUMENTATION$$
                case 2: break;	//##DOCUMENTATION##         // 2: headdone (Kopfdaten verfuegbar)           //$$DOCUMENTATION$$
                case 3: break;	//##DOCUMENTATION##         // 3: loading body (Teil des Dokuments verfÃ¼gbar)           //$$DOCUMENTATION$$
                case 4:			//##DOCUMENTATION##         // 4: alldone HTTP Stati see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html         //$$DOCUMENTATION$$
                    if (typeof HaX != "undefined")
                    {
						
                        var myReqId = H.DT.getRequestIdByAjaxObject(ajaxObject);
                        if (ajaxObject.status == 200)
                        {
                            //##DOCUMENTATION## ajaxObject.statusText ajaxObject.getResponseHeader( key ) HTTP-Header-Eintrag zum gegebenen Key ajaxObject.getAllResponseHeaders()  Alle HTTP-Header-EintrÃ¤ge //$$DOCUMENTATION$$
                            H.DT.setRequestResponse	(myReqId,ajaxObject.responseText,ajaxObject.responseXML);
                            if (typeof readyFunction != 'undefined' && readyFunction && readyFunction.length > 0 && readyFunction.toLowerCase){H.DT.execFunction (myReqId,readyFunction,context);}
                        }
                        else if(typeof errorFunction != 'undefined' && errorFunction && errorFunction.length > 0 && errorFunction.toLowerCase){H.DT.execFunction (myReqId,errorFunction,context);}
                    }
                    break;
            }
        }
        var myDate = new Date ((new Date().getTime() - (1000 * 60 * 60 * 24 * 100)));
        if (ajaxObject && typeof ajaxObject.setRequestHeader=="function")
        {
			//##DOCUMENTATION##		Testing Charset	//$$DOCUMENTATION$$
			//ajaxObject.setRequestHeader('Accept-Charset',"utf-8");
			 //##DOCUMENTATION##		Testing Charset	//$$DOCUMENTATION$$
			if(H&&H.EM&&H.EM.currentAction){ajaxObject.setRequestHeader('X-HaX_UNDOINFO',H.EM.currentAction.toJSONString());}

			//ajaxObject.setRequestHeader('enctype',"contentType");

			ajaxObject.setRequestHeader('Content-Type',contentType);
			if(typeof myDate.toGMTString == "function") {ajaxObject.setRequestHeader('Expires',myDate.toGMTString());}
            ajaxObject.setRequestHeader('PRAGMA','NO-CACHE');
            ajaxObject.setRequestHeader('Cache-Control','no-cache, no-store, must-revalidate, max-age=0');
            if(typeof hv != 'undefined' && hv && hv.length > 0){for (var i=0; i<hv.length;i++) {ajaxObject.setRequestHeader(hv[i]['key'],hv[i]['value']);}}
        }
        //##DOCUMENTATION##         //ajaxObject.overrideMimeType('text/plain; charset=x-user-defined');        //$$DOCUMENTATION$$
        ajaxObject.send(post);
        return requestId;
    }
    return false;
};
HaX_AddPanelEntry = function (titleText,contentText)
{
    var lde = document.getElementById("HaX_LoaderDebugElement");

	if (lde != null && lde && lde.appendChild)
	{
		lde.appendChild (document.createTextNode (titleText));
		lde.appendChild (document.createElement("BR"));
		lde.appendChild (document.createTextNode (contentText));
		lde.appendChild (document.createElement("BR"));
		lde.appendChild (document.createElement("BR"));
	}
};
HaX_ShowLoaderElement = function ()
{
	if (typeof HaX_loaderElementShown == "undefined" || !HaX_loaderElementShown)
	{
        if(family == 'IE') {
            var ieState = false;
            if( document.readyState == 'complete' || document.readyState == 'interactive') { ieState = true; }
        } else {
            var ieState = true;
        }

		//##DOCUMENTATION##         //document.body.hasChildNodes()         //$$DOCUMENTATION$$
		if (document.body && document.createElement && document.body.appendChild && document.body.hasChildNodes && document.body.hasChildNodes() && document.body.getAttribute('haxload') != "true" && ieState)
		{
            if(H.C.useIELoadingHack && !document.getElementById("HaX_IEHACKELEMENT")){window.location=window.location;}
			HaX_loaderElementShown = true;
			if (window.scrollTo) {window.scrollTo(0,0);}
			document.body.style.overflow = "hidden";
			var wwidth = HaX_getWindowWidth();var wheight = HaX_getWindowHeight();
			var imgwidth = H.C.preloaderImageWidth;var imgheight = H.C.preloaderImageHeight;
			var myshift = 0;if (typeof H.C.preloaderTopShift != "undefined" && !isNaN(H.C.preloaderTopShift)) {myshift = H.C.preloaderTopShift;}
			var leftoff = parseInt((wwidth - imgwidth) / 2);var topoff = parseInt(((wheight - imgheight) / 2) + myshift);

            var lbe = document.createElement("DIV");
			lbe.style.backgroundColor = "#FFFFFF"; lbe.style.position = "absolute";
			lbe.style.top = "0px"; lbe.style.left = "0px";
			lbe.style.zIndex = "32000"; lbe.style.width = "100%";
			lbe.style.height = "" + (wheight + 50) + "px";
			lbe.style.textAlign = "center"; lbe.id = "HaX_LoaderBackgroundElement";
			lbe.setAttribute("id","HaX_LoaderBackgroundElement");
			var lfe=document.createElement("DIV");
            lfe.style.backgroundColor = "transparent";
			lfe.style.position = "absolute"; lfe.style.top = "" + topoff + "px";
			lfe.style.left = "" + leftoff + "px"; lfe.style.zIndex = "32001";
			lfe.style.opacity = "1.0"; lfe.style.textAlign = "center";
			lfe.id = "HaX_LoaderForegroundElement";
			lfe.setAttribute("id","HaX_LoaderForegroundElement");
			var lie = document.createElement ('IMG'); lie.src = H.C.basePath + H.C.preloaderImageUrl;
			lie.style.width = imgwidth + "px";
			lie.style.height = imgheight + "px";;
			lie.style.textAlign = "center";
            lie.id = "HaX_LoaderImageElement";lie.setAttribute("id","HaX_LoaderImageElement");
			lfe.appendChild(lie);

            var askip = document.createElement("A");
                        askip.style.top = '10px';
                        askip.style.right = '10px';
                        askip.style.position = 'fixed';
                        askip.href = '/index.classic';
                        askip.setAttribute("href", "/index.classic");
                        askip.innerHTML = "kompatibler Modus wechseln";
                        lfe.appendChild(askip);



			var lde=false;
			if (H.C.showLoadingDebugPanel == true)
			{
				lde = document.createElement ("DIV");
				lde.style.backgroundColor = "#FFFFFF";
				lde.style.position = "absolute";
				lde.style.top = "0px";
				lde.style.left = "0px";
				lde.style.overflow = "auto";
				lde.style.zIndex = "32102";
				lde.style.width = "100%";
				lde.style.height = "" + (wheight + 50) + "px";
				lde.style.textAlign = "center";
				lde.id = "HaX_LoaderDebugElement";lde.setAttribute("id","HaX_LoaderDebugElement");
				lde.appendChild(document.createTextNode("DebugElement"));

				HaX_AddPanelEntry ("Temporary Debug Panel created", "Debug Mode is turned on and the temporary boot Debug Panel has been created");
			}
            //##DOCUMENTATION##         // TODO this here is an IE7 workaround (breaks with confusing dns error else!!!)
			// TODO the problem with the workaround is we need a DIV tag inserted manually into the page content, that SUCKS!           //$$DOCUMENTATION$$
			var cont = document.getElementById ("HaX_LoaderContainer");
			if (!cont) {cont = document.body;}
			cont.setAttribute('haxload','true');
			cont.appendChild(lbe);
			cont.appendChild(lfe);
			if (H.C.showLoadingDebugPanel == true && lde) {cont.appendChild(lde);}
			//##DOCUMENTATION##         //window.scrollBy(0,-1000);         //$$DOCUMENTATION$$
			if (window.scrollTo) {window.scrollTo(0,0);}

            HaX__Loader.executeLoader();
            brow = null;ver = null;ver = null;
		}
		else {window.setTimeout("HaX_ShowLoaderElement()", 50);}
	}
};
HaX_LoaderElementAlreadyRemoved = false;
HaX_RemoveLoaderElement = function ()
{
	if (!HaX_LoaderElementAlreadyRemoved)
	{
        var lde=document.getElementById("HaX_LoaderDebugElement");
		if (H.C.showLoadingDebugPanel == true && lde) {H.dom.removeFromParent (lde);}
		var cont = document.getElementById ("HaX_LoaderContainer");if (!cont) {cont = document.body;}
        var lbe = document.getElementById ("HaX_LoaderBackgroundElement");
        var lfe = document.getElementById ("HaX_LoaderForegroundElement");
		if (cont && cont.getAttribute && cont.getAttribute('haxload') == "true" && typeof HaX__Loader != "undefined" && HaX__Loader && !HaX_LoaderElementAlreadyRemoved)
		{
            HaX_LoaderElementAlreadyRemoved = true;
			if (typeof HaX_Animation != "undefined" && HaX_Animation)
			{
				if (typeof lbe != "undefined" && lbe && lbe.parentNode) {cont.removeChild(lbe);};
				if (typeof lfe != "undefined" && lfe && lfe.parentNode)
				{
					var rla = HaX_RemoveLoaderElementAnimation = new HaX_Animation ("HaX_RemoveLoaderElementAnimation",35);
					rla.addHtmlElement ("HaX_LoaderForegroundElement");
					var effect1 = rla.addEffect('effect1','opacity',0,30);
					rla.addModifier (effect1,'','negative_exponential','attach',-100);rla.createOriginalData ();
					rla.computeAll();
					rla.play(40);
					rla.addListener ("endReached","HaX_LoaderForegroundElement",new HaX_Listener("H.dom.removeFromParent(H.dom.getEBI('HaX_LoaderForegroundElement'));"),false);
                    //##DOCUMENTATION##         //rla.addListener ("endReached","HaX_LoaderForegroundElement",new HaX_Listener("H.dom.removeFromParent(H.dom.getEBI('HaX_LoaderForegroundElement'));document.body.style.overflow = 'auto';"),false);       //$$DOCUMENTATION$$
				}
			}
			else
			{
				cont.removeAttribute('haxload');
				if (typeof lbe != "undefined" && lbe && lbe.parentNode == cont) {cont.removeChild(lbe);}
				if (typeof lfe != "undefined" && lfe && lfe.parentNode == cont) {cont.removeChild(lfe);}
			}
			if(H.C.useHiddenBodyOverflow==true){document.body.style.overflow="hidden";}
			else{document.body.style.overflow="auto";}
		}
	}
};

HaX_SetDocumentLoadToDone = function (e){HaX_DetectTempEvent = e;if (!H.detect && typeof HaX_Detect != "undefined" && HaX_Detect){H.Dt = H.detect = new HaX_Detect ();}HaX_DocumentIsLoaded = true;};
HaX_DoWhenDocumentIsLoaded = function ()
{
    if(document.readyState == 'complete' || document.readyState == 'interactive') {
        if(typeof HaX_DocumentIsLoaded == 'undefined'||!HaX_DocumentIsLoaded) HaX_SetDocumentLoadToDone();
    }

	if (typeof HaX_DocumentIsLoaded != "undefined" && HaX_DocumentIsLoaded == true)
	{
		if (!H.Dt && typeof HaX_Detect != "undefined" && HaX_Detect) {H.Dt=H.detect=new HaX_Detect();}
		H.D.parseDocument('H.chainEndHandler(false,true);');
	}
	else {window.setTimeout("HaX_DoWhenDocumentIsLoaded();", 50);}
};
HaX_Loader = function ()
{
	var el = window;
	if (el.addEventListener) {el.addEventListener("load",HaX_SetDocumentLoadToDone,false);}//DOMContentLoaded
	else if (el == window && document && document.body && document.body.attachEvent) {document.body.attachEvent("onload",HaX_SetDocumentLoadToDone);}
	else if (el.attachEvent) {el.attachEvent("onload",HaX_SetDocumentLoadToDone);}
	else if (document.getElementById) {eval ('onload' + '=' + HaX_SetDocumentLoadToDone);}

    HaX_ShowLoaderElement();
	window.setTimeout("HaX_ShowLoaderElement();", 50);
	H=HaX={};HaX__DataTransfer=H.DT=H.dataTransfer=new HaX_DataTransfer();H.C=H.config=new HaX_Config();
	this.baseShorthandles = new Array('dataConverter','registry','dataTransfer','widgets','widgetDefinitions','logHandler','keyHandler','mouseHandler','animation','skinHandler','objectFactory','easySyntaxParser','eventManager','dataManager','propertyManager','elementManager','nodeManager','animationManager','baseWidget','domCrawler','timer','detect','tickAnimator','collection','manager','scriptingLanguage','framework','hssHandler','cssParser','jssParser','function','history','layerManager','math','dataPoller','windowManager');
	this.baseReghandles = new Array('HaX_DataConverter','HaX_Registry','HaX_DataTransfer','HaX_Widgets','HaX_WidgetDefinitions','HaX_LogHandler','HaX_KeyHandler','HaX_MouseHandler','HaX_Animation','HaX_SkinHandler','HaX_ObjectFactory','HaX_EasySyntaxParser','HaX_EventManager','HaX_DataManager','HaX_PropertyManager','HaX_ElementManager','HaX_NodeManager','HaX_AnimationManager','HaX_BaseWidget','HaX_DomCrawler','HaX_Timer','HaX_Detect','HaX_TickAnimator','HaX_Collection','HaX_Manager','HaX_ScriptingLanguage','HaX_Framework','HaX_HssHandler','HaX_CssParser','HaX_JssParser','HaX_Function','HaX_History','HaX_LayerManager','HaX_Math','HaX_DataPoller','HaX_WindowManager');

	this.loadDocument = function () {};     //##DOCUMENTATION##         TODO implement       //$$DOCUMENTATION$$
	this.executeLoader = function ()
	{
		HaX_AddPanelEntry ("Executing Loader", "The Method 'executeLoader' has been called and is now executing");
		if (H.C.useAjaxLayout == true){var newLoc = window.location + H.C.ajaxLayoutSerializer;this.loadDocument ();}   //##DOCUMENTATION##         TODO implement       //$$DOCUMENTATION$$
		if (H.C.useOneFileBase == true) {this.loadBaseScript('base','HAXBASE');}
		else {this.loadBaseScripts (this.baseShorthandles,this.baseReghandles);}
		HaX_AddPanelEntry ("Executing Loader Done", "The Method 'executeLoader' has been called and is now done");
	};
	this.executeBaseScript = function (baseScript,useCompression,i)
	{
		if (baseScript && baseScript.toLowerCase)
		{
			HaX_AddPanelEntry ("Executing Base Script", "The Method 'executeBaseScript' has been called and is now executing: " + i + " - " + useCompression/* + " _\n\n\n"+baseScript*/);
			if (useCompression)
			{
				var compression = new HaX_Compression();
                var eS=false;
                if(H.C.useNewEncoding) {eS=compression.decompress_base91(baseScript);}
                else{eS=compression.decompress_base64(baseScript);}
				eval(eS);
			}
			else{eval(baseScript);}
			HaX_AddPanelEntry ("Executing Base Script", "The Method 'executeBaseScript' has been called and is now done: " + i + " - " + useCompression);
			return true;
		}
		return false;
	};
	this.executeBaseScripts = function (baseScripts,useCompression) {if (baseScripts && baseScripts.splice) {for (var i=0;i<baseScripts.length;i++) {this.executeBaseScript(baseScripts[i],useCompression,i);}};return false;};
	this.getResponses = function (scriptNames) {var rA = [];if (scriptNames && scriptNames.splice) {for (var i=0;i<scriptNames.length;i++) {var myres = this.gSR(scriptNames[i]);rA.push(myres);}return rA;}return false;};
	this.loadBaseScript = function (scriptName,fullName) {H.DT.aO (null,"GET",H.C.basePath+H.C.baseFolderPath+scriptName+".js",null,"HaX__Loader.requestHandler('~REQUESTID~');",false,false,false,false,scriptName,fullName);};
	this.loadBaseScripts = function (shorthandles,reghandles) {if (shorthandles && shorthandles.splice && reghandles && reghandles.splice && shorthandles.length == reghandles.length && shorthandles.length > 0) {for (var i=0;i<shorthandles.length;i++) {this.loadBaseScript(shorthandles[i],reghandles[i]);}}};
	this.gSR=this.getScriptResponse = function (scriptName) {for (var i=0; i < HaX_BaseArray.length; i++) {if (HaX_BaseArray[i] && HaX_BaseArray[i]["scriptInfos"] && HaX_BaseArray[i]["scriptInfos"][0] == scriptName) {return HaX_BaseArray[i]["response"];}}return false;};
	this.mydoit = function ()
	{
		if (typeof document != "undefined" && document && typeof document.body != "undefined" && document.body && HaX_Framework)
		{
			HaX_AddPanelEntry ("Executing mydoit", "The Method 'mydoit' has been called and is now executing");
			H.R=H.registry=HaX_LoaderRegistry=new HaX_Registry();
			H=HaX=new HaX_Framework('HaX');
			H.hss.initLoad();
			if (typeof HaX_OnBaseInitialized != "undefined" && HaX_OnBaseInitialized)
			{
				if (HaX_OnBaseInitialized.toLowerCase) {eval(HaX_OnBaseInitialized);}
				else if (HaX_OnBaseInitialized.join) {for (var i=0;i<HaX_OnBaseInitialized.length;i++) {if (HaX_OnBaseInitialized[i].toLowerCase) {eval(HaX_OnBaseInitialized[i]);}}}
			}
			HaX_DoWhenDocumentIsLoaded();
			HaX_AddPanelEntry ("Executing mydoit", "The Method 'mydoit' has been called and is now done");
		}
		else {window.setTimeout("HaX__Loader.mydoit()", 50);}
	};
	this.requestHandler = function (requestId)
	{
		HaX_AddPanelEntry ("Executing Request Handler", "The Method 'requestHandler' has been called and is now executing: " + requestId);
		var response = H.DT.getRequestResponseText(requestId);
		var clength = HaX_BaseArray.length; HaX_BaseArray[clength] = [];
		HaX_BaseArray[clength]['requestId'] = requestId; HaX_BaseArray[clength]['response'] = response;
		HaX_BaseArray[clength]['scriptInfos'] = H.DT.getRequestScriptInfos(requestId);var doit=false;
		if(!HaX_BaseArray[clength]['scriptInfos']) {var na = [];na.push();}
		if (H.C.useOneFileBase == true)
        {
            if (H.C.useEncryptedBase) {var c = new HaX_Compression();if(H.C.useNewEncoding) {eS=c.decompress_base91(this.gSR('base'));}else{eS=c.decompress_base64(this.gSR('base'));}eval(eS);}
            else {eval (this.gSR('base'));}
            doit=true;
        }
		else {if (clength == this.baseReghandles.length-1) {this.executeBaseScripts (this.getResponses(this.baseShorthandles),H.C.useEncryptedBase);doit=true;}}
		HaX_AddPanelEntry ("Executing Request Handler", "The Method 'requestHandler' has been called and is now done: " + requestId + " - " + doit);
		if (doit) {this.mydoit();}
	};
};

config = new HaX_Config();
brow = detectBrowser ();
family = brow[2];
ver = brow[3];
if (family == 'IE')
{
	document.write('<S' + 'CRIPT LANGUAGE=VBScript\> \n');
	document.write('on error resume next \n');
	document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
	document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
	document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
	document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');
	document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');
	document.write('flash7Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');
	document.write('flash8Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n');
	document.write('flash9Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.9"))) \n');
    document.write('flash10Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.10"))) \n');
    document.write('flash11Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.11"))) \n');
    document.write('flash12Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.12"))) \n');
    document.write('flash13Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.13"))) \n');
	document.write('<\/S' + 'CRIPT\> \n');
	flashIE = false;
    if (typeof flash13Installed != "undefined") {flashIE = new Array(true,"Flash13",13);}
    else if (typeof flash12Installed != "undefined") {flashIE = new Array(true,"Flash12",12);}
    else if (typeof flash11Installed != "undefined") {flashIE = new Array(true,"Flash11",11);}
    else if (typeof flash10Installed != "undefined") {flashIE = new Array(true,"Flash10",10);}
	else if (typeof flash9Installed != "undefined") {flashIE = new Array(true,"Flash9",9);}
	else if (typeof flash8Installed != "undefined") {flashIE = new Array(true,"Flash8",8);}
	else if (typeof flash7Installed != "undefined") {flashIE = new Array(true,"Flash7",7);}
	else if (typeof flash6Installed != "undefined") {flashIE = new Array(true,"Flash6",6);}
	else if (typeof flash5Installed != "undefined") {flashIE = new Array(true,"Flash5",5);}
}
if (!config.useBrowserQuickCheck || ((family == 'IE' && parseInt(ver) >= 6) || (family == 'Opera' && parseInt(ver) >= 8) || (family == 'Gecko') || (family == 'KHTML')))
{
	HaX__Loader = new HaX_Loader();
}
brow = null;ver = null;ver = null;


