(function(window){
	var HTMLDecode = function (text) {
		var HTMLtags = new Array ('&nbsp;','&iexcl;','&cent;','&pound;','&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;','&laquo;','&not;','&shy;','&reg;','&macr;','&deg;','&plusmn;','&sup2;','&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;','&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;','&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;','&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;','&yuml;','&quot;','&circ;','&tilde;','&ensp;','&emsp;','&thinsp;','&zwnj;','&zwj;','&lrm;','&rlm;','&ndash;','&mdash;','&lsquo;','&rsquo;','&sbquo;','&ldquo;','&rdquo;','&bdquo;','&dagger;','&Dagger;','&permil;','&lsaquo;','&rsaquo;','&euro;','&fnof;','&Alpha;','&Beta;','&Gamma;','&Delta;','&Epsilon;','&Zeta;','&Eta;','&Theta;','&Iota;','&Kappa;','&Lambda;','&Mu;','&Nu;','&Xi;','&Omicron;','&Pi;','&Rho;','&Sigma;','&Tau;','&Upsilon;','&Phi;','&Chi;','&Psi;','&Omega;','&alpha;','&beta;','&gamma;','&delta;','&epsilon;','&zeta;','&eta;','&theta;','&iota;','&kappa;','&lambda;','&mu;','&nu;','&xi;','&omicron;','&pi;','&rho;','&sigmaf;','&sigma;','&tau;','&upsilon;','&phi;','&chi;','&psi;','&omega;','&thetasym;','&upsih;','&piv;','&bull;','&hellip;','&prime;','&Prime;','&oline;','&frasl;','&weierp;','&image;','&real;','&trade;','&alefsym;','&larr;','&uarr;','&rarr;','&darr;','&harr;','&crarr;','&lArr;','&uArr;','&rArr;','&dArr;','&hArr;','&forall;','&part;','&exist;','&empty;','&nabla;','&isin;','&notin;','&ni;','&prod;','&sum;','&minus;','&lowast;','&radic;','&prop;','&infin;','&ang;','&and;','&or;','&cap;','&cup;','&int;','&there4;','&sim;','&cong;','&asymp;','&ne;','&equiv;','&le;','&ge;','&sub;','&sup;','&nsub;','&sube;','&supe;','&oplus;','&otimes;','&perp;','&sdot;','&lceil;','&rceil;','&lfloor;','&rfloor;','&lang;','&rang;','&loz;','&spades;','&clubs;','&hearts;','&diams;');
		var HEXtags = new Array ('0xA0','0xA1','0xA2','0xA3','0xA4','0xA5','0xA6','0xA7','0xA8','0xA9','0xAA','0xAB','0xAC','0xAD','0xAE','0xAF','0xB0','0xB1','0xB2','0xB3','0xB4','0xB5','0xB6','0xB7','0xB8','0xB9','0xBA','0xBB','0xBC','0xBD','0xBE','0xBF','0xC0','0xC1','0xC2','0xC3','0xC4','0xC5','0xC6','0xC7','0xC8','0xC9','0xCA','0xCB','0xCC','0xCD','0xCE','0xCF','0xD0','0xD1','0xD2','0xD3','0xD4','0xD5','0xD6','0xD7','0xD8','0xD9','0xDA','0xDB','0xDC','0xDD','0xDE','0xDF','0xE0','0xE1','0xE2','0xE3','0xE4','0xE5','0xE6','0xE7','0xE8','0xE9','0xEA','0xEB','0xEC','0xED','0xEE','0xEF','0xF0','0xF1','0xF2','0xF3','0xF4','0xF5','0xF6','0xF7','0xF8','0xF9','0xFA','0xFB','0xFC','0xFD','0xFE','0xFF','0x22','0x2C6','0x2DC','0x2002','0x2003','0x2009','0x200C','0x200D','0x200E','0x200F','0x2013','0x2014','0x2018','0x2019','0x201A','0x201C','0x201D','0x201E','0x2020','0x2021','0x2030','0x2039','0x203A','0x20AC','0x192','0x391','0x392','0x393','0x394','0x395','0x396','0x397','0x398','0x399','0x39A','0x39B','0x39C','0x39D','0x39E','0x39F','0x3A0','0x3A1','0x3A3','0x3A4','0x3A5','0x3A6','0x3A7','0x3A8','0x3A9','0x3B1','0x3B2','0x3B3','0x3B4','0x3B5','0x3B6','0x3B7','0x3B8','0x3B9','0x3BA','0x3BB','0x3BC','0x3BD','0x3BE','0x3BF','0x3C0','0x3C1','0x3C2','0x3C3','0x3C4','0x3C5','0x3C6','0x3C7','0x3C8','0x3C9','0x3D1','0x3D2','0x3D6','0x2022','0x2026','0x2032','0x2033','0x203E','0x2044','0x2118','0x2111','0x211C','0x2122','0x2135','0x2190','0x2191','0x2192','0x2193','0x2194','0x21B5','0x21D0','0x21D1','0x21D2','0x21D3','0x21D4','0x2200','0x2202','0x2203','0x2205','0x2207','0x2208','0x2209','0x220B','0x220F','0x2211','0x2212','0x2217','0x221A','0x221D','0x221E','0x2220','0x2227','0x2228','0x2229','0x222A','0x222B','0x2234','0x223C','0x2245','0x2248','0x2260','0x2261','0x2264','0x2265','0x2282','0x2283','0x2284','0x2286','0x2287','0x2295','0x2297','0x22A5','0x22C5','0x2308','0x2309','0x230A','0x230B','0x2329','0x232A','0x25CA','0x2660','0x2663','0x2665','0x2666');
		text = text.replace(/&amp;/g,'&');
		for (var i = 0; i < HTMLtags.length; i++) {
			var re = new RegExp (HTMLtags[i],'g');
			text = text.replace(re,String.fromCharCode(HEXtags[i]));
		}
		return text;
	}
	var __alert = window.alert;
	var safari = window.navigator.userAgent.toLowerCase().indexOf("safari/") > -1;
	var safariFix;
	window.alert = function(str) {
		if (safari && !safariFix) {
			safariFix = document.createElement('div');
			safariFix.style.position = 'fixed';
			safariFix.style.width = '100%';
			safariFix.style.height = '100%';
			safariFix.style.zIndex = '100500';
			safariFix.style.left = '0';
			safariFix.style.top = '0';
			safariFix.style.display = 'none';
			document.body.appendChild(safariFix);
		}
		if (safari) safariFix.style.display = 'block';
		if (typeof str == 'string') {
			__alert(HTMLDecode(str));
		} else {
			__alert(str);
		}
		if (safari) safariFix.style.display = 'none';
	};
	var __confirm = window.confirm;
	window.confirm = function(str) {
		if (safari && !safariFix) {
			safariFix = document.createElement('div');
			safariFix.style.position = 'fixed';
			safariFix.style.width = '100%';
			safariFix.style.height = '100%';
			safariFix.style.zIndex = '100500';
			safariFix.style.left = '0';
			safariFix.style.top = '0';
			safariFix.style.display = 'none';
			document.body.appendChild(safariFix);
		}
		if (safari) safariFix.style.display = 'block';
		var res;
		if (typeof str == 'string') {
			res = __confirm(HTMLDecode(str));
		} else {
			res = __confirm(str);
		}
		if (safari) safariFix.style.display = 'none';
		return res;
	};
})(window);
